怎样克服神经网络训练中argmax的不可导性?
Posted 机器学习算法与自然语言处理
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样克服神经网络训练中argmax的不可导性?相关的知识,希望对你有一定的参考价值。
来自 | 知乎
作者 | Zhenyue Qin
本文仅作学术分享,若侵权,请联系后台删文处理
有个东西叫strainght through Gumbel (estimator), 可以看一下~
大概思想就是: 假设输入的向量是v, 那么我们用softmax得到softmax(v). 这样, 最大值那个地方就会变得很靠近1, 其他地方就会变得很靠近0. 然后, 我们计算argmax(v), 接着可以得到一个常数c = argmax(v) - softmax(v). 我们这时, 可以用softmax(v) + c来作为argmax(v)的结果. 这个东西的好处是, 我们的softmax(v) + c是有反向传播的能力的. 换句话说, 我们用softmax(v)的梯度来作为反向传播.
如果有哪点没说清楚, 欢迎评论. 谢谢.
P.S. 感谢吕纯川和Towser对于原回答的指正
下载1:四件套
即可获取学习TensorFlow,Pytorch,机器学习,深度学习四件套!
重磅!机器学习算法与自然语言处理交流群已正式成立!
群内有大量资源,欢迎大家进群学习!
额外赠送福利资源!邱锡鹏深度学习与神经网络,pytorch官方中文教程,利用Python进行数据分析,机器学习学习笔记,pandas官方文档中文版,effective java(中文版)等20项福利资源
获取方式:进入群后点开群公告即可领取下载链接
注意:请大家添加时修改备注为 [学校/公司 + 姓名 + 方向]
例如 —— 哈工大+张三+对话系统。
号主,微商请自觉绕道。谢谢!
推荐阅读:
以上是关于怎样克服神经网络训练中argmax的不可导性?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 误导性错误:“Int”不可转换为“CGFloat”