一、什么是神经网络和神经元
人工神经网络(英语:Artificial Neural Network,ANN),简称 神经网络(Neural Network,NN)或 类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型,用于对函数进行估计或近似。
人脑可以看做是一个生物神经网络,由众多的神经元连接而成。当神经元“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。在生物神经网络中,每个神经元与其他神经元相连。各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。
二、如何构建神经网络中的神经元呢?
受生物神经元的启发,人工神经网络有大量的节点(神经元),神经元接收来自其他神经元或外部源的输入,同时每个输入都有一个相关的权值(w),它是根据该输入对当前神经元的重要性来确定的,对该输入加权并与其他输入求和后,经过一个激活函数 f,计算得到该神经元的输出。
其中:
x1,x2......xn代表各输入变量;
w1,w2.....wn指各输入变量对应的参数;
b为偏置;
f为激活函数,常用的激活函数有:sigmodi,tanh,relu;
y为输出的结果
三、神经元的工作方式:
每个神经元都与其他神经元相连接,每个连接都有相应的权重(weights)。一个神经元的输出将作为另一个神经元的输入。每个神经元执行以下操作:
加权求和:将输入数据与相应的权重相乘,然后求和。
四、人工神经网络模型
目前已有数十种不同的神经网络模型,其中前馈型网络和反馈型网络是两种典型的结构模型。
1、前馈神经网络
各个神经元接受前一级的输入,并输出到下一级,模型中没有反馈,层与层之间通过“全连接”进行链接,即两个相邻层之间的神经元完全成对连接,但层内的神经元不相互连接。
2、反馈神经网络
在反馈网络中(Feedback NNs),输入信号决定反馈系统的初始状态,系统经过一系列状态转以后,逐渐收敛于平衡状态,这一状态就是反馈网络经计算后输出的结果。
五、神经网络的学习方式
人工神经网络的工作过程主要分为两个阶段:
学习阶段,对它进行训练,即让其学会它要做的事情,此时各个计算单元状态不变,学习过程就是各连接权上的权值不断调整的过程。学习结束,网络连接权值调整完毕,学习的知识就分布记忆(存储)在网络中的各个连接权上。
工作阶段,此时各个连接权值固定,计算单元变化,以达到某种稳定状态。
六、激活函数
活函数有什么用?
(1)引入非线性因素。
在我们面对线性可分的数据集的时候,简单的用线性分类器即可解决分类问题。但是现实生活中的数据往往不是线性可分的,面对这样的数据,一般有两个方法:引入非线性函数、线性变换。
(2)线性变换
就是把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。
激活函数是如何引入非线性因素的呢?
在神经网络中,为了避免单纯的线性组合,我们在每一层的输出后面都添加一个激活函数(sigmoid、tanh、ReLu等)。
1、Sigmoid函数
Sigmoid函数的优点在于输出范围有限,数据在传递的过程中不容易发散,并且其输出范围为(0,1),可以在输出层表示概率值,如图所示。Sigmoid函数的导数是非零的,很容易计算
• Sigmoid函数的主要缺点是梯度下降非常明显,且两头过于平坦,容易出现梯度消失的情况,输出的值域不对称。
2、tanh函数(双曲正切函数)
tanh函数是sigmoid的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1和-1之间。
tanh函数是总体上都优于sigmoid函数的激活函数。
特点:
解决了Sigmoid函数输出值域不对称问题。它是完全可微分和反对称的,对称中心在原点。然而它的输出值域两头依旧过于平坦,梯度消失问题仍然存在。
3、ReLu函数
ReLU函数是目前神经网络里常用的激活函数,由于ReLU函数是线性特点使其收敛速度比Sigmoid、Tanh更快,而且没有梯度饱和的情况出现。计算更加高效,相比于Sigmoid、Tanh函数,只需要一个阈值就可以得到激活值,不需要对输入归一化来防止达到饱和。
七、正向传播算法
神经网络是用训练数据去训练网络模型并得到所需模型的过程,主要包括正向学习和反向调整两个过程。
正向学习就是从输入层开始,自底向上进行特征学习,最后在输出层输出预测结果。
反向调整就是将预测结果和标签进行对比,反向调整模型参数的过程。
正向传播的的详细原理
八、反向传播算法
反向传播(backward propagation,简称 BP)指的是计算神经网络参数梯度的方法。其原理是基于微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络,依次计算每个中间变量和参数的梯度。
链式求导:
如果大家对神经网络知识感兴趣可以关注我的微信公众号,里面会分享一些知识干货。