小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、全连接神经网络结构
下图中左图是全连接神经网络最简单的网络结构,最左边是输入层,负责接收数据;最后边是输出层,从这一层获取输出数据;它们两个之间的层是隐藏层。全连接神经网络中,同一层的神经元之间没有连接,第N层的每个神经元和第N-1层的所有神经元相连,这就是full connected的含义,第N-1层神经元的输出就是第N层神经元的输入。每个连接都有一个权值W,这些权值就是模型的参数(即模型要学习的东西)。
网络结构中的节点是神经元,上图中右图是全连接神经网络最简单的网络结,神经元是构成网络的基本单位。 神经元的组成有:
- 输入:n维度向量x
- 线性加权
- 激活函数
- 输出 a 上一层的输出数据输入到下一层的神经元,和连接之间的权重做线性加权,之后通过激活函数对结果进行归一化,再将结果输出到下一层神经元。有多少层隐藏层就重复多少次上面这个步骤,直到到达输出层,输出结果。
二、反向传播
那神经网络是如何训练,学习到权值w的呢?这里使用的训练方法是反向传播算法。我们想看两个概念。
(一)Loss Function
第一个是Loss Function, Loss就是神经网络输出值(预测值)与真实值之间的损失, Loss Function我们可以表达为下图中的公式,为了防止负数Loss和正数Loss相互抵消,我们对每一项Loss取平方,Loss表示的是真实值与预测值之间的误差,取平方对他表达的含义无影响。 整个训练过程就是不断缩小Loss的过程。从这个公式的简化结果我们可以看到A、B、C、D、E、F都是常系数,未知数就是w 和b ,也就是为了让Loss 最小,我们要求解出最佳的w 和b 。这里求最佳解使用的是梯度下降法。
(二)梯度下降法
梯度:表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。 下图中第一个公式的三维空间中梯度的表达式,在反向传播时,首先我们会给定一个初始的未知参数值,然后根据梯度,往Loss减小的最快的方向更新未知数。这个公式表达了当前的未知数与上一步未知数的关系,a表示学习率, 它直接影响我们的模型能够以多快的速度收敛到局部最小值。这样我们不断地迭代,每次更新的步伐也就越来越小,损失值也就越来越小,直到达到某个阈值或迭代次数时,停止训练,这样找到就是我们要求的解。
整个求解过程称为梯度反向传播。
三、全连接神经网络局限性
全连接神经网络的局限性就是网络结构越复杂,整个网络就会收敛的非常慢。假设网络结构如下图中的右上图:我们要对隐藏层和输出层求4个偏导,为链式求导付出3次连乘的代价。 倘若我们的网络层次越深,偏导连乘也就越多,付出的计算代价也就越大,网络很可能还会形成多个复杂的嵌套关系,这样整个网络就会收敛得非常慢。因为全连接神经网络的局限性,这时候很多网络就应运而生了。