深度学习入门的一些基础知识(CNN篇)

参考知乎:AI 学习必知的十大深度学习方法!

 

目录

引言

卷积神经网络:

卷积层

池化层(采样层)

全连接层

激励层

想到哪就写哪的附录:损失函数与激活函数的选择

循环神经网络和递归神经网络

其他


 

 

引言

上图展示了人工智能、机器学习和深度学习三者的关系

人工智能(AI)是计算机科学的一个分支;

机器学习(ML)是一种实现人工智能的方法;

深度学习(DL)是机器学习的一种方法,源于人工神经网络(ANN)。

 

深度学习网络与“典型”的前馈多层网络之间的区别:

1、深度学习网络具有更多的神经元;

2、连接层的方式更复杂;

3、需要更强大的计算能力来训练;

4、能进行自动特征提取

 

所以深度学习可以定义为四个基本网络框架中拥有大量参数和层的神经网络:

a. 无监督预训练网络(Unsurpervised Pre-trained Networks)

b. 卷积神经网络(Convolutional Neural Network)

c. 循环神经网络(Recurrent Neural Network)

d. 递归神经网络(Recursive Neural Network)

 

下面分开介绍一下

b.卷积神经网络:

主要是针对图像识别问题

我们知道的网络结构大概是这样子的

一个卷积神经网络通常包含三部分,以ReLU为激活函数

 

  • 卷积层
  • 池化层(采样层)
  • 全连接层
  • 激励层

上述三个层堆叠形成完整的卷积神经网络(ConvNet)架构(再加一个激励层)

最常见的ConvNet架构遵循以下模式:

INPUT——>[[CONV——>RELU]*N——>POOL?]*M——>[FC——>RELU]*K——>FC

N>=0 (and usually N<=3),M>=0,K>=0(and usually k<3)

 

卷积层

卷积神经网络的核心(我想要自己的语言写下来,可能不专业,欢迎提出意见)

两大特点:局部连接和权值共享。

通过局部感受野和权值共享减少了神经网络需要训练的参数个数

卷积的具体实现,就是拿卷积核去扫描图像。比如卷积核的大小是3*3,与原始图像左上角前三行三列对应位置相乘相加,得到的数作为最终矩阵的第一行第一列。

然后根据步长(假设步长为1),向右移动卷积核,对应原始图像的前三行第2,3,4列相乘相加,得到的数作为最终矩阵的第一行第二列。依次进行扫描得到一个新的矩阵。

一般彩色图像是RGB格式,那么卷积对应三个通道,最终得到三个矩阵。

设输入图像尺寸为w,卷积核尺寸为F,步幅为S,Padding为P,经过卷积之后输出的图像尺寸为(W−F+2P)/S+1。

在卷积层中使用参数共享,这样使得参数大大减少。

另外有几个概念

卷积层的深度:有多少个神经元,深度就是多少;或者说卷积层输出的深度=卷积核的个数

填充值:举个例子

对5*5的图片,卷积核大小是2*2,步长取2,剩下一个没法滑动,那么可以在原先的矩阵上加一层填充值0,变成6*6的矩阵,这样就可以把所有的像素遍历完成。

我的理解,卷积是为了提取特征,可以看成一个过滤器。比如识别汽车,那么卷积核可能是车轮,做卷积操作以后,符合卷积特征的部分会被放大,而不符合的部分会被缩小。

 

池化层(采样层)

用于特征降维、压缩数据和参数的数量、减少过拟合、提高模型的容错性

负责对空间维度进行下采样

一般夹在连续的卷积层中间,用于压缩数据和参数的量,在一定程度上可以减少过拟合。

池化的方法一般有:最大池化(max pooling)和平均池化(average pooling)。实际比较常用的是最大池化。

最大池化的思想很简单,选择2*2的过滤器,步长为2。

如图把4*4的图像分割成4个不同的区域,然后对应输出每个区域的最大值。

那么平均池化计算的是区域内的平均值,而不是最大值。

 

全连接层

通常全连接层在卷积神经网络的尾部,两层之间的所有神经元都有权重连接。

全连接层是将经过多次卷积池化操作以后高度抽象化的特征进行连接,方便交给最后的分类器或者回归模型。

实质上,卷积层是提供一个低纬度且几乎不变的特征空间,然后全连接层在这个空间里学习一个非线性方程。

但是全连接层的缺点是参数很多且改变了空间结构,看到一个叫FCN(全卷积神经网络),主要用于图像分割,mark一下。

 

激励层

对卷积的输出结果做非线性的映射

主要熟悉的激活函数有:Sigmoid、tahn、ReLU、Leaky ReLU、ELU、Maxout

一般优先考虑ReLU,如果效果不好,考虑使用Leaky ReLU、Maxout;tahn用在文本或者音频处理比较多

 


想到哪就写哪的附录:损失函数与激活函数的选择

MSE损失+Sigmoid激活函数

\sigma (z)=\frac{1}{1+e^{-z}},其中z=wx+b

