# HY機器學習#4:卷積神經網路 (Convolutional Neural Networks, CNN) https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/cnn_v4.pdf 專門用在影像上的network架構 # 影像分類 影像的分類是輸入一個固定大小的正方形檔案,放到模型 正確答案是一個一維的類別向量,正確答案的類別為1其餘為0,向量元素個數即為類別總數,模型跑出來的答案跟正確答案做cross entropy,目標是最小化cross entropy  圖片的輸入是個三維tensor,除了長寬之外,還有RGP三個channel,將此三維tensor拉直變成一維向量即可放入network 若用一般的fully connected network容易因為input數過多,使得參數太多造成overfitting  # 影像辨識特性 ## 只要看局部特徵就可以判斷物體 可以選局部像素Recpetive Field(可重疊、尺寸範圍自訂)做network (同一個field也可以做一次以上的network)  一般設計: 1. 包含所有channel(只要說kernel size即可,通常3x3)+多個neuron(64或128) 2. Field有重疊,因此移動的距離(稱為stride,可自己決定)不會等於size(通常設為2),避免想要的特徵在field中間 3. 移動field之後若超出範圍,則做padding(例如補為0或是整張圖片的平均或把邊緣的直接補上) 4. 將圖所有區域覆蓋 ## 同一特徵可以出現在不同地方  同一件事(同一個neuron)可能出現在不同地方(field),可以讓這些input共享參數,稱為filter(一個nueron一個filter)   有共享參數的network稱為Convolutional Nerual Network(CNN),bias比較大但可用在影像處理  ## 將影像解析度縮小不會影響辨識 可只取影像某些部份(subsampling),例如只取偶數欄列使像素減少 稱為Pooling,這是固定的方法,沒有需要學習的部份 例如Max Pooling:將圖片分組(例如2x2)取其中最大的做代表 (也有mean pooling等等) Pooling可以減少運算量,但對於偵測係為特徵可能會有影響,常會搭配convolution交替使用,若運算能力很強,不一定要pooling ## Convolutional Layer / Filter 觀點 可以把Filter(某個3x3矩陣)為出發去掃圖,掃一個Field可以得到一個數值(field跟filter內積),掃完一張圖會得到一群數字,不同filter再掃即可再得到一群數字,一群數字可以看成一張新的圖,此圖的channel數即為filter的個數,這個新的圖稱為feature map feature map可以視為輸入繼續往下疊,越疊造成的channel數越來越多  不用擔心3x3範圍太小,往下疊之後,3x3可以涵蓋原圖的範圍會越來越大  兩個觀點比較:  # CNN影像辨識流程 將影像tensor做Convolution(和CNN)之後,將矩陣們fattern(拉直變成一維向量)後做fully connected layers即可得到最後結果  # CNN另一個應用-下圍棋(Alpha Go) 將19x19棋盤視為矩陣(例如黑1白-1空0),而類別有19x19種,讓network決定其中一個類別,即為下一步的下法 可用fully connected做,但用CNN表現更好 將棋盤看成19x19 pixel,alpha go用了48個channel描述,可能包含是否要被叫吃或是旁邊顏色是否相同等等資訊 下圍棋跟影像有共同特性: 只要看某些特徵(例如被叫吃)即可決定(alpha go設計5x5 filter) 特徵可以出現在棋盤不同地方 *沒有用pooling(顯然會影響棋局)  # 其他應用 語音或文字處理也可以使用,但設計方法會有調整  CNN無法處理影像放大旋轉問題(若放大旋轉則無法直接適用,除非都讓network都看過一次) 可以用Special Transformer Layer的方法 https://www.youtube.com/watch?v=SoCywZ1hZak ###### tags: `機器學習` `李宏毅`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up