機器學習 (Machine Learning)
機器學習演算法種類
Supervised Learning
Unsupervised Learning
Semi-Supervised Learning
Online Learning / Active Learning
機器學習模型
主題
模型優化 - 在盡量維持模型準確度的狀況下降低運算需求
- 目標:
降低運算量,維持同等級的準確度
- 量化 (Quantization)
例如把浮點數運算換成整數運算
- 刪減 (Pruning)
把不重要的處理刪掉
- 知識淬鍊 (Knowledge Distillation)
藉由現有的模型訓練出另一個小模型,但是達到同等成效
原先的模型可能很大或者使用了 Ensemble 才達到效果,新模型從中學習真正的重點,除去不必要的計算
原模型當老師,新模型當學生
Transfer Learning
- 正規化 (Regularization)
懲罰複雜度
選擇成效同等級但是複雜度較低的模型,除非複雜模型有顯著優勢
例如 Lasso、Ridge、ElasticNet 等演算法就是這個概念
L1 Regularization: Lasso 的作法,把所有權重的絕對值加起來當 cost
L2 Regularization: Ridge 的作法,把所有權重的平方加起來當 cost
- 選擇性計算 (Conditional Computation)
根據特定條件選擇要用到的子模型,在某些狀況下省略步驟來節省運算
例如 Early Exit
- 反覆優化 (Iterative Pruning)
把數個模型優化技巧組合起來重複套用
就像是編譯器在編譯時會有數個優化操作來回套用
參考:
類神經網路節點 (Cell)
Recurrent Neural Network
人類的思考不會每次都從頭開始, 一定是基於過去的經驗來加速判斷, 可能從過去的錯誤經驗反省, 也可能從過去的成功經驗再次改善, 思考會搭配記憶持續地變化。
Recurrent Neural Network (RNN) 基於這一點在節點中加入了迴圈, 如果把這個迴圈展開其實就是一般的神經網路不斷地重複下去, 回饋可以回到自己身上或是上游, 也可以設定在幾個回合後才回饋, 但是根據這概念設計的都叫 RNN。
RNN 應用:
語音辨識 (Speech Recognition)
翻譯 (Translation)
Language Modeling
Image Captioning
上下文 (context) 遠近差異:
short-term dependencies: 關聯處很近,例如預測「雲朵在 天上 」
long-term dependencies: 關聯處很遠,例如預測「今天比較晚下班,路上又遇到塞車,所以我比較 晚回家 」
原始的 RNN 在處理短期的資訊很有用, 但是在長期的資訊卻無法良好地處理, 為了處理長期資訊的問題演變出了 LSTM。 LSTM (Long Short Term Memory) 是一種特化的 RNN, 由 Hochreiter & Schmidhuber 在 1997 年提出, 處理了長期資訊的問題, 在眾多應用中展現出優良的成效, 被廣泛使用中。
LSTM 內部的設計並不唯一, 雖然主要概念相同, 但不同研究可能會對內部設計做些調整, 其中熱門的變體像是 2014 年被提出的 GRU (Gated Recurrent Unit) 。
在處理長期資訊問題上並不是只有 LSTM 這一個解法, 其他還有不同的設計, 例如 Clockwork RNN。
大致上的分類:
- RNN
- LSTM
GRU
Depth Gated RNN
Clockwork RNN
參考:
Convolutional Neural Networks
CNN 的設計在於把同樣訓練好的節點重複套用到資料的每個部份, 把小節點當做寫好的函式, 拿去資料每個小部份做計算, 一個小部份要包含多少資料可以自由決定(可以是數個一維資料也可以是數個多維資料), 最後蒐集所有計算結果後做後續處理(例如最後交給 Fully Connected Neural Network 處理)。
Convolutional Layer 通常會搭配 Pooling Layer, 例如數個結果取最大值, 藉此可以快速地降低資料量。
一般的 Convolutional Layer 裡面是一層 Perceptron, 但是也有多層 Perceptron 的設計, 例如 2013 年在 Network In Network 提出的 mlpconv (Multiple Layer Convolution Layer)。
歷史:
- [2012] ImageNet Classification with Deep Convolutional Neural Networks
突破當時圖像分類的能力
採用新的節點 ReLU
使用新技術 DropOut 來避免 Overfitting
使用大量圖像資料 ImageNet
節點深度跟當時其他作法比起來深很多
使用 CNN
CNN 應用:
電腦視覺 (Computer Vision)
參考:
其他資源
- Mathematics for Machine Learning
- CH1 - 數學基礎
線性代數
解析幾何
矩陣分解
向量分析
機率與分布
- CH2 - 機器學習的應用
線性回歸
降低維度 & PCA
SVM
- Machine Learning From Scratch
眾多常見模型的 Python 實做範例
- Deep Learning Ocean
許多常見的模型發表時的論文連結
根據不同模型分類
優化技巧、特定領域應用
各種原始資料
- Awesome Deep Vision
電腦視覺論文、課程、書籍、文章
- Awesome Deep Learning papers and other resources
論文、模型、課程、書籍、應用範例
- Awesome Deep Learning
書籍、課程、影片、論文、原始資料、研討會、工具
- Awesome Machine Learning
各語言的套件
Stanford - Unsupervised Feature Learning and Deep Learning Tutorial
Stanford - CS224n: Natural Language Processing with Deep Learning
UC Berkeley - CS 294-129 - Designing, Visualizing and Understanding Deep Neural Networks