20 Dec

《从动力学角度看优化算法(一):从SGD到动量加速》一文中,我们提出SGD优化算法跟常微分方程(ODE)的数值解法其实是对应的,由此还可以很自然地分析SGD算法的收敛性质、动量加速的原理等等内容。

在这篇文章中,我们继续沿着这个思路,去理解优化算法中的自适应学习率算法。

RMSprop

首先,我们看一个非常经典的自适应学习率优化算法:RMSprop。RMSprop虽然不是最早提出的自适应学习率的优化算法,但是它却是相当实用的一种,它是诸如Adam这样的更综合的算法的基石,通过它我们可以观察自适应学习率的优化算法是怎么做的。

算法概览

一般的梯度下降是这样的:
$$\begin{equation}\boldsymbol{\theta}_{n+1}=\boldsymbol{\theta}_{n} - \gamma \nabla_{\boldsymbol{\theta}} L(\boldsymbol{\theta}_{n})\end{equation}$$
很明显,这里的$\gamma$是一个超参数,便是学习率,它可能需要在不同阶段做不同的调整。

而RMSprop则是
$$\begin{equation}\begin{aligned}\boldsymbol{g}_{n+1} =& \nabla_{\boldsymbol{\theta}} L(\boldsymbol{\theta}_{n})\\
\boldsymbol{G}_{n+1}=&\lambda \boldsymbol{G}_{n} + (1 - \lambda) \boldsymbol{g}_{n+1}\otimes \boldsymbol{g}_{n+1}\\
\boldsymbol{\theta}_{n+1}=&\boldsymbol{\theta}_{n} - \frac{\tilde{\gamma}}{\sqrt{\boldsymbol{G}_{n+1} + \epsilon}}\otimes \boldsymbol{g}_{n+1}
\end{aligned}\end{equation}$$

点击阅读全文...

10 Oct

变分自编码器 = 最小化先验分布 + 最大化互信息

这篇文章很简短,主要描述的是一个很有用、也不复杂、但是我居然这么久才发现的事实~

《深度学习的互信息:无监督提取特征》一文中,我们通过先验分布和最大化互信息两个loss的加权组合来得到Deep INFOMAX模型最后的loss。在那篇文章中,虽然把故事讲完了,但是某种意义上来说,那只是个拼凑的loss。而本文则要证明那个loss可以由变分自编码器自然地导出来。

过程

不厌其烦地重复一下,变分自编码器(VAE)需要优化的loss是
\begin{equation}\begin{aligned}&KL(\tilde{p}(x)p(z|x)\Vert q(z)q(x|z))\\
=&\iint \tilde{p}(x)p(z|x)\log \frac{\tilde{p}(x)p(z|x)}{q(x|z)q(z)} dzdx\end{aligned}\end{equation}
相关的论述在本博客已经出现多次了。VAE中既包含编码器,又包含解码器,如果我们只需要编码特征,那么再训练一个解码器就显得很累赘了。所以重点是怎么将解码器去掉。

其实再简单不过了,把VAE的loss分开两部分

点击阅读全文...

16 Oct

再谈非方阵的行列式

几年前,笔者曾经以自己对矩阵的粗浅理解写了一个“理解矩阵”系列,其中有一篇《为什么只有方阵有行列式?》讨论了非方阵的行列式问题,里边给出了“非方针的行列式不好看”和“方阵的行列式就够了”的观点。本文来再次思考这个问题。

首先回顾方阵的行列式,其实行列式最重要的价值在于它的几何意义:

n维方阵的行列式的绝对值,等于它的各个行(或列)向量所张成的n维立体的超体积。

这个几何意义是行列式的一切重要性的源头,相关的讨论可以参考《行列式的点滴》,它也是我们讨论非方阵行列式的基础。

分析

对于方阵$\boldsymbol{A}_{n\times n}$来说,可以将它看成$n$个行向量的组合,也可以看成$n$个列向量的组合,不管是哪一种,行列式的绝对值都等于这$n$个向量所张成的$n$维立体的超体积。换句话说,对于方阵来说,行、列向量的区分不改变行列式。

对于非方阵$\boldsymbol{B}_{n \times k}$就不一样了,不失一般性,假设$n > k$。我们可以将它看成$n$个$k$维行向量的组合,也可以看成$k$个$n$维列向量的组合。非方针的行列式,应该也具有同样含义,即它们所张成的立体的超体积。

我们来看第一种情况,如果看成$n$个$k$维行向量,那么就得视为这$n$个向量张成的$n$维体的超体积了,但是要注意$n > k$,因此这$n$个向量必然线性相关,因此它们根本就张不成一个$n$维体,也许是一个$n-1$维体甚至更低,这样一来,它的$n$维体的超体积自然为0。

但是第二种情况就没有那么平凡了。如果看成$k$个$n$维列向量,那么这$k$个向量虽然是$n$维的,但它们张成的是一个$k$维体,这$k$维体的超体积未必为0。我们就以这个非平凡的体积作为非方阵行列式的定义好了。

点击阅读全文...

26 Dec

【学习清单】最近比较重要的GAN进展论文

这篇文章简单列举一下我认为最近这段时间中比较重要的GAN进展论文,这基本也是我在学习GAN的过程中主要去研究的论文清单。

生成模型之味

GAN是一个大坑,尤其像我这样的业余玩家,一头扎进去很久也很难有什么产出,尤其是各个大公司拼算力搞出来一个个大模型,个人几乎都没法玩了。但我总觉得,真的去碰了生成模型,才觉得自己碰到了真正的机器学习。这一点,不管在图像中还是文本中都是如此。所以,我还是愿意去关注生成模型。

