吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.7-4.8

目录

  • 第四门课 卷积神经网络(Convolutional Neural Networks)
    • 第四周 特殊应用:人脸识别和神经风格转换(Special applications: Face recognition &Neural style transfer)
      • 4.7 深度卷积网络学习什么?(What are deep ConvNets learning?)
      • 4.8 代价函数(Cost function)

第四门课 卷积神经网络(Convolutional Neural Networks)

第四周 特殊应用:人脸识别和神经风格转换(Special applications: Face recognition &Neural style transfer)

4.7 深度卷积网络学习什么?(What are deep ConvNets learning?)

深度卷积网络到底在学什么?在这个视频中我将展示一些可视化的例子,可以帮助你理解卷积网络中深度较大的层真正在做什么,这样有助于理解如何实现神经风格迁移。

在这里插入图片描述
来看一个例子,假如你训练了一个卷积神经网络,是一个 Alexnet,轻量级网络,你希望将看到不同层之间隐藏单元的计算结果。

在这里插入图片描述
你可以这样做,从第一层的隐藏单元开始,假设你遍历了训练集,然后找到那些使得单元激活最大化的一些图片,或者是图片块。换句话说,将你的训练集经过神经网络,然后弄明白哪一张图片最大限度地激活特定的单元。注意在第一层的隐藏单元,只能看到小部分卷积神经,如果要画出来哪些激活了激活单元,只有一小块图片块是有意义的,因为这就是特定单元所能看到的全部。你选择一个隐藏单元,发现有 9 个图片最大化了单元激活,你可能找到这样的 9 个图片块(编号 1),似乎是图片浅层区域显示了隐藏单元所看到的,找到了像这样的边缘或者线(编号 2),这就是那 9 个最大化地激活了隐藏单元激活项的图片块。

在这里插入图片描述
然后你可以选一个另一个第一层的隐藏单元,重复刚才的步骤,这是另一个隐藏单元,似乎第二个由这 9 个图片块(编号 1)组成。看来这个隐藏单元在输入区域,寻找这样的线条(编号 2),我们也称之为接受域。

在这里插入图片描述
对其他隐藏单元也进行处理,会发现其他隐藏单元趋向于激活类似于这样的图片。这个似乎对垂直明亮边缘左边有绿色的图片块(编号 1)感兴趣,这一个隐藏单元倾向于橘色,这是一个有趣的图片块(编号 2),红色和绿色混合成褐色或者棕橙色,但是神经元仍可以激活它。

在这里插入图片描述
以此类推,这是 9 个不同的代表性神经元,每一个不同的图片块都最大化地激活了。你可以这样理解,第一层的隐藏单元通常会找一些简单的特征,比如说边缘或者颜色阴影。

我在这个视频中使用的所有例子来自于 Matthew Zener 和 Rob Fergus 的这篇论文,题目是(Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks[J]. 2013, 8689:818-833.)《可视化理解卷积神经网络》,我会使用一种更简单的方法来可视化神经网络隐藏单元的计算内容。如果你读过他们的论文,他们提出了一些更复杂的方式来可视化卷积神经网络的计算。

你已经在第一层的 9 个隐藏单元重复了这个过程好几遍,如果在深层的隐藏单元中进行这样的计算呢?卷积神经网络的深层部分学到了什么?在深层部分,一个隐藏单元会看到一张图片更大的部分,在极端的情况下,可以假设每一个像素都会影响到神经网络更深层的输出,靠后的隐藏单元可以看到更大的图片块,我还会画出和这页中的大小相同的图片块。

在这里插入图片描述
但如果我们重复这一过程,这(Layer 1 所示图片)是之前第一层得到的,这个(Layer 2 所示图片)是可视化的第 2 层中最大程度激活的 9 个隐藏单元。我想解释一下这个可视化,这是(编号 2 所示)使一个隐藏单元最大激活的 9 个图片块,每一个组合,这是另一组(编号 2),使得一个隐藏单元被激活的 9 个图片块,这个可视化展示了第二层的 9 个隐藏单元,每一个又有 9 个图片块使得隐藏单元有较大的输出或是较大的激活。

在这里插入图片描述
在更深的层上,你可以重复这个过程。

