略搞一下卷积神经网络的工作原理,ding~~
以下内容是本人在观看Youtube上关于卷积神经网络讲解播放量最大的视频:《How Convolutional Neural Networks work》的学习笔记~
整体:输入→CNN→输出
输入为二维的像素图片,CNN是一个函数(假设为黑箱),输出的是图片的标签
接下来就破解黑箱吧!
图片X→CNN→X,把旋转等变形之后的X输入之后,输出还是X
正式开始
1、卷积运算
把和卷积核一样的特征从图片X中提取出来,这一步骤是说要把卷积核从原图片进行依次扫描,对应位置相乘再除以卷积核中元素的个数,得到的是卷积核与原图片的相似度,从而形成特征图
用不同的卷积核对图片进行运算就可以得到不同的特征图
如人脸识别中,将脸上的各个特征对原图进行卷积运算,将会产生巨大的运算量
2、池化Pooling--下采样
把经过卷积运算之后的特征图进行压缩,以降低运算量
方法:减损一部分特征图的特征,即把某个区域用一个数字来代替
分为最大池化和平均池化:最大池化就是用这个区域的最大值来代替此区域,平均池化就是用这个区域的平均值来代替次区域,一般用Max polling
Zero Padding---受扫描特征图步长的影响,若需提取图像的边缘特征就要在外侧补0
3、标准化
使用修正线性单元激活函数(Rectified Linear Units)把负数变为0,此函数和sigmod函数功能差不多
但不同的是,Sigmod函数在x=0处取0.5,x<0时取0,x>0时取1;而ReLUs则是在x<0时取0,x>1时取它本身的值
也对后续的梯度下降起作用
4、全连接层
把得到的特征图的数据排列成一列,每个值的权重不同,乘以权重后相加可以得到特征值
权重是通过BP传播进行计算的,开始的权重是一个随机数,最后得到误差最小的参数组合
而在这过程中,需要人为确定的参数是:卷积计算中的特征数目、特征的尺寸大小;池化里的窗口大小,步长;全连接层的神经元个数,神经网络中每层的seta值