【Day 22】卷积神经网路(Convolutional Neural Network, CNN)(下)

昨天讲完Convolution,接着今天要介绍的就是Max Pooling。

CNN - Max Pooling

Max Pooling就是做Subsampling,根据Filter 1和Filter 2我们分别会得到一个4x4的Matrix,接下来把它4个、4个分为一组,每一组里面可以把它的平均值或是最大值保留下来,这样就可以达到图片缩小的目的。

当我们做完一次Convolution和一次Max pooling,我们就可以把原本6x6的图片,变成一个2x2的图片,而它每一个pixel的深度,也就是它用几个value来表示,是取决於Filter的数量。

而刚刚做的事情可以重复很多次,得到越来越小的图片。

做完Convolution和Max pooling之後,再来就是Flatten跟Fully connected的部分。

Flatten

接下来就很简单,Flatten就是把Feature map拉直,然後丢进一个Fully connected feedforward network。

Deep Dream

Deep Dream是如果你给机器一张图片,它会在这个图片里面加上它看到的东西。你只要把图片丢进CNN里面,然後把它某一个hidden layer拿出来并把正值调大负值调小,接着把这个当作是新的图片的目标,就可以让CNN夸大化它看到的东西。

Deep Style

Deep Style是你输入一张图片,然後让机器去修改这张图,让它有另外一张图的风格。

它的做法大致是,把原来的图片丢给CNN,然後得到CNN的Filter的输出(代表一张图片有什麽样的Content),接着把另外一张图片也丢进CNN,也得到Filter的输出,而我们是需要Filter跟Filter之间输出的相关性(代表一张图片的Style),最後用同一个CNN去找一张图片,其中它的content像左边的图片,style像右边的图片,也就是用Gradient descent,找一张图片,Maximize这两个criteria的结果。

More Application: Playing Go

CNN除了影像处理也可以被应用在很多不同的地方,像是下围棋。而下围棋不见得要用CNN,用一般的Neural Network也可以,你只要训练一个Network,输入是棋盘,输出是棋盘上的位置,也就是说下一步根据这个棋盘的盘势,你应该要落子的位置。

虽然Fully connected feedforward network就可以做到这件事,但用CNN可以表现得更好,只要把19x19的vector看成是19x19的Matrix,也就是19x19的图片,然後最後输出下一步要落子的位置。


参考资料

李宏毅老师 - ML Lecture 10


<<:  【PHP Telegram Bot】Day26 - 入群欢迎机器人(2):设定欢迎讯息

>>:  Day20 AR抬头显示器(HUD)与一般的差异 你是5岁就抬头还是3岁才抬头的呢?

#17-不用套件让网站Logo动起来~(SVG SMIL)

要让SVG 动起来,可以使用SMIL:SVG的原生动画规范, 虽然前几年Chrome放话不再支援,但...

创建App-FB sign in my App

创建App-FB sign in my App 本App设想登入方法有Google、AppleID、...

学习Python纪录Day28 - 在多文字档中搜寻关键字

在多文字档中搜寻关键字 第一层for回圈使用了os.walk()递回取得路径下的所有档案 第二层fo...

Day6-Go叙述

前言 Go 语言的叙述,与大部分程序语言用法差不多,所以对学过程序语言的朋友,不会太需要花时间理解,...

基本面要看那些?

又到了每月公布营收的时间点了,随着营收的公布,可说是几家欢乐几家愁。 很多人认为,要在股市获利,就必...