B站指路:1.1 卷积神经网络基础_哔哩哔哩_bilibili
-
卷积的特性:
- 局部感知机制
- 权值共享
-
一个普通卷积层示例如下:
- 卷积核的channel与输入的特征层的channel(比如原图像的RGB三个通道,表示有3个channel)相同
- 输出的特征矩阵的channel与卷积核的个数相同,如图所示,两个卷积核都有3个通道,输出矩阵的特征是2层,即通道为2。
-
使用非线性因素——激活函数,使得神经网络可以模拟非线性问题的模型
- sigmoid激活函数:梯度消失问题严重,当变量取很大的负数或者正数的时候,sigmoid函数接近饱和,函数的导数接近于0,如下图所示,权重基本无法更新,所以当网络层数较深时,靠近输入层的隐藏层权值更新缓慢或停滞更新。
-
relu激活函数:神经元坏死现象,当x<0时,梯度为0,如下图所示,这意味着这个神经元及其之后的神经元的梯度都为0,并且将永远坏死,不能复活。(避免使用很大的学习率,可能会导致很多神经元失活)
-
卷积层的矩阵大小
-
计算公式为: N = ( W − F + 2 P ) / S + 1 N=(W-F+2P)/S+1 N=(W−F+2P)/S+1
输入图像为 W × W W×W W×W,卷积核Filter大小为 F × F F×F F×F,步长为S,padding的像素为P,一般是填充2P。
-
-
池化层
- 没有训练参数
- 不改变特征层的个数,即channel,只改变特征矩阵的宽和高
- 一般将池化核大小与步长设置相同
-
反向传播的过程
-
文字描述:输入x乘以权重w加上偏置值再经过激活函数处理得到一个网络层的输出y,y再经过类似的处理直到最后一层,得到最终的输出z,然后使用z和z的真实标签计算出损失Loss(比如说交叉熵),然后对损失函数求导,进行反向传播,要更新的参数是每个隐藏层的权重,也就是要使w是沿着损失下降最快的方向进行更新,那就是损失函数对w求偏导(因为不止一个权重(矩阵)),然后依次求出每一层的的损失对应权重的导数。接下来就是按照怎样的策略来更新这些权重,最简单的方法就是直接 w 新 = w 旧 − l e × 导 数 w_新 =w_旧-le×导数 w新=w旧−le×导数,le是学习率,此表达式表示权重在沿着损失下降最快的方向进行更新,也就是导数为负的方向。
-
优化:上述更新权重的策略可能会导致进入局部最优,因为使用bach批次训练的损失是沿着当前批次下降最快的方向,并不是全局最优方向。所以使用优化器来更新权重,可以使网络更快地收敛。
-
SGD(Stochastic gradient descent)随机梯度下降: W 新 = W 旧 − α ⋅ 损 失 梯 度 W_新=W_旧-α·损失梯度 W新=W旧−α⋅损失梯度。易受样本噪声影响;可能陷入局部最优解。收敛慢
-
SGD+Momentum优化器: v t = η ⋅ v t − 1 + α ⋅ g ( w t ) v_t=\eta \cdot v_{t-1}+\alpha \cdot g\left(w_t\right) vt=η⋅vt−1+α⋅g(wt); w t + 1 = w t − v t w_{t+1}=w_t-v_t wt+1=wt−vt. η \eta η表示动量系数, g ( w t ) g\left(w_t\right) g(wt),表示损失梯度(t时刻对参数 w t w_t wt的损失梯度), α \alpha α表示学习率。加上动量部分即既考虑当前的梯度,还会将上一次的梯度也加入进来,后可以理解成是在纠正上一次梯度的错误,抑制样本噪声的干扰,如下图所示:
-
Adagrad优化器(自适应学习率):学习率下降太快可能还没收敛就停止训练了。
-
RmSprop(自适应学习率)
-
Adam(自适应学习率):一阶动量;二阶动量一起控制学习率衰减。
-
-