深度学习4 CNN

深度学习4 CNN

1. 卷积

卷积:(f*g)(n)成为 f f f g g g 的卷积,连续卷积和离散卷积可以表达为如下形式: ( f ∗ g ) ( n ) = ∫ − ∞ ∞ f ( τ ) g ( n − τ ) d τ   n = τ + ( n − τ )   ( f ∗ g ) ( n ) = ∑ τ = − ∞ ∞ f ( τ ) g ( n − τ ) (f * g)(n)=\int_{-\infty}^{\infty} f(\tau) g(n-\tau) d \tau \ n = \tau + (n - \tau) \ (f * g)(n) = \sum_{\tau = -\infty}^{\infty} f(\tau) g(n-\tau) (fg)(n)=f(τ)g(nτ)dτ n=τ+(nτ) (fg)(n)=τ=f(τ)g(nτ) 卷积有很多应用,经常用于处理一个输入,通过系统产生一个适应需求的输出。
卷积经常用在信号处理中,用于计算信号的延迟累积。例如,假设一个信号发生器每个时刻 t t t 产生一个信号 x t x_t xt ,其信息的衰减率为 w k w_k wk ,即在 k − 1 k−1 k1 个时间步长后,信息为原来的 w k w_k wk 倍,假设 w 1 = 1 , w 2 = 1 / 2 , w 3 = 1 / 4 w_1 = 1,w_2 = 1/2,w_3 = 1/4 w1=1,w2=1/2,w3=1/4,则时刻 t t t 收到的信号 y t y_t yt 为当前时刻产生的信息和以前时刻延迟信息的叠加,即: y t = 1 × x t + 1 / 2 × x t − 1 + 1 / 4 × x t − 2   = w 1 × x t + w 2 × x t − 1 + w 3 × x t − 2   = ∑ k = 1 3 w k ⋅ x t − k + 1 \begin{aligned} y_{t} &=1 \times x_{t}+1 / 2 \times x_{t-1}+1 / 4 \times x_{t-2} \ &=w_{1} \times x_{t}+w_{2} \times x_{t-1}+w_{3} \times x_{t-2} \ &=\sum_{k=1}^{3} w_{k} \cdot x_{t-k+1} \end{aligned} yt=1×xt+1/2×xt1+1/4×xt2 =w1×xt+w2×xt1+w3×xt2 =k=13wkxtk+1 其中 w k w_k wk 就是滤波器,也就是常说的卷积核 convolution kernel。
给定一个输入信号序列 x x x 和滤波器 w w w,卷积的输出为: y t = ∑ k = 1 K w k x t − k + 1 y_t = \sum_{k = 1}^{K} w_k x_{t-k+1} yt=k=1Kwkxtk+1 不同的滤波器来提取信号序列中的不同特征。
卷积的结果按输出长度不同可以分为三类:

窄卷积:步长 𝑇 = 1 ,两端不补零 𝑃 = 0 ,卷积后输出长度为 𝑀 − 𝐾 + 1
宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 = 𝐾 − 1 ,卷积后输出长度 𝑀 + 𝐾 − 1
等宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 =(𝐾 − 1)/2 ,卷积后输出长度 𝑀
在早期的文献中,卷积一般默认为窄卷积。而目前的文献中,卷积一般默认为等宽卷积。

2. CNN

  卷积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层等。

  卷积层:二维卷积运算:给定二维的图像I作为输入,二维卷积核K,卷积运算可表示为 S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) K ( m , n ) S(i, j)=(I * K)(i, j)=\sum_{m} \sum_{n} I(i-m, j-n) K(m, n) S(i,j)=(IK)(i,j)=mnI(im,jn)K(m,n),卷积核需要进行上下翻转和左右反转 S ( i , j ) = sum ⁡ ( I ( i − 2 , j − 2 ) I ( i − 2 , j − 1 ) I ( i − 2 , j )   I ( i − 1 , j − 2 ) I ( i − 1 , j − 1 ) I ( i − 1 , j )   I ( i , j − 2 ) I ( i , j − 1 ) I ( i , j ) ] . ∗ [ K ( 2 , 2 ) K ( 2 , 1 ) K ( 2 , 0 )   K ( 1 , 2 ) K ( 1 , 1 ) K ( 1 , 0 )   K ( 0 , 2 ) K ( 0 , 1 ) K ( 0 , 0 ) ] ) \left.S(i, j)=\operatorname{sum}\left(\begin{array}{ccc}I(i-2, j-2) & I(i-2, j-1) & I(i-2, j) \ I(i-1, j-2) & I(i-1, j-1) & I(i-1, j) \ I(i, j-2) & I(i, j-1) & I(i, j)\end{array}\right] . *\left[\begin{array}{rll}K(2,2) & K(2,1) & K(2,0) \ K(1,2) & K(1,1) & K(1,0) \ K(0,2) & K(0,1) & K(0,0)\end{array}\right]\right) S(i,j)=sum(I(i2,j2)I(i2,j1)I(i2,j) I(i1,j2)I(i1,j1)I(i1,j) I(i,j2)I(i,j1)I(i,j)].[K(2,2)K(2,1)K(2,0) K(1,2)K(1,1)K(1,0) K(0,2)K(0,1)K(0,0)]) 卷积实际上就是互相关

  激活函数:是用来加入非线性因素,提高网络表达能力,卷积神经网络中最常用的是ReLU,Sigmoid使用较少。

  池化操作使用某位置相邻输出的总体统计特征作为该位置 的输出,常用最大池化**(max-pooling)和均值池化(average- pooling)**。池化层不包含需要训练学习的参数,仅需指定池化操作的核大小、操作步幅以及池化类型。

  全连接层:对卷积层和池化层输出的特征图(二维)进行降维
将学到的特征表示映射到样本标记空间的作用
  输出层:对于分类问题:使用Softmax函数 y i = e z i ∑ i = 1 n e z i y_i = \frac{e^{z_i}}{\sum_{i = 1}^{n}e^{z_i}} yi=i=1neziezi 对于回归问题:使用线性函数 y i = ∑ m = 1 M w i m x m y_i = \sum_{m = 1}^{M}w_{im}x_m yi=m=1Mwimxm

  卷积神经网络的训练
    Step 1:用随机数初始化所有的卷积核和参数/权重

    Step 2:将训练图片作为输入,执行前向步骤(卷积, ReLU,池化以及全连接层的前向传播)并计算每个类别的对应输出概率。

    Step 3:计算输出层的总误差

    Step 4:反向传播算法计算误差相对于所有权重的梯度,并用梯度下降法更新所有的卷积核和参数/权重的值,以使输出误差最小化

参考:
1. DataWhale组队学习-机器学习基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值