全部課

課程

高一人工智慧:深度學習和多模態人工智慧

用 PyTorch 搭建並訓練神經網路,處理影像、文字和聲音。

按順序學習各課。學完後,你能計算神經元的輸出,比較 ReLU、sigmoid 和 softmax 激活,並用 NumPy 寫小網路的前向傳播。你能選擇損失,講清梯度下降和反向傳播,並用 PyTorch 寫帶完整訓練和測試迴圈的腳本。你能用 CNN 訓練影像分類器,訓練情感分類器分辨正面和負面評論,講清注意力怎樣給其他詞元加權,並能給短聲音片段分類。你能減少過擬合,在新類別上微調預訓練模型,把錯誤分組並找出原因,還能展示在沒見過的影像上測試過的智慧野生動物監測。

這些課怎麼用

  • 從標著做這個的課開始。標題下面那一行你自己會了,再往下。
  • 先玩遊戲。再做測驗。10題裡對8題就通過。練習紙在紙上。答案在最下面。
  • 每一課都接在前一課後面。每次訓練都記下:設定、損失曲線和測試分數。
  • 寫程式的課用 Python 和 PyTorch,在免費的線上記事本裡,帶 GPU。小模型和小資料集就夠。只用你可以用的開放資料集。沒有本人允許,絕不用人的照片來訓練。

每一課都有遊戲、測驗和練習紙。

0/36

神經網路基礎

  1. 1神經元用輸入、權重和偏置計算神經元的輸出。
    • 寫出加權和加偏置。
    • 用手算三個輸入。
    • 在程式裡用點積來算。
  2. 2激活比較 ReLU、sigmoid 和 softmax 激活。
    • 畫出每種激活。
    • 說明網路為什麼需要非線性激活。
    • 用 softmax 把分數變成機率。
  3. 3層和網路把層疊成網路。
    • 把一層寫成矩陣乘法。
    • 追蹤每一層資料的形狀。
    • 數出網路的參數。
  4. 4小網路用 NumPy 寫小網路的前向傳播。
    • 在 NumPy 裡搭一個兩層網路。
    • 把一批輸入送進去。
    • 檢查輸出的形狀。

訓練神經網路

  1. 5損失為一項任務選擇損失並計算它。
    • 迴歸用均方誤差。
    • 分類用交叉熵。
    • 說出損失下降是什麼意思。
  2. 6梯度下降講清梯度下降怎樣讓權重往下走。
    • 找出損失曲線的斜率。
    • 按學習率邁步。
    • 看看學習率太大或太小會怎樣。
  3. 7反向傳播順著反向傳播,看誤差怎樣傳回網路。
    • 在一個很小的網路上用連鎖法則。
    • 用手算一個梯度。
    • 用自動微分核對。
  4. 8訓練網路訓練一個小網路,並畫出損失。
    • 用小批次來訓練。
    • 畫出訓練損失和驗證損失。
    • 驗證損失不再變好就停。

深度學習框架

  1. 9張量建立 PyTorch 張量並改變形狀。
    • 建立張量,檢查形狀和類型。
    • 改變形狀、堆疊並切片。
    • 把張量移到 GPU。
  2. 10模組用 torch.nn 的模組搭建模型。
    • 做 nn.Module 的子類別。
    • 使用 Linear 層和激活層。
    • 印出模型及其參數個數。
  3. 11最佳化器用 SGD 和 Adam 最佳化器來訓練。
    • 使用 zero_grad、backward 和 step。
    • 在同一項任務上比較 SGD 和 Adam。
    • 使用學習率日程。
  4. 12訓練腳本寫一個帶完整訓練和測試迴圈的訓練腳本。
    • 用 DataLoader 載入資料。
    • 訓練、驗證並測試。
    • 儲存最好的模型。

電腦視覺

  1. 13影像作為張量把影像載入成張量並正規化。
    • 把影像載入成通道、高度和寬度。
    • 調整大小並正規化。
    • 把一批顯示成網格。
  2. 14卷積說明卷積濾波器怎樣找到邊緣。
    • 用手把 3×3 濾波器滑過一張影像。
    • 在程式裡用邊緣濾波器。
    • 說明 stride、padding 和 pooling。
  3. 15CNN搭建卷積神經網路,也就是 CNN。
    • 疊上卷積層、激活層和 pooling 層。
    • 展平,再加一個分類頭。
    • 追蹤形狀穿過整個網路。
  4. 16影像分類器用 CNN 訓練影像分類器。
    • 在一個小影像資料集上訓練。
    • 報告測試準確率。
    • 展示它分錯的影像。

自然語言處理

  1. 17分詞做分詞:把文字變成詞元和 ID。
    • 比較詞和子詞的詞元。
    • 建立詞表。
    • 把序列補到同樣長度。
  2. 18嵌入說明嵌入怎樣把相近的詞放在一起。
    • 使用嵌入層。
    • 找出離一個詞最近的詞。
    • 在兩個維度上畫出嵌入。
  3. 19文字模型搭建一個能讀詞元序列的文字模型。
    • 把嵌入平均成一個向量。
    • 使用一個簡單的循環層。
    • 比較這兩種做法。
  4. 20情感分類器訓練情感分類器,分辨正面和負面評論。
    • 在評論資料集上訓練。
    • 報告準確率、精確率和召回率。
    • 找出騙過它的評論,比如諷刺。

Transformer

  1. 21注意力講清注意力怎樣給其他詞元加權。
    • 說明查詢、鍵和值。
    • 計算一個短句的注意力權重。
    • 說出注意力為什麼能幫助遠處的意思。
  2. 22Transformer 區塊說出 Transformer 區塊的各個部分。
    • 說出多頭注意力、feed-forward 層和正規化層。
    • 說明殘差連接。
    • 說明位置編碼。
  3. 23預訓練模型用預訓練的 Transformer 模型做一項任務。
    • 載入預訓練模型和分詞器。
    • 用它給文字分類。
    • 和你自己的情感模型比一比。
  4. 24注意力圖讀懂一張注意力圖。
    • 把注意力權重畫成熱力圖。
    • 找出一個詞元注意哪些詞。
    • 說出注意力為什麼不是完整解釋。

聲音和多模態人工智慧

  1. 25聲音作為資料把聲音資料變成波形和頻譜圖。
    • 載入聲音並畫出波形。
    • 說明取樣率。
    • 做出頻譜圖。
  2. 26音訊分類器用音訊分類器給短聲音片段分類。
    • 把頻譜圖當成影像。
    • 在上面訓練 CNN。
    • 用背景雜訊來測試。
  3. 27多模態輸入說明模型怎樣把影像和文字的多模態輸入合在一起。
    • 說明每種輸入有各自的編碼器。
    • 說明共享的嵌入空間。
    • 說出三個多模態應用。
  4. 28影像和文字把影像和文字配上:用預訓練模型把影像和說明對上。
    • 取出影像和說明的嵌入。
    • 為每張影像給說明排序。
    • 用一句文字搜尋影像。

改進模型

  1. 29正則化用正則化減少過擬合:dropout 和權重衰減。
    • 加上 dropout。
    • 加上權重衰減。
    • 比較驗證曲線。
  2. 30資料增強做資料增強:把翻轉和裁剪過的影像加進訓練集。
    • 使用翻轉、裁剪和顏色變化。
    • 只增強訓練集。
    • 量一量測試準確率的變化。
  3. 31遷移學習用遷移學習在新類別上微調預訓練模型。
    • 凍結預訓練的層。
    • 換掉分類頭並訓練它。
    • 解凍,再用小學習率微調。
  4. 32誤差分析做誤差分析:把錯誤分組並找出原因。
    • 讀懂多類別的混淆矩陣。
    • 把錯誤分成組。
    • 給最大的那一組選一個改法。

深度學習專案

  1. 33野生動物資料挑選並劃分一個開放的野生動物影像資料集。
    • 選一個開放的紅外相機或野生動物資料集。
    • 選出 5 到 10 個物種。
    • 按地點劃分,讓測試公平。
  2. 34微調模型把影像分類模型微調到野生動物類別上。
    • 微調一個預訓練模型。
    • 追蹤驗證準確率。
    • 儲存最好的檢查點。
  3. 35示範頁面做一個示範頁面,顯示上傳影像的預測。
    • 接收一張上傳的影像。
    • 顯示前三個物種和它們的分數。
    • 信心低時顯示「不確定」。
  4. 36智慧野生動物監測展示智慧野生動物監測:沒見過的影像上的準確率,以及主要錯誤。
    • 報告沒見過的影像上的準確率。
    • 展示主要錯誤和原因。
    • 說出下一步要改什麼。
高一人工智慧:深度學習和多模態人工智慧