为了识别数字使用了神经源网络,
神经元神经元网络:装有一个数字的容器 。下图28*28的像素图中有784个神经元,其中0代表纯黑1代表白的数值叫做激活值。这783个神经元组成了网络的第一层。
最后一层神经元为0-9这10个数字。它们的激活值也在0-1之间吗,代表各个数的可能性。
神经网络处理信息的核心机制正是一层的激活值算出下一层。某些程度上讲,他想模仿生物中神经元组成的网络。
在识别数字过程中如下图,9可以拆分成0和1,8为两个0.诸如此类
在理想情况下,我们希望倒数第二层的各个神经元能分别对应上一个笔画。这样一来当我们输入一个9或8这种带圈的数字时。某个神经元的激活值就接近1。
这样引发的问题是如何识别这些部件,那些部件才算是正确的, 识别圆圈可以分解为更小的问题,如识别图形中更小的边。
世界上各种人工职能任务,都可以转化为抽象元素,一层层抽死剥茧。比如语音识别 是从原音频中识别出特殊的声音,组成特定的音节,组成特定的短语以及更抽象的概念。
我们需要给第一层所有数字加一个权重值,我们拿第一层的权重值和激活值乘后相加。
将权重值作为表格,正的标记为绿色负的标位红色,颜色月暗就表示他的权重约接近于0
。
如果把关注区域的权重值赋为正值,而其他区域的权重值都赋值为0,这样一来对所有像素值取加权和,就会累加关注区域的像素值了,此时如果想识别是否有一条边,只需要给周围一圈的像素赋负的权重。这样当中间像素量周围像素暗时,加权和就能达到最大值。
这样计算出来的加权和可以是任意大小,但这个wan刚落,我们需要激活值都在0-1之间,那么我们可以顺其自然把加权和输进某个函数,把实数轴挤压进0-1之间
其中有个叫sigmoid的函数非常常用,又叫logistic/逻辑斯蒂曲线,简而言之,能把非常大的负值变成接近0.非常大的正值接近1.
所以神经元下一层的激活值,实际上就是一个对加权和到底有多正的打分。
但有时即使加权和大于0,你也不想把神经元点亮,可能加权和大于10你才让他激发,此时你要加上一个偏置值,保证不能随便激发。
此时只要在加权和后=10在送入sigmoid压缩、映射函数,这个附加的数就是pian’zhi偏置值。
但这个一层的每个神经元都会和第一层的全部784个神经元相连接。每一个连接线都带一个权重,而且每个神经元计算自己加权和都会带自己的偏置。
加入第二层有16个神经元,就要计算784*16个权重值和16个偏置值。而且这还是单单第一层和第二层之间的连接。一套下来总共会用将近13000个权重加偏置。相当于13000多个旋钮开关来让你调试。所以在讲深度学习,其实是电脑该如何设置这些数字参数。
我们把一层所有激活值统一成一列向量。
再把它和下一层间所有权重放到一个矩阵中,矩阵第n行就是这一层所有的神经元。
这样就可以计算出下一层的加权和。
加权和加上偏置,再导入sigmoid函数,就可以得到下一层的 激活值。
一开始将神经元看做数字的容器,实际上神经元装着的值取决与你输入图形,所以我们将神经元看做一个函数才更准确 。他输入上一层神经元的输出,输出一个0-1的值,其实整个神经元就是一个函数输入784个值输出10个值的函数。
过去常用sigmod训练现在改用ReLU,ReLu全称是线性整流函数,relu就是返回0和a的最大值,其中a是函数的输入,神经元之所以会用这种方法一部分也是为了模仿生物学上的神经元。