当然,GAN不是生成模型的唯一选择,却是一个非常有趣的选择。在图像中至少有GAN、flow、pixelrnn/pixelcnn这几种选择,但要说潜力,我还是觉得GAN才是最具前景的,不单是因为效果,主要是因为它那对抗的思想。而在文本中,事实上seq2seq机制就是一个概率生成模型了,而pixelrnn这类模型,实际上就是模仿着seq2seq来做的,当然也有用GAN做文本生成的研究(不过基本上都涉及到了强化学习)。也就是说,其实在NLP中,生成模型也有很多成果,哪怕你主要是研究NLP的,也终将碰到生成模型。

好了,话不多说,还是赶紧把清单列一列,供大家参考,也作为自己的备忘。

点击阅读全文...

7 Nov

WGAN-div:一个默默无闻的WGAN填坑者

今天我们来谈一下Wasserstein散度,简称“W散度”。注意,这跟Wasserstein距离(Wasserstein distance,简称“W距离”,又叫Wasserstein度量、Wasserstein metric)是不同的两个东西。

本文源于论文《Wasserstein Divergence for GANs》,论文中提出了称为WGAN-div的GAN训练方案。这是一篇我很是欣赏却默默无闻的paper,我只是找文献时偶然碰到了它。不管英文还是中文界,它似乎都没有流行起来,但是我感觉它是一个相当漂亮的结果。

WGAN-div的部分样本(2w iter)

WGAN-div的部分样本(2w iter)

如果读者需要入门一下WGAN的相关知识,不妨请阅读拙作《互怼的艺术:从零直达WGAN-GP》

WGAN

我们知道原始的GAN(SGAN)会有可能存在梯度消失的问题,因此WGAN横空出世了。

W距离

WGAN引入了最优传输里边的W距离来度量两个分布的距离:
\begin{equation}W_c[\tilde{p}(x), q(x)] = \inf_{\gamma\in \Pi(\tilde{p}(x), q(x))} \mathbb{E}_{(x,y)\sim \gamma}[c(x,y)] \end{equation}
这里的$\tilde{p}(x)$是真实样本的分布,$q(x)$是伪造分布,$c(x,y)$是传输成本,论文中用的是$c(x,y)=\Vert x-y\Vert$;而$\gamma\in \Pi(\tilde{p}(x), q(x))$的意思是说:$\gamma$是任意关于$x, y$的二元分布,其边缘分布则为$\tilde{p}(x)$和$q(y)$。直观来看,$\gamma$描述了一个运输方案,而$c(x,y)$则是运输成本,$W_c[\tilde{p}(x), q(x)]$就是说要找到成本最低的那个运输方案所对应的成本作为分布度量。

点击阅读全文...

20 Nov

不用L约束又不会梯度消失的GAN,了解一下?

不知道从什么时候开始,我发现我也掉到了GAN的大坑里边了,唉,争取早日能跳出来...

这篇博客介绍的是我最近提交到arxiv的一个关于GAN的新框架,里边主要介绍了一种对概率散度的新理解,并且基于这种理解推导出了一个新的GAN。整篇文章比较偏理论,对这个GAN的相关性质都做了完整的论证,自认为是一个理论完备的结果。

文章链接:https://papers.cool/arxiv/1811.07296

先摆结论:

1、论文提供了一种分析和构造概率散度的直接思路,从而简化了构建新GAN框架的过程。

2、推导出了一个称为GAN-QP的GAN框架$\eqref{eq:gan-gp-gd}$,这个GAN不需要像WGAN那样的L约束,又不会有SGAN的梯度消失问题,实验表明它至少有不逊色于、甚至优于WGAN的表现。

GAN-QP效果图

GAN-QP效果图

论文的实验最大做到了512x512的人脸生成(CelebA HQ),充分表明了模型的有效性(效果不算完美,但是模型特别简单)。有兴趣的朋友,欢迎继续阅读下去。

点击阅读全文...

8 Jan

最近把优化算法跟动力学结合起来思考得越来越起劲了,这是优化算法与动力学系列的第三篇,我有预感还会有第4篇,敬请期待~

简单来个剧情回顾:第一篇中我们指出了其实SGD相当于常微分方程(ODE)的数值解法:欧拉法;第二篇我们还是数值解法的误差分析的角度,分析了为什么可以通过梯度来调节学习率,因此也就解释了RMSprop、Adam等算法中,用梯度调节学习率的原理。

本文将给出一个更统一的观点来看待这两个事情,并且试图回答一个更本质的问题:为什么是梯度下降?

(注:本文的讨论没有涉及到动量加速部分。)

点击阅读全文...

30 Jan

“看那挖坑的人,有啥不一样~”

“看那挖坑的人,有啥不一样~”

在这个系列中,我们尝试从能量的视角理解GAN。我们会发现这个视角如此美妙和直观,甚至让人拍案叫绝。

本视角直接受启发于Benjio团队的新作《Maximum Entropy Generators for Energy-Based Models》,这篇文章前几天出现在arxiv上。当然,能量模型与GAN的联系由来已久,并不是这篇文章的独创,只不过这篇文章做得仔细和完善一些。另外本文还补充了自己的一些理解和思考上去,力求更为易懂和完整。

作为第一篇文章,我们先来给出一个直白的类比推导:GAN实际上就是一场前仆后继(前挖后跳?)的“挖坑”与“跳坑”之旅~

总的来说,本文的大致内容如下:

1、给出了GAN/WGAN的清晰直观的能量图像;

2、讨论了判别器(能量函数)的训练情况和策略;

3、指出了梯度惩罚一个非常漂亮而直观的能量解释;

4、讨论了GAN中优化器的选择问题。

点击阅读全文...