2.选取训练集中的一个例子作为输入,计算感知机的输出
3.对于每一个感知机,如果其计算结果和该例子的结果不匹配,调整初始权值
4.继续采用训练集中的下一个例子,重复过程2到4次,直到感知机不再犯错。
这一规则并不适用多层结构的原因应该很直观清楚了:选取训练集中的例子进行训练时,我们只能对最终的输出层的输出结果进行校正,但是,对于多层结构来说,我们该如何调整最终输出层之前的层结构权值呢?答案(尽管需要花时间来推导)又一次需要依赖古老的微积分:链式法则。这里有一个重要现实:神经网络的神经元和感知机并不完全相同,但是,可用一个激活函数来计算输出,该函数仍然是非线性的,但是可微分,和Adaline神经元一样;该导数不仅可以用于调整权值,减少误差,链式法则也可用于计算前一层所有神经元导数,因此,调整它们权重的方式也是可知的。说得更简单些:我们可以利用微积分将一些导致输出层任何训练集误差的原因分配给前一隐藏层的每个神经元,如果还有另外一层隐藏层,我们可以将这些原因再做分配,以此类推——我们在反向传播这些误差。而且,如果修改了神经网络(包括那些隐藏层)任一权重值,我们还可以找出误差会有多大变化,通过优化技巧(时间长,典型的随机梯度下降)找出最小化误差的最佳权值。
反向传播的基本思想
反向传播由上世纪60年代早期多位研究人员提出,70年代,由Seppo Linnainmaa引入电脑运行,但是,Paul Werbos在1974年的博士毕业论文中深刻分析了将之用于神经网络方面的可能性,成为美国第一位提出可以将其用于神经网络的研究人员。有趣的是,他从模拟人类思维的研究工作中并没有获得多少启发,在这个案例中,弗洛伊德心理学理论启发了他,正如他自己叙述:
1968年,我提出我们可以多少模仿弗洛伊德的概念——信度指派的反向流动( a backwards flow of credit assignment,),指代从神经元到神经元的反向流动…我解释过结合使用了直觉、实例和普通链式法则的反向计算,虽然它正是将弗洛伊德以前在心理动力学理论中提出的概念运用到数学领域中!
尽管解决了如何训练多层神经网络的问题,在写作自己的博论文时也意识到了这一点,但是,Werbos没有发表将BP算法用于神经网络这方面的研究,直到1982年人工智能冬天引发了寒蝉效应。实际上,Werbos认为,这种研究进路对解决感知机问题是有意义的,但是,这个圈子大体已经失去解决那些问题的信念。
Minsky的书最著名的观点有几个:(1)我们需要用MLPs[多层感知机,多层神经网络的另一种说法)来代表简单的非线性函数,比如XOR 映射;而且(2)世界上没人发现可以将MLPs训练得够好,以至于可以学会这么简单的函数的方法。Minsky的书让世上绝大多数人相信,神经网络是最糟糕的异端,死路一条。Widrow已经强调,这种压垮早期『感知机』人工智能学派的悲观主义不应怪在Minsky的头上。他只是总结了几百位谨慎研究人员的经验而已,他们尝试找出训练MLPs的办法,却徒劳无功。也曾有过希望,比如Rosenblatt所谓的backpropagation(这和我们现在说的 backpropagation并不完全相同!),而且Amari也简短表示,我们应该考虑将最小二乘(也是简单线性回归的基础)作为训练神经网络的一种方式(但没有讨论如何求导,还警告说他对这个方法不抱太大期望)。但是,当时的悲观主义开始变得致命。上世纪七十年代早期,我确实在MIT采访过Minsky。我建议我们合著一篇文章,证明MLPs实际上能够克服早期出现的问题…但是,Minsky并无兴趣(14)。事实上,当时的MIT,哈佛以及任何我能找到的研究机构,没人对此有兴趣。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-72116-4.html
诋毁抹黑竞争对手