深度學習
本課程原本的教材約完成於 2005 年。類神經網路一章介紹的感知器與倒傳遞網路,是 1980 年代就成熟的方法;當時的網路通常只有一兩個隱藏層,用 Matlab 的 newff、traingd 訓練。2006 年起,研究者開始成功訓練很多層的網路,2012 年 AlexNet 在 ImageNet 影像辨識競賽大幅領先其他方法,此後「深度學習」(deep learning)迅速成為人工智慧的主流。
為什麼深度學習在 2010 年代起飛 Why Now
| 推力 | 內容 |
|---|---|
| 資料 | 網路時代累積大量標註資料,例如 ImageNet 有上百萬張標註影像;資料越多,大模型越不容易過擬合 |
| 運算 | GPU 擅長大量平行的矩陣乘法,訓練速度比 CPU 快數十倍以上 |
| 演算法 | ReLU 激活函數、配合激活函數的初始化、Adam 等自適應最佳化器、dropout 與批次正規化、殘差連接(ResNet),解決了深層網路「訓練不動」的問題 |
| 軟體 | PyTorch、TensorFlow 等框架提供自動微分:只要寫出前向計算,梯度自動算好,研究者不必再手推倒傳遞公式 |
與原課程的對照 Then and Now
| 項目 | 原課程(約 2005,Matlab) | 現在(PyTorch) |
|---|---|---|
| 網路深度 | 1~2 個隱藏層 | 數十到上百層 |
| 隱藏層激活函數 | tansig、logsig | ReLU 及其變形 |
| 初始化 | initnw(Nguyen–Widrow) | 依激活函數選 He 或 Xavier(Glorot) |
| 訓練法 | traingd(批次梯度下降)、trainlm | 小批次 SGD+動量、Adam |
| 防止過擬合 | 提早停止、調整網路大小 | 再加上 dropout、權值衰減、批次正規化、資料擴增 |
| 求梯度 | 工具箱內建的倒傳遞 | 通用的自動微分,任何可微分的運算都能訓練 |
| 網路架構 | 全連接的前饋網路 | 卷積網路(影像)、遞迴網路與 Transformer(序列、語言) |
本章內容 In This Chapter
訓練深度網路的現代技巧梯度消失、ReLU、初始化、SGD 到 Adam、過擬合與正規化;可在網頁上直接訓練網路
自動微分與 PyTorch計算圖與反向模式自動微分;用 PyTorch 重做原課程的倒傳遞範例
卷積神經網路 CNN卷積、池化、參數共享與平移不變性、殘差網路
遞迴神經網路 RNN 與 LSTM沿時間倒傳遞、梯度消失、LSTM;用 LSTM 做 MCK 系統的系統鑑別
注意力機制與 Transformer縮放點積注意力、多頭、位置編碼;小型 Transformer 學會倒轉序列
生成模型與大型語言模型VAE、GAN、擴散模型;在本站文字上訓練迷你 GPT、溫度取樣
程式範例使用 Python 3 與 PyTorch。安裝方式見 PyTorch 官方說明 ↗;本章範例只需要 CPU 版本。