卷积神经网络CNN原理详解

之前完成一个AI芯片的IP设计

旨在做一个针对图像识别IP核

由此开始正式进入CNN这一未知领域

正文分界线
~~

卷积神经网络——Concolutional Neural Network

一个典型的卷积神经网络可以分为以下几部分:
输入层——卷积层——激活层——池化层——卷积层——激活层——池化层——卷积层——全连接层——输出层

CNN已广泛应用于影像识别、病情整断,车载识别。
自认为最好的NN讲解

文中推荐了一个网址,力赞
在线CNN直观了解运行机理网站

第一步:卷积——Conv

在这里插入图片描述
上图是一个典型的卷积过程,左边5✖5的方格代表输入图像像素,中间3✖3窗口为卷积核又称为过滤器,直观的看来5✖5输入矩阵经过3✖3的卷积核处理,图像缩小为3✖3(n-2).

这一过程可能会存在特征丢失,为解决这一问题引入padding操作,比如将55扩充成66,扩充单元设置为0。

CNN神经网络的很大计算量存在于此Conv层,大量的存取,计算,极大的拉高了电路的功耗。

第二步:激活层——Activation Function

激活函数主要分为四种:
第一种激活函数:Sigmoid
公式如下
在这里插入图片描述
百度百科找到的图像如下,定义域在(-∞,+∞),值域(0,1)
在这里插入图片描述

优点:Sigmod函数实现了0 to 1 的平缓变化。
缺点:常造成逆向参数调整时的梯度消失。

第二种激活函数:tanh
为了缓解梯度消失引入反曲正切函数,函数式如下:
在这里插入图片描述
下图贴上tanh x函数的图像同样的定义域,值域从(0,1)扩大到(-1,1)
在这里插入图片描述

第三种激活函数:ReLu——隐藏层默认激活函数

优点:可以拟合任何非线性函数
公式为:max(0,x)
上面公式的意思也就是说去掉其中小于0的数,用0代替。
在这里插入图片描述
第四种激活函数:Leaky Relu
是ReLu激活函数的变形
在这里插入图片描述
在小于0的部分以较小斜率,解决神经元直接熄灭问题

四种激活函数的常用优先级:ReLu,Leaky ReLu > Tanh > sigmoid
其中Tanh和Sigmoid常用于RNN——循环神经网络中。

第三步:池化层——pooling

以最大池化为例
在这里插入图片描述
图中最大池化将原本的4✖4的数据变成2✖2的数据,极大地压缩了数据量。

第四步:数据扁平化处理——flatten operation

多个n维数据,排成一维数据

第五步:全连接&输出层激活函数

  • 针对二分类问题,使用Sigmoid函数判断是否。
  • 针对多分类问题,使用Softmax函数输出各类别概率,概率和为1
    在这里插入图片描述
    -多标签问题——图像里有多个类别,输出各个类别的概率,概率和>1
    -线性回归问题,采用线性函数作为激活函数。

至此CNN便结束了下面贴上一张CNN运行直观图——识别杯子的过程。
在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