什么是机器学习中的“生成”

本文介绍机器学习中的生成式任务以及神经网络在其中的作用.

神经网络, 一言以蔽之, 就是个函数拟合器. 在思考神经网络时, 我们实际上思考的是它要拟合的函数, 后者通常是根据一些人为规定的假设推导得到的. 至于神经网络为什么能够很好地做函数拟合, 仍然是未解之谜.

首先, 我们给出假设1:

给定一个数据集, 我们假设其中的样本全都是从一个理想分布q中采样得到的.

这个假设是如此的基本和符合直觉, 以至于我们可以不把它当成一个假设, 而是承认为一个事实.

很自然地想到, 如果我们可以得到q, 继续从中采样, 就可以得到源源不断的新样本, 也就是实现了所谓的"生成".

然而, q完全是未知的, 我们不知道它的形式 (是正态分布还是均匀分布, 抑或是一个奇形怪状的分布), 也不知道它的参数 (假如是均匀分布, 我们不知道它的定义域, 不知道一共有多少个可能的结果).

为此, 我们提出假设2:

我们假设q有一个确定的形式, 然后从数据集来估计q参数, 例如, 我们经常假设q是一个正态分布, q(x)=N(μ,σ2), 其中, 参数μ, σ是根据数据集估计得到的.

自然, q未必真的是一个正态分布, 即使是, 它的μσ也未必等于数据集中估计得到的μσ, 但我们总需要使用一些假设才能进行数学推导, 而在所有假设中, "假设2"已经是条件很少的了. 我们可以再去掉一些条件, 比如, 我们可以不固定q的形式, 或者不固定μσ的值, 问题也会变得难解决得多.

在遵循如上假设后, 我们已经有了一个已知的q, 其无论是形式还是参数都是完全确定的. 在deep learning中, 我们用一个神经网络pθ来拟合它.

很多人会疑惑: 既然假设后的q是已知的 (在这里是q(x)=N(μ,σ2)), 为什么我们还要拟合它? 直接用这个q不就行了?

原因有二:

  1. 首先, 我们假设的q和理想情况的q有巨大的差别, 所以直接使用前者的效果是很差的. 之前也说过, 理想情况的q未必就是一个正态分布, 其参数也未必就等于从数据集中统计得到的那些值.

  2. 其次, 神经网络pθ的拟合效果非常好. 尽管它被设计为只拟合假设的q, 但是比假设的q更逼近真实的q! 这种拟合能力是被无数次工程实践证明的, 目前还没有可靠的解释.

    我们说神经网络作为函数拟合器的效果很好, 那自然就存在一些函数拟合器的效果不好, 例如例如傅立叶级数, 泰勒级数等等.

举个例子, 理想情况的q可能是一个与正态分布相似, 但有些微褶皱的分布, 我们假设的q是一个正态分布, 而神经网络pθ, 只要训练得够好, 可能是一个与正态分布相似并带有另一些褶皱的分布, 虽然它和理想的q的褶皱未必完全相同, 但也比假设的q要好了.

具体来说, 为了让pθ拟合得足够好, 我们会用以下方法. 注意, 理想的q是未知的, 我们接下来讨论的q全都是假设的q.

  1. 首先, 将pθ设计为与q相同形式的分布, 一般是正态分布.
  2. 通过设计loss function, 使得pθ逼近q. "逼近"可以从很多种层面进行, 有些方法只要求逼近q的期望; 有些方法会要求同时逼近期望和方差; 有些方法就只是让两个分布的KL divergence接近.

实际任务可能比上面说的复杂, 因为我们会使用更小的假设 (不会比之前的小太多), 比如说μσ不再被简单地假设为两个常量, 而是被假设为关于其他变量的函数, 这样一来, μσ的估计就变复杂了 (但一定可解). 例如, 在经典的duffusion model中, μ被假设为一个关于时间t, 原始样本x0 和其他一些数据的函数.

注意, 我们假设的q一定是可解的, 即一定可以根据已有的信息(比如数据集)算出来. 一个不可解的函数无法被拟合.