内容简介:第一时间获取好内容
点击上方“ 大数据与人工智能 ”,“星标或置顶公众号”
第一时间获取好内容
作者丨stephenDC
这是作者的第 11 篇文章
前馈网络是神经网络中最为基础的一种,对网络结构的修改可以延伸出其他的网络类型。前馈网络模型的训练,通常基于模型参数的导数。
而误差反向传播,就是其中最为高效的一种求解导数的算法。
但是,误差反向传播并不是很容易被理解。
作者是数学专业出身,也花了不少功夫来理解这个东西。完了就在思考,明明就是一个复合函数的链式求导,为毛会整的这么难以理解呢?
后来发现, 其实是“误差反向传播”这个概念有一定的误导性 ,如果当初起名叫“ 导数反向传播 ”或者“ 梯度反向传播 ”,就容易理解多了。
本文就跟大家聊一下这个话题。
前馈网络模型
图1. 前馈网络结构
前馈网络的结构,如上图所示。
其中包括两类对象,结点和边。结点用来表示一个变量,而边则表示两个结点直接的关系。图中的边我们画成了有向的 (带箭头) ,这是因为从输入到输出,信息是单向的向前流动的,而不能反向流动,所谓的“前馈”,也正是这个意思。每一条边上会附带一个参数,称之为“权重”,其作用我们后面再提。
为了一般性,我们在上图中把网络分成了三个部分,中间部分拿来作为示例,其前后都可能还有若干层的网络结构。
在很多文献里,会把结点称为“神经元”,然后讲“树突”、“轴突”什么的。尽管神经网络模型的提出,确实受到了神经科学的启发,但学习这个模型的时候最好忘掉这些东西,没有什么鸟用。
原因有两点:
1. 作为一个抽象出来的数学模型,应该更加通用,跟生物和神经科学扯在一起,只会限制你的思考。
2. 真正生物意义上的“神经网络”,其结构远比这个复杂,这个模型并不足以描述。
模型的计算
很简单对吧?
不过这里要注意的有两点:
1. 对于回归问题,神经网络的输出层(也即最后一层),通常采用线性激活函数,而中间层则采用非线性激活函数。这里为了说明方便,采用了统一的激活函数。
2. 从输入到输出,每一层都先后按照以上方式进行作用,其结果就是输出变成了输入的一个复合函数。信息每向前传播一层,复合函数之上就多加了一次线性加权求和和一次激活函数作用。
模型的训练
对于监督学习来说,计算出损失函数,然后求出损失函数对各个模型参数的导数,即可对模型进行训练。
对神经网络模型而言,参数求导似乎是一个非常艰巨的任务, 一是因为模型参数非常多;二是因为复合函数非常复杂。
事实上确实如此,但幸运的是,模型参数的导数之间是有关系的,利用这种关系可以高效地对所有参数进行求导。
小结
这篇文章告诉我们,如果有一天你成了大神,发明了什么算法,一定要慎重地给各种相关概念起名字。
大神们都知道咋回事,但容易误导他人啊!谁特么告诉我,输出为连续值的监督学习问题,怎么就叫Regression了? (摊手...)
-end-
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- php – 使用除以总和的正确总和,抵消舍入误差
- 误差低于2%!Zillow采用计算机视觉提升房价评估准确性
- 神经网络详解,正向传播和反向传播
- LimeRAT在野外传播
- 反向传播算法(BP)
- 反向传播算法如何工作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning Apache Struts
Arnold Doray / Apress / 2006-02-20 / USD 44.99
Beginning Apache Struts will provide you a working knowledge of Apache Struts 1.2. This book is ideal for you Java programmers who have some JSP familiarity, but little or no prior experience with Ser......一起来看看 《Beginning Apache Struts》 这本书的介绍吧!