Featured Post

#49常識集_類神經網路_下

#49常識集_類神經網路_下

基本架構

如果讀者已經清楚上集講的gradient descent method的話,類神經網路基本上就是一個多層次(multi-layer)的版本。 我們來看看下圖:
基本上和上次看到的結構是很類似的,只是在input & output之間多了z,這層叫做hidden neuron,一般情況下至少會有個三層左右,但這裡為了演示方便只講一層。原本的權重也變成了權重矩陣,而且還不只一個矩陣。output也有很多個。此外在每層neuron之外還要加上截距1。

非常重要的一點是同層的neuron間是彼此沒有溝通的喔~!

接下來要做的事情其實也很單純,就是把output和標準答案比較,求出error,然後對權重偏微分,之後修改權重。所以我們接下來就看看要如何實踐他吧。

Activation function

神經的動作電位是全有全無的,我們通常也會希望各層神經元的output是個二元的結果(0 or 1 或 -1 or 1),一般而言會用的activation function有這兩種:
所以在有activation function的情況下,在第t次演算的時候的情形就會如下列算式所述:

 
到目前為止應該都不會太困難才對。

如何修改權重矩陣 

要修改權重矩陣,大家從上次的經驗也明白,我們就是要去求出∂E/∂vij & ∂E/∂wij。概念上蠻簡單,但是因為層次多了起來,所以步驟會比較麻煩一點。我們一步一步來看。首先根據chain rule我們可以寫出:


 其中∂ai/∂vij & ∂ui/∂wij蠻容易的,他就是zj & xj。∂E/∂ai & ∂E/∂ui比較困難,為了方便起見,我們先把他們兩個分別定義為:Δi = -∂E/∂ai     ,    δi = -∂E/∂ui。我們必須再用一次chain rule:


所有我們需要的東西就都變出來了。

所以把上面的東西總結下來就會變成像下面的流程:




 
一行一行看下來的話其實不會很困難的。 實際在處理的時候,會有比較大的問題是發生在矩陣的dimension有沒有match。希望大家都能理解~。

Comments