社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

盘点深度学习中的不可导操作

极市平台 • 11 月前 • 137 次点击  
↑ 点击蓝字 关注极市平台

作者丨Houye@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/97465608
编辑丨极市平台

极市导读

 

深度学习中的绝大多数模型都是靠求导梯度下降来进行参数更新. 但是如果遇到不可求导的操作该怎么办? 这时候如何优化我们的模型呢。本文盘点了深度学习中的不可导操作:次梯度方法和重参数化方法。>>加入极市CV技术交流群,走在计算机视觉的最前沿

深度学习中的绝大多数模型都是靠求导梯度下降来进行参数更新。但是如果遇到不可求导的操作该怎么办? 这时候如何优化我们的模型呢?

本文盘点了深度学习中的不可导操作(次梯度和重参数化).

主要包括两大类

[TOC]

次梯度

深度学习算法通常需要反向传播来进行优化,这就涉及到求导的问题. 激活函数需要满足单调,处处可导,有界等条件. 如传统的sigmoid函数,但是现在很多激活函数并不是处处可导的.

如ReLU函数

其图像如下

很明显在 处不可导,那么如何实现反向传播和模型优化呢? 答案就是:次梯度

次梯度

对于ReLU函数, 当x>0的时候,其导数为1; 当x<0时,其导数为0. 则ReLU函数在x=0的次梯度是 ,这里是次梯度有多个,可以取0,1之间的任意值. 工程上为了方便取c=0即可.

重参数技巧

VAE中对高斯分布的重参数

这里是对连续分布的重参数.

VAE中隐变量z一般取高斯分布,即 ,然后从这个分布中采样.但是这个采样操作是不可导的,进而导致整个模型无法BP. 解决方法就是Reparametrization tricks重参数技巧.

我们首先从从均值为0,标准差为1的高斯分布中采样,再放缩平移得到Z.

这样从 只涉及了线性操作(平移缩放),采样操作在NN计算图之外,而 对于NN来说只是一个常数.


离散分布的采样Gumbel-softmax

Gumbel-Softmax Trick

VAE的例子是一个连续分布(正态分布)的重参数,离散分布的情况也一样,首先需要可以采样,使得离散的概率分布有意义而不是只取概率最大的值,其次需要可以计算梯度。那么怎么做到的,具体操作如下:

对于n维概率向量 ,对 对应的离散随机变量 添加Gumbel噪声,再取样

其中 是是独立同分布的标准Gumbel分布的随机变量,标准Gumbel分布的CDF为 .这就是Gumbel-Max trick。可以看到由于这中间有一个argmax操作.

上述的 argmax操作是不可导的. 所以尝试用softmax来代替, 即Gumbel-Softmax Trick. 这里我们假设argmax返回的是一个one-hot向量,那么我们需要找到argmax的一个显式且光滑的逼近. 这里的 可以利用 从均匀分布中采样得到,即 .

综上总体思路:

  1. 基于Gumbel Distribution采样来避免不可导问题
  2. 在1中引入了argmax又导致了不可导(Gumbel max)
  3. 又引入softmax函数来对argmax进行光滑近似,使得可导(Gumbel softmax)

具体步骤如下:

  • 对于网络输出的一个n维向量v, 生成n个服从均匀分布U(0,1)的独立样本
  • 通过 计算得到
  • 对应相加得到新的值向量
  • 通过softmax函数

这里 就可以实现对argmax的显式且光滑的逼近

温度参数 的影响: 越小(趋近于0), 越接近categorical分布; 越大(趋近于无穷), 越接近均匀分布

证明

常规的softmax形式为

其中, 是softmax之后得到一个概率密度函数. 那么有没有某个分布能够等价于上述的分布呢?

如果对每个 添加独立标准的gumbel噪声(位置为0,尺度为1),并选择值最大的维度输出,每次的输出结果有一个概率密度函数.这样一个概率密度同样为 .

化简

积分里面是 的gumbel分布,整个积分为1,则

结果与softmax的分布一致.

为什么需要gumbel-softmax

乍看起来(https://blog.csdn.net/jackytintin/article/details/79364490),gumbel-softmax 的用处令人费解。比如上面的代码示例,直接使用 softmax,也可以达到类似的参数训练效果。但两者有着根本的区别。原理上,常规的 softmax 直接建模了一个概率分布(多项分布),基于交叉熵的训练准则使分布尽可能靠近目标分布;而 gumbel-softmax 则是对多项分布采样的一个近似。使用上,常规的有监督学习任务(分类器训练)中,直接学习输出的概率分布是自然的选择;而对于涉及采样的学习任务(VAE 隐变量采样、强化学习中对actions 集合进行采样以确定下一步的操作),gumbel-softmax 提供了一种再参数化的方法,使得模型可以以端到端的方式进行训练。


Ref

[1]https://arxiv.org/pdf/1611.01144.pdf
[2][知识点] Reparametrization tricks重参数技巧讲解及应用https://zhuanlan.zhihu.com/p/35218887
[3]https://casmls.github.io/general/2017/02/01/GumbelSoftmax.html
[4]https://lips.cs.princeton.edu/the-gumbel-max-trick-for-discrete-distributions/

[5]【Learning Notes】变分自编码器(Variational Auto-Encoder,VAE)https://blog.csdn.net/jackytintin/article/details/53641885

[6]http://amid.fish/humble-gumbel
[7]https://www.quora.com/How-do-we-compute-the-gradient-of-a-ReLU-for-backpropagation
[8]https://towardsdatascience.com/beyond-the-derivative-subderivatives-1c4e5bf20679

公众号后台回复“对比学习综述”获取最新对比学习PDF资源
极市干货
极视角动态极视角亮相BEYOND Expo,澳门特别行政区经济财政司司长李伟农一行莅临交流极视角助力构建城市大脑中枢,芜湖市湾沚区智慧城市运行管理中心上线!
数据集:60+开源数据集资源大合集(医学图像、卫星图像、语义分割、自动驾驶、图像分类等)
多模态学习CLIP:大规模语言-图像对比预训练实现不俗 Zero-Shot 性能ALBEF:图文对齐后再融合,借助动量蒸馏高效学习多模态表征
点击阅读原文进入CV社区
收获更多技术干货

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/155912
 
137 次点击