天天看點

從零開始人工智能(第五節)——反向傳播算法如何計算

作者:人工智能排頭兵

在說明如何計算之前,我們先解釋幾個專業詞彙。

1:誤差是什麼?

就是我們用已經擁有的資料訓練的模型,輸出結果與實際結果的差異進行量化表示。對誤差的表示有很多具體的方法。當我們實際使用的時候再了解也不遲。隻要知道誤差就是衡量預測資料和實際資料之間的差異有多少,量化了才有利于使用計算機進行自動計算

2:什麼是偏導

首先我們要知道導數,以直線為例,計算一階導數就是計算斜率,計算二階導數就是計算斜率的變化率。(至于如何計算在需要的時候了解就好,現在的架構内部,以及很多程式設計語言都內建了自動求導)

至于什麼是偏導那?導數主要針對一個單變量的函數,但是我們前面說過,神經網絡模型的參數太多了,求關于其中一個變量的導數就是偏導數。

關于反向傳播計算有兩種表達方式,一種是基于數學的形式,一種是基于計算圖的形式。使用數學的形式比較常見,大部分的書籍都是基于數學形式進行論述。這裡我們先以數學的形式進行說明。後面我們也會說到計算圖形式(因為裡面的計算圖是現在比較火的圖優化的基礎)

其實詳細說起來還涉及到其它專業算法,以及連式法則等規則。但是為了降低難度,我們用幾個實際資料和實際網絡來推演一下前向求導和反向傳播過程,後面再涉及到代碼計算的時候會進行說明,或者以視訊的形式表現(打字太累了[呲牙])

下面我們就用數學的形式說一下反向傳播:

從零開始人工智能(第五節)——反向傳播算法如何計算

資料和網絡節點說明

簡單說一下,我們上面要做什麼事情呢?就是要設計一個網絡,通過輸入資訊,獲得輸出資訊,也就是清單中的樣本值。x1和x2是參數值,也就是我們模型開始運作時所賦予的值。

logsig節點公式如下:

從零開始人工智能(第五節)——反向傳播算法如何計算

logsig函數

殘差和權重求和,大家看一下計算步驟就能了解了。很簡單的計算,隻是換個名字

大家可以對照上面給定的參數,将各個值賦予網絡就得到以下形式:

從零開始人工智能(第五節)——反向傳播算法如何計算

參數初始化并進行前向計算

從零開始人工智能(第五節)——反向傳播算法如何計算

将logsig用起來

從零開始人工智能(第五節)——反向傳播算法如何計算

計算誤差準備反向

從零開始人工智能(第五節)——反向傳播算法如何計算

計算殘差

從零開始人工智能(第五節)——反向傳播算法如何計算

準備更新權重

從零開始人工智能(第五節)——反向傳播算法如何計算

更新權重

重複以上的計算,直到模型的性能達到預期。

實際的網絡當然更複雜,但是基本的原理并沒有不同。隻是節點功能更多,節點數量更巨大,模型結構設計更加精巧,更加複雜。

下一節我們看看補一下裡面缺少的基礎知識。

繼續閱讀