机器学习之卷积神经网络CNN
卷积神经网络CNN(入门认知)
CNN的目的:特征提取
层次:卷积层 .池化层 .输出层
卷积层:利用局部特征(卷积核),去计算出目标的 整体特征情况。
上图中的 各种X ,我们可以提取其中的几个特征作为卷积核。下图中选择红框框起来的作为特征。
所以我们可以得到三个卷积核(也称为过滤器):
卷积运算: 矩阵对应位子的乘法运算,然后选择平均值填入 feature map 图中。(如下图所示)
将目标与卷积核分别进行卷积运算,就可以 一个feature map,比如这里三个卷积核,最后会有三层的 feature map被得到。
所以经过卷积运算,可以将目标数据缩小,上图中9×9 的目标,卷积后 变成 7×7了。完整动态图见下方
激励层Relu: 获取特征图中 关联性大的数据,将关联性小的 都直接设置为0
数学公式是:f(X)=max(0,X)
池化层pooling (采样):压缩数据
虽然进行卷积操作已经使得数据变小了一点,但是还是不够小。需要使用到池化层,池化的方法有 最大池化(取最大值)和平均池化(取最小值)。下图所示的就是最大池化,在2×2的池化窗口中,选择一个最大的数值 填入到新的 特征图(feature mao)中。
为什么可以这样压缩?因为CNN想要的是知道有没有匹配的特征,不需要知道这个特征在那个位置匹配,所以这样压缩还是可以知道有匹配的数据以及其程度。
1.卷积和池化 可以多次叠加使用,这样就可以达到缩小目标数据 到理想的地步。比如 9×9 -> 2×2.
2.特征维度的计算公式:
其中W表示宽,H表示高,P表示pading填充,S表示步长。所以最后的维度与 步长和原先维度等均有关系
全连接层:
卷积/池化目的是获取特征,而全连接层就是将这些特征进行整合进行分类。
过程 将多个矩阵转化为 一个向量。然后 通过激活函数softmax 达到分类的目的。
BP算法:使用反向传播算法修正权重值 W
激活函数
常见的有sigmoid、tanh、relu;其中sigmoid、tanh 常用于全连接层,而 relu 常用于卷积层。
线性激活函数:y=wx+b,一般用于解决二分类问题。
Sigmoid函数:可以把连续实数值变成0或1 输出,缺点是在神经网络中会出现梯度爆炸或者梯度消失。
Tanh函数:
ReLU函数:
神经元:
数学推导看下面大佬的博文吧,毕竟复制粘贴意义不大:
https://www.zybuluo.com/hanbingtao/note/485480
https://www.zybuluo.com/hanbingtao/note/476663