神经网络中不可微分的解决方案

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] 的代码

参考

  1. Estimating or Propagating Gradients Through Stochastic Neurons for Conditional Computation https://arxiv.org/abs/1308.3432
  1. Categorical Reparameterization with Gumbel-Softmax https://arxiv.org/abs/1611.01144

© Lazurite 2021 - 2024