对于sigmoid,当z的取值越来越大,函数曲线就会越来越平缓,导数\sigma ^{'}(z)会越来越小;只有在z取值0附近的时候,导数的取值较大。

c=\frac{(y-a)^{2}}{2},其中a=\sigma (z)

在这个组合的反向传播过程中,每一层向前递推都要乘以激活函数的导数,从而得到梯度的变化值。

\frac{\partial c}{\partial w}=(a-y)\sigma ^{'}(z)x 

w_{k} \rightarrow w^{'}_{k}=w_{k}- \frac{\partial c}{\partial w}\eta

\frac{\partial c}{\partial b}=(a-y)\sigma ^{'}(z)

b_{t} \rightarrow b^{'}_{t}=b_{l}- \frac{\partial c}{\partial b_{l}}\eta

这意味着梯度变化值很小,会导致w,b更新到极值的速度较慢,那么算法的收敛速度较慢。

 

交叉熵损失+Sigmoid激活函数

c=-\frac{^{1}}{n}\sum_{x}^{1}(y\cdot ln^{a}+(1-y)\cdot ln^{1-a})

\frac{\partial c}{\partial w}=-\frac{^{1}}{n}\sum_{x}^{1}(\frac{^{y}}{a}-\frac{^{1-y}}{1-a})\frac{^{\partial \sigma }}{\partial w_{j}}

\frac{\partial c}{\partial w}=-\frac{^{1}}{n}\sum_{x}^{1}(\frac{^{y}}{\sigma (z)}-\frac{^{1-y}}{1-\sigma (z)}) \sigma^{'}(x)\cdot x_{j}

\frac{\partial c}{\partial w}=-\frac{^{1}}{n}\sum_{x}^{1}\frac{ \sigma^{'}(x)\cdot x_{j}}{\sigma (z)(1-\sigma (z))}(y-\sigma (z)),其中\sigma^{'}(z)=\sigma (z)\cdot (1-\sigma (z))

\frac{\partial c}{\partial w}=-\frac{^{1}}{n}\sum_{x}^{1}x_{i}(\sigma (z)-y)

\frac{\partial c}{\partial b}=-\frac{^{1}}{n}\sum_{x}^{1}(\sigma (z)-y)

用交叉熵损失函数来替代均方误差损失函数,避免了BP中收敛速度慢的问题。

 


 

c&d. 循环神经网络和递归神经网络

两者其实都是RNN

recurrent指时间递归(常用),是时间维度的展开,代表信息在时间维度从先往后的传递和积累

recursive指结构递归,是空间维度的展开

 

RNN具有记忆能力,主要用来识别序列,例如语音信号或者文本

以Recurrent neural network为例,基本结构单元由一个输入层,一个输出层,一个隐层组成

 

展开

可见,隐层的输入值包括当前时刻的输入和上一次的输出值

RNN 有一个很大的问题就是梯度消失,所以提出了LSTM来解决,这里不做展开的详细介绍。

 

 

其他

以下有十种方法可以应用于所有的体系结构

这里的每一个方法都是一个可以独立展开的知识点。

1、反向传播(BP)

很基础的东西,以误差为主导旨在得到最优的全局参数矩阵,是目前训练人工神经网络ANN比较常用和有效的方法。

算法的基本思想是:每个神经元的敏感值依赖于其后继神经元的敏感值及其相应的权值

算法的步骤:

  • 正向传播,得到最终网络的输出值
  • 敏感性的反向传播。敏感值为代价函数相对于神经元A的激活函数f的净输入的导数。
  • 最速下降法更新权值和偏置值

(打公式好麻烦,空着先)

 

2、随机梯度下降

梯度下降的三种形式:

  • BGD    batch gradient descent    批量梯度下降法
  • SGD    stochasic gradient descent    随机梯度下降法
  • MBGD    mini-batch gradient descent    小批量梯度下降法

 

3、学习率衰减

4、dropout

在前向传导时,让某个神经元的激活值以一定的概率p停止工作

可以很好地解决容易过拟合的问题

 

5、池化(上面提到了)

6、批量标准化/批量归一化

Batch Normalization,算法本质:在每层网络输入时,插入一个归一化层,经过了归一化处理之后再进入到下一层网络。

具体看我的另一篇博客:理解Batch Normalization

 

7、LSTM(long-short term memory)

8、skip-gram

9、连续词袋

10、迁移学习

机器学习的分支,是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。

根据所要迁移的知识表示形式(即 “what to transfer”),分为四大类:基于实例的深度迁移学习,基于映射的深度迁移学习,基于网络的深度迁移学习和基于对抗的深度迁移学习

迁移学习本身也是一门很大的领域,从技术上来说,迁移学习只是一种学习的方式,一种基于以前学习的基础上继续学习的方式。但现在大家讲的最多的还是基于神经网络基础之上的迁移学习。更多的可以参考知乎下的‘迁移学习’话题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故沉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值