圖像分析學習筆記(4):機器學習圖像特征與描述
- 深度學習基礎
- 深度學習技巧
- 深度模型構建
深度學習基礎
- 深度學習概念:深度學習是機器學習的一個分支,它基于一系列算法,試圖通過使用多個處理層建立數據的高級抽象模型,這些處理層具有復雜的結構,或者由多個非線性轉換組成。–維基百科
- 深度學習發展歷史:
模型名稱 | 提出者 | 年份 |
---|---|---|
Perception | Rosenblatt | 1958 |
RNN | Grossberg | 1973 |
CNN | Fukushima | 1979 |
RBM | Hinton | 1999 |
DBN | Hinton | 2006 |
D-AE | Vincent | 2008 |
AlexNet | Alex | 2012 |
GoogLeNet | Szegedy | 2015 |
- 深度學習的應用:場景識別、視覺類型識別、目標檢測、圖像題注、語義分割、圖像風格遷移、Deep Dream
- 深度學習平臺:PyTorch TensorFlow Caffe MatConvNet Theano
- 不同平臺的對比:
對比項 | Pytorch | Tensorflow |
---|---|---|
實現方式 | 命令式編程 | 符號式編程 |
圖的定義 | 動態定義 | 靜態定義 |
運行效率 | 效率相對低 | 效率高 |
學習成本 | 低 | 相對高 |
- 深度學習基本理論
- 學習表示
- 深度學習的步驟:網絡構建(一組函數)→\rightarrow→學習目標(定義每一函數的好壞)→\rightarrow→學習過程(選擇最好的函數f)
- 網絡構建
- 神經網絡:神經元、權重、偏置、激活函數
- 計算:矩陣形式
- 學習目標:
- 訓練數據
- 代價函數(最小),常用代價函數有suare loss Hinge loss Logistic loss Cross entropy loss等
- 總體代價
- 學習過程
- 梯度下降法,會面臨局部極小值點
深度學習技巧
- 學習階段:網絡構建-學習目標-學習過程
- 測試階段:訓練評價、模型推斷、推斷評價
- 學習過程
- 學習率調整策略:后向傳播 SGD Mini-Batch SGD 新的激活函數 自適應學習率 Momentum,半監督學習方法 非監督學習方法
- 前向傳播:zl=Wlx+blal=σ(zl)zl=Wlal?1+blal=σ(zl)z ^ { l } = W ^ { l } x + b ^ { l} a ^ { l} = \sigma ( z ^ { l } ) \\ z ^ { l } = W ^ { l } a ^ { l - 1 } + b ^ { l} a ^ { l } = \sigma ( z ^ { l } )zl=Wlx+blal=σ(zl)zl=Wlal?1+blal=σ(zl)
- 后向傳播:δL=σ′(zL)⊙?C(y)δl=σ′(zl)⊙(Wl+1)Tδl+1\delta ^ {L} = \sigma ^{\prime} ( z^ {L} )\odot \nabla C( y) \\ \delta ^ { l } = \sigma ^{\prime} ( z^{ l} )\odot (W^{l+1})^T\delta ^{l+1}δL=σ′(zL)⊙?C(y)δl=σ′(zl)⊙(Wl+1)Tδl+1
- 隨機梯度下降法(SGD):模型看到一個訓練樣本就更新
- 梯度下降法:看到所有樣本后才更新
- Mini-Batch隨機梯度下降法:每次迭代利用B個樣本
- 激活函數:ReLU:快速計算、生物啟發、部分解決梯度消失問題
- Adagrad
- 如何解決過擬合:標記更多的訓練數據、生成更多的訓練數據、遷移學習、改進訓練方法、提前停止、權重衰退、DropOut、新的網絡結構
深度模型構建
-
卷積神經網絡(CNN)
- 為什么要使用CNN:當處理圖像時,全連接網絡的第一層可能會非常大,需要根據輸入數據和任務簡化網絡模型
- 思路發現:郵箱興趣的模式相對整圖很小;同樣的模式重復出現在不同的區域;下采樣圖像通常不會改變目標
- 性質1:每一個濾波器檢測一個局部模式
- 性質2:局部模式響應
-
AlexNet:
-
VGGNet
-
GoogleNet
-
ResNet:
當堆疊更深層次后的CNN性能反而更差-非常深的模型更加愛難以優化-解決思路:利用網絡層次擬合殘差映射,替代直接擬合一個潛在目標映射-方法:利用skip connections,可以允許利用一個層次的輸出,輸入給其他人一層次,利用這些層次你和殘差,而不是直接你和H(x)
殘差模塊:輸入x通過一系列的卷積、relu模塊,輸出F(X),將輸出結果加到原始的輸入x