神经网络基础
人工神经元
神经网络的出现是从人工神经元初始化过来的
- 生物学神经元
- 人工神经元
多层感知机
但是上述方法存在一个问题,即无法区分异或。可以在坐标系中将4种可能标注出来,发现异或这个图无法用一条线去区分
面临这个问题,因此出现了多层感知机
激活函数
但是通过增加隐藏层能够改善。但是通过数学公式推到可知,只是单纯的堆叠,最后都是变成一个网络。这个时候出现了激活函数。添加激活函数后就能逼近任何函数(万能逼近定理)
激活函数主要有:sigmoid
函数、tanh
函数、ReLU
函数
其中:
sigmoid
函数和tanh
函数是饱和函数,当取值很大的时候如何出现梯度消失,无法继续更新参数
相比之下ReLU函数就比较好,同时ReLU函数在训练的时候速度也更加快(AlexNet网络已经证明)
反向传播
用于更新参数,使网络更加接近标签,其中反向传播就是微积分的链式求导法则。其中梯度的传播也是在求梯度中体现的。在求某一层的梯度时,就是之前的梯度+
现在这个变量的梯度
- 梯度下降
梯度的反向传播求取每个变量的梯度,再进行更新参数,更新参数的时候,采用的是:梯度下降。即:权值沿梯度的负方向更新(梯度的正方向是函数上升最快的地方),使得函数下降。
- 学习率
在更新的时候,还应该注意梯度的学习率,一个好的学习率能够使得网络能够更好的收敛
损失函数
进行反向传播本质就是让损失函数下降。损失函数是衡量模型输出和真实标签的差异
其中应该注意:损失函数(单样本)、代价函数(整个数据集)、目标函数:损失函数+
正则项(控制模型复杂度)
常见两种损失函数
- MSE(均方误差)输出于标签之差的平方均值。常在回归任务中使用
- CE(交叉熵)交叉熵来自信息论。用于衡量两个分布的差异。常在分类任务中使用,与
softmax
一起使用
权值初始化
训练前对权值参数赋值,良好的权值初始化有利于模型训练
简单但错误的方法:初始化全部为0
随机初始化方法:高斯分布随机初始化,从高斯分布中随机采样,对权重赋值,比如:N~(0,0.01)
其中方差的选取格外重要,权重过大,会使得x
落入sigmoid
函数的饱和区
因此有:自适应标准差—自适应方法随机分布中的标准差
Xavier
初始化 / Kaiming
初始化(MSRA
)
正则化
减轻过拟合,减少方差的策略
误差=
偏差+
方差 +
噪声
偏差:度量学习算法的期望预测与真实结果的偏差程度
方差:同样大小的训练集的变动所导致的学习性能的变化
噪声:表达在当前任务上任务学习算法所能达到的期望泛化误差的下界
可以采用的方法有:L1正则化、L2正则化
其中:
- L1正则化项:在相切的位置此时最小。起到权值稀疏的效果
- L2正则化项:在相切的位置此时最小。起到权值衰减
也可以采用dropout
进行正则化,即:随机初始化
需要注意:训练和测试两个阶段的数据尺度变化,测试时,神经元输出值需要乘以p