1. 程式人生 > >Deep Learning 簡略筆記

Deep Learning 簡略筆記

learn 則無 之間 spro better 機器 seq 概率 工作原理

Deep Learning筆記概略

  1. 基本概念

監督學習:所有輸入數據都有確定的對應輸出;輸入輸出位於網絡的兩端,訓練就是不斷調整它們之間的網絡連接權重

NN:房子特征和房價
左邊輸入列是一個instance的各個feature值;權重和節點值相乘陸續傳播至下一節點;
Hidden layer的節點也可有其intepretable的意義;
NN可處理structured data: tables, and unstructured data: image, audio

CNN(卷積神經網絡):圖像和類別
用(矩形)卷積核在圖像輸入上進行卷積操作,滑動,得到下一層輸入

RNN(recurrent,循環神經網絡):訓練語音與輸出文本之間的函數
記憶或遺忘之前時間步的信息,以為當前計算過程提供長期記憶

數據量越大,大型復雜神經網絡performance越好;
深度學習的突破是activation function:用ReLU(f(x)= max(0,x))替換sigmoid函數,避免爆炸增長和無窮處趨於零的導數

idea-代碼-實驗-idea

  1. logistic Regression

主要用於二元分類問題(0/1),可看成是將兩組數據點分離問題;
但僅用線性激活函數,則無法分類非線性邊界的數據點,所以會用非線性激活函數替換
logistic regression = linear regression(wx+b) + 外乘sigmoid Z(x)| a(Z)

NN此時任務:確定w和b,最小化truth y 與guess y hat 之間的差異:尋找LOSS/COSS 目標函數最小值
gradient descent 梯度下降找到minimum:find the downhill using derivatives, then walk at a learning rate
一般初期學習率較大(不易停留在局部極小值),後期學習率較小

Forward 傳播:由x值計算得到y hat
Backward: 由y hat 和 y得到損失函數,反省傳播更新w和b
直到收斂

  1. shallow 淺層神經網絡:hidden layer較少

Activation functions: sigmoid(分類問題最後一層),tanh:比前者梯度大,訓練速度快,ReLU:最常用默認,避免反向傳播, leakly ReLU
若無非線性激活函數,無論多少層神經網絡都能等價於單層線性運算的神經網絡
初始化:使用Rand(0.01),僅需少量方差

  1. deep 深度神經網絡

NN的參數化容量隨層數會有指數化增長,某些問題淺層神經網絡要極多的neuron units才能解決
深度網絡可將底層簡單特征逐層組合成更為復雜多樣的特征:CNN(圖像各成分),RNN(音素 - 字母單詞句子)
Data Hungry! 需要大量訓練數據和計算資源,通常向量化計算(cheaper than for loops)
包含大量超參數(hyperparameter):超參數是開始學習過程之前設置的參數,而不是通過訓練得到的參數數據

  1. 偏差與方差

深度學習所需要的samples遠大於經典機器學習模型; training(訓練模型), development(測試並通過結果不斷優化), test(對模型進行一次最終評估所用的數據集)
經典:6:2:2,深度:98:1:1

高偏差(bias):欠擬合 — 更復雜的網絡或選擇不同的NN結構
if no high bias ->
高方差(variance):overfit — 添加正則化,或用更多數據進行訓練
if not -> done

  1. 正則化

解決高方差/過擬合的手段:
L1和L2正則化(權重衰減):感知到具有較高方差輸入的x,懲罰大的權重
Dropout:隨機丟棄一些neurons,防止對某些feature過擬合;每個神經元在批量訓練中以概率1-p隨機選擇是否去掉,最後進行推斷時所有神經元都要保留;
類似一種廉價的Bagging集成近似方法
數據增強:通過人工轉換和擾動來增加數據集
提前終止:iterations數量減少 (到errors 增加之前的極小值區)

  1. 最優化(optimizing)

執行最優化前,要normalization(歸一化),否則一個量級過大,損失函數會是狹長橢圓形;
梯度下降會因為鋸齒形很難收斂-- 歸一化為圓形(使方差相同),can use a large learning rate
開發集,訓練集,測試集的均值與方差相同

梯度爆炸、梯度消失 — choose initial value carefully ; 梯度檢驗

  1. 最優化算法

小批量隨機梯度下降:用一個批量的數據更新參數,降低更新參數的方差收斂更穩定,降低一次的計算量
動量策略:加速SGD學習進程、RMSProp、Adam — 之後應用時詳細看

  1. 超參數(hyperparameter tunning)

