課程
高一人工智慧:深度學習和多模態人工智慧
用 PyTorch 搭建並訓練神經網路,處理影像、文字和聲音。
按順序學習各課。學完後,你能計算神經元的輸出,比較 ReLU、sigmoid 和 softmax 激活,並用 NumPy 寫小網路的前向傳播。你能選擇損失,講清梯度下降和反向傳播,並用 PyTorch 寫帶完整訓練和測試迴圈的腳本。你能用 CNN 訓練影像分類器,訓練情感分類器分辨正面和負面評論,講清注意力怎樣給其他詞元加權,並能給短聲音片段分類。你能減少過擬合,在新類別上微調預訓練模型,把錯誤分組並找出原因,還能展示在沒見過的影像上測試過的智慧野生動物監測。
這些課怎麼用
- 從標著做這個的課開始。標題下面那一行你自己會了,再往下。
- 先玩遊戲。再做測驗。10題裡對8題就通過。練習紙在紙上。答案在最下面。
- 每一課都接在前一課後面。每次訓練都記下:設定、損失曲線和測試分數。
- 寫程式的課用 Python 和 PyTorch,在免費的線上記事本裡,帶 GPU。小模型和小資料集就夠。只用你可以用的開放資料集。沒有本人允許,絕不用人的照片來訓練。
每一課都有遊戲、測驗和練習紙。
0/36
神經網路基礎
- 1神經元用輸入、權重和偏置計算神經元的輸出。
- 寫出加權和加偏置。
- 用手算三個輸入。
- 在程式裡用點積來算。
- 2激活比較 ReLU、sigmoid 和 softmax 激活。
- 畫出每種激活。
- 說明網路為什麼需要非線性激活。
- 用 softmax 把分數變成機率。
- 3層和網路把層疊成網路。
- 把一層寫成矩陣乘法。
- 追蹤每一層資料的形狀。
- 數出網路的參數。
- 4小網路用 NumPy 寫小網路的前向傳播。
- 在 NumPy 裡搭一個兩層網路。
- 把一批輸入送進去。
- 檢查輸出的形狀。
訓練神經網路
- 5損失為一項任務選擇損失並計算它。
- 迴歸用均方誤差。
- 分類用交叉熵。
- 說出損失下降是什麼意思。
- 6梯度下降講清梯度下降怎樣讓權重往下走。
- 找出損失曲線的斜率。
- 按學習率邁步。
- 看看學習率太大或太小會怎樣。
- 7反向傳播順著反向傳播,看誤差怎樣傳回網路。
- 在一個很小的網路上用連鎖法則。
- 用手算一個梯度。
- 用自動微分核對。
- 8訓練網路訓練一個小網路,並畫出損失。
- 用小批次來訓練。
- 畫出訓練損失和驗證損失。
- 驗證損失不再變好就停。
深度學習框架
- 9張量建立 PyTorch 張量並改變形狀。
- 建立張量,檢查形狀和類型。
- 改變形狀、堆疊並切片。
- 把張量移到 GPU。
- 10模組用 torch.nn 的模組搭建模型。
- 做 nn.Module 的子類別。
- 使用 Linear 層和激活層。
- 印出模型及其參數個數。
- 11最佳化器用 SGD 和 Adam 最佳化器來訓練。
- 使用 zero_grad、backward 和 step。
- 在同一項任務上比較 SGD 和 Adam。
- 使用學習率日程。
- 12訓練腳本寫一個帶完整訓練和測試迴圈的訓練腳本。
- 用 DataLoader 載入資料。
- 訓練、驗證並測試。
- 儲存最好的模型。
電腦視覺
- 13影像作為張量把影像載入成張量並正規化。
- 把影像載入成通道、高度和寬度。
- 調整大小並正規化。
- 把一批顯示成網格。
- 14卷積說明卷積濾波器怎樣找到邊緣。
- 用手把 3×3 濾波器滑過一張影像。
- 在程式裡用邊緣濾波器。
- 說明 stride、padding 和 pooling。
- 15CNN搭建卷積神經網路,也就是 CNN。
- 疊上卷積層、激活層和 pooling 層。
- 展平,再加一個分類頭。
- 追蹤形狀穿過整個網路。
- 16影像分類器用 CNN 訓練影像分類器。
- 在一個小影像資料集上訓練。
- 報告測試準確率。
- 展示它分錯的影像。
自然語言處理
- 17分詞做分詞:把文字變成詞元和 ID。
- 比較詞和子詞的詞元。
- 建立詞表。
- 把序列補到同樣長度。
- 18嵌入說明嵌入怎樣把相近的詞放在一起。
- 使用嵌入層。
- 找出離一個詞最近的詞。
- 在兩個維度上畫出嵌入。
- 19文字模型搭建一個能讀詞元序列的文字模型。
- 把嵌入平均成一個向量。
- 使用一個簡單的循環層。
- 比較這兩種做法。
- 20情感分類器訓練情感分類器,分辨正面和負面評論。
- 在評論資料集上訓練。
- 報告準確率、精確率和召回率。
- 找出騙過它的評論,比如諷刺。
Transformer
- 21注意力講清注意力怎樣給其他詞元加權。
- 說明查詢、鍵和值。
- 計算一個短句的注意力權重。
- 說出注意力為什麼能幫助遠處的意思。
- 22Transformer 區塊說出 Transformer 區塊的各個部分。
- 說出多頭注意力、feed-forward 層和正規化層。
- 說明殘差連接。
- 說明位置編碼。
- 23預訓練模型用預訓練的 Transformer 模型做一項任務。
- 載入預訓練模型和分詞器。
- 用它給文字分類。
- 和你自己的情感模型比一比。
- 24注意力圖讀懂一張注意力圖。
- 把注意力權重畫成熱力圖。
- 找出一個詞元注意哪些詞。
- 說出注意力為什麼不是完整解釋。
聲音和多模態人工智慧
- 25聲音作為資料把聲音資料變成波形和頻譜圖。
- 載入聲音並畫出波形。
- 說明取樣率。
- 做出頻譜圖。
- 26音訊分類器用音訊分類器給短聲音片段分類。
- 把頻譜圖當成影像。
- 在上面訓練 CNN。
- 用背景雜訊來測試。
- 27多模態輸入說明模型怎樣把影像和文字的多模態輸入合在一起。
- 說明每種輸入有各自的編碼器。
- 說明共享的嵌入空間。
- 說出三個多模態應用。
- 28影像和文字把影像和文字配上:用預訓練模型把影像和說明對上。
- 取出影像和說明的嵌入。
- 為每張影像給說明排序。
- 用一句文字搜尋影像。
改進模型
- 29正則化用正則化減少過擬合:dropout 和權重衰減。
- 加上 dropout。
- 加上權重衰減。
- 比較驗證曲線。
- 30資料增強做資料增強:把翻轉和裁剪過的影像加進訓練集。
- 使用翻轉、裁剪和顏色變化。
- 只增強訓練集。
- 量一量測試準確率的變化。
- 31遷移學習用遷移學習在新類別上微調預訓練模型。
- 凍結預訓練的層。
- 換掉分類頭並訓練它。
- 解凍,再用小學習率微調。
- 32誤差分析做誤差分析:把錯誤分組並找出原因。
- 讀懂多類別的混淆矩陣。
- 把錯誤分成組。
- 給最大的那一組選一個改法。
深度學習專案
- 33野生動物資料挑選並劃分一個開放的野生動物影像資料集。
- 選一個開放的紅外相機或野生動物資料集。
- 選出 5 到 10 個物種。
- 按地點劃分,讓測試公平。
- 34微調模型把影像分類模型微調到野生動物類別上。
- 微調一個預訓練模型。
- 追蹤驗證準確率。
- 儲存最好的檢查點。
- 35示範頁面做一個示範頁面,顯示上傳影像的預測。
- 接收一張上傳的影像。
- 顯示前三個物種和它們的分數。
- 信心低時顯示「不確定」。
- 36智慧野生動物監測展示智慧野生動物監測:沒見過的影像上的準確率,以及主要錯誤。
- 報告沒見過的影像上的準確率。
- 展示主要錯誤和原因。
- 說出下一步要改什麼。