深度学习笔记(49) 风格代价函数

  • 1. 风格相关系数
  • 2. 风格矩阵
  • 3. 风格代价函数

1. 风格相关系数


比如有这样一张图片,可能已经对这个计算很熟悉了,它能算出这里是否含有不同隐藏层
现在选择了某一层 lll(编号1),比如这一层去为图片的风格定义一个深度测量
现在要做的就是将图片的风格定义为 lll 层中各个通道之间激活项的相关系数

现在将 lll 层的激活项取出,这是个nH × nW × nC的激活项,它是一个三维的数据块

关于不同通道之间激活项的相关系数
现在注意这个激活块,把它的不同通道渲染成不同的颜色

在这个例子中,假如有5个通道,将它们染成了五种颜色
一般情况下,在神经网络中会有许多通道
但这里只用5个通道,会更方便理解

为了能捕捉图片的风格,需要进行下面这些操作
首先先看前两个通道,前两个通道(编号1、2)分别是图中的红色和黄色部分

假设在图片左下角在第一个通道中含有某个激活项(蓝色点),第二个通道也含有某个激活项(蓝色点)
于是组成了一对数字(编号1)


然后再看看这个激活项块中其他位置的激活项,它们也分别组成了很多对数字(编号2,3所示)
分别来自第一个通道(红色通道)和第二个通道(黄色通道)
现在得到了很多个数字对,当取得这两个nH × nW的通道中所有的数字对后


红色的通道(编号1)对应的是这个神经元(编号3),它能找出图片中的特定位置是否含有这些垂直纹理
黄色的通道(编号2)对应的是这个神经元(编号4),它可以粗略地找出橙色的区域

如果两个通有高度相关性
那么图片中出现垂直纹理的地方,那么这块地方很大概率是橙色
如果说它们是不相关的
这意味着图片中有垂直纹理的地方很大概率不是橙色的

而相关系数描述的就是当图片某处出现这种垂直纹理时,该处又同时是橙色的可能性

相关系数这个概念提供了一种去测量这些不同的特征的方法
比如这些垂直纹理和橙色或是其他的特征去测量它们在图片中的各个位置同时出现或不同时出现的频率

如果在通道之间使用相关系数来描述通道的风格,能做的就是:
测量生成图像中第一个通道(编号1)是否与第二个通道(编号2)相关
通过测量,能得知在生成的图像中垂直纹理和橙色同时出现或者不同时出现的频率
这样将能够测量生成的图像的风格与输入的风格图像的相似程度


2. 风格矩阵

对于这两个图像,也就是风格图像与生成图像,需要计算一个风格矩阵
说得更具体一点就是:用 lll 层来测量风格

设ai,j,k[l] 为隐藏层l中( i, j, k)位置的激活项
i,j,k分别代表该位置的高度、宽度以及对应的通道数

现在要做的就是去计算一个关于 lll 层和风格图像的矩阵,即G[l](S)(l表示层数,S表示风格图像)
这G[l](S)是一个nc × nc的矩阵,同样地,也对生成的图像进行这个操作G[l](G)

但是现在先来定义风格图像,设这个关于 lll 层和风格图像的
G 这个矩阵的高度和宽度都是 lll 层的通道数
在这个矩阵中 k 和 k’ 元素被用来描述 k 通道和 k’ 通道之间的相关系数

用符号i,j表示下界,对i,j,k位置的激活项ai,j,k[l]乘以同样位置的激活项
也就是 i, j, k’ 位置的激活项,即ai,j,k[l],将它们两个相乘
然后i和j分别加到l层的高度和宽度,即 nH[l] 和 nW[l]将这些不同位置的激活项都加起来
( i, j, k) 和 ( i, j, k’) 中x坐标和y坐标分别对应高度和宽度
将 k 通道和 k’ 通道上这些位置的激活项都进行相乘

一直以来用的这个公式,严格来说,它是一种非标准的互相关函数
因为没有减去平均数,而是将它们直接相乘

这就是输入的风格图像所构成的风格矩阵,然后,再对生成图像做同样的操作

上标(S)和(G)分别表示在风格图像S中的激活项和在生成图像G的激活项

之所以用大写字母G来代表这些风格矩阵,是因为在线性代数中这种矩阵有时也叫Gram矩阵
但在这里只把它们叫做风格矩阵

所以要做的就是计算出这张图像的风格矩阵,以便能够测量出刚才所说的这些相关系数
更正规地来表示,用ai,j,k[l]来记录相应位置的激活项,也就是l层中的 i, j, k位置
所以 i 代表高度,j 代表宽度,k 代表着l中的不同通道
之前说过,有5个通道,所以 k 就代表这五个不同的通道

对于这个风格矩阵,要做的就是计算这个矩阵也就是G[l] 矩阵,它是个nc×nc的矩阵,也就是一个方阵
记住,因为这里有nc个通道,所以矩阵的大小是nc×nc
以便计算每一对激活项的相关系数
所以G(kk’)[l] 可以用来测量 k 通道与 k’ 通道中的激活项之间的相关系数
k 和 k '会在1到nc之间取值,nc就是 lll 层中通道的总数量

要注意,如果两个通道中的激活项数值都很大,那么G(kk’)[l]也会变得很大
对应地,如果他们不相关那么G(kk’)[l]就会很小


严格来讲,一直使用这个公式来表达直觉想法
但它其实是一种非标准的互协方差,因为并没有减去均值而只是把这些元素直接相乘
这就是计算图像风格的方法