超參數預先定義,可以直接提升模型的性能 — 常見為手動調參
重要性:learning rate, hidden units, minibatch size, momentum turn, layers, learning rate decay
多種超參數搜索方法:

  1. 結構化學習過程

按過程結構設定我們的機器學習系統:設定目標(性能,度量) — 分割數據集 — 構建模型並訓練
評價度量、運行時間、準確度

  1. 誤差分析

完成訓練後通過分析誤差來源改進性能,發現錯誤的dataset標註、不正確的損失函數

  1. 訓練集、開發集與測試集

修正不同集合間正確率的差別:欠擬合/過擬合

  1. 其他學習方法(監督學習之外)

遷移學習
多任務學習
端到端的學習

  1. 卷積神經網絡

計算機視覺任務涉及數據點體量特別大,使用CNN可以極大減小參數量
工作原理是用檢測特定特征的過濾器掃描整張圖像,進行特征提取,並逐漸組成更復雜的特征
filter卷積核每次移動一個單位掃描 —> 數據點、尺寸減小的“特征圖”

卷積核filter對應的檢測特征可以從其參數分布判斷
hard code filters/ better: treat the filter as parameters to learn

Padding: 在filter縮小後的圖像周圍添加0的邊緣,使卷積後得到的特征圖大小和原圖像相同
Stride: 兩次卷積操作之間的步長大小(前為1)
6 x 6 x 3(channel) image,3 filters(Each on one channel)
結果為多個通道值的疊加:每點值為sum of all filters

深度卷積神經網絡:
架構主要以卷積層(convolution)和池化層(pooling,減少特征圖尺寸,加速運算)的多級堆疊,最後是全連接層執行分類
pooling: f=2(filter 2x2),步長 =2,find the max value in filter section

  1. 經典卷積神經網絡

LetNet 5:手寫分類;Height/weitht go down, channels go up為什麽???; average pool; sigmoid
AlexNet:圖像分類;比LetNet大;ReLU
VGG-16:圖像分類;深度較大

  1. 特殊卷積神經網絡

ResNet:引入殘差連接(residual net),解決梯度消失和爆炸問題,可以訓練非常深的網絡
Network in Network:使用1x1 convolution,可使運算變成全連接網絡的形式,減少通道數 全連接softmax分類?
技術分享圖片??
Inception Network:使用多種尺寸的卷積核並行操作,捕捉多種規模特征,但計算量太大,可以使用1x1convolution減少通道數

  1. 實踐建議

使用開源實現:從0開始實現很困難,利用別人的實現來探索
數據增強:原圖像各種轉換,變化,增加探索數據集
遷移學習:當前任務訓練數據太少時,可以使用別人充分訓練過的模型用少量數據微調獲得好的性能
表現良好的訣竅:ensembling: 取多個NN模型輸出的平均;將圖像裁剪成多個副本分別測試,將測試結果取平均

  1. 目標檢測算法

用邊界框檢測圖像中物體的位置:特征坐標向量,物體定位、識別
Faster R-CNN、R-FCN和SSD 三種目標檢測模型
+文中解釋的其他方法:

  1. 人臉識別

兩大類應用:人臉驗證(二分分類)和人臉識別(多人分類)
One shot learning:only one sample in your database,學習相似性函數
Siamese Network: 如利用同一個人兩個網絡的輸出,減少這兩個輸出的差別,增大不同人兩個輸出的差別 — with triplet function

  1. Neural Style Transfer風格遷移

學習一副圖的風格來修改另一幅圖像

  1. 循環神經網絡RNN基礎

sequence problem analysis: music, translation, text, video action
name entry recognition: ,how to represent word — create a vecter vocabulary
Makov chain??

RNN:same w and b are used in all time steps,同時具備非線性單元的堆疊
能從序列和時序數據中學習特征和長期依賴關系,選擇和決策參考了上一次的狀態
單元之間至少有一個連接形成有向循環? Hidden nodes直接也增加了互聯

善於處理語言建模問題(sequence probability),但有嚴重梯度消失問題
LSTM
GRU
用門控機制保留或遺忘前面時間步的信息,提供給當前計算過程

  1. NLP

將詞的特征表示出來: 詞匯庫投射到一個200維或300維的向量,各值(features)表示詞的語義特征
The features are learned, not really starightforward
Word embeddings: to learn the similarity,詞義相近的詞在空間中距離比較相近

GloVe詞向量是常見的詞向量學習方法

  1. 序列到序列(Sequence to sequence)

Deep Learning 簡略筆記