更新於 2024/05/06閱讀時間約 3 分鐘

深度學習基本概念簡介(下)

在前一篇中提到,我們可以透過y= bx+w 來當作機器用來預測的函數。但有時如果函數太過簡單,函數與實際輸出的值之間的差距無論怎麼調整都會存在,也就是前一節提到的Model Bias問題。

為了解決沒有彈性的問題,就有了sigmoid函數

Sigmoid

當一條linear curve無法有效的預測我們需要的值,這時我們可以透過precise linear curve來得到我們需要的函數。

但是precise linear curve本身的函數是不容易寫出的,因此我們可以用sigmoid函數逼近該precise linear curve。

*precise linear curve: 一條由很多線段所組成的鋸齒線(constant + a set of linear curve)。

Sigmoid函數的定義:y = c * (1 / 1 + e-(b+wx) )

規則:

  1. 當w無限大,就會趨近於平線。改變W → 改變斜率
  2. 改變c → 改變高度
  3. 改變b → 平移shift


Part 1. 尋找函數Function

我們把sigmoid函數套用到原本的函數中,就會變成

y = b + wx1 -> y = Σci sigmoid(bi + wix1)

y=b+Σwijxj -> y= Σci sigmoid(bi + Σwijxj),j是天數。 wijxj為不同天數的數據與權重參數。

  1. 將函數展開:

r1 = b1 + w11x1 + w12x1 + w13x3

r2 = b2 + w21x1 + w22x1 + w23x3

r2 = b3 + w31x1 + w32x1 + w33x3

  1. 將展開的公式以矩陣表示:r = b + wx


  1. 最後乘上Ci加上b,就會得到預測的值y。同時我們也能將這個步驟轉為矩陣的方式表示:

透過以上三個步驟,我們就能完成第一步的尋找函數function過程。

*我們要尋找的參數w,b,c可以統一變為θ矩陣,透過訓練資料找到最適合的參數值。


Part 2. 尋找讓Loss最小的參數θ

接著我們要尋找讓loss最小的參數,讓L(θ)的值可以最小,因此我們挑選一個θ0當作初始值,讓L對每個θi微分,就可以得到一組gradient。

因此每次更新的公式: θ1 = θ0 - g * learning rate。

那要更新多久呢?

  1. gradient = 0
  2. 不想做了為止。


使用Batch

不過通常,我們在做gradient decent的時候,偏向於把大量的訓練資料區分為好幾個batch(隨機區分即可),然後先利用batch1 將θ0更新成θ1,接著再把batch2的資料拿來將θ1更新成θ2

*把所有的batch更新過一次,被稱為1 epoch。


反覆進行Sigmoid,以得到最佳解

為什麼我們需要不斷地堆疊更多的sigmoid或是前面線性函數的層數?

因為我們在預測的輸出資料,通常不會精準的符合某個函數的圖形。因此我們需要透過不斷地堆疊,去近似於我們目標的模型,藉此找到預測的方程式。而這樣重複堆疊的過程,就是深度學習的由來。

我們也不一定要只使用一個sigmoid,當我們重複加上更多的sigmoid,也可以更優化模型。至於要做幾次(layer),這也由我們自己控制的部分(hyperparameter)。

-> 以上的步驟與以下的圖型,也說明了為什麼它被稱為神經網路,或是深度學習

(Deep的由來:很多hidden layer疊加在一起)



參考資料:

Hung-yi Lee機器學習課程

深度學習基本觀念

Activation Function



分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.