WFU

2018年6月3日 星期日

[心得] 深度學習入門




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


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



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


1.        複雜的軟體

2.       電腦計算能力

3.       大量的數據

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

深度學習的步驟


1.       先問一個問題

2.      化成函數的形式

3.      準備有正確答案的訓練資料(類似考古題:一些當訓練資料,一些當測試資料)
4.      架構神經網路:根據資料選擇適合的NNCNNRNN,可以考慮另外加上強化學習、生成對抗模式(GON)來幫忙,架好了神經網路,調完一些參數,函數就出現了

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

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


內容筆記

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

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


神經網絡的三大天王:NNCNNRNN 


標準NN


Ø  fully connected neural networks
Ø 每個神經元動作是一樣的:若干刺激輸入,一個刺激輸出(基本上NNCNN都是類似的,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會偷偷把上次的輸出也當這一次的輸入
Ø  RNNcell會把記憶傳給同一層的其他RNN cells
Ø  每個輸入都越來越多,因為會加上上一次的,之後再輸出
Ø  RNN應用:對話機器人、翻譯法、即時影片文字輸出、生成一段文字、畫一半的圖
Ø  輸入都是向量,有權重,輸出都是純量
Ø  另外兩個變形是LSTMGRU
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 GANcycle 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)资料