关于反向传播算法,尚未理解清楚:
下面两个链接给出了一个简单的反向传播算法的详细步骤:
中英对照:英文原文(可能需要翻墙)
以误差(损失函数) 对 某权重 w 求偏导,所得即是 此权重值 对产生误差的 影响大小。
所得偏导(绝对值)越大,则影响越大。
用这个 偏导 乘以 某一常数 取反 加到 原来的 w 上去,对 w 进行更新。
我觉得反向传播算法与梯度下降法的关系是:
反向传播算法的每一步都利用梯度下降算法来决定更新。
前向传播用于计算预测结果,
反向传播把预测值与实际值的误差作为优化对象,利用梯度下降算法来更新 权重。
运用类比理解梯度下降法:
梯度下降法背后的直观感受可以用假设情境进行说明。一个被卡在山上的人正在试图下山(即试图找到极小值)。大雾使得能见度非常低。因此,下山的道路是看不见的,所以他必须利用局部信息来找到极小值。他可以使用梯度下降法,该方法涉及到察看在他当前位置山的陡峭程度,然后沿着负陡度(即下坡)最大的方向前进。如果他要找到山顶(即极大值)的话,他需要沿着正陡度(即上坡)最大的方向前进。使用此方法,他会最终找到下山的路。不过,要假设山的陡度不能通过简单地观察得到,而需要复杂的工具测量,而这个工具此人恰好有。需要相当长的一段时间用仪器测量山的陡峭度,因此如果他想在日落之前下山,就需要最小化仪器的使用率。问题就在于怎样选取他测量山的陡峭度的频率才不致偏离路线。
在这个类比中,此人代表反相传播算法,而下山路径表示能使误差最小化的权重集合。山的陡度表示误差曲面在该点的斜率。他要前行的方向对应于误差曲面在该点的梯度。用来测量陡峭度的工具是微分(误差曲面的斜率可以通过对平方误差函数在该点求导数计算出来)。他在两次测量之间前行的距离(与测量频率成正比)是算法的学习速率。参见限制一节中对此类型“爬山”算法的限制的讨论。--from wikipedia