iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 22

【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


上一篇
【Day 21】卷積神經網路(Convolutional Neural Network, CNN)(上)
下一篇
【Day 23】深度學習實作 --- "Hello world"
系列文
30天搞懂機器學習是否搞錯了什麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言