🌞欢迎来到机器学习的世界 
🌈博客主页:卿云阁

 💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年6月5日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!

2022年 6月27日 天气小雨

目录

🍈 一、必备知识

 🍉二. 神经网络

🍊三、卷积神经网络的介绍


手写数字图像识别pycharm 手写数字图像识别原理_神经网络

🍈 一、必备知识

(1)手写数字

       机器识图的过程:机器识别图像并不是一下子将一个复杂的图片完整识别出来,而是将一个完整的图片分割成许多个小部分,把每个小部分里具有的特征提取出来(也就是识别每个小部分),再将这些小部分具有的特征汇总到一起,就可以完成机器识别图像的过程了。

(2)手写识别数据集


      MNIST包含 70000 张手写数字图像: 60000 张用于训练; 10000 张用于测试。 28x28 像素的灰度图。

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_02



(3)数字的表示(28*28)

在灰色图中会把每一个像素用(0-255之间的数字表示,越接近白色,数字越接近255)

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_03

颜色通道,比如常见的jpg格式的图像,就三颜色通道(RGB红色、绿色、蓝色)一张有颜色的图像由一个三维数组表示。因此,要表示彩色值,我们需要3个维度,也就是3个图像通道,每个像素值用3个数字表示,如(255,255,255)表示白色,(255,0,0)表示红色,(255,255,0)表示黄色。

手写数字图像识别pycharm 手写数字图像识别原理_人工智能_04

手写数字图像识别pycharm 手写数字图像识别原理_人工智能_05

 为了存储图像,计算机要存储三个独立的矩阵,为了存储图像,计算机要存储三个独立的矩阵。

(4)矩阵变换

数据集一共60000张,相当于60000张28*28的纸片摞起来。

因为有些函数只能处理二维数据,所以我们要想办法把数据降到二维。 

数据集相当于

(60000, 784)的一个矩阵

手写数字图像识别pycharm 手写数字图像识别原理_tensorflow_06

(5)归一化

     经过归一化处理后,每张图片由1*784的矩阵组成,矩阵中的每一个元素由(0-1)的数字组成。 

 

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_07

(6)标签的表示

把标签用一个一维数组表示。

5array([0, 0, 0, 0, 0, 1, 0, 0, 0, 0], dtype=uint8)


手写数字图像识别pycharm 手写数字图像识别原理_人工智能_08


 🍉二. 神经网络

基本介绍

手写数字图像识别pycharm 手写数字图像识别原理_人工智能_09

在这里,我们可以把加权看成是树突的作用,把阈值和激活函数看成是细胞核的处理。

得分函数

假设有四个像素点,每一个像素对应一个权重,因为各个点的影响程度不同。我们把w叫做权重参数,b表示偏置参数。

手写数字图像识别pycharm 手写数字图像识别原理_tensorflow_10

 

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_11


损失函数(不同的任务需要不同的损失函数)

神经网络既可以做分类也可以做回归,针对不同的功能,需要不同的损失函数

手写数字图像识别pycharm 手写数字图像识别原理_python_12

 

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_13

 

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_14

手写数字图像识别pycharm 手写数字图像识别原理_python_15



神经网络回顾(Neural Network)

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_16


一个简单的神经网络模型由三个部分组成,输入层,隐藏层,输出层。

前向传播 Forward propagation 

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_17


      每个神经元都 对它的 输入和权重相乘再相加 ,然后 加上偏置 ,最后使 用非线性 激活函数 ,重复此 过程,直至传 递到输出层, 得出预测概率。

在这里,我们可以把加权看成是 树突的作用,把阈值和激活函数看成是 细胞核的处理。


手写数字图像识别pycharm 手写数字图像识别原理_神经网络_18


输入层表示输入图像( 64 维向量)本身。如果将各个点的像素值存储在长度为 64 的一维数组的元 素中,则可以将其视为 64 维数据来处理。下面通过神经网络来学习使用上述方法得到的 64 维数据。

中间层使用 Sigmoid 等非线性函数计算输入层传来的数据。中间层的维度是超参数。使维度变 大可以学习更加复杂的边界,但是容易发生过拟合。本次设置中间层为 16 维。下面的“算法说明” 部分将再次介绍中间层的计算方法、中间层的维度和学习结果的关系。

