计算创意学系列(三):组合性创造力的计算实现( 六 )


计算创意学系列(三):组合性创造力的计算实现
文章图片
卷积神经网络架构图
计算创意学系列(三):组合性创造力的计算实现
文章图片
图一:作为输入的深海图片;图二:经过DeepDream的10个迭代的修改后的图片;图三:经过DeepDream的50个迭代的修改后的图片
正常的神经网络训练是通过修改神经网络中神经元的参数 , 来使得神经网络的输出逼近训练样本指定的结果 。 而DeepDream中对神经网络的使用方式则反其道而为之——去修改图片上各个像素的RGB数值 , 来使得神经网络读取这个图片之后的输出逼近给定的结果 。
如果我们将原本给定的图片所具有的所有特征看作是一个输入概念网络 , 需要最大化置信程度的那个图像类别看作是另一个输入概念网络 , 那么DeepDream的训练过程可以看作是在将这两个概念网络进行概念整合 。 这个概念整合不是简单的将两组特征放到一起——因为给定图片的一些特征可能与需要最大化置信程度的那个图像类别是矛盾的 , 这些特征需要减弱 , 而另一些能够加强那个图像类别的特征又需要加强 。 而之所以两个输入概念网络需要进行整合 , 是因为原本给定的图片所具有的所有特征和需要最大化置信程度的那个图像类别的特征表示 , 是来自两个不同含义的向量空间的特征(就像是来自两个不同的知识领域) , 虽然它们都能够被表示成一堆向量 , 但是因为向量空间含义的不同 , 不能进行简单的算术组合 , 要通过神经网络训练所使用的优化算法(通常是梯度下降法)来进行含义上的相互逼近 。
2015年由LAGatys等人发表的NeuralStyleTransfer(神经风格迁移器)[7] , 可能是这种向量空间“概念整合”的一个更加一般(General)的例子 。 NeuralStyleTransfer在给定两张图片的情况下 , 能够生成一个在内容上模仿第一张图片 , 而在风格上模仿第二张图片的全新的图片 。
图A:用户输入的第一张图片;图B、C、D、E、F:用户输入的五张不同的图片作为第二张图片和对应的结果图片
NeuralStyleTransfer同样基于一个以卷积神经网络为主要架构的神经网络 , 有一个输入图片 , 算法要去修改这个图片上各个像素的RGB数值 , 来使得神经网络读取这个图片之后的输出满足某个预先规定的要求 。 与DeepDream不同的是 , 用户不需要提供神经网络的输入图片 , 算法会随机生成一个像素点阵作为输入图片——这个输入图片的随机性 , 也为整个算法最后的到的结果图片引入了不确定性和多样性 。 整个算法的输入只有分别要在内容上和风格上去模仿的两张图片 。 为了区分这个随机化的神经网络的输入图片和用户提供的两张图片 , 我们下面把前者称作是初始图片 。
而NeuralStyleTransfer与DeepDream的另一个更加重要的区别 , 在于这个神经网络读取修改后的初始图片后产生的输出要去满足的那个预先规定的要求 。 在DeepDream那里 , 这个要求非常简单:DeepDream中的神经网络是一个简单的图片分类器 , 对初始图片修改后的要求是使得这个分类器神经网络的输出是指定的图片类别 。
而在NeuralStyleTransfer这里 , 这个要求有着复杂得多的表达形式 。 直观上来讲 , 对修改后的初始图片的要求是:内容上与用户输入的第一张图片尽可能相似 , 风格上与用户输入的第二张图片尽可能相似 。 而NeuralStyleTransfer这项成果最主要的贡献就是 , 通过提取出卷积神经网络的各种中间运算结果并进行一些数学运算 , 能够得到表示内容的向量特征和表示风格的向量特征 。 因此 , 将修改后的初始图片和用户输入的第一张图片分别输入神经网络 , 提取卷积神经网络运算中间结果并计算出内容向量 , 通过修改初始图片来最小化这两个内容向量的差 , 就能够让修改后的图片在内容上尽可能接近用户输入的第一张图片 。 类似的方式 , 最小化初始图片和用户输入的第二张图片的风格向量之间的差 , 就能够让修改后的图片在风格上尽可能接近用户输入的第二张图片 。