bp神经网络优点不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)

bp神经⽹络优点不⾜_深度学习之BP神经⽹络--Stata和R同步
实现(附Stata数据和代码)
DANCE ME TO THE END OF LOVE计量经济圈”,在此仅展⽰Stata的部分。R部分请移步⾄本⼈主页的“R语⾔与机器学习--经济学视 说明:本⽂原发于“ 计量经济圈
⾓”专栏,或点击下⽅链接卡跳转。
盲区⾏者:深度学习之BP神经⽹络--Stata和R同步实现(附R数据和代码)z huanlan.zhihu
深度学习之BP神经⽹络-Stata和R同步实现(附数据和代码)
原推⽂标题:深度学习之BP神经⽹络-Stata和R同步实现(附数据和代码)国家自然科学奖
神经⽹络(Neural Network,或Artificial Neural Network,简称NN或ANN)是Deep Learning深度学习(DL属于ML,ML属于AI)算法的代神经⽹络
表。和SVM⽀持向量机类似,神经⽹络属于典型的black box⿊箱⽅法。从更⼴泛的⾓度来看,神经⽹络可以实现⼏乎所有的学习算法——既可以应⽤于有监督学习的分类和回归,也可以⽤于⽆监督学习的聚类等。
神经⽹络的分类有多种,从演进的⾓度来看,⼤概包括早期的单层神经⽹络(也叫感知器,Perceptron)和前馈神经⽹络(Feedforward Neural Network,FNN),到BP(Backward Propagation,反向传播)神经⽹络,再到现在更为复杂的卷帙(Convolutional)、循环(Recurrent)、深度信念(Deep Belief)和⽣成对抗(Generative Adversarial)神经⽹络等等。
早期的前馈神经⽹络由于过于简单,应⽤价值不⼤。随后的BP算法的提出,使得神经⽹络的性能得到了⼤幅提升。在此基础之上演化出来了多种神经⽹络算法,⼤规模应⽤于Computer Vision计算机视觉、Speech Recognition语⾳识别和Natural Language Processing⾃然语⾔处理,以及在线⼴告、⽹页搜索和商品推荐等。
BP神经⽹络是神经⽹络的典型代表,是初学者的重点学习对象。此外,Stata中⽬前能实现神经⽹络建模的的只有BP神经⽹
总的来看,BP神经⽹络
BP神经⽹络。
络brain命令,尚⽆其它神经⽹络算法的引进,故本⽂在此重点介绍BP神经⽹络阮筠庭插画
1 神经⽹络介绍
1.1 神经⽹络原理
BP神经⽹络属于监督学习,由激活函数、⽹络结构和优化算法三⼤部分组成。对于初学者来说,我们也可以把BP神经⽹络模型⼤概当成⼀BP神经⽹络
个庞杂的复合函数。
BP神经⽹络
BP神经⽹络是在前馈FNN神经⽹络模型的基础上改进。下⾯的视频截图(本⽂中引⽤的视频截图全部来⾃吴恩达深度学习课程)展⽰的是单隐藏层的神经⽹络,便于我们⼤概了解FNN的原理。这⾥所谓前馈,是指向前传播。信息由输⼊变量(inputs,⾃变量)开始,往前经过中间的各个隐藏层向前传导,最终到达输出节点(outputs,因变量)。
上图中以房价预测为例。假设我们先知道房⼦的size⾯积、bedroom卧室的数量、zipcode邮编和当地的wealth⼈均收⼊,打算基于这4个⾃变量来预测房价price。这⾥⾃变量中的size和bedroom的数量,可能会通过购买者的family size来影响房价;邮编zipcode可能通过该社区
的walkability便利性来影响房价;zipcode还可能和wealth⼀起,通过当地的school quality影响房价。这个推导过程和计量经济学中的中介变量、结构化⽅程SEM和RCT中的因果链推导原理有类似之处。1978年12月发生了什么大事
在完成前馈(正向)传播之后,信息再由输出节点反向传播。在介绍正向和反向传播具体原理之前,我们先简单了解下常见的三种激活函数。
1.2 三种常见的激活函数
Activation Function激活函数⽤于“在神经⽹络模型中加⼊⾮线性因素,以解决线性模型所不能解决的问题”。激活函数也⽤于反向传递中的参数修正,所以通常要求是可微的。激活函数的形式可以由⽤户⾃⾏定义,⽽常见的主要是以下三个。
(1)ReLU修正线性单元
ReLU,全称是Rectified Linear Uni t,是最基础的⼀种激活函数。相对于后⾯两种激活函数,ReLU最⼤的优点是斜率的稳定性。不管x的取值多⼤,在梯度下降法中的下降斜率都保持⼀个较⼤的值,⽽不
像Sigmoid或Tanh函数⼀样可能趋近于零⽽导致梯度算法下降较⼩,最终算法学习的速度会变得很慢。 ReLU的缺点也较明显,即当⾃变量取值⼩于0的时候其函数斜率恒等于0。因此,ReLU在⾃变量⼩于0的区域的斜率被改进成为了某个较⼩的常数,⽐如0.01。这种改进后的激活函数被称为Leaky ReLU,泄露ReLU。ReLU的函数图像⼤致如下(来源于百度百科):
ReLU和Leaky ReLU通常⽤于卷积神经⽹络和循环神经⽹络等。
(2)Sigmoid函数
机器学习的Sigmoid函数,⼜被称为Logit函数,或Logistics函数,在计量中常⽤于结果变量是0-1等分类变量的建模。其函数形式如下: y= 1/(1- e^(-x) )
接下来我们⽤Stata画出该函数的图形,让⼤家有个直观的了解。
. clear
. set obs 1000000
什么是有效数字. gen x = runiform(-20, 20)
. gen y = 1/(1+exp(-x))
. line y x, sort xline(-5) xline(0) xline(5) xlabel(-20(5)20)
*在x=-5/0/5初加了3条竖线
3)Tanh双曲正切函数
Tanh函数形式如下:
y = sinhx/coshx=((e^x-e^(-x))/((e^x+e^(-x))
Tanh函数可以看成是Sigmoid函数的改进,通常只要能⽤Sigmoid函数的地⽅,Tanh函数的表现都会
更优。当然,由于Sigmoid的0-1的结Tanh函数
果可能,让它在0-1分类的算法中⽆可替代。在具体操作中,涉及0-1分类的神经⽹络通常在输出层使⽤Sigmoid函数,其它层使⽤Tanh或其它激活函数。 在此也⽤Stata画出Tanh函数的图像(代码省略)如下。
1.3正向传播和反向传播
先简要说明涉及到的函数和数学符号:数学标记符号中⼤写表⽰向量,如x表⽰某个具体的⾃变量,⽽X表⽰⾃变量矩阵;Z=WX+b,这
⾥W指weight权重矩阵,b表⽰bias偏误向量;σ()或g()表⽰激活函数,σ(Z)=A(A表⽰activation,输出层的A=Yhat),信息正是通
过Z=WX+b和σ(Z)=A逐层向后传播;L(A, Y)中的L表⽰loss,为成本(基于损失函数)函数,确定Y和Yhat之间的误差。
反向传播再具体介绍BP神经⽹络的模型算法。
接下来分正向传播
正向传播和反向传播
(1)正向传播
正向传播。如下⾯两个图所⽰,神经⽹络的正向传播就是样本信息向后传递的过程。由于Z是样本特征X的函Forward Propagation,也叫正向传播
数,A是Z的函数,相当于A是X的复合函数。同时,各隐藏层拥有本层的Z和A函数,隐藏层之间通过A(可以看成是某层的预测值)进⾏信息传递(当成下⼀层的X)。从信号(原始数据)传递的⾓度来看,正向传播将输⼊信号通过隐藏层后,作⽤于输出节点,经过⾮线性变换转化
正向传递中的数学算法的通⽤表达如下:
下图展⽰了更具体的前向传递向量化算法实现过程。
(2)后向传播
反向传播。⼀次正向传播加⼀次反向传播,就是⼀次完整的iteration迭代。经过⼀次正向传播后,若实际输出与真Backward Propagation,反向传播
ses实结果差距较⼤,则启动误差的反向传播。
如下图所⽰,后向传播根据前向传播计算出来的A(激活值,A=g(Z))、真实值Y和暂存的Z(Z=Wx+b),⽤求导的⽅式求出每⼀层参数的梯度,以调整模型参数值,进⽽降低成本函数的误差
(梯度下降法)。和前向传播的复合函数构造过程对应,后向传播的实现包括了复合函数从外到内的链式求(偏)导过程。
通俗来说,反向传播是将输出误差反向逐层传递,算出所有层的误差估计,即将输出误差摊分给各层所有单元,并在各层算出误差信号后对各单元的参数进⾏调节(误差以某种形式在各⽹络层进⾏表⽰)。调整正向传播中输⼊层和隐藏层、隐藏层和输出层对应的参数,即可推动误差随梯度⽅向下降。经过重复的学习,确定和最⼩误差所对应的参数后,学习停⽌。 
⼩结:正向传播求损失,反向传播传误差,基于误差值进⾏参数更新;反复迭代求出最优模型。
神经⽹络算法的数学推导有⼀定的学习门槛,对于初学者来说需要⼀定投⼊才能弄懂。吴恩达在他的深度学习系列课程中提到,神经⽹络的反向传递的数学推断⼏乎是是机器学习中最复杂的,需要⽤到矩阵的运算、矩阵的求导和链式求导法则等数学知识。
1.4 参数和超参数
神经⽹络模型的参数主要包括W权重矩阵和b偏误向量,前⽂已提到过。除了参数,神经⽹络模型还包括多个超参数。超参数是决定参数⼤⼩的参数,主要包括:
Learning Rate α 学习率α。如下图所⽰,学习率可以看成是权重w下降部分(成本函数J对w的导数)的系数,其取值介于0和1之间。
⼀个好的学习率,可以让成本函数下降更快,收敛在更低的⽔平。不过也要注意,成本函数的下降速度过快也可能带来问题。若学习率取得过⼤,算法虽然收敛更快,但更容易陷⼊局部最优;反之若取值较⼩,算法的收敛速度较慢,但可以⼀步步逼近全局最优。

本文发布于:2024-09-22 11:29:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/413144.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   神经   学习   传播   算法   反向
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议