CNN
1 卷积神经网络
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。
卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)” 。
2 人工神经网络
2.1 神经元
神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。
神经网络的每个神经元如下
基本wx + b的形式,其中
x
1
,
x
2
x1, x2
x1,x2表示输入向量
w
1
,
w
2
w1, w2
w1,w2为权重,几个输入则意味着有几个权重,即每个输入都被赋予一个权重
b
b
b为偏置
b
i
a
s
bias
bias
g
(
z
)
g(z)
g(z)为激活函数
a
a
a为输出
2.2激活函数
2.3 神经网络
三层神经网络结构
- 输入层(Input layer),众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。
- 输出层(Outputlayer),讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。
- 隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。
同时,每一层都可能由单个或多个神经元组成,每一层的输出将会作为下一层的输入数据。
3 卷积神经网络之层级结构
最左边是
- 数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。
中间是
- CONV:卷积计算层,线性乘积 求和。
- RELU:激励层,上文2.2节中有提到:ReLU是激活函数的一种
- POOL:池化层,简言之,即取区域平均或最大。
最右边是
- FC:全连接层
这几个部分中,卷积计算层是CNN的核心。
4 CNN之卷积计算层
4.1卷积
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
4.2卷积层涉及参数
a. 深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。
b. 步长stride:决定滑动多少步可以到边缘。步长越小,特征图越大 步长越大,特征图越小。
4.3卷积计算结果公示
图像数据一般步长为1,但是效率低;文本数据不一定
c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
一定程序上弥补了边界缺失的问题,也就是边界上的值被计算的次数少的问题文本数据也有边缘填充,
4.4池化层pooling
最大池化(常用)
卷积后得到的数据有权重,权重大的重要所以取最大的
max pooling
平均池化(不常用)
average pooling
4.5整体网络架构
正常两次卷积一次池化,
卷积和池化提取特征,全连接层得到输出结果
卷积和池化后,将图像拉长,得到一个向量
神经网络层数计算
带有参数计算的算一层
卷积层算一层
全连接层算一层
参考:
https://blog.csdn.net/v_JULY_v/article/details/51812459
https://www.bilibili.com/video/BV1S64y1z7iX?p=77&spm_id_from=pageDriver