接下来,我们来说说热神经网络。近年来深度学习发展很快,感觉占据了整个机器学习的一半。重大会议也被深度学习占据,引领一波潮流。目前深度学习中最热门的两类是卷积神经网络和递归神经网络。先说这两个模型。
当然这两个模型涉及的概念太多,要写的东西太多。所以,为了让事情更清楚,我们来说一些基本概念。大神们不要无聊...
今天我们讲的是全连通层,也是神经网络的重要组成部分。这里就不说神经网络是怎么发明的了。全连接层通常由两部分组成。为了更清楚地表达以下公式,以下变量名中的上标表示层,下标表示向量或矩阵中的行号和列号:
线性部分:主要做线性转换,输入用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