WFU

2018年6月3日 星期日

[心得] 深度學習入門




這次的人工智慧浪潮會持續多久?


最近剛好有個機會可以持續學習人工智慧,這次分享的是政大的蔡炎龍老師,目前人工智慧的主軸是深度學習,而深度學習的核心就是神經網路,白話一點來說就是叫電腦學個函數解決我們問出的問題,當然要準備些考古題來訓練他(像AlphaGo先收集所有的棋譜一樣),然後測試我們訓練出來的AI(就像AlphaGo跟韓國李世石、中國的柯潔對打)。



神經網路要成功有三大要件


1.        複雜的軟體 


2.       電腦計算能力 


3.       大量的數據

前面兩次浪潮分別是1960年代第一次提出人工智慧,以及1980年代灌輸專家知識為系統的人工智慧,這兩次都沒有三大要件的幫忙,這次的以機器學習為基礎的人工智慧,似乎到了水到渠成的階段,因此進展比前兩次更快更兇猛,甚至有人開始吹捧AI泡沫,但到目前為止,人工智慧仍不是萬能,但未來怎麼走,仍值得期待!

深度學習的步驟


1.       先問一個問題 


2.      化成函數的形式 


3.      準備有正確答案的訓練資料(類似考古題:一些當訓練資料,一些當測試資料)


4.      架構神經網路:根據資料選擇適合的NN、CNN或RNN,可以考慮另外加上強化學習、生成對抗模式(GON)來幫忙,架好了神經網路,調完一些參數,函數就出現了

5.      學習:將資料送進神經網路學習,再調整參數,用loss function看跟觀察值差多少(說起來都很容易XD)

目前這樣的應用,已經在各行業都有,像是可以利用前一個月或前一年的股票價格預測下一期的變化,利用MLB球星這季的數據預測下一季的打擊率等等,而手寫辨別、圖像辨識、對話機器人等也都是深度學習為主軸的發展。


內容筆記

神經網路需要經過訓練,就像我們從學生時代一直寫考古題一樣,這種學習方式稱為backpropagation。神經網路結構決定之後,可以調整的參數就是比重weight跟bias,我們目標就是找出一個參數的集合,使得我們的函數結果和目標最接近,也就是loss function的值最小。

這種調整w1,w2,b1的方法就叫gradient descent,每次調整都是往局部極小值移動,其實就是求切線的斜率,這種調整有時候會跑過頭,為了不要一次調太大,我們會乘上一個小小的數(自己給的),叫learning rate。


神經網絡的三大天王:NN、CNN、RNN 


標準NN


Ø  fully connected neural networks 

Ø 每個神經元動作是一樣的:若干刺激輸入,一個刺激輸出(基本上NN跟CNN都是類似的,RNN比較不同) 

Ø  我們要先算總刺激,加上偏值 

Ø  再用激發函數作用上去,得到總輸出h 



CNN(convolutional neural network)卷積神經網路


Ø  圖形辨識的超級天王
Ø  搭配reinforcement learning 

Ø  每個filter看一個特徵,掃過每一個點,紀錄該點附近的特徵強度
Ø  CNN應用步驟 

1.Convolution layer: 原本8x8的圖片,做一個filter,自己決定大小,大多一樣,例3x3,因為filter會很多,所以我們會得到很多矩陣,這邊的filter就是一種weight 

2.Max-pooling layer: 像選區投票,決定範圍然後選一個代表,每區選出最大的 

3.兩層不一樣的結構:convolution (filter) 和max-pooling layer(投票) 可以不斷重複( c->m -> c -> m ),做完再傳送到正常的神經網路

RNN(recurrent neural network)遞迴神經網路


Ø有記憶的神經網路 

Ø  RNN會偷偷把上次的輸出也當這一次的輸入 

Ø  RNN的cell會把記憶傳給同一層的其他RNN cells
Ø  每個輸入都越來越多,因為會加上上一次的,之後再輸出 

Ø  RNN應用:對話機器人、翻譯法、即時影片文字輸出、生成一段文字、畫一半的圖
Ø  輸入都是向量,有權重,輸出都是純量
Ø  另外兩個變形是LSTM和GRU
1.LSTM(long short term memory):會多一個cell的狀態,他會有一個gate控制閥,閥要開多大要決定(輸出0-1之間的數字:用sigmoid function),LSTM總共有三個gate
2.GRU: LSTM的簡化版,只留兩個gate 



強化學習跟生成對抗模式是兩大連結的方式 


GAN:生成對抗網路


Ø  GAN是兩個神經網路,一個生成,一個判斷,相互對抗,去把要解決的問題做出來 
Ø  訊號進入有生成器(G)先生圖 

Ø  然後經過鑑別器(D)判斷,是真或是假 

Ø  生成器:基本上不用準備資料,判斷器:準備真實的照片,所以不用labeling,資料不需要配對
Ø  不好訓練的model 

Ø  鑑別跟生成器是兩個獨立網路
Ø  Progressive GAN、cycle GAN的應用 


強化學習 reinforcement learning


Ø  aphago核心技術 

Ø  設定環境狀態St,叫電腦agent做動作at,電腦知道得到多少分,電腦不需及時告訴他分數
Ø  policy based: pi function,問題點是去學狀態的時候要配合很多動作,通常直接學不容易

Ø  value based: Q function(deep Q learning),評分,利用很多次學習去評分 




深度學習心法


Ø  數據量大時,深度學習通常比一般方法好,資料上萬的時候 


Ø  要相信神經網路一定學得會(如果沒有,要考慮資料有問題?架構有問題?) 


Ø  學不好的時候考慮一些正則化的方法(drop out, L1/L2 regularization, SELU) 


雖然上述內容對相關工程師都屬於幼幼班程度,但希望持續敲開自己的入門磚



學習資源整理


3 分鐘搞懂深度學習到底在深什麼

人工智慧AI晶片與Maker創意接軌


深度學習 Deep Learning:中文學習資源整理(李宏毅、 陳縕儂老師以及周莫煩等)by傑瑞窩

驗證碼數字辨識用Python/Keras/CNN的實作案例

科技報橘: 最完整機器學習書單,10 本讓你從凡人變神人!


深度學習公開課資源整理

Github 机器学习(Machine Learning)&深度学习(Deep Learning)资料