3. 风格代价函数

现在,有2个风格矩阵,分别从风格图像S和生成图像G

最后,如果将S和G代入到风格代价函数中去计算,这将得到这两个矩阵之间的误差

因为它们是矩阵,所以在这里加一个F(Frobenius范数,编号1所示)
这实际上是计算两个矩阵对应元素相减的平方的和
把这个式子展开,从 k 和 k’ 开始作它们的差,把对应的式子写下来,然后把得到的结果都加起来
在这里使用了一个归一化常数,也就是

再在外面加一个平方
但是一般情况下不用写这么多,一般只要将它乘以一个超参数β就行


最后,这是对l层定义的风格代价函数,和之前见到的一样
这是两个矩阵间一个基本的Frobenius范数
也就是S图像和G图像之间的范数再乘上一个归一化常数,不过这不是很重要

实际上,如果对各层都使用风格代价函数,会让结果变得更好
如果要对各层都使用风格代价函数,可以这么定义代价函数
把各个层的结果(各层的风格代价函数)都加起来,这样就能定义它们全体了
还需要对每个层定义权重,也就是一些额外的超参数,用 λ[l] 来表示
这样将能够在神经网络中使用不同的层
包括之前的一些可以测量类似边缘这样的低级特征的层,以及之后的一些能测量高级特征的层
使得神经网络在计算风格时能够同时考虑到这些低级和高级特征的相关系数
这样,在基础的训练中在定义超参数时,可以尽可能的得到更合理的选择

为了把这些东西封装起来,你现在可以定义一个全体代价函数

之后用梯度下降法,或者更复杂的优化算法来找到一个合适的图像G,并计算J(G)J(G)J(G)的最小值
维持网络不同层的风格图像S同样位置的激活项的乘积之和与生成图像G尽量相同
这样的话,将能够得到非常好看的结果


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(48) 内容代价函数
深度学习笔记(47) 神经风格迁移
深度学习笔记(46) 深度卷积网络学习
深度学习笔记(45) 人脸验证与二分类
深度学习笔记(44) Triplet 损失


谢谢!

深度学习笔记(49) 风格代价函数相关推荐

  1. 深度学习笔记(48) 内容代价函数

    深度学习笔记(48) 内容代价函数 1. 激活函数值 2. 内容代价函数 1. 激活函数值 风格迁移网络的代价函数有一个内容代价部分,还有一个风格代价部分 先定义内容代价部分,不要忘了这就是整个风格迁 ...

  2. 深度学习笔记(47) 神经风格迁移

    深度学习笔记(47) 神经风格迁移 1. 神经风格迁移 2. 代价函数 1. 神经风格迁移 近,卷积神经网络最有趣的应用是神经风格迁移 来看几个例子,比如这张照片,照片是在斯坦福大学拍摄的 如果想利用 ...

  3. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  4. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  5. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  6. 33万字!深度学习笔记在线版发布!

    吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在 github 开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在 ...

  7. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  8. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  9. AI Studio 飞桨 零基础入门深度学习笔记2-基于Python编写完成房价预测任务的神经网络模型

    AI Studio 飞桨 零基础入门深度学习笔记2-基于Python编写完成房价预测任务的神经网络模型 波士顿房价预测任务 线性回归模型 线性回归模型的神经网络结构 构建波士顿房价预测任务的神经网络模 ...

最新文章

  1. 收藏 | 图解Transformer:Attention Is All You Need
  2. Windows7 网上邻居设置
  3. hadoop+spark生态系统操作与指南非影印版_Spark背景知识学习
  4. 适合程序员的四大字体
  5. .net core Entity Framework Core Code First 框架 分层开发
  6. 如何将卷积神经网络中的全连接层变成卷积层
  7. 计算机网络 故障处理,计算机网络通讯技术故障分析与处理
  8. python爬虫教程-有什么好的python3爬虫入门教程或书籍吗?
  9. springMVC+Mybatis实现查询分页
  10. 群晖NAS教程(十三)、利用Web Station安装wordpress博客
  11. c# JSON转变量实例
  12. 对九个超级程序员的采访
  13. 敏捷开发 开源软件_开源软件开发的利与弊
  14. 平面/球面坐标中已知起点坐标、(偏转)角度、长度求终点坐标(三角函数)
  15. 福大研究生计算机学硕似录取,2017年福州大学数学与计算机学院专业型硕士研究生拟录取名单...
  16. DSP快速复盘——时钟系统总结(基本知识+核心代码)基于TMS2802x处理器
  17. 基于用户的产品分析之Cohort Analysis(群组分析,留存分析)
  18. DL在地球物理中的应用及发展趋势
  19. 推荐5个好用的开源日志分析工具 (转载)
  20. 帝国cms模板html文件夹,帝国CMS模板建站e文件夹各个文件功能说明

热门文章

  1. 解决Firefox访问EBS时提示激活Java插件的问题
  2. 【转载】一百年后,人类怎样编程?
  3. Discuz在Firefox下无法切换至编辑器状态解决(Z)
  4. JS高效数据存取指南
  5. Java系列之雪花算法和原理
  6. java的关键字和保留字_Java关键字和保留字及其含义
  7. 延迟任务调度系统—技术选型与设计(上篇)
  8. Unity官方宣传片Adam 播放地址
  9. Net Framework 4.0 和.Net Framework 4.0 Client Profile
  10. 使用 putty 免密码 ssh 登录 mac os