| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 李宏毅深度学习--《Convolutional Neural Network》 -> 正文阅读 |
|
[人工智能]李宏毅深度学习--《Convolutional Neural Network》 |
李宏毅深度学习对于图像分类当然也可以使用一般的DNN;例如要对一张 100 × 100 100\times100 100×100的彩色图像进行分类,如下图: 将 100 × 100 100\times100 100×100的彩色图片平铺成 100 × 100 × 3 100\times100 \times3 100×100×3的一维数据作为DNN的输入(维度很大); DNN中的每个神经节点都可以看作是一个小的 c l a s s i f i e r s classifiers classifiers,如第一层第一个神经节点用于判断是否存在绿色;第二层的神经节点使用第一层的模块去处理更复杂的任务,如第二层的第二个节点用于判断是否存在竖直的条纹。 既然DNN也能够完成任务,那为什么要使用CNN来代替DNN做图像处理呢? Why CNN for Image?
CNN的任务就是通过考虑图像的属性来简化DNN网络。 CNN整体结构如下图所示: 卷积层 ( C o n v o l u t i o n ) (Convolution) (Convolution)解决的是 r e a s o n 1 reason1 reason1和 r e a s o n 2 reason2 reason2,最大池化解决的是 r e a s o n 3 reason3 reason3。 Convolution: 这个图像需要和 F i l t e r 1 Filter1 Filter1和 F i l t e r 2 Filter2 Filter2进行卷积,卷积核1、2都是 3 × 3 3\times3 3×3的,如下图所示:
卷积就是将
F
i
l
t
e
r
Filter
Filter覆盖到图片上,对应位置进行相乘,最后将结果进行相加,如下图: 接下来就是根据步长 s t r i d e stride stride来移动红框,依次计算卷积结果; F i l t e r 1 Filter1 Filter1卷积结果如下: 卷积结果左上角和左下角分别得到了最大的3,说明原始图片的左上角和左下角存在右斜线。 所以卷积结果是卷积核对原始图像特征的提取。 同样的操作给到 F i l t e r 2 Filter2 Filter2,卷积结果是两个 4 × 4 4\times4 4×4的矩阵,称之为 F e a t u r e ? M a p Feature\ Map Feature?Map;如下图: 对于具有三个通道的彩色图片,每个卷积核 F i l t e r Filter Filter的通道数都需要和输入图片一致。即对RGB彩色图片,需要用三通道的卷积核来进行卷积操作;如下图: Convolution v.s. Fully Connected: 以 F i l t e r 1 Filter 1 Filter1对 6 × 6 6\times6 6×6图像左上角进行卷积为例子,如下图:
可以看出,红框部分就是原始图像的局部采样,相当于一般DNN中 i n p u t input input的部分输入;(这点即 W h y ? C N N ? Why\ CNN? Why?CNN?的 r e a s o n 1 reason1 reason1) F i l t e r Filter Filter就相当于一般DNN中的权重 w w w,但采用的不是 F u l l ? C o n n e c t i o n Full\ Connection Full?Connection。 这样做的好处有:1. 更少的参数;2. 共享权重( F i l t e r Filter Filter)。 Max Pooling: 最大池化就是对卷积结果划分窗口,然后保留窗口中的最大值作为输出。 如下图,对
F
i
l
t
e
r
1
Filter1
Filter1和
F
i
l
t
e
r
2
Filter2
Filter2的卷积结果划分窗口,然后取最大值作为输出。
F
i
l
t
e
r
2
Filter2
Filter2的最大池化结果: 这个过程像是 f e a t u r e s features features信息的压缩,如 F i l t e r 1 Filter1 Filter1的最大池化结果,保留了左上角和左下角的3,其余无效信息丢弃,保留了左上角和左下角存在右斜线的信息。
6
×
6
6\times6
6×6图片经过一层卷积+一层最大池化的结果如下图:
Flatten: What does CNN learn? 以下面的CNN结构为例子进行讨论: 已知第 2 2 2个卷积层包含 50 50 50个 3 × 3 3\times3 3×3的 f i l t e r filter filter,输出的卷积结果维度为 50 × 11 × 11 50\times11\times11 50×11×11;抽取第 k k k个卷积核的卷积结果,如下图所示: 定义第 k k k卷积核的卷积输出的第 i i i行第 j j j列的元素为 a i j k a^k_{ij} aijk?。 并定义第
k
k
k个卷积核的激活程度为: 为了可视化第
k
k
k个
f
i
l
t
e
r
filter
filter学到了什么,需要找到一张输入图片
x
x
x,能够使
a
k
a^k
ak最大化,即: x x x的值可以通过 g r a d i e n t ? d e s c e n t gradient\ descent gradient?descent的方式去寻找,输入 x x x就是我们需要找到的参数。
下面是对其中 12 12 12个 f i l t e r filter filter执行上述操作得到的输入图像 x x x: 可以隐约看到最后一个 f i l t e r filter filter是对左斜线纹理的提取。 同样的原理,我们将目标转向找到输入图像
x
x
x,使全连接层的某个神经节点输出
a
j
a^j
aj达到最大值,如下图所示 x x x可视化的结果如上图所在,这 9 9 9张图片和之前 f i l t e r filter filter所观察到的情形使很不一样的;不再是单一的纹理,而更倾向于探测一个完整的图案。 补充一点,这个卷积网络是用于手写数字识别的;现在将目光放到输出层上: 为了验证是否是试验出了问题,尝试的去优化一下寻找
x
x
x的损失函数;
x
x
x输出图像中黑色代表空白处,白色代表笔迹;我们希望空白的地方不要那么多,笔迹能够少且更清楚一些。所以在
x
=
a
r
g
m
a
x
?
y
i
x=argmax\ y^i
x=argmax?yi加上一个惩罚项(类似于正则化): 得到的结果如下: 可以看到第 6 6 6张和手写数字 6 6 6还是有点像的。 但是其他有些就完全不一样,这样的原因是因为 n e u r a l ? n e t w o r k neural\ network neural?network学到的东西和人类一般想象的认知是不一样的, Deep Dream D e e p ? D r e a m Deep\ Dream Deep?Dream就是将CNN学到的东西可视化的一个例子。 准备好一个 C N N CNN CNN和一张图片,将图片丢到 C N N CNN CNN里面去;然后将 C N N CNN CNN中的 c o n v o l u t i o n ? l a y e r convolution\ layer convolution?layer里面的 f i l t e r filter filter或者 f u l l y ? c o n n e c t e d ? l a y e r fully\ connected\ layer fully?connected?layer里的某一个 h i d d e n ? l a y e r hidden\ layer hidden?layer的 o u t p u t output output拿出来,其实就是一个向量 ( v e c t o r ) (vector) (vector);如下图所示:
丢入的图片如下: 这图片多了好多动物,如右上角的石头变成了一只熊。对于机器来说这个石头可能有点像熊,经过我们的夸大学习目标后,这个石头看起来就变成了一只熊。这就是 D e e p ? D r e a m Deep \ Dream Deep?Dream。 与之类是的还有 D e e p ? S t y l e Deep\ Style Deep?Style,即神经风格迁移 CNN的更多应用: (1)
P
l
a
y
i
n
g
?
G
o
Playing\ Go
Playing?Go: W h y ? C N N ? f o r ? p l a y i n g ? G o ? Why\ CNN\ for\ playing\ Go? Why?CNN?for?playing?Go?(上面的 r e a s o n 1 、 2 、 3 reason1、2、3 reason1、2、3)
所以 C N N CNN CNN不一定只使用在图片上,有和图片相类似性质的都能够使用 C N N CNN CNN去操作。 C N N CNN CNN也可以应用到语音识别、文字情绪分类上。 总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:27:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |