目录
1、神经元模型
1.1、神经网络简介
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应,我们在机器学习中谈论神经网络时指的是“神经网络学习”,或者说,是机器学习与神经网络这两个学科领域的交叉部分。 神经网络中最基本的成分是神经元模型,即上述定义的“简单单元”。在生物神经网络中,每个神经元与其它神经元相连,当它“兴奋”时,就会像相连的神经元发送化学物质,从而改变这个神经元内的电位;如果某种神经元的电位超过了一个“阈值”,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。
1.2、神经元信息传递过程
神经元细胞体相当于计算单元。树突通过突触接受其他神经元的输入。信息经过轴突,最后通过突触传递给其他神经元。信息的载体是生物电流(动作电位)。
1.3、M-P神经网络
在人工神经网络的发展历史上,感知机(Multilayer Perceptron,MLP)网络曾对人工神经网络的发展发挥了极大的作用,也被认为是一种真正能够使用的人工神经网络模型,它的出现曾掀起了人们研究人工神经元网络的热潮。单层感知网络(M-P神经元模型)做为最初的神经网络,具有模型清晰、结构简单、计算量小等优点。
在M-P神经元模型中,神经元接收到来自n个其他神经元传递来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
1.4、激活函数
单个神经元的基本结构如上图所示,由线性单元和非线性单元两部分组成。其中,w表示权重神经元之间的连接强度由权重表示,权重的大小表示可能性的大小;b为偏置,偏置的设置是为了正确分类样本,是模型中一个重要的参数;z表示线性单元的输出,g(z)表示非线性单元的输出,函数g就是激活函数。
1.4.1、为什么要有激活函数?
激活函数的作用:增加非线性因素,解决线性模型表达能力不足的缺陷。 没有激活函数的神经网络实质上是一个线性回归模型。
当我们激活函数时,网络中各层只会根据权重w和偏差b进行线性变换,就算有多层网络,也只是相当于多个线性方程的组合,依然只是相当于一个线性回归模型,解决复杂问题的能力有限,下面一起来了解常用的激活函数吧。
1.4.2、常用的激活函数
sigmoid函数可以将输入的整个实数范围内任意值映射到[0,1]范围内
优点:输出在映射区间[0,1]内单调连续,非常适合用作输出层,并且比较容易求导
缺点:其解析式中含有幂运算,计算机求解时相对比较耗时,对于规模比较大的深度网络,会较大地增加训练时间
relu函数,是目前被使用最为频繁地激活函数,relu函数在x < 0时,输出始终为0。由于x > 0时,relu函数的导数为1,即保持输出为x,所以relu函数能够在x > 0时保持梯度不断衰减,从而缓解梯度消失的问题,还能加快收敛速度。
前向传播的实例,就需要借助这个函数
2、简单神经网络
2.1、单输出神经网络
我们称:接受输入的第一层为输入层,提供输出的最后一层称为输出层,中间所有层为隐藏层。隐藏层越多、隐藏层神经元越多,神经网络就能拟合更复杂的情况,但也更难训练。
注意:神经网络中的权重和偏置这些参数是机器自己学习出来的,被称为模型参数;而神经网络一共有几层、每层隐藏层有多少节点等等,这些参数都是预先指定的,这种被预先指定且在学习过程中不改变的参数称为超参数。
2.2、多输出神经网络
该神经网络有四个输出,分别对应的甲、乙、丙、丁四个类别,每个输出的值分别表示取该类别的概率,输出层自然要套上一层Softmax函数
2.3、Softmax函数
从这个图上可以看出来,softmax层只是对神经网络的输出结果进行了一次换算,将输出结果用概率的形式表现出来。
3、前向传播
3.1、BP神经网络
BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。
3.2、前向传播手工推倒
其中,给定的偏置参数i1=0.05,i2=0.10;权重分别为图上的w1,w2,,,w8所示;标签(a_o1) ̅和(a_o2) ̅表示为变量的预测值;a_o1和a_o2表示为网络输出真实值。
在训练神经网络之前,我们需要有一个标准定义它到底好不好,以便我们进行改进,这就是损失(loss),比如用均方差(MSE)来定义损失:
4、反向传播
让神经网络根据输出值a_o1和预测值(a_o1) ̅之间的差别,反向更新参数w,使得拟合得更好,这就是反向传播。
对于只有多个输出值、一个样本的神经网络,以平均方差为例:
我们希望求取的是它对每一个参数的偏导,以进行梯度下降。在此处键入公式。如果直接把展开计算偏导数,这太复杂了!但我们有一个巧妙的工具:链式法则,可利用它把偏导数一层层剥开,最终求出。
下面选择一条链式计算,更新参数。
更新参数。