![5a484fef1f6f422ee3ed3387358a6364.png](https://i-blog.csdnimg.cn/blog_migrate/ebc68719397cea0bd18fd808627066e8.jpeg)
人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善.
联想大家熟悉的回归问题, 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数, 并使用该函数进行预测, 网络的训练过程即为调节该函数参数提高预测精度的过程.神经网络要解决的问题与最小二乘法回归解决的问题并无根本性区别.
回归和分类是常用神经网络处理的两类问题, 如果你已经了解了神经网络的工作原理可以在http://playground.tensorflow.org/上体验一个浅层神经网络的工作过程.
感知机(Perceptron)是一个简单的线性二分类器, 它保存着输入权重, 根据输入和内置的函数计算输出.人工神经网络中的单个神经元即是感知机.
在前馈神经网络的预测过程中, 数据流从输入到输出单向流动, 不存在循环和返回的通道.
目前大多数神经网络模型都属于前馈神经网络, 在下文中我们将详细讨论前馈过程.
多层感知机(Multi Layer Perceptron, MLP)是由多个感知机层全连接组成的前馈神经网络, 这种模型在非线性问题中表现出色.
所谓全连接是指层A上任一神经元与临近层B上的任意神经元之间都存在连接.
反向传播(Back Propagation,BP)是误差反向传播的简称,这是一种用来训练人工神经网络的常见算法, 通常与最优化方法(如梯度下降法)结合使用.
本文介绍的神经网络模型在结构上属于MLP, 因为采用BP算法进行训练, 人们也称其为BP神经网络.
BP神经网络原理
经典的BP神经网络通常由三层组成: 输入层, 隐含层与输出层.通常输入层神经元的个数与特征数相关,输出层的个数与类别数相同, 隐含层的层数与神经元数均可以自定义.
![73cd06c229d56aacc480385dd54d351e.png](https://i-blog.csdnimg.cn/blog_migrate/ec79bfc58f001e690f6eeff71c00892c.jpeg)
每个神经元代表对数据的一次处理:
![80fe87a5b6c6b0530f3770b439792b00.png](https://i-blog.csdnimg.cn/blog_migrate/2618f49ca7ce80b58bfa8371852ed9bb.jpeg)
每个隐含层和输出层神经元输出与输入的函数关系为:
Ij=∑iWijOiIj=∑iWijOi
Oj=sigmod(Il)=11+e−IlOj=sigmod(Il)=11+e−Il
其中WijWij表示神经元i与神经元j之间连接的权重,OjOj代表神经元j的输出, sigmod是一个特殊的函数用于将任意实数映射到(