目录
一 为什么要引入神经网络?
对于参数过多或维度过高的计算,线性回归和逻辑回归计算起来不太现实。神经网络是比前两者更强大的非线性分类工具
二 神经网络中的术语与回归中的区别
1.激活函数跟逻辑回归中的sigmoid函数是一回事儿
2.权重(weight) 跟 回归中的参数 是一回事儿
3 bias 跟回归中的x0是一回事儿,且x0 通常赋值为1
三 常见模型
通常,把隐含层的节点称为“激活单元(activation units)",并有如下定义:
:第j 层的第 i 个激活单元
:控制第j 层到第j+1层的映射函数的权重矩阵
四 前向传播
对于上述模型来说隐含层的数据由数据输入层得到,输出层的数据由隐含层得到,数据从第一层逐层往后传播并最终得到输出结果的过程称为前向传播
五 Cost Function
首先给出介个定义
- L :神经网络的总层数
- : 第L层的单元数量(不含偏置单元)
- K :输出单元/类型的数量
- :假设函数中的第k个输出
对于神经网络来说,它由多个神经层相连组成,所以需要对他们进行求和
以逻辑回归的cost function 为例
逻辑回归只有一个输出。而神经网络假设由K个输出,则其cost function 定义如下
六 反向传播
正向传播是计算下一层的输出值,而反向传播是为了在模型预测出错时对模型参数进行调整
原理:当得到最后一层的预测误差之后,对误差取微分,使上一层的误差变小,逐层传递回去(不包括输入层)。从而使整体误差变小。上面已经给出了代价函数的定义,反向传播是让代价函数最小的方法来实现的。
1.反向传播与梯度下降
与回归算法一样,也可以用梯度下降法来做参数的更新
但是神经网络里面通常有上百万个参数,意味着上述的向量是上百万维的。这通常是不容易求解的,所以就引入了反向传播算法
反向传播算法的目的就是求神经网络中的参数(weight+bias)
梯度下降和反向传播的关系:反向传播就是梯度下降,只不过反向传播是计算梯度下降的一种更为有效的方式(计算的较快)
数学原理:求导的链式法则
举例如下:
对于神经网络来说,对求total loss 对某个参数的偏微分可以按如下方式,两边分别求导得到
其总Loss 为上图中的, 对左右两边分别求对w(其中的某个参数)的偏微分。
2.单个神经元的计算过程
先考虑其中的一个神经元
:对所有的参数计算偏微分,称之为前向传播
:计算所有的损失函数对激活函数的输入z的偏微分,称之为反向传播
如何计算呢?
很简单,直接求导即可,其偏导结果为与该权重对应(从图上看是其输入元素)的输入元素的值。
如何计算呢?(相当于计算总Loss对神经网络中任意一层的函数输出值的偏微分)
如下图所示,假设z = w1*x1 + w2*x2 +b , 经过sigmoid函数得到a(a是激活之后的结果)那么计算总Loss对z的偏微分可以通过链式法则
就是sigmoid函数的导数值,很容易算出来
如何计算呢?再根据链式法则,它的后面接了2个神经元(见前文链式求导法则的case2)
则后面需要计算的就是 和 ,后面可能还有很多层,我们假定这两个值已经计算得到。
则可以将计算出来
现在从另外一个角度来重新审视上面的公式,下图中红色的线看起来像是数据从后面流动(反向传播)
七 训练神经网络的步骤