反向传播(Backpropagation)算法的数学原理
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 准备 本文不是一篇引导读者入门的科普文。读者至少需要对人工神经网络有概念性的理解,并且熟悉偏导数。 这是一个简单的人工神经网络,分为输入层,隐藏层和输出层。输入层以原始数据 x 作为本层向下一层的输出,即 a (1) ;隐藏层将 a (1) 中的元素进行线性组合作为自己的输入,即 z (2) ,然后将 z (2) 进行一个数学变换(函数 g ( z ))作为对下一层的输出,即 a (2) 。以此类推,得到最后一层的输出,即 a (3) 或 hΘ( x ) ,就是人工神经网络的运算结果。 其中 Θ(1), Θ(2) 分别是第1层,第2层向前传递数据时的线性组合参数,把 Θ(1), Θ(2) 统称为 Θ 。在训练时,将已经标记好标准答案(称标准答案为 y )的数据输入网络,刚开始网络的输出与答案往往相距甚远,然后用优化算法(例如梯度下降法)不断修正 Θ ,使网络的计算结果越来越接近标准答案,直至达到要求的精度。 这里定义一个表达式,叫做【代价方程】(Cost Function): J(Θ) = 【计算结果 与 标准答案 之间的差距】 不需要关心 Cost Function 的具体形式,只需要理解它是对计算误差的一种衡量,并且它是 Θ 的函数 。我们的目标就是使计算误差尽量小。