1. 隱藏層的角色加工的步驟

每層的輸出都是下一層的輸入,這種逐步的加工過程提升了蛋糕的質量,對應於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):輸出層就是完成的蛋糕,可能是巧克力蛋糕、草莓蛋糕等,根據不同食材和烘焙方式得出不同的結果。朋友品嘗蛋糕後的反應(喜歡或不喜歡)可以看作是最終輸出結果。

 神經網路運算過程

  1. 權重(Weights):調節輸入信號的重要性,數值會隨訓練不斷更新。

假設每個食材對蛋糕的影響不同,比如糖的甜度比麵粉的量更重要,這種「重要性」就是權重(Weights)。 將不同重量的原料加進攪拌碗中,根據比例進行混合。

  1. 激活函數(Activation Function):定義輸出的非線性變換,例如 ReLU、Sigmoid、Tanh 等。

烘焙過程中的「開關」,比如發酵時溫度過低不會膨脹,溫度適中則效果很好。激活函數決定這些原料是否有效參與最終的轉化。烤箱的溫度設定直接影響蛋糕是否成功。

  • 輸出傳遞:經過所有步驟後,蛋糕完成並送到桌上。這就是信息從一層神經元到下一層或最終輸出的過程。你將烤好的蛋糕端給朋友,等待他們的評價。

神經網路訓練過程

前向傳播(Forward Propagation):計算輸出層預測值。

將所有食材按照既定流程加工,直到做出蛋糕。

反向傳播(Backward Propagation):調整權重與偏置以最小化損失。

聽取朋友的建議,反思製作過程(例如減少糖量或提高烤箱溫度),調整配方和步驟。你試圖改良下一次的蛋糕製作。

損失函數(Loss Function):評估模型預測結果與真實值的差異。使用損失函數評估預測誤差。朋友吃蛋糕後給出評價,例如「太甜」或「不夠鬆軟」,這是你對蛋糕與期望的差距進行的量化。朋友評分(例如滿分10分,實際只有6分),這就是損失值。

迭代訓練:重複前向與反向傳播,直到模型收斂。

更新權重, 根據建議重新分配每種食材的比例,例如多加點麵粉或減少奶油,讓下次蛋糕更接近朋友的期待。改進配方後重試,直到做出朋友滿意的蛋糕。

3.優化演算法(Optimization Algorithm):如Adam

Adam 的核心思想是:

  1. 結合動量法(Momentum):考慮之前的梯度變化,讓更新過程更平滑(避免劇烈變化)。
  2. 自適應學習率(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 的過程可以比喻為以下關鍵點:

  1. 考慮歷史經驗(動量):你不只依賴最新的試驗結果,而是綜合所有過去的反饋。
  2. 自適應調整力度(自適應學習率):對每個食材的調整根據其重要性自動進行微調。
  3. 平滑更新過程:避免一次調整過大,導致新的問題(例如完全失去甜味)。
  4. 快速收斂:Adam 幫助你更快找到最佳配方,做出讓朋友滿意的蛋糕。

假設我們正在調整蛋糕配方,目標是通過調整糖的重量(變量 w)來減少蛋糕過甜的問題(損失函數)。損失函數的表達式如下:

L(w)=w^2

這是一個簡單的二次函數,最低點在 w = 0,代表最優解。

初始化參數:

  1. 初始糖的重量 w_0=5(太甜了)。
  2. 學習率 α= 0.1。
  3. 動量參數:
    • 一階矩估計 β_1=0.9。
    • 二階矩估計 β_2=0.999。
  4. 偏差修正: ϵ=10^(-8) (避免除以零)。

Adam 的計算步驟:

Adam 的更新公式如下:

  1. 計算梯度:∇_w L(w)
  2. 更新一階動量估計:

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的重要應用

  1. 分類任務:圖像識別(如手寫數字辨識)、語音識別、文本分類。
  2. 回歸分析:預測房價、股市走勢。
  3. 聚類分析:數據分群。
  4. 時間序列分析:天氣預測、銷量預測。
  5. 生成模型:生成對抗網路(GAN)用於創建逼真的圖像、音樂等。
  6. 醫療診斷:疾病預測和診斷。