什么是机器学习中的“生成”
本文介绍机器学习中的生成式任务以及神经网络在其中的作用.
神经网络, 一言以蔽之, 就是个函数拟合器. 在思考神经网络时, 我们实际上思考的是它要拟合的函数, 后者通常是根据一些人为规定的假设推导得到的. 至于神经网络为什么能够很好地做函数拟合, 仍然是未解之谜.
首先, 我们给出假设1:
给定一个数据集, 我们假设其中的样本全都是从一个理想分布
中采样得到的.
这个假设是如此的基本和符合直觉, 以至于我们可以不把它当成一个假设, 而是承认为一个事实.
很自然地想到, 如果我们可以得到
然而,
为此, 我们提出假设2:
我们假设
有一个确定的形式, 然后从数据集来估计 的参数, 例如, 我们经常假设 是一个正态分布, 其中, 参数 , 是根据数据集估计得到的.
自然,
在遵循如上假设后, 我们已经有了一个已知的
很多人会疑惑: 既然假设后的
原因有二:
首先, 我们假设的
和理想情况的 有巨大的差别, 所以直接使用前者的效果是很差的. 之前也说过, 理想情况的 未必就是一个正态分布, 其参数也未必就等于从数据集中统计得到的那些值.其次, 神经网络
的拟合效果非常好. 尽管它被设计为只拟合假设的 , 但是比假设的 更逼近真实的 ! 这种拟合能力是被无数次工程实践证明的, 目前还没有可靠的解释.我们说神经网络作为函数拟合器的效果很好, 那自然就存在一些函数拟合器的效果不好, 例如例如傅立叶级数, 泰勒级数等等.
举个例子, 理想情况的
具体来说, 为了让
- 首先, 将
设计为与 相同形式的分布, 一般是正态分布. - 通过设计loss function, 使得
逼近 . "逼近"可以从很多种层面进行, 有些方法只要求逼近 的期望; 有些方法会要求同时逼近期望和方差; 有些方法就只是让两个分布的KL divergence接近.
实际任务可能比上面说的复杂, 因为我们会使用更小的假设 (不会比之前的小太多), 比如说
注意, 我们假设的