深度学习
深度学习使用的是神经网络,是通过人类的神经构建出来的。人的神经是由很多个神经元组成的,它们之间相互连接,组成神经网络。同理深度学习的神经网络是由多个人工神经元组成的,人工神经元又叫感知机,整体分为三层:输入层、隐层(隐藏层)、输出层,但是和人的神经网络有所不同的是,深度学习的神经网络同层之间不会相互连接。
整体上输入层、隐层和输出层,隐层还可以展开分为其它层,由于它既不属于输入也不属于输出,所有统称为隐层。
全连接
当前层和上一层所有神经元完全相连,称为全连接,如上图就属于全连接的情况。全连接可以让神经网络学习到更多的特征,表达能力更强。但是物极必反,当神经网络的深度越来越大,全连接带来的参数计算越来越多,称为维度灾难,也会造成梯度消失和爆炸。梯度消失指梯度越来越小,梯度爆炸指梯度越来越大。
CNN卷积神经网络
基于上面全连接出现的维度灾难的问题,就有了卷积神经网络来解决这一问题。
卷积运算:使用卷积核(也称为滤波器),在原始输入上进行从左到右,从上到下的滑动,在对应位置上进行对应位置匀速相乘再相加,滑动的步长默认为1。(卷积核刚开始是随机指定的,在经过运算进行更新,找出最好的)
卷积的特点:权值共享和局部连接
卷积神经网络的基本组成单元
输入层
通常是输入卷积神经网路的原始数据或经过预处理的数据,以图像分类为例,输入层的图像包含RGB三个通道,是一个由长宽分别为H和W组成的3维像素值矩阵HW3,若指定输入层接受到的图像个数为N,则输入层的输入数据为NHW*3。
一般输入的数据是四维数据,称为四维张量
卷积层
卷积有三种方式:
- valid:卷积核完全在信号内
- same:卷积核中心完全在信号内
- full:卷积核边缘在信号内
一维卷积运算:
当卷积核中心完全在信号内时,卷积核的1元素是漏在信号外面的,这时需要补边,就是说在信号前面补一个0使卷积核完全在信号内,然后在进行移动。卷积核在边缘时同理。
二维卷积运算:
卷积后输出结果的shape的运算:
输
出
的
W
=
输
入
的
W
+
2
∗
补
边
−
卷
积
核
的
W
卷
积
步
长
+
1
输出的W=\frac{输入的W+2*补边-卷积核的W}{卷积步长}+1
输出的W=卷积步长输入的W+2∗补边−卷积核的W+1
输
出
的
H
=
输
入
的
W
+
2
∗
补
边
−
卷
积
核
的
H
卷
积
步
长
+
1
输出的H=\frac{输入的W+2*补边-卷积核的H}{卷积步长}+1
输出的H=卷积步长输入的W+2∗补边−卷积核的H+1
如果不设置补边,默认为0
三维卷积运算:
原始图像有三层,所以对应的卷积核也必须是三层,每层卷积对应每层图像对应位置相乘相加得出三个结果out1、out2、out3,输出结果的第一个元素等于out1+out2+out3+b;然后再滑动卷积核进行计算,得出最后的结果。但是我们发现一组卷积核只能计算出一个结果,所以就会多定义几组卷积核。卷积核的形状表示就是:
组
数
∗
输
入
图
像
通
道
数
∗
卷
积
核
的
宽
∗
卷
积
核
的
高
组数*输入图像通道数*卷积核的宽*卷积核的高
组数∗输入图像通道数∗卷积核的宽∗卷积核的高
激活层
线性函数能够表达的问题是有限的,需要模型具有非线性,在神经网络过程中,增加非线性函数,激活函数通常在卷积之后:卷积+激活+池化。通常使用relu函数
将小于0的变成0,大于0的等于自身
池化层
池化层又称为降采样层,作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效的降低特征尺度,进而减少模型所需要的参数量。
按照操作类型通常分为最大池化、平均池化、求和池化,它们分别提取感受域内最大、平均、总和的特征值作为输出,最常用的是最大池化。
池化层不会改变通道数,只会改变大小
全连接层
全连接通常会在最后加上两个或者三个全连接,逐渐减少到与真实结果类别相同的数目。全连接分为两种形式:第一种是卷积后的全连接,会把特征展平;第二种是全连接后的全连接。
输出层
全连接后的结果输出