深度学习识别手写数字原理

  1. 如何识别像素28 * 28手写数字3
    深度学习识别手写数字原理_第1张图片
  2. 如果分成28 * 28 的网格具体如下:
    深度学习识别手写数字原理_第2张图片
  3. 28 * 28 = 784, 可以由784个像素点代表3.大脑识别不用考虑这些像素点, 很容易识别, 这里不研究大脑如何识别, 而是电脑如何识别。
    大脑很容易区分3 和 6, 另外即使是3, 也有无数种写法, 这是难不倒大脑的。而计算机如何处理?
    深度学习识别手写数字原理_第3张图片
  4. 如何是黑白图片, 可以根据灰度值作如下标记:黑色用0.0表示, 白色用1.0表示, 但无法识别是3.
    深度学习识别手写数字原理_第4张图片
  5. 通过编写程序, 机器学习都无法解决这一问题, 这就需要提到神经网络, 根据大脑对图像的识别原理,解决:
    在这里插入图片描述
  6. 通过对每一个神经元赋值, 再乘以权重w, 再加上bias值, 再把计算结果传到激活函数中sigmoid, 用于激活下一层的神经元, 具体是如何实现的:
    在这里插入图片描述
    首先需要接受, 按照深度神经网络和深度学习可以达到识别数字, 甚至图片这一事实, 甚至识别效果比人类很好。那么工作的原理是什么, 如何分层, 每一层需要有神经元, 需要如何过滤, 选用什么激活函数等需要逐步分析。
  7. 神经元
    深度学习识别手写数字原理_第5张图片
    每一个像素代表一个神经元, 一张28 * 28 的图片有784 个神经元, 神经元中的数字用灰度值表示, 白色代表1, 黑色代表0, 至于哪儿值, 比如0.5激活还是0.6不需要关心, 但可以根据激活函数设定。
  8. 输入和输出:
    深度学习识别手写数字原理_第6张图片
    深度学习识别手写数字原理_第7张图片
    首先输入和输出是确定的, 给定图片大小, 像素是确定的, 输出是0-9, 也是确定的, hidden layer需要有多少个神经元需要自己根据情况设定。只要最终输出值= 目标值即可。
  9. 假设, 当我们识别数字时, 其实也是根据一笔一划识别的
    深度学习识别手写数字原理_第8张图片
    如果让每个神经元负责识别数字的一部分, 最终到达识别所有数字, 那么就需要分层。
  10. 激活函数:
    深度学习识别手写数字原理_第9张图片
    为了实现0, 1的输出需要选择激活函数, 一个理想的函数可以是sigmoid函数, 当然也可以是ReLU, tanh(x)等, 总之激活函数需要满足输出为0 或1.
  11. 激活函数作用:
    深度学习识别手写数字原理_第10张图片

通过input layer的权重和灰度值相乘, 再累加, 传入道第二层的神经元中, 通过激活函数计算输出结果, 判断是否激活, 如果激活, 证明该数字中的某一部分存在, 如果数字中的所有部分都能激活, 那么就可识别这个数字, 一般神经网络第一层识别数字的边角, 深层识别具体的图案。
11. 具体学习视频: https://www.youtube.com/watch?v=aircAruvnKk

你可能感兴趣的:(deep,learning,神经网络,深度学习)