吴恩达深度学习笔记:卷积神经网络(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~ 知识库对于很多需要和文字打交道的个人或者团队都不陌生对吧?对于我们个人来说,它可以将常用的学习资料、工作笔记、项目计划和…

并发编程的基础:深入理解内存屏障(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…

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

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

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年,科技行业将迎来哪些新的突破与趋势?从人工智能到量子计算,从数字货币到智能家居,未来已来,而我们正站在一个巨变的风口浪尖上…

Python实例:爱心代码

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

scala学习记录,Set,Map

set:集合,表示没有重复元素的集合,特点:唯一 语法格式:val 变量名 Set [类型](元素1,元素2...) 可变不可变 可变(mutable)可对元素进行添加,删…

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

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

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

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

火山引擎VeDI数据服务平台:在电商场景中,如何解决API编排问题?

01 平台介绍 数据服务平台可以在保证服务高可靠性和高安全性的同时,为各业务线搭建数据服务统一出口,促进数据共享,为数据和应用之间建立了一座“沟通桥梁”。 同时,解决数据理解困难、异构、重复建设、审计运维困难等问题&#x…

Object 内部类 异常

Objbect类 java提供了Object,它是所有类的父类,每个类都直接或间接的继承了Object类,因此Object类通常被称为超类 当定义一个类时,如果没有使用extends关键字直接去指定父类继承,只要没有被继承的类,都是会默认的去继承Object类,超类中定义了一些方法 方法名称方法说明boole…

Linux 高级IO

学习任务: 高级 I/O:select、poll、epoll、mmap、munmap 要求: 学习高级 I/O 的用法,并实操 1、高级 I/O: 前置知识: 阻塞、I/O 多路复用 PS: 非阻塞 I/O ------ 非阻塞 I/O 阻塞其实就是进入了休眠状态&am…

JAVA WEB — HTML CSS 入门学习

本文为JAVAWEB 关于HTML 的基础学习 一 概述 HTML 超文本标记语言 超文本 超越文本的限制 比普通文本更强大 除了文字信息 还可以存储图片 音频 视频等标记语言 由标签构成的语言HTML标签都是预定义的 HTML直接在浏览器中运行 在浏览器解析 CSS 是一种用来表现HTML或XML等文…

雷池社区版 7.1.0 LTS 发布了

LTS(Long Term Support,长期支持版本)是软件开发中的一个概念,表示该版本将获得较长时间的支持和更新,通常包含稳定性、性能改进和安全修复,但不包含频繁的新特性更新。 作为最受欢迎的社区waf&#xff0c…

出海企业如何借助云计算平台实现多区域部署?

云计算de小白 如需进一步了解,请单击链接了解有关 Akamai 云计算的更多信息 在本文中我们将告诉大家如何在Linode云计算平台上借助VLAN快速实现多地域部署。 首先我们需要明确一些基本概念和思想: 部署多区域 VLAN 为了在多区域部署中在不同的 VLAN …

AI赋能酒店设计|莱佛士学生成功入围WATG设计大赛

近日,由Wimberly Allison Tong & Goo(WATG)主办的“用人工智能重新构想酒店行业的未来”设计比赛正式拉开帷幕。这场设计比赛,不仅是为了庆祝WATG即将步入80周年,更是为了激发年轻设计师们的创造力和探索实践精神&…

Netty原来就是这样啊(二)

前言: Netty其实最大的特点就是在于对于对NIO进行了进一步的封装,除此以外Netty的特点就是在于其的高性能 高可用性,下面就会一一进行说明。 高性能: 我在Netty原来就是这样啊(一)-CSDN博客 解释了其中的零拷贝的技术除此以外还有Reactor线程模型,这个Reactor线程模型的思想…