4.6 多层神经网络
到目前为止,我们已经使用过了比较简单的神经网络,但并未特别声明。线性回归模型和对数几率回归模型本质上都是单个神经元,它具有以下功能:
计算输入特征的加权和。可将偏置视为每个样本中输入特征为1的权重,称之为计算特征的线性组合。
然后运用一个激活函数(或传递函数)并计算输出。对于线性回归的例子,传递函数为恒等式(即保持值不变),而对数几率回归将sigmoid函数作为传递函数。
下图表示了每个神经元的输入、处理和输出。
对于softmax分类,使用了一个含C个神经元的网络,其中每个神经元对应一个可能的输出类别。
为求解一些更复杂的问题,如手写数字识别,或识别图像中的猫和狗,我们需要一个更复杂的模型。
首先从一个简单的例子开始,假设希望构建一个能够学习如何拟合“异或”(XOR)运算的网络。
表4.1 XOR运算真值表
当两个输入中有一个为1但不全为1时,该运算结果应为1。
这个问题看似比之前尝试过的都要简单,但到目前为止所接触过的模型都无法解决它。原因在于sigmoid类型的神经元要求数据线性可分,这意味着对于2D数据,一定存在一条直线(对于高维数据则为超平面),它可将分别属于两个类别的样本分隔在直线两侧,如下图所示。
在该图中,圆点表示样本,且不同类别的样本以不同的颜色标识。只要能够在图中找到将黑色点和灰色点完全分离的黄色直线,sigmoid神经元在对应的数据集上就会有良好的表现。
下面来看“异或”门函数的图形表示。
在上图中,无法找到一条直线能够完美地将黑色点(对应布尔值1)和灰色点(对应布尔值0)完美区分,这是因为“异或”函数的输出不是线性可分的。
这个问题在20世纪70年代一度使神经网络研究失去重要性长达近10年之久,后来的研究人员为了继续使用神经网络解决这种不具备线性可分性的问题,采取在神经网络的输入端和输出端之间插入更多的神经元,如下图所示。
可以看到,在输入层和输出层之间增加了一个隐含层(hidden layer),可这样来认识这个新层:它使得网络可以对输入数据提出更多的问题,隐含层中的每个神经元对应一个问题,并依据这些问题的回答最终决定输出的结果。
添加隐含层的作用相当于在数据分布图中允许神经网络绘制一条以上的分隔线。
从上图可以看到,每条分隔线都为向输入数据提出的第一批问题针对平面进行了划分。然后,再将所有相等的输出划分到单个区域中。
想必读者现在已可以大致猜测出“深度学习”中的“深度”的含义。通过添加更多的隐含层,神经网络的层数变得更“深”。这些隐含层之间可采用不同类型的连接,甚至在每层中使用不同的激活函数。
本书后续章节还将介绍在不同应用场景中使用的不同类型的深度神经网络。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论