CNN 卷积神经网络:包含卷积层的网络
全连接层:由神经元连接而成
计算利用卷积核,将卷积核覆盖到图像上,再将卷积核上面的值与图像层相乘,最后相加得到该区域的值。
不断滑动,得到各个位置的卷积值
特性:1.具有局部感知机制 2.权值共享
对多维的矩阵进行卷积操作:
条件:1.输入特征矩阵深度与卷积核深度保持一致 2. 卷积完输出的特征矩阵(深度)与卷积核个数相同
计算:各个深度的卷积层相同位置处,卷积出来的值相加,最后各个深度卷完成一层了
当然卷积核不唯一,卷完之后拼接在一起
relu激活函数
f(x) = Max(0,x)
因为计算过程是一个线性过程,如果想要解决非线性问题,就需要引入非线性因素。
矩阵经过卷积操作后的尺寸由以下几个因数决定:
<1>输入图片的大小 W x W
<2>Filter大小F x F (卷积核滑动窗口大小)
<3>步长S
<4>padding的像素数 (补零的像素数) P
经过卷积后的矩阵尺寸大小计算公式为:
N = \frac{W-F+2P}{S+1}
MaxPooling下采样层
AveragePooling下采样层
·只改变特征矩阵的大小,不改变深度
·一般池化核边长和步长相同
当前该节点的输出为:
out = \sigma(x_1\times w_{11}^{(1)}+x_2\times w_{21}^{(1)}+b_1^{(1)})
w指权重,b为偏置,x1,x2等为上一个神经元的输出,若上一层为输出层就直接输入数据
上标(1)指当前处于哪一层
下表第一个数字是上一层第几个神经元,第二个数字是本层第几个神经元
最后一层的激活函数是softmax
softmax计算过程:
o_i = \frac{e^{y_i}}{\sum_{j}e^{y_j}}
比如上图,
o_1 = \frac{e^{y_1}}{e^{y_1}+e^{y_2}} o_2 = \frac{e^{y_2}}{e^{y_1}+e^{y_2}}
根据问题种类,有两种:
1.针对多分类问题(softmax输出,所有输出概率和为1,分类之间没有包含关系)
H = -\sum_i o_ i^* \times log(o_i)
2.针对二分类问题 (sigmoid输出,每个输出节点之间互不相干,分类之间有包含关系)
H = -\frac{1}{N}\sum_{i=1}^N[o_i^*\times logo_i+(1-o_i^*)\times log(1-o_i)]
上述公式中,
H(Loss)为损失,o^*_i为真实值标签,o_i为预测值,默认log以e为底是ln
最后带入得到:
\frac{\part Loss}{\part w_{11}^{(2)}} = (o_2^*\times o_1-o_1^* \times o_2)\times a_1
w_{11}^{(2)}(new) = w_{11}^{(2)}(old)-learing_{rate}\times \frac{\part Loss}{\part w_{11}^{(2)}}(gradient)
问题:当分批次训练时,批次的损失梯度和整体sample的方向不一样
所以需要优化器:
优化器的缺点:
1 容易受样本噪声的影响
2 可能陷入局部最优解
\alpha 为学习率,g(w_t)为t时刻对参数w_t的损失梯度,\epsilon(10^{-7}为防止分母为0的小数)
缺点:学习率下降太快可能还没收敛就停止训练