导读:
近期人工智能火热,十分好奇,决定了解一些基础知识。
本篇博客将从一个数学系渣渣本科生的角度,以学习记录的方式,整理关于BP神经网络的基础知识,以及实现一个简单的BP神经网络实现手写数字识别。
网络上关于 手写数字识别BP神经网络实现 的博客和教程很多,有些写的十分详细,质量很高,但是有些教程存在一些关键性问题,我在学习的时候被坑了不少。例如有些博客中对于神经网络训练的原理讲解十分详细,但事实上对于 具体的 手写数字识别 的训练过程并没有考虑多样本,多输出的情况应该如何调整相应算法,导致训练结果只适合于单张特例学习,或者某样本集的学习,不符合普遍的数字识别。或者考虑到了上述问题,但对原理缺乏介绍。本篇博客将针对这些问题给出详细的解释。
由于本人相关知识水平,文字水平有限,难免出现错误,有些可能是思路上的重大错误。望海涵。
开始进入正题吧。
机器学习基础中的基础:BP神经网络(下称BPnet)
计算机作为一种计算工具,想让其拥有学习功能,自动的学习某种简单的行为模式,看起来是不合实际的。但是,如果把机器学习看作是一种 函数的拟合过程 一切似乎又变得合理起来。为什么要这样说?
我们先看看生物的学习过程:
对于地球上的生物,学习可能就是完成某一条件反射的建立,例如听到下课铃,就想到吃午饭。
大脑是怎么运作的呢?主流的想法是,接受到声波之后,由听力系统产生的神经信号传播到大脑,引起特定区域的神经细胞活跃,这些活跃的神经细胞继续影响其他神经细胞,一系列的神经兴奋与抑制完成的对信号的处理,然后指导身体做出动作,完成条件反射。
模拟这个过程:
图1-1
(图中的每一个小圆点都是一个神经节点。)
每一个小圆点的工作模式是这样的:
左侧的若干条线段代表若干个输入,右侧的线段代表输出。对应多个输入,小圆点会给出唯一的输出。