前面几篇文章写了深度学习一些基本算法和原理,从这篇文章开始学习进阶课程的一些算法。
这篇文章写一下手写数字识别是如何通过神经网络来识别的。

人脑识别图像:

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


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


比如上面图片中的数字,我们很容易的可以看出这是504192,但其实人脑识别过程是非常复杂的。正如第一张图,我们从视网膜中接收图像,经过层层处理最终达到识别目的。

人脑:大脑视觉皮层V1,包含140000000个神经元,数百亿个连接,还有V2,V3,V4,V5,人脑已经进化了几千年。

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


如上图所示,对于图像我们可以认为它是一个矩阵,彩色图像可以认为是一个三维矩阵,三个通道分别为R,G,B,开始从原始图像中提取部分边界信息,然后提取关键特征,经过层层传递,最终得到识别结果。

对于计算机识别一辆车而言,它看到的是一个矩阵,在0-255之间,不同的数字代表不同的颜色,我们想做的是总结出一个规律,来让计算机轻松识别各种图像,当然,这是非常难的,目前这类研究正在进行中。

手写数字图像识别 手写数字图像识别原理_算法_04


再来看一下手写数字的识别:

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


比如对于以上手写数字,我们人脑经过几千年的进化可以很轻松的识别出来,但是对于计算机而言仍然是比较困难的事情

手写数字图像识别 手写数字图像识别原理_深度学习_06


对于手写数字9而言,每一个小方格都是一个小的像素点,如何让计算机来有效识别这个数字呢?

下面来介绍一些基本概念:

神经元:

手写数字图像识别 手写数字图像识别原理_手写数字图像识别_07


如以上所示,我们输入若干值,经过一个黑盒子,得到一个输出值。

假设我们定义以下输出方程:

手写数字图像识别 手写数字图像识别原理_算法_08


举个简单例子来应用这个模型:

问题:今天去不去踢球?

去不去踢球可能受很多因素的影响:

x1:天气冷吗,天气冷的话,x1=0;天气不冷的话:x1=1

x2:跟我常配合的好友去吗,去的话,x2=1;不去,x2=0

x3:是不是晚饭前,是的话,x3=1;不是的话x3=0

根据以上因素的重要性,我们赋予他们一定的权重:

w1=2,w2=6,w3=3,阈值:threshold=5

假设今天天气不冷,x1=1

跟我常配合的好友去踢球,x2=1

不是晚饭前去踢球,x3=0

所以,12+16+0*3=8>5,所以输出为1

这只是一个简单的模型,实际中模型是非常复杂的,我们把上面的模型简单的变形一下:

手写数字图像识别 手写数字图像识别原理_深度学习_09


模型输出公式如下:

手写数字图像识别 手写数字图像识别原理_深度学习_10


w,x是向量,b=-threshold

b:多容易输出1,或者大脑多容易触发这个神经元

相当于与非门(NAND gate):

手写数字图像识别 手写数字图像识别原理_手写数字图像识别_11


bias设置为3

输入0,0,(-2)*0+(-2)*0+3=3>0,输出1

输入1,1,(-2)*1+(-2)*1+3=-1<0,输出0

可以看出,它的输出跟与非门是非常像的,所以神经元是非常强大的,因为与非门可以模拟任何方程!

为了模拟更细微的变化,输入和输出数值从0到1之间的任何数,我们定义一个sigmoid函数:

手写数字图像识别 手写数字图像识别原理_手写数字图像识别_12


也可以表示为:

手写数字图像识别 手写数字图像识别原理_机器学习_13

图像如下:

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


sigmoid function是神经网络中非常重要的一个方程,现在可以先短暂的认识一下