1.图片在计算机眼中是无数由0和1组成的信号,假如有一张字母"X"的图片,"X"由许多像素组成,这些组成X的像素被视为1,而其余空白地区的像素被视为0.
2.当要识别X时,并不会以X作为一个整体来识别,因为这样,只要X稍微变化,计算机就会识别失败。因此,需要先提取X这个图片的特征,比如中间有一个×。
3.将这个特征交给计算机,使它在观察一张图片时不断寻找相似的部分,相似程度的计算背后有一套数学程序
4.卷积:假设计算机以9×9为单位寻找相似点,它会将自己手中的特征与图片上的像素点一个一个对应,如果一致则视为1,不一致则视为0,最后,将九宫格内所有的数字加起来,除以格内像素的总数,也就是81,得出以一个九宫格为单位的匹配程度,将该数字记录在九宫格中心。对所有九宫格做此操作后,只保留所有九宫格的中心,就得到了压缩后的图片,这个过程就是卷积
5.对每一项不同的特征都进行卷积,最终都能得到一张表现特征位置的地图,这就是卷积层
6.池化:为了进一步收缩图片,需要进行池化(pooling),即选择一个window作为单位,通常是2×2或3×3,遍历所有的window,只保留每个window里的最大值。池化能够收缩图片,并使得特征的位置不再那么敏感
7.对卷积层进行池化,得到池化层
8.正则化:检查每一个格子的匹配值,将所有负数改为0
9.不断重复卷积,池化,正则这个流程,最终会得到一个很小的特征地图(2×2),将这个特征地图以一列的形式表现出来,这个数列中的每一个数都可以代表一个votes,如果图片接近X,那么这个votes就会高
10.最终,将votes和输入的图片进行对比,如果输入的是需要识别的图片,votes是0.8,那么误差就是1-0.8 = 0.2
如果输入的是错误的图片,votes是0.8,那么误差就是0.8-0 = 0.8
11.不断调整权重,并观察最终的误差,以减小误差为目标
12.影响误差的参数可能有(超参数):特征(卷积核)的数量,特征图片的大小,池化window的大小,池化window的跨度?,神经网络层数
13.在架构上,还需要考虑每种layer需要几个,以什么样的顺序执行
14.CNN的缺陷在于,如果信号不能被转化成图片的形式,CNN就无法应用。如果数据在交换任何列后和原来的用处相当,就不能使用CNN