在这里插入图片描述
在这页里很难看清楚,这些微小的浅层图片块,让我们放大一些,这是第一层,这是第一个被高度激活的单元,你能在输入图片的区域看到,大概是这个角度的边缘(编号 1)放大第二层的可视化图像。

在这里插入图片描述
有意思了,第二层似乎检测到更复杂的形状和模式,比如说这个隐藏单元(编号 1),它会找到有很多垂线的垂直图案,这个隐藏单元(编号 2)似乎在左侧有圆形图案时会被高度激活,这个的特征(编号 3)是很细的垂线,以此类推,第二层检测的特征变得更加复杂。

在这里插入图片描述
看看第三层我们将其放大,放得更大一点,看得更清楚一点,这些东西激活了第三层。再放大一点,这又很有趣了,这个隐藏单元(编号 1)似乎对图像左下角的圆形很敏感,所以检测到很多车。这一个(编号 2)似乎开始检测到人类,这个(编号 3)似乎检测特定的图案,蜂窝形状或者方形,类似这样规律的图案。有些很难看出来,需要手动弄明白检测到什么,但是第三层明显,检测到更复杂的模式。

在这里插入图片描述
下一层呢?这是第四层,检测到的模式和特征更加复杂,这个(编号 1)学习成了一个狗的检测器,但是这些狗看起来都很类似,我并不知道这些狗的种类,但是你知道这些都是狗,他们看起来也类似。第四层中的这个(编号 2)隐藏单元它检测什么?水吗?这个(编号 3)似乎检测到鸟的脚等等。

在这里插入图片描述
第五层检测到更加复杂的事物,注意到这(编号 1)也有一个神经元,似乎是一个狗检测器,但是可以检测到的狗似乎更加多样性。这个(编号 2)可以检测到键盘,或者是键盘质地的物体,可能是有很多点的物体。我认为这个神经元(编号 3)可能检测到文本,但是很难确定,这个(编号 4)检测到花。我们已经有了一些进展,从检测简单的事物,比如说,第一层的边缘,第二层的质地,到深层的复杂物体。

我希望这让你可以更直观地了解卷积神经网络的浅层和深层是如何计算的,接下来让我们使用这些知识开始构造神经风格迁移算法。

4.8 代价函数(Cost function)

要构建一个神经风格迁移系统,让我们为生成的图像定义一个代价函数,你接下看到的是,通过最小化代价函数,你可以生成你想要的任何图像。

在这里插入图片描述
记住我们的问题,给你一个内容图像𝐶,给定一个风格图片𝑆,而你的目标是生成一个新图片𝐺。为了实现神经风格迁移,你要做的是定义一个关于𝐺的代价函数𝐽用来评判某个生成图像的好坏,我们将使用梯度下降法去最小化𝐽(𝐺),以便于生成这个图像。怎么判断生成图像的好坏呢?我们把这个代价函数定义为两个部分。
J c o n t e n t ( C , G ) J_{content}(C,G) Jcontent(C,G)

第一部分被称作内容代价,这是一个关于内容图片和生成图片的函数,它是用来度量生成图片𝐺的内容与内容图片𝐶的内容有多相似。
J s t y l e ( S , G ) J_{style}(S,G) Jstyle(S,G)

然后我们会把结果加上一个风格代价函数,也就是关于𝑆和𝐺的函数,用来度量图片𝐺的风格和图片𝑆的风格的相似度。

J ( G ) = α J c o n t e n t ( C , G ) + β J s t y l e ( S , G ) J(G) = \alpha J_{content}(C,G) + \beta J_{style}(S,G) J(G)=αJcontent(C,G)+βJstyle(S,G)

最后我们用两个超参数𝑎和𝛽来来确定内容代价和风格代价,两者之间的权重用两个超参数来确定。两个代价的权重似乎是多余的,我觉得一个超参数似乎就够了,但提出神经风格迁移的原始作者使用了两个不同的超参数,我准备保持一致。

关于神经风格迁移算法我将在接下来几段视频中展示的,是基于 Leon Gatys,Alexandra Ecker 和 Matthias Bethge 的这篇论文。Leon A. Gatys, Alexander S. Ecker, Matthias Bethge, (2015). 这篇论文并不是很难读懂,如果你愿意,看完这些视频,我也非常推荐你去看看他们的论文。

