L17|中文 F3 學生的學習紀錄
L17|中文 F3 學生的學習紀錄
角色設定:我是中三學生,只看得懂中文。Python 學過變數、for 迴圈和 list,數學讀到一元二次方程。我靠中文課程筆記、YouTube 自動翻譯字幕和查字典來學。Kaggle 筆記本的操作步驟,是依官方 notebook 流程寫下的練習紀錄。
我讀懂了什麼(用自己的話)
- 訊號經過很多層,每層放大一點,最後會變超大;縮小一點,最後會變 0。
- 初始化就是開始前把權重設在剛剛好的大小。
- ReLU 會砍掉負數,所以 Kaiming 初始化要補回來,多乘 √2。
- BatchNorm 在訓練途中一直把數字拉回標準範圍。
我卡住的地方,和我怎麼解決
| 卡住的地方 | 我怎麼解決 |
|---|---|
| 變異數和標準差分不清 | 記住:標準差是變異數開根號,單位和原本的數字一樣。 |
| 為什麼要「平均 0、標準差 1」 | 想像每一層都是一個傳話的人,音量要一直維持正常,太大聲會爆音、太小聲會聽不到。 |
練習作答
Q1. 一層有 100 個輸入。用簡化版「1 ÷ √n_in」初始化,權重標準差是多少?用 Kaiming「√(2 ÷ n_in)」呢?
簡化版:1 ÷ √100 = 1 ÷ 10 = 0.1。Kaiming:√(2 ÷ 100) = √0.02 ≈ 0.141。
Q2. 如果每一層都把訊號放大 1.5 倍,經過 20 層後大約放大多少倍?這說明了什麼?
1.5²⁰ ≈ 3325 倍。說明就算每層只放大一點點,疊很多層後也會爆炸,所以初始化要讓每層的放大倍數接近 1。
Q3. BatchNorm 解決了什麼問題?
訓練過程中權重一直在變,激活值的分布也跟著跑掉,可能越來越大或越來越小。BatchNorm 在每一層用當批資料的平均和標準差把激活值重新調回平均 0、標準差 1,讓訓練更穩定,也能用更大的學習率。
我的卡片盒筆記
卡片|每一層只差一點點,疊起來就是天壤之別
深度網路的問題在於「深」:每一層把訊號放大 1.5 倍看起來沒什麼,但 20 層之後就是三千多倍。所以初始化和正規化的目的,是讓每一層的輸出維持在平均 0、標準差 1,不爆炸也不消失。
我們班玩過傳話遊戲,第一個人說「明天體育課改到禮堂」,傳了 15 個人之後變成「明天放假」。每個人只改一點點,最後完全變了樣。後來老師規定每個人都要寫下來再傳,訊息就準多了,這有點像 BatchNorm 在每一層幫忙校正。不過我還不太懂為什麼 BatchNorm 會讓學習率可以調大,這個要再查。這也讓我明白,層數越多的流程,越需要在中間安排檢查點,及早把偏差拉回來。
這週我要做的小行動:用計算機算 1.1、1.5、0.9 的 20 次方,親眼看看小差異疊加後的結果。
🔗 推薦產生關聯的筆記: → 數學類:「指數成長會把小差異放到極大」 → 溝通類:「多層傳遞的訊息需要中途校正」 → 習慣類:「每天進步 1%,一年後差很多」
回到課程筆記:L17_初始化與正規化_202611041526