接下来,我们来说说热神经网络。近年来深度学习发展很快,感觉占据了整个机器学习的一半。重大会议也被深度学习占据,引领一波潮流。目前深度学习中最热门的两类是卷积神经网络和递归神经网络。先说这两个模型。

当然这两个模型涉及的概念太多,要写的东西太多。所以,为了让事情更清楚,我们来说一些基本概念。大神们不要无聊...

今天我们讲的是全连通层,也是神经网络的重要组成部分。这里就不说神经网络是怎么发明的了。全连接层通常由两部分组成。为了更清楚地表达以下公式,以下变量名中的上标表示层,下标表示向量或矩阵中的行号和列号:

线性部分:主要做线性转换,输入用X表示,输出用Z表示非线性部分:那当然是做非线性变换了,输入用线性部分的输出Z表示,输出用X表示。

非线性部分

非线性部分有一些“常规”功能。在这里,我们只谈一个经典函数——sigmoid。其功能形式如下:

这个函数的输入是上一步我们的线性部分的输出z。此时z的取值范围在内,通过这个函数后就变成了。

那为什么非线性部分要做这个函数转换呢?在我浅薄的理解中,其中一个作用就是对数据进行归一化。不管前线性部分做什么,到了非线性,所有的值都会被限制在一定的范围内,这样如果后面的网络层继续根据前一层的数据进行计算,这些值就会相对可控。否则如果各层数值不一样,有的在范围内,有的在范围内,那么在优化的时候设置优化步长会比较麻烦。

另一个作用是打破以前的线性映射关系。如果全连通层没有非线性部分,只有线性部分,那么我们在模型中叠加多层神经网络是没有意义的。我们假设有一个两层完全连接的神经网络,其中没有非线性层,那么对于第一层,有:

这个复函数的取值范围是。可以看出,它的作用范围与以前的sigmoid不同。它有阳性和阴性,而sigmoid都是阳性。

神经网络的出现

实际上,对于只有一层只有一个输出的神经网络,如果其非线性部分也使用sigmoid函数,其形式与logistic回归相同。因此,我们可以想象神经网络模型在概念上比逻辑回归更复杂。那么它复杂的样子是什么呢?下面是一段完整的连接层代码来开始实验:

FC级:

def __init__:

自我。_in_num = in_num

自我。_out_num = out_num

self.w = np.random.randn * 10

self.b = np.zeros

def _sigmoid:

返回1 / )

延迟转发:

回归自我。_sigmoid + self.b)

从代码中看不出什么。注意我们会在参数中随机初始化w,有时候会让上帝随机给我们一个神经网络,我们也可以看看随机皇帝的意志。

为了便于可视化,这里只使用输入为2,输出为1的数据。好,让我们从一号选手开始:

x = np.linspace

y = np.linspace

x,Y = np.meshgrid

X_f = X .扁平化

Y_f = Y .展平

数据=

fc = FC

Z1 = np.array表示数据中的d])

Z1 = Z1 .整形)

绘图3D

定睛一看,这其实是一个标准的Logistic回归。他的形象如下:

经过多次随机测试,基本上有这个形状,但是随着重量的随机数值变化,这个“台阶”对旋转到不同的方向,但归根结底还是一个台阶。

这也说明一层神经网络没有出路。本质上还是一个线性分类器的强度,所以小伙伴会在上面加一层:

fc = FC

fc.w = np.array

fc.b = np.array

fc2 = FC

fc2.w = np.array

fc2.b = np.array

Z1 = np.array表示数据中的d])

Z2 = np.array代表Z1中的d])

Z2 = Z2 .整形)

绘制3D

这一次我们暂时不使用随机权重,而是自己设定几个值。可见参数是精心设置的。两层都是正数...图像呢?

看起来比之前的步骤软了一点,但归根结底还是像一个步骤...好了,我们来补充一些负权重,我们从两个方面来分析输入数据:

fc = FC

fc . w = NP . array

fc.b = np.array

fc2 = FC

fc2.w = np.array

fc2.b = np.array

Z1 = np.array表示数据中的d])

Z2 = np.array代表Z1中的d])

Z2 = Z2 .整形)

绘制3D

上面快点:

加上负权重后,最后看起来不那么像一个步骤,然后两层神经网络的非线性能力开始显现。让我们把权重给随机的皇帝:

fc = FC

fc2 = FC

Z1 = np.array表示数据中的d])

Z2 = np.array代表Z1中的d])

Z2 = Z2 .整形)

绘图3D)

上图:

这时非线性已经很明显了。我们不妨继续增加几层来看看DNN的力量:

fc = FC

fc2 = FC

fc3 = FC

fc4 = FC

fc5 = FC

Z1 = np.array表示数据中的d])

Z2 = np.array代表Z1中的d])

Z3 = np.array代表Z2中的d])

Z4 = np.array表示Z3中的d])

Z5 = np.array表示Z4中的d])

Z5 = Z5 .重塑)

绘图3D)

这张照片看起来复杂多了...

从以上实验可以看出,层数越高,非线性“能力”越强,脑洞越大。

知道了他的厉害,下次我们再详细讲讲它的解决方案——反向传播。

文章代码可以在HSM YY/zhi zhuan LAN

1.《全连接层 神经网络-全连接层(1)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《全连接层 神经网络-全连接层(1)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1750826.html