Coursera 笔记

Module 04 · Special Applications: Face recognition & Neural Style Transfer

Content Cost Function内容代价函数

Coursera ↗

神经风格迁移算法的代价函数由**内容代价函数(Content Cost)和风格代价函数(Style Cost)**两个部分组成。接下来,我们首先定义内容代价函数。


内容代价函数的定义

回顾一下神经风格迁移算法的总体代价函数:你需要定义一个内容代价函数,来衡量生成图像与内容图像的相似度。内容代价函数的目的是让生成的图像在“内容”上尽可能与内容图像接近。

内容代价函数的选择依赖于选择的隐藏层(hidden layer):

  • 浅层(Shallow layers):如果选择的隐藏层非常浅(如层1),那么生成图像的像素值将与内容图像的像素值非常相似。
  • 深层(Deep layers):如果选择的隐藏层较深,那么它仅仅要求生成图像中存在与内容图像相似的概念,例如:“如果内容图像中有一只狗,那么生成图像中也应有一只狗。”

在实践中,选择中间层的效果最好。也就是说,选择一个既不是太浅也不是太深的隐藏层。在你本周末的实际问题练习中,你将通过一些具体的例子来获得直观的理解。

通常,我们选择中间层,这样既能捕捉到一些低级的特征,又能捕捉到更复杂的结构信息。


如何定义内容代价函数?

假设你使用一个预训练的卷积神经网络(ConvNet),例如 VGG 网络,或者其他网络,也可以使用相似的网络结构。给定内容图像 C和生成图像 G,我们需要测量这两张图像在“内容”上的相似性。

我们可以使用某一隐藏层 l 来计算内容代价。令aⁱ(l)(c) 和 aⁱ(l)(g) 分别表示内容图像 C 和生成图像 G 在层 l 上的激活值(Activations)。如果这两个激活值非常相似,那么这意味着两张图像的“内容”相似。

因此,内容代价函数 Jcontent(C,G)J_\text{content}(C, G) 可以定义为:

我们计算内容图像和生成图像在层 l 上激活值的逐元素差异的平方,并对其求和。可以选择是否加入归一化常数,这取决于你希望如何调节参数 α。


内容代价函数的实际意义

在梯度下降的过程中,我们会通过最小化内容代价函数来更新生成图像 G。目标是使得在该层的隐藏单元的激活值接近内容图像 C 的激活值,这样生成图像就能够保留内容图像的“内容特征”。

  • 梯度下降优化过程中,目标是使得内容图像和生成图像在该层的激活值尽量相似。
  • 最终结果是生成图像能够在“内容”上尽可能与内容图像接近,同时为风格迁移做准备。

接下来,定义风格代价函数

在定义完内容代价函数后,我们接下来将定义风格代价函数。风格代价函数用于衡量生成图像与风格图像在“风格”上的相似性。

下一个视频将详细介绍如何定义风格代价函数。