从手写数字识别说起

学习深度学习前,我们先不管电脑,我们以我们的人脑为例,来看看我们是怎么学习的,我们的学习需要哪些过程。
那我们来回忆一下我们的学生时代吧,我们要学习首先需要有一个脑子……
然后呢,老师告诉我们,考试要考100分,我们要尽量考高。
我们开始做练习,联系完之后对答案,练习分数越低,说明这段时间学的越差,证明这段时间学习方法不对,要调整!
然后学学学,直到考试能够考到接近满分就OK啦。

正常学生的学习过程应该都是类似上述这样的,整个过程有几个关键:脑子,目标,学习过程。

好看懂了人类是如何学习的,我们来看一个深度学习中的helloword——手写数字识别。

看到如下这个28X28的手写数字3
01.png

凭你的聪明才智,你一定能一眼认识出来,不仅如此,不管它怎么变化,都能够看出它就是3这个数字。

但现在就有一个问题,老板命令你,你滴,把这个写成程序的干活,这个时候你要怎么处理呢。

这时候我们就想,既然想让计算机去像我们一样学习,我们就需要先让计算机“读懂”这几张图片,28X28的图片,对计算机来说就是756个表示不同灰度的数字,按0表示全白,1表示全黑,0-1之间的数就能表示灰度了,这样就让计算机读懂了这张图片,然后完成的人物是什么呢,判断他是0-9中的哪个数字,那就可能有10个不同的输出,我们可以让计算机计算这张图片与0-9十个数字的相似度,相似度最高的自然就是结果了。

这样我们就构建了一个756输入,10输出的函数,这也就是我们神经网络的雏形了。
01.png

神经元是什么

我们来观察我们建立的神经网络中的每一个节点,也就是神经元神经元其实就是一个存储数字的地方,存储的数字在0-1之间,输入的神经元中,这个数表示灰度,输出的神经元中,这个数表示与该数字的相似度。

权重和偏置的作用

01.png

隐藏层的作用

我们接下来看我们的网络结构,结构中除了输入和输出外,我们还有两层神经结构,那么他们有什么作用呢,我们可以直观的想像一下,如果我们知道图片上方有一个“o”,图片下方也有一个“o”我们不难判断这个数字是“8”,如果上面是“o”,下面是“l”,那么这个数字很有可能是“9”,所以我们很乐意倒数第二层的作用是分出“o”和“l”来。

那么这就又有一个问题,怎么识别“o”和“l”呢,我们又会想可以识别处每一条小短边,将他们拼成“o”和“l”,是不是就可以。

因此,有了思路,我们就好办了,我们只需要调节旋钮,使得输入之后,第一层能够激活对应的小短边,小段边又能激活小长边就Ok了

神经网络就是一个巨大的函数