很多计算机视觉尤其是生成模型的相关论文中经常会提到一个现象: “使用损失函数会产生模糊的图像”。大多论文中虽然给出了相关的对比实验结果加以佐证,但是如何用较通俗的方式来解释这个现象呢?
首先来看看损失函数的定义 (Squared L2 Norm):
其中代表样本数,代表真实数据,为重建数据。现在我们从概率的角度来解释这一现象。
解释:为什么L2 loss引入了模糊?
1. 热身——关于 “采样”
生成模型中经常提到一个概念,采样,即Sampling。那么到底什么是采样?为啥要sample from distribution?
假如我们有一批具有某种共同特点的数据,它们符合同一个但是未知的分布。比如说下图的。现在我们想要去估计这个分布(或者说去拟合这个函数)。
由于神经网络是万能的估计器,我们只需要找一个参数化的模型,来近似这个分布,然后找个测度来衡量估计分布和真实分布之间的某种偏差(divergence),若能减小这个偏差到0,就可以说我们拟合了这个分布。但是一个问题在于,所谓“分布”是一个连续的概念,上述过程用公式表示应该为:
其中表示由参数化的关于输入的函数(预测函数)。要优化这个公式,意味着我们需要知道对于每一个,其对应的函数值(fully specified)。显然,我们并不知道函数各处的函数值。那么上式该如何优化?
采样(Sampling)为我们提供了一种解决方法。所谓采样就是去收集许多成对的输入-输出(,), 。如果有足够多并且具有代表性的采样,我们就能通过离散的方式来近似上式的优化过程,即通过这些离散的样本来学习这些样本所在的分布。这些所谓的样本(许多的输入输出数据组合)就构成了我们的训练集。
此外需要强调的一点是,这种采样的方法已经在几乎所有同类问上取得了可靠的结果。另外这种采样是十分简单和通用的,也正是我们一直在做的事情。比如图像描述(Image Caption)问题中,拿到一张图像和其对应的标注;再比如语音问题中拿到一段语音和其对应的文字,这些其实都是Sampling。只不过不同的sampling,其包含的噪声有大有小,反映出数据和真实分布的偏离,也就是最终我们训练集的质量差异。
2. 回到正题——概率解释
我们从简单的一维高斯分布说起
其中为归一化因子,为高斯分布均值,代表标准差。现在从机器学习的角度来理解这个式子:对于该高斯分布,如果我们确定了和,那这个分布就确定了。从理论上来说我们就可以从这个分布中采样,从概率估计(PDE)的角度来说,这样就算达到了目的。但是实际应用时和往往是不知道的,需要我们去确定。由1 知道,估计参数之前我们往往会sample一个训练集。然后根据这些训练样本 ,我们就可以得到一个关于的参数化的,对于真实参数的估计量。注意这个式子是一种一般的写法,比如这个参数化模型可以用神经网络等等。总之这个估计量就是一个关于的函数。既然都是的函数,那么我们很容易想到一个最简单的估计量:
没错!就是训练集的统计均值。说实话,也没那么容易想到...我是看着Ian Goodfellow的花书公式(5.30)打的,上面是这么说的:
“A common estimator of the Gaussian mean parameter is known as the sample mean”.
另外,重要的一点在于,对于高斯分布而言,其样本均值是真实均值的一个无偏估计。
所以这里我们可以令,代进上面的那个高斯公式。假设我们取标准差为1,公式可以简化为:
对两边取对数,可以得到:
注意,我们得到了和损失函数相同的优化目标。总结一下就是:
- 最小化损失函数(或),等同于最大化一个高斯分布的对数似然,也等同于最小化训练集上的经验分布和一个高斯分布的交叉熵,也等同于最小化两分布的散度。
(注意区分训练集上的经验分布)和训练数据所在的真实分布 - 我们得到一个等式:(前三项的证明见花书第五章)
优化KL散度优化交叉熵优化对数似然优化Gaussian条件下的MSE。
可以放一张经典的图:
回顾下上面的讨论,我们实际上相当于做了一个假定:这一批数据都是Sample自同一个高斯分布。这个高斯分布的均值是样本均值,标准差为1。注意,在极大似然估计的框架下假设高斯分布是一个很常用的套路,因为高斯分布是所有分布中熵(不确定度)最大的分布,也就是说高斯分布本身注入了最少的先验知识。
3. 这和图像模糊有啥关系?
那说了这么多,损失函数和图像模糊到底有什么关系呢?我们来考虑一个例子,来看看生活中真实的数据是啥样的。
【假如我们在Google图片中搜索一个词“Car”,会得到很多结果。这里面包括了各种颜色和类型的Car,甚至能搜到车模(哪个车模?)...换句话说,根据一个简单的词Car,有很多种生成图像的方式,不同方式生成的图像可能具有相同的概率(比如我们看到宾利或者汽车总动员都会想到Car)。进一步,我们可以认为,在所有和Car有关的图像构成的真实分布上,有许多个峰值,比如跑车是一个峰,车模是一个峰,等等。对于这种图像分布,我们称之为:多模态(Multimodal)。】
注:这里其实还是不是很明白Multimodal的意思,Ian说的Multi-modal是说很多任务对于同一个输入,对应着多个正确的输出。那么那些不属于Multimodal呢?很多图像去噪任务,输入噪声图像,输出去噪图像,算不算Multimodal呢?还是说生活中的图像都是multimodal??
所以问题就出现了。假如我们用(或者)作为损失函数,其潜在的假设是我们采集到的样本是都来在同一个高斯分布。但是生活中的实际图像,由于具有多种特征,大部分图像分布的流形都不只有一个峰。如果我们强行用一个单峰的高斯分布,去拟合一个多模态的数据分布,会产生什么样的结果呢?
我们举一个两个峰的分布(bimodal distribution)作为例子。假如我们的数据集是由两种明显不同类型的数据构成的,表现在数据分布上有两个峰值。因为损失函数需要减小生成分布和数据集经验分布(双峰分布)直接的差距,而生成分布具有两种类型,我们的模型会尽力去“满足”这两个子分布,最后得到的优化结果如下图所示,即一个位于双峰之间的高斯分布。直观上说,这是由于模型位于中间位置时,总体的距离最小。
扩展到实际应用上就是说,当我们在使用损失训练出来的分布中采样时,虽然采集到的样本属于数据集真实分布的几率很低,但是由于处于中间位置,会被大量采集出来。故我们最终得到的生成样本实质上是两种模式(mode)的数据集采集的样本的平均的效果,故产生了模糊图像。
更具体的说,假如这两种模式是"小轿车"和"SUV",那我们生成的图像很可能不属于这两类中的任何一类。再进一步,假如我们在更高维的图像空间,综合所有Car的属性之后,可能会得到更多不同的mode。我们最终生成的图像就是这些所有可能mode平均值后的结果。
有许多loss的替代品可以用于缓解这一现象。如GAN loss,甚至loss都会取得相对sharp的结果。从直观上说,对于同一个输入,GAN loss不会平均所有可能的Sample,而是随机拿出一个Sample作为生成的样本。(这一现象有没有理论一点的解释?GAN loss为什么可以实现这种操作?)
在2017年的一篇论文 The Unreasonable Effectiveness of Texture Transfer for Single Image Super-resolution 中,作者也提到了在优化MSE时由于"regression-to-the-mean"问题,导致预测结果损失高频信息的情况。
4 遗留问题
- 花书例5.5.1
- loss生成的图像为什么会相对sharper?
- 本文是从“真实世界的数据往往具有多峰分布”来说明multimodal的。而一些GAN的论文中说的multimodal是指多个可能输出。这两种解释之间能找到联系吗?
5. 参考文献
- NIPS 2016 Tutorial: Generative Adversarial Networks
- Image-to-Image Translation with Conditional Adversarial Networks
- Why does L2 reconstruction loss yield blurry images?
- CMU秋季课程2018
- Ian Goodfellow DeepLearning Book
- 一个好用的公式在线编辑网站