深度学习进阶课程01---手写数字(图像)识别

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

人脑识别图像:
深度学习进阶课程01---手写数字(图像)识别
深度学习进阶课程01---手写数字(图像)识别
比如上面图片中的数字,我们很容易的可以看出这是504192,但其实人脑识别过程是非常复杂的。正如第一张图,我们从视网膜中接收图像,经过层层处理最终达到识别目的。
人脑:大脑视觉皮层V1,包含140000000个神经元,数百亿个连接,还有V2,V3,V4,V5,人脑已经进化了几千年。
深度学习进阶课程01---手写数字(图像)识别
如上图所示,对于图像我们可以认为它是一个矩阵,彩色图像可以认为是一个三维矩阵,三个通道分别为R,G,B,开始从原始图像中提取部分边界信息,然后提取关键特征,经过层层传递,最终得到识别结果。
对于计算机识别一辆车而言,它看到的是一个矩阵,在0-255之间,不同的数字代表不同的颜色,我们想做的是总结出一个规律,来让计算机轻松识别各种图像,当然,这是非常难的,目前这类研究正在进行中。
深度学习进阶课程01---手写数字(图像)识别
再来看一下手写数字的识别:
深度学习进阶课程01---手写数字(图像)识别
比如对于以上手写数字,我们人脑经过几千年的进化可以很轻松的识别出来,但是对于计算机而言仍然是比较困难的事情
深度学习进阶课程01---手写数字(图像)识别
对于手写数字9而言,每一个小方格都是一个小的像素点,如何让计算机来有效识别这个数字呢?
下面来介绍一些基本概念:
神经元:
深度学习进阶课程01---手写数字(图像)识别
如以上所示,我们输入若干值,经过一个黑盒子,得到一个输出值。
假设我们定义以下输出方程:
深度学习进阶课程01---手写数字(图像)识别
举个简单例子来应用这个模型:
问题:今天去不去踢球?
去不去踢球可能受很多因素的影响:
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
这只是一个简单的模型,实际中模型是非常复杂的,我们把上面的模型简单的变形一下:
深度学习进阶课程01---手写数字(图像)识别
模型输出公式如下:
深度学习进阶课程01---手写数字(图像)识别
w,x是向量,b=-threshold
b:多容易输出1,或者大脑多容易触发这个神经元
相当于与非门(NAND gate):
深度学习进阶课程01---手写数字(图像)识别
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函数:
深度学习进阶课程01---手写数字(图像)识别
也可以表示为:
深度学习进阶课程01---手写数字(图像)识别

图像如下:
深度学习进阶课程01---手写数字(图像)识别
sigmoid function是神经网络中非常重要的一个方程,现在可以先短暂的认识一下