Daniel Yamins,Stanford大学计算神经学家和计算科学家。他正在研究如何识别生物大脑中到底“运行着”哪些算法。然而,这是目前为止神经学家能够发现和利用的最佳的模拟人脑学习的机制了。甚至在20世纪50年代那个深度学习算法和思想还未统治人工智能领域的时候,Hebb法则就启发了第一个神经网络模型的诞生。在那个上古时代,神经网络中的每个神经元都仅能接受一个输入,也只能产生一个输出,就跟生物神经元一样。神经元在计算中会将输入乘以一个所谓的“突触权重”,该突触权重表示所连接的输入重要度,然后将加权的输入们求和。这个加和便构成了各神经元的输出。到了20世纪60年代,神经元被组织成了网络,形成一个具有输入层和输出层的全连接网络。而具有该雏形结构的神经网络模型可以用来解决一些简单的分类和回归问题。在训练的过程中,神经网络的目标是最小化输出和真值之间的误差,并据此调整各神经元的权重取值。而到了20世纪60年代,神经网络由于添加了输入和输出层,网络的结构开始从三明治向多层夹心巨无霸进化,也就是网络层数开始增多。随之而来的是深层神经元的梯度消失问题。当时没有人知道如何有效地训练这些深层神经元,也没有妥善的方法能够高效地训练具有众多隐藏层的神经网络。这个困境直到1986年才得到解决,而解决的标志便是那篇由Hinton、已故的David Rumelhart和来自美国Northeastern大学的Ronald Williams共同发表的反向传播算法论文。反向传播算法可以分成前向和反向传播两个阶段。在前向的阶段中,当网络得到一个输入数据,它会根据当前模型的权重得到一个输出,而该输出和理想的目标输出之间存在着一些误差。而后在反向的阶段中,学习算法将根据误差值为每个神经元的权重进行有针对性的更新,从而使输出和目标值之间的误差变小。为了理解这个学习的过程,我们将网络的实际输出和理想输出之间的误差用一个“损失函数”来进行表示,它描述了模型前向输出结果和期望输出之间的差异。这个损失函数就像是一个二维的“山谷和丘陵”图像,当一个网络的实际输出和期望输出之间的误差较大的时候,对应着二维图形的丘陵部分;当误差较小时,就对应于图形中的山谷。当网络根据指定输出进行前向推理时,得到的输出所对应的误差会对应于二维图像中的某个确切点,而学习的过程就是使该误差从“丘陵”位置沿着“山坡”找到“山谷”的过程。在山谷的位置误差和损失值是很小的。而反向传播算法就是一种更新神经元权重从而降低损失和误差的方法。从计算的角度和算法的本质上来说,在反向传播阶段中,算法会计算每个神经元的权重对误差的贡献度,然后根据误差结果对这些权重进行修改和更新,从而提高网络的性能、降低损失值并得到理想的输出。这个计算过程是从输出层向输入层传递的,方向是从后层向前层进行的,因此人们将其称为反向传播。反向传播算法会利用输入和输出的期望值所组成的数据集反复调整网络的权重,从而得到一组可以接受的收敛的权重。