24小时热门版块排行榜    

CyRhmU.jpeg
查看: 581  |  回复: 4

lijianguo209

银虫 (正式写手)

[求助] 模式识别已有2人参与

模式识别中有个BP网络算法,那个数学推导运用梯度下降度,梯度下降法怎么算啊?这个算法在哪里有视频讲解啊?谢谢。

发自小木虫IOS客户端
回复此楼
努力
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pluiefox

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
其实就是复合函数链式求导,既可以前向求导也可以反向求导,本质都是链式法则。

但是为什么要使用反向而不使用前向呢?

你可以写出2、3个简单的复合函数,只有加减乘除运算。

然后画一张图,最基本的变量(比如t)是叶子节点,对叶子节点的相应函数变换是其父节点。

接着在图上分别使用前向和反向求根节点对t的导数,其实就是从下往上求导和从下往上求导的过程,可以得到同样的正确结果。

你会发现,前向求导求完以后只能获得根节点对t的导数,而后向方式则可以求解根节点对根节点到t的路径上的“所有中间节点”的导数。

这对于模型优化是很有用的,因为模型分层以后每层的参数都需要求导,如果使用前向的话就得逐层前向求导一次,显然会产生不必要的计算量,而后向的话只需要从后往前一次性就可以求导所有参数。

求导其实就是求解某个参数如何变化时,函数值能最快地下降。导数值体现了该参数对函数值变化的影响,值为正,则函数值递增,为负责递减,绝对值越大变化的幅度越大。

于是在梯度下降法中,辅以一个学习率(learning rate)来控制优化的速度。优化的速度本应是越快越好的,为什么还要控制?答案是若参数变化的幅度太大,很可能使模型无法收敛,变化太小则可能需要很长时间才能收敛,所以一个合适的学习率是有必要的。

这是斯坦福深度学习教程关于反向求导的内容,但对于矩阵变换他的方法是逐元素求导的,看着就头大,还是按矩阵向量为单位求导更直观,不过还是值得一看的:http://deeplearning.stanford.edu/wiki/index.php/Backpropagation_Algorithm

所以反向求导其实只是披上了一个复杂模型外衣的复合函数求导,求导的时候记住这一点就够了。
2楼2015-12-24 11:38:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

getengqing

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
一起交流学习/分享优秀资源
3楼2015-12-24 13:57:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijianguo209

银虫 (正式写手)

引用回帖:
3楼: Originally posted by getengqing at 2015-12-24 13:57:20
bp算法很多的网上,http://v.youku.com/v_show/id_XMzczODk0MDUy.html?tpa=dW5pb25faWQ9MjAwMDE0XzEwMDAwMV8wMV8wMQ

谢谢

发自小木虫IOS客户端
努力
4楼2015-12-24 14:01:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijianguo209

银虫 (正式写手)

引用回帖:
4楼: Originally posted by lijianguo209 at 2015-12-24 14:01:02
谢谢
...

像这个推倒过程,怎么推的啊
模式识别



发自小木虫IOS客户端
努力
5楼2015-12-24 14:02:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lijianguo209 的主题更新
信息提示
请填处理意见