神经网络中不可微分的解决方案
date
Sep 11, 2022
Last edited time
Sep 20, 2022 09:46 AM
status
Published
slug
神经网络中不可微分的解决方案
tags
DL
summary
前置参考资料
type
Post
Field
Plat
不可微的操作有很多,但是基本都有解决方法,只是有解决得好坏的区别。
比如  和 ,解决方法就有好几种,以  为例。假设题主的所说的  的输入是向量  ,希望输出一个,只在第  位置是  ,其他位置是  的向量  ,代表  是  里的最大值。一种简单的解决方案就是将  松弛化,不要求  每一维一定是  或  ,那这样直接让  过一个 Softmax 函数就行了。也就是  ,其中  。
如果还要求不能松弛  ,那么可以使用 Straight-Through Estimator[1],也就是  ,这里括号里的部分当作常数,不加入计算图的求导过程中(在 pytorch 里就是 
detach() 掉)。这样数值上  跟  相等,都是一个在第  位是  ,其他位是  的向量,但是此时导数是可以从  回传到  再传回  的。具体实现可以参考 Gumbel-Softmax[2] 的代码。参考
- Estimating or Propagating Gradients Through Stochastic Neurons for Conditional Computation https://arxiv.org/abs/1308.3432
- Categorical Reparameterization with Gumbel-Softmax https://arxiv.org/abs/1611.01144