输出层也同样使用非线性函数计算中间层传来的数据。本次任务是对 0 ~ 9 这 10 个数字进行 分类。因此,输出层输出的是输入手写图像分别为 0 ~ 9 这 10 个数字的概率。




 反向传播 Back propagation  


手写数字图像识别pycharm 手写数字图像识别原理_神经网络_19



手写数字图像识别pycharm 手写数字图像识别原理_python_20


训练过程:找到使得损失函数最小的权重。

梯度下降:求得每个参数相对于损失函数的偏导,

用偏导数乘以学习率得到需要改变的量,用原权重减去改变的量,得到新的权重。

再进行正向传播,计算新的损失值,重复此过程

使得损失函数为零或在设定的范围,完成训练。

损失函数loss

a是预测值,y是样本标签值


手写数字图像识别pycharm 手写数字图像识别原理_python_21


  目的是让损失函数越小越好,我们的目的是找到loss的最小值,loss的值与(w,b)组成,其中,我们用

手写数字图像识别pycharm 手写数字图像识别原理_人工智能_22

表示(w,b),loss是关于其的一个函数。

损失函数图像

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_23


神经网络的整体架构

 神经网络是一层层变换数据的,全连接,目的是让计算机认识,隐藏层的目的是为了增加特征,比如输入是age,w,h其目的是为了特征的转换,是更好的特征


手写数字图像识别pycharm 手写数字图像识别原理_tensorflow_24





手写数字图像识别pycharm 手写数字图像识别原理_神经网络_25


 

🍊三、卷积神经网络的介绍

网络结构

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_26

卷积神经网络识别图像

  1. 卷积层初步提取特征
  2. 池化层提取主要特征
  3. 全连接层将各部分特征汇总
  4. 产生分类器,进行预测识别


通过CNN来区别两类。 

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_27

要求我们要区分一些不标准的图片,所以我们要提取特点。

手写数字图像识别pycharm 手写数字图像识别原理_python_28

卷积核(实际上的卷积核需要计算机不断的寻找)

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_29

 卷积的过程

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_30

1*1,-1*-1,等依次计算,填满该矩阵,填满之后加起来然后除于9的得到一个值,即为选定局域得到的中心值的结果。


得到了7*7像素的特征图 ,(该卷积核作用于该图片上的卷积结果)

特征图上,保留了原始图像的特征,在特征图上体现卷积核的特征位置的点越接近于1.

手写数字图像识别pycharm 手写数字图像识别原理_python_31

对提取出来的三个特征的卷积核,与图像卷积,得到三个特征图。


手写数字图像识别pycharm 手写数字图像识别原理_tensorflow_32



池化的过程

手写数字图像识别pycharm 手写数字图像识别原理_python_33


减参特征图

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_34


减参特征图

手写数字图像识别pycharm 手写数字图像识别原理_人工智能_35


 激活函数

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_36

在这里我们使用relu激活函数(0,和本身)提高运算效率,便于进行非线性运算,

手写数字图像识别pycharm 手写数字图像识别原理_tensorflow_37

通过对卷积,池化,激活,像搭积木一样的叠加,把9*9的原始图像变成3张2*2的特征图。

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_38


借助神经网络进行分类,首先把三张2*2的特征图展平,作为神经网络的的输入进行神经网络的计算。 

手写数字图像识别pycharm 手写数字图像识别原理_python_39

步长是指卷积时,卷积核移动的方格的个数。加边的目的是为了捕捉到边缘的信息。

手写数字图像识别pycharm 手写数字图像识别原理_神经网络_40


维度变换 (长宽的变换步长和加边规则是由,厚度是由卷积核的数量)

 

手写数字图像识别pycharm 手写数字图像识别原理_手写数字图像识别pycharm_41

手写数字图像识别pycharm 手写数字图像识别原理_tensorflow_42

训练的目的是为了的到卷积核的内容和偏置项。

如果图片是彩色的,用三维数组表示。

手写数字图像识别pycharm 手写数字图像识别原理_python_43