機器學習 (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)。

歷史:

CNN 應用:

  • 電腦視覺 (Computer Vision)

參考:

其他資源