卷积神经网络基础 学习笔记

卷积神经网络基础 学习笔记

  • CNN发展历程
  • 全连接层
    • 神经元
  • 卷积层
    • 局部感知
    • 权值共享
    • 卷积过程
    • 激活函数
    • 卷积过程矩阵大小计算
  • 池化层
  • 误差的计算
    • 交叉熵损失(Cross Entropy Loss)
  • 误差反向传播
  • 权重的更新
    • 优化器

教程来自B站up@霹雳吧啦Wz,链接:
 
卷积神经网络基础:https://www.bilibili.com/video/BV1b7411T7DA
 
卷积神经网络基础补充:https://www.bilibili.com/video/BV1M7411M7D2
 
up的博客:https://blog.csdn.net/qq_37541097
 
论文链接:ImageNet Classification with Deep Convolutional Neural Networks

CNN发展历程


卷积神经网络基础 学习笔记_第1张图片

全连接层

神经元

卷积神经网络基础 学习笔记_第2张图片

将单个神经元按列排列,列与列之间进行全连接,就得到一个BP神经网络。从左到右正向传播过程中能够得到一个输出值,将输出值和期望输出值进行对比得到误差值,通过计算每个节点的偏导数就可以计算出每个节点的误差梯度,将损失值反向应用到反向损失梯度上,就实现了误差的反向传播。

卷积层

 
滑动窗口在特征图上并进行计算
 
卷积神经网络基础 学习笔记_第3张图片

局部感知


若每一个神经元都像全连接一样,则需要的参数太多了,因此采用局部感知的方法。每一个神经元只需要感知图像中的局部信息,然后在更高层次进行信息组合就可以得到全局信息。

权值共享


权值共享实际上就是局部感知的部分,当用10X10的卷积核(共包含100个参数)去卷积整张图的时候,生成的feature map的每一个像素值都是由这个卷积核产生的,这就是权值共享。

卷积神经网络基础 学习笔记_第4张图片
 

卷积过程

输入彩色RGB图像,则输入特征矩阵有R、G、B三个维度,卷积核维度(深度)也应该是三维,每个维度的卷积核在特征矩阵上计算出的结果相加,得到输出矩阵。

  • 卷积核的channel与输入特征层的channel相同
  • 输出的特征矩阵channel与卷积核个数相同
  • 如果需要加偏移量bias,每个在计算结果的矩阵(黄色)的每一个位置都加上bias,再得到输出矩阵,如 [[1,3],[1,1]] 变为 [[2,4],[2,2]] 。

卷积神经网络基础 学习笔记_第5张图片

激活函数

卷积神经网络基础 学习笔记_第6张图片

卷积过程矩阵大小计算

卷积神经网络基础 学习笔记_第7张图片

池化层

卷积神经网络基础 学习笔记_第8张图片

卷积神经网络基础 学习笔记_第9张图片
 

误差的计算

以三层的BP神经网络为例,输入层有两个节点, x 1 x_{1} x1 x 2 x_{2} x2,隐层有三个节点,以第一个节点 σ σ σ为例,参数有 w 11 ( 1 ) w^{(1)}_{11} w11(1) w 12 ( 1 ) w^{(1)}_{12} w12(1) b 1 ( 1 ) b^{(1)}_{1} b1(1),输出层有两个节点。上标(1)代表第一层,下标第一个数代表上层的第几个节点,第二个数代表本层的第几个节点。
卷积神经网络基础 学习笔记_第10张图片
 
计算输出
卷积神经网络基础 学习笔记_第11张图片
 
Softmax激活函数为了使输出结果满足概率分布,计算公式为
o i = e y i ∑ j e y j o_{i}= \frac{e^{y_{i}}}{∑_{j}e^{y_{j}}} oi=jeyjeyi
如上图输出 o 1 o_{1} o1 o 2 o_{2} o2
o i = e y 1 e y 1 + e y 2 o_{i}= \frac{e^{y_{1}}}{e^{y_{1}}+e^{y_{2}}} oi=ey1+ey2ey1
o i = e y 2 e y 1 + e y 2 o_{i}= \frac{e^{y_{2}}}{e^{y_{1}}+e^{y_{2}}} oi=ey1+ey2ey2
经过softmax处理后所有的输出节点概率和为1
 

交叉熵损失(Cross Entropy Loss)

 

  1. 针对多分类问题(softmax输出,所有的输出概率和为1)
    H = − ∑ i o ∗ l o g ( o i ) H = -\sum_{i}o^{*}log(o_{i}) H=iolog(oi)

  2. 针对二分类问题(sigmoid输出,每个输出及诶单之间互不相干,如猫狗分类)
    H = − 1 N ∑ i = 1 N [ o ∗ l o g ( o i ) + ( 1 − o i ∗ ) l o g ( 1 − o i ) ] H = -\frac{1}{N}\sum_{i=1}^N[o^{*}log(o_{i})+(1-o_{i}^{*})log(1-o_{i})] H=N1i=1N[olog(oi)+(1oi)log(1oi)]
    其中 o ∗ o^{*} o 为真实标签值, o i o_{i} oi 为预测值,默认 l o g log log e e e 为底(等于 l n ln ln

本例使用的是softmax输出,将 o 1 o_{1} o1 o 2 o_{2} o2 代入公式1

L o s s = − ( o 1 ∗ l o g ( o 1 ) + o 2 ∗ l o g ( o 2 ) ) Loss = -(o^{*}_{1}log(o_{1})+o^{*}_{2}log(o_{2})) Loss=(o1log(o1)+o2log(o2))
 

误差反向传播

 
以求 w 11 ( 2 ) w^{(2)}_{11} w11(2) 的误差梯度为例
 
卷积神经网络基础 学习笔记_第12张图片
 
卷积神经网络基础 学习笔记_第13张图片
 
卷积神经网络基础 学习笔记_第14张图片
 

权重的更新

 
w 11 2 ( n e w ) = w 11 2 ( o l d ) − l e a r n i n g r a t e ⋅ g r a d i e n t w_{11}^{2}(new)=w_{11}^{2}(old)-learning_{rate}\cdot gradient w112(new)=w112(old)learningrategradient
 
卷积神经网络基础 学习笔记_第15张图片
 

优化器

 
目的是使网络更快的收敛

  • SGD
  • SGD+Momentum
  • Adagrad
  • RMSProp
  • Adam

 

SGD优化器
卷积神经网络基础 学习笔记_第16张图片
 
SGD+Momentum优化器
卷积神经网络基础 学习笔记_第17张图片
 
Adagrad优化器

卷积神经网络基础 学习笔记_第18张图片
 
RMSProp优化器
卷积神经网络基础 学习笔记_第19张图片
 
Adam优化器
卷积神经网络基础 学习笔记_第20张图片

你可能感兴趣的:(pytorch学习笔记,卷积神经网络,深度学习,神经网络,卷积,计算机视觉)