算法的运行是这样的,对于代价函数𝐽(𝐺),为了生成一个新图像,你接下来要做的是随机初始化生成图像𝐺,它可能是 100×100×3,可能是 500×500×3,又或者是任何你想要的尺寸。

在这里插入图片描述

然后使用在之前的幻灯片上定义的代价函数𝐽(𝐺),你现在可以做的是使用梯度下降的方法将其最小化,更新 G : = G − ∂ ∂ G J ( G ) G: = G −\frac{\partial }{\partial G} J(G) G:=GGJ(G)。在这个步骤中,你实际上更新的是图像𝐺的像素值,也就是 100×100×3,比如 RGB 通道的图片。

在这里插入图片描述
这里有个例子,假设你从这张内容图片(编号 1)和风格(编号 2)图片开始,这是另一张公开的毕加索画作,当你随机初始化𝐺,你随机初始化的生成图像就是这张随机选取像素的白噪声图(编号 3)。接下来运行梯度下降算法,最小化代价函数𝐽(𝐺),逐步处理像素,这样慢慢得到一个生成图片(编号 4、5、6),越来越像用风格图片的风格画出来的内容图片。

在这段视频中你看到了神经风格迁移算法的概要,定义一个生成图片𝐺的代价函数,并将其最小化。接下来我们需要了解怎么去定义内容代价函数和风格代价函数,让我们从下一个视频开始学习这部分内容吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适用于个人或团队的文档管理和知识库系统,NAS快速部署『BookStack』

适用于个人或团队的文档管理和知识库系统,NAS快速部署『BookStack』 哈喽小伙伴们好,我是Stark-C~ 知识库对于很多需要和文字打交道的个人或者团队都不陌生对吧?对于我们个人来说,它可以将常用的学习资料、工作笔记、项目计划和…

#渗透测试#SRC漏洞挖掘#XSS跨站脚本介绍02绕过

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

封装axios、环境变量、api解耦、解决跨域、全局组件注入

官网:Axios中文文档 | Axios中文网 安装:npm install axios axios封装: // 1. 引入axios import axios from "axios"; import storage from /utils/storage // 2. 创建axios实例 const instance axios.create({baseURL: proces…

并发编程的基础:深入理解内存屏障(Memory Barriers)

内存屏障是一种基础语言,在不同的计算机架构下有不同的实现细节。本文主要在x86_64处理器下,通过Linux及其内核代码来分析和使用内存屏障 对大多数应用层开发者来说,“内存屏障”(memory Barrier)是一种陌生&#xff…

Windows转Mac过渡指南

最近由于工作原因开始使用mac电脑,说实话刚拿到手的时候,window党表示真的用不惯。坚持用一下午之后,发现真的yyds,这篇文章说说mac电脑的基本入门指南。 1. 不会使用mac的触摸板,接上鼠标发现滚轮和windows是反的。 …

poi excel数据统计导出

##poi excel导出案例 1.ajxa导出请求没有任何反应,打断点看了workBook中也有数据,网上查阅说ajax请求导出无法接收流,换成location.href,果然可以了 2.控制器代码 response.setCharacterEncoding("UTF-8");response.setContentTyp…

昆仑通态触摸屏-如何完成几个窗口的切换

一、启动窗口 想要哪一个窗口是启动时第一个显示的,就把谁设置为启动窗口就可以。 二、公共窗口 给一个窗口命名为公共窗口 然后选择一个窗口,将他的公共窗口设置为我们刚才命名的那个窗口 三、页面切换 页面切换,是通过在公共窗口内设置按…

golang 实现比特币内核:处理椭圆曲线中的天文数字

在比特币密码学中,我们需要处理天文数字,这个数字是如此巨大,以至于它很容易超出我们宇宙中原子的总数,也许 64 位的值不足以表示这个数字,而像加、乘、幂这样的操作如果使用 64 位整数会导致溢出,因此我们…

dns服务器配置

主服务器 1.挂载点 mount /dev/sr0 /mnt 2.防火墙关闭 systemctl stop firewalld setenforce 0 3.下载bind软件 dnf install bind -y 4.进行正向解析配置 vim /etc/named.conf options { listen-on port 53 { 192.168.92.128; }; directo…

GraphRAG本地部署使用及兼容千帆通义

文章目录 前言一、GraphRAG本地安装1.创建环境并安装2.准备demo数据3.初始化demo目录 二、GraphRAG兼容千帆通义等大模型1.安装 graphrag-more2.准备Demo数据3.初始化demo目录4.移动和修改 settings.yaml 文件 三、知识库构建与使用1.知识库构建2.执行查询 前言 GraphRAG是一种…

揭秘2024年最火的5个科技趋势,你准备好迎接了吗?

在这个信息化飞速发展的时代,科技正以前所未有的速度改变着我们的生活。2024年,科技行业将迎来哪些新的突破与趋势?从人工智能到量子计算,从数字货币到智能家居,未来已来,而我们正站在一个巨变的风口浪尖上…

MySQL排序查询

排序查询 在实际应用中,经常都需要按照某个字段都某种排序都结果,实现语法: select 查询列表 from 表 where 条件 order by 排序字段列表 asc | desc; 案例:查询所有员工信息,要求工资从大到小排列 select * from employees order by salary desc; /…

Python实例:爱心代码

前言 在编程的奇妙世界里,代码不仅仅是冰冷的指令集合,它还可以成为表达情感、传递温暖的独特方式。今天,我们将一同探索用 Python 语言绘制爱心的神奇之旅。 爱心,这个象征着爱与温暖的符号,一直以来都在人类的情感世界中占据着特殊的地位。而通过 Python 的强大功能,…

JS JavaScript实现h5页面间跳转

一、不在JS中跳转 如果你不想在 JavaScript 中写页面跳转&#xff0c;而是希望使用 HTML 或者其它前端方式来实现页面跳转&#xff0c;下面是一些常见的方法&#xff1a; 1. 使用 <a> 标签进行跳转 HTML 中最常见的跳转方式就是使用 <a> 标签。它可以让用户点击链…

scala学习记录,Set,Map

set&#xff1a;集合&#xff0c;表示没有重复元素的集合&#xff0c;特点&#xff1a;唯一 语法格式&#xff1a;val 变量名 Set [类型]&#xff08;元素1&#xff0c;元素2...&#xff09; 可变不可变 可变&#xff08;mutable&#xff09;可对元素进行添加&#xff0c;删…

基于SpringBoot的免税商品优选购物商城的设计与实现

一、项目背景 从古至今&#xff0c;通过书本获取知识信息的方式完全被互联网络信息化&#xff0c;但是免税商品优选购物商城&#xff0c;对于购物商城工作来说&#xff0c;仍然是一项非常重要的工作。尤其是免税商品优选购物商城&#xff0c;传统人工记录模式已不符合当前社会…

【深度学习】DreamClear:提升图片分辨率的模型

基于PixArt-XL-2模型,效果很好。 DreamClear:高容量真实世界图像修复与隐私安全数据集构建 在图像修复领域,处理真实世界中的低质量(Low-Quality, LQ)图像并恢复其高质量(High-Quality, HQ)版本一直是一个具有挑战性的任务。今天,我们将介绍一个最新的开源项目——Dr…

从零开始的c++之旅——多态

1. 多态的概念 通俗来说就是多种形态。 多态分为编译时多态&#xff08;静态多态&#xff09;和运行时多态&#xff08;动态多态&#xff09;。 编译时多态主要就是我们之前提过的函数重载和函数模板&#xff0c;同名提高传不同的参数就可以调 用不同的函数&#xff0c…

js实现blob类型转化为excel文件

需求 后端通过接口将excel文件通过blob类型数据进行返回&#xff0c;前端接收数据并将其转化为excel文件进行下载 实现 接口方法 responseType&#xff1a;值为blob&#xff0c;标记返回数据类型为blob Content-Type&#xff1a;请求头设置&#xff0c;值为application/vnd…

融云「北极星」专业版:指标异常及时告警,趋势变化预先知悉

说起程序员的痛苦时刻&#xff0c;深夜接到告警电话、短信绝对榜上有名&#xff0c;甚至可能留下“铃声 PTSD”。 这也从另一个侧面提醒我们&#xff0c;所有在前台给用户丝滑体验的互联网产品&#xff0c;背后都有庞杂的系统和大量的工程师在支撑。而这其中&#xff0c;监控平…