- 隱藏層的角色加工的步驟
每層的輸出都是下一層的輸入,這種逐步的加工過程提升了蛋糕的質量,對應於ANN中逐層提取更高層次的特徵。
2. 隱藏層中的 Nodes:加工細節
每個 Node(神經元) 就像是每個步驟中的一個特定細節處理器,專注於完成一部分工作。
第一層:混合食材(第一隱藏層)
- Node 1 可能專門處理糖的甜度(多或少)。
- Node 2 處理麵粉的濕度(是否需要多加水)。
- Node 3 處理雞蛋的質量(是否打散均勻)。
第一層通過這些細節處理,產出均勻混合的麵糊,對應ANN中初步處理輸入數據的工作。
第二層:打發蛋白(第二隱藏層)
- Node 1 判斷蛋白是否打發到「濕性發泡」。
- Node 2 判斷是否需要再打發至「乾性發泡」。
- Node 3 將打發好的蛋白混入麵糊,計算混合的時間和手法。
這層處理將蛋白的空氣感帶入麵糊,使蛋糕更蓬鬆,對應ANN中提取更深層次的特徵。
第三層:烘焙(第三隱藏層)
- Node 1 判斷烤箱溫度是否適宜。
- Node 2 判斷烘烤時間是否到位(避免過生或過熟)。
- Node 3 監測蛋糕是否均勻膨脹。
這一層進一步決定了蛋糕的質地和外形,對應ANN中更高階的特徵學習。
第四層:裝飾(第四隱藏層)
- Node 1 判斷裝飾是否應該是水果風味。
- Node 2 決定奶油花的圖案。
- Node 3 判斷是否添加撒糖或其他裝飾。
這一層將蛋糕的美觀度最大化,對應ANN中最終提取出的高層特徵。
3. 多層(Layers)提升複雜問題的解決能力
每層(Layer)代表不同的加工階段,層數越多,蛋糕製作過程中可解決的問題越複雜:
- 1層隱藏層(簡單蛋糕):只混合食材後直接烤,結果可能是普通的鬆餅。
- 2層隱藏層(進階蛋糕):加上打發蛋白的過程,蛋糕會更蓬鬆。
- 多層隱藏層(高級蛋糕):除了上述步驟,還包含精美裝飾,呈現專業水準。
- 輸出層(Output Layer):輸出層就是完成的蛋糕,可能是巧克力蛋糕、草莓蛋糕等,根據不同食材和烘焙方式得出不同的結果。朋友品嘗蛋糕後的反應(喜歡或不喜歡)可以看作是最終輸出結果。
神經網路運算過程
- 權重(Weights):調節輸入信號的重要性,數值會隨訓練不斷更新。
假設每個食材對蛋糕的影響不同,比如糖的甜度比麵粉的量更重要,這種「重要性」就是權重(Weights)。 將不同重量的原料加進攪拌碗中,根據比例進行混合。
- 激活函數(Activation Function):定義輸出的非線性變換,例如 ReLU、Sigmoid、Tanh 等。
烘焙過程中的「開關」,比如發酵時溫度過低不會膨脹,溫度適中則效果很好。激活函數決定這些原料是否有效參與最終的轉化。烤箱的溫度設定直接影響蛋糕是否成功。
- 輸出傳遞:經過所有步驟後,蛋糕完成並送到桌上。這就是信息從一層神經元到下一層或最終輸出的過程。你將烤好的蛋糕端給朋友,等待他們的評價。
神經網路訓練過程
前向傳播(Forward Propagation):計算輸出層預測值。
將所有食材按照既定流程加工,直到做出蛋糕。
反向傳播(Backward Propagation):調整權重與偏置以最小化損失。
聽取朋友的建議,反思製作過程(例如減少糖量或提高烤箱溫度),調整配方和步驟。你試圖改良下一次的蛋糕製作。
損失函數(Loss Function):評估模型預測結果與真實值的差異。使用損失函數評估預測誤差。朋友吃蛋糕後給出評價,例如「太甜」或「不夠鬆軟」,這是你對蛋糕與期望的差距進行的量化。朋友評分(例如滿分10分,實際只有6分),這就是損失值。
迭代訓練:重複前向與反向傳播,直到模型收斂。
更新權重, 根據建議重新分配每種食材的比例,例如多加點麵粉或減少奶油,讓下次蛋糕更接近朋友的期待。改進配方後重試,直到做出朋友滿意的蛋糕。
3.優化演算法(Optimization Algorithm):如Adam
Adam 的核心思想是:
- 結合動量法(Momentum):考慮之前的梯度變化,讓更新過程更平滑(避免劇烈變化)。
- 自適應學習率(Adaptive Learning Rate):針對每個參數單獨調整學習率,讓更新更精準。
用蛋糕例子來說:
- 動量法:你根據多次烘焙的經驗,逐步改進配方,而不是只根據最近一次的建議改變太多。
- 自適應學習率:你對不同的食材(比如糖和麵粉)使用不同的調整力度,因為它們對最終結果的影響不同。
2. 使用 Adam 解釋蛋糕製作的優化過程
假設你在製作蛋糕時遇到以下問題:
- 第一批蛋糕太甜。
- 第二批蛋糕不夠鬆軟。
你希望通過調整配方和製作過程,逐步改進蛋糕的質量。
步驟 1:初始化配方(權重)和目標
- 初始配方是你第一次試做的參數,比如糖 200 克、麵粉 300 克。
- 目標是做出一款口感最佳的蛋糕(即讓損失函數最小化)。
步驟 2:計算梯度(誤差和改進方向)
- 梯度:假設朋友告訴你蛋糕太甜,那麼梯度(Gradient)表示「應該減少糖量」。
- 計算梯度方向:根據蛋糕的甜度問題,糖是主要調整的方向。
步驟 3:動量的應用(考慮過去的梯度)
在 Adam 中,動量法(Momentum) 幫助你考慮之前的試驗結果,而不是完全依賴最近一次的反饋。
- 比喻:你記得前幾次做蛋糕時,甜度問題一直存在,所以你知道減糖是長期需要改進的方向。
- 動量的效果讓糖量的調整變得「更穩健」,避免一次改動過大或過小。
步驟 4:自適應學習率(每種食材的不同調整)
Adam 的另一個特點是為每個參數(食材)設置不同的學習率。
- 糖的甜度影響明顯,學習率應該較大(快速調整)。
- 麵粉的比例影響相對緩慢,學習率應該較小(慢慢調整)。
- Adam 自動為糖和麵粉分配適合的調整力度,讓你不需要手動去嘗試。
步驟 5:指數加權平均(平滑更新)
Adam 在更新時使用了 一階矩估計(Mean,平均梯度) 和 二階矩估計(Variance,梯度變化幅度),讓更新過程更加穩定。
如果你發現最近幾次試驗中糖的調整幅度波動很大,Adam 會根據這些變化自動調整糖的更新幅度,避免劇烈改動導致失敗。
步驟 6:更新配方
Adam 根據計算出的更新量,自動調整每個參數:
- 糖的更新:根據朋友的反饋減少 10 克。
- 麵粉的更新:緩慢增加 5 克,讓蛋糕更鬆軟。
這些更新是同時進行的,每次都更接近理想的蛋糕。
3. Adam 在蛋糕製作中的總結
Adam 的過程可以比喻為以下關鍵點:
- 考慮歷史經驗(動量):你不只依賴最新的試驗結果,而是綜合所有過去的反饋。
- 自適應調整力度(自適應學習率):對每個食材的調整根據其重要性自動進行微調。
- 平滑更新過程:避免一次調整過大,導致新的問題(例如完全失去甜味)。
- 快速收斂:Adam 幫助你更快找到最佳配方,做出讓朋友滿意的蛋糕。
假設我們正在調整蛋糕配方,目標是通過調整糖的重量(變量 w)來減少蛋糕過甜的問題(損失函數)。損失函數的表達式如下:
L(w)=w^2
這是一個簡單的二次函數,最低點在 w = 0,代表最優解。
初始化參數:
- 初始糖的重量 w_0=5(太甜了)。
- 學習率 α= 0.1。
- 動量參數:
• 一階矩估計 β_1=0.9。
• 二階矩估計 β_2=0.999。 - 偏差修正: ϵ=10^(-8) (避免除以零)。
Adam 的計算步驟:
Adam 的更新公式如下:
- 計算梯度:∇_w L(w)
- 更新一階動量估計:
m_t=β1 m(t-1)+(1-β_1 ) ∇_w L(w)
3. 更新二階動量估計:
v_t=β2 v(t-1)+(1-β_2 ) (∇_w L(w))^2
偏差修正:
(m_t ) ̂=m_t/(1-β_1^t ), (v_t ) ̂=v_t/(1-β_2^t )
5. 更新權重(糖重量):
w_t=w_(t-1)-α (m_t ) ̂/(√((v_t ) ̂ )+ϵ)
逐步計算(假設迭代 2 次):
初始化
- m_0=0, v_0=0
第 1 次迭代(t=1):
1. 計算梯度:
∇_w L(w)=2w=2⋅5=10
2. 更新一階動量估計:
m_1=β_1⋅m_0+(1-β_1 )⋅∇_w L(w)=0.9⋅0+0.1⋅10=1
3. 更新二階動量估計:
v_1=β_2⋅v_0+(1-β_2 )⋅(∇_w L(w))^2=0.999⋅0+0.001⋅(10)^2=0.1
4. 偏差修正:
(m_1 ) ̂=m_1/(1-β_1^1 )=1/(1-0.9)=10, (v_1 ) ̂=v_1/(1-β_2^1 )=0.1/(1-0.999)=100
5. 更新權重(糖重量):
w_1=w_0-α (m_1 ) ̂/(√((v_1 ) ̂ )+ϵ)=5-0.1⋅10/(√100+10^(-8) )=5-0.1⋅1=4.9
第 2 次迭代(t=2):
1. 計算梯度:
∇_w L(w)=2w=2⋅4.9=9.8
2. 更新一階動量估計:
m_2=β_1⋅m_1+(1-β_1 )⋅∇_w L(w)=0.9⋅1+0.1⋅9.8=1.88
3. 更新二階動量估計:
v_2=β_2⋅v_1+(1-β_2 )⋅(∇_w L(w))^2=0.999⋅0.1+0.001⋅(9.8)^2=0.196
4. 偏差修正:
(m_2 ) ̂=m_2/(1-β_1^2 )=1.88/(1-〖0.9〗^2 )=9.89, (v_2 ) ̂=v_2/(1-β_2^2 )=0.196/(1-(0.999)^2 )=98.02
5. 更新權重(糖重量):
w_2=w_1-α (m_2 ) ̂/(√((v_2 ) ̂ )+ϵ)=4.9-0.1⋅9.89/(√98.02+10^(-8) )=4.9-0.1⋅1=4.8
結果:
經過兩次迭代:
- 初始糖重量 w_0=5
- 第一次更新後:w_1=4.9
- 第二次更新後:w_2=4.8
Adam 幫助我們逐步減少糖的重量(梯度下降),使甜度更接近理想狀態。
- 蛋糕比喻:
- 第一步:根據朋友的反饋(梯度),知道糖太多了(梯度大)。
- 第二步:參考之前的嘗試(動量),避免一次減太多。
- 第三步:根據糖的影響力(自適應學習率),調整每次減少的份量。
- 最終結果:逐步減少糖的重量,讓蛋糕更符合口味。
ANN的重要應用
- 分類任務:圖像識別(如手寫數字辨識)、語音識別、文本分類。
- 回歸分析:預測房價、股市走勢。
- 聚類分析:數據分群。
- 時間序列分析:天氣預測、銷量預測。
- 生成模型:生成對抗網路(GAN)用於創建逼真的圖像、音樂等。
- 醫療診斷:疾病預測和診斷。
