2013年10月26日 星期六

人工神經網路 (Artificial Neural Network)

http://4rdp.blogspot.com/2013/10/artificial-neural-network.html?m=0

NEURO 這門學問是我工作時才學習得的知識,多年前曾有一篇洗衣機貼文提到它,當時第一次知道這東西時,已經從研究所畢業好幾年,書局也沒幾本書可以參考,書中一堆數學式,有看沒有很懂,九O年代網路剛興起,沒甚麼資料可查,正好一位大學同學在大同工學院攻讀博士班主攻語音辨識,NEURO 就是用於學習辨識語音模式的解決方案之一,因此跟主管提出學習計畫,對授課教授表達旁聽的想法,就每周固定時間去大同工學院上課,我不需要學分,所以不用繳學費、不必考試、不必交作業,自備課本上了一個學期的課,這種學習方法在我準備插班大學考試也用過,並認識一些朋友。最近上網查,沒什麼人對 NEURO 議題,提供簡單的實例,以供初學者參考入門,現在將個人所知的做個紀錄分享。

類神經網路有很多解決方案,這裡使用 BP 方法。首先認識神經元的數學模型,


MP (MultiLayer Perceptron) 模型公式:

一、先計算內部數值
Ui = Σ Wji Xj – θi
Wji  = 連結強度
Xj   = 神經元 j 所傳來之訊號
θi  = 神經元 i 之閥值

二、計算輸出數值
Yi = f(Ui) = Yi 處理單元函數
f    = 轉換函數,通常為階梯函數(Step function)
例如 Yi = 1 / (1 + exp(-Ui))

三、δ差距量 ,用來修正權重
{T}目標輸出量
{Y}推論輸出量
差距量 = 目標輸出量 – 推論輸出量 = δi = Ti – Yi
本文範例採取的修正算式 δi = Yi‧(1 - Yi)‧(Ti – Yi)

四、計算輸出閥值及權重變量
η:學習速率,控制權重修正幅度
輸出單元閥值改變量 = △θi = - η‧δi
權重改變量 = △Wji = Xj‧η‧δi

五、修正下一輪閥值及權重
θi = θi + △θi
Wji = Wji + △Wji

六、檢驗成果
總錯誤率 = 誤分類案例總數/範例總數


依問題的複雜層度,利用它組合一知識神經網路,基本上有三大層-輸入層、隱藏層及輸出層。


最後整理一個試算表提供有興趣的朋友參考,以 XOR 邏輯為例,X1, X2 為輸入,Y為輸出,用 #3, #4, #5 三個神經元學習,H3, H4 是隱藏層(夾在輸入及輸出之間),簡單的問題一個隱藏層就夠,複雜的可能需要兩層。使用四種組合狀態重複訓練,最後它會穩定判別輸入,並給予適合的答案。

遞迴或遞歸 (Recursion) 這樣技術,可將非線性數學問題收斂求解,能處理類似邏輯型式的問題,供大家參考。

授權程式人雜誌 2014 四月刊文

6 則留言:

  1. 光是類神經網路的模型就有好多種,改良型的也不少文獻紀載。當年在研究所求學階段,主修控制理論,當時課程以小腦模型(CMAC)為主軸的神經網路學習模型,從簡單的一維、二維模型進行探討。畢業前發表數篇jounal or conference文章。不過這些都已經是畢業十多年前的往事了。現在,已記得不多,畢竟職場應用不多。

    回覆刪除
    回覆
    1. 薛老師您好,

      是啊!類神經網路模型有非常多種,不過懂得使用一兩種常用型式通常就足夠,職場應用以影像、語音辨識最常見,一般型式的控制還真不常見,它跟 Kalman Filter 一樣,需要足夠專業知識,以及設計靈感。

      許多主題趁現在還記得,趕快寫下來,不然太久沒用,老了以後就很難想起來。^_^

      刪除
  2. 我畢業後真正有用到的反而是灰色預測以及灰色關聯度分析。那時縣政府辦理資訊競賽,我寫一個颱風態勢預測,用灰色預測分析颱風未來移動的路徑,只是玩玩性質,真正颱風路徑哪真能預測的精準,還是得靠氣象局專業分析!! ^____^
    事隔多年,現在只剩下片段記憶。

    回覆刪除
    回覆
    1. 薛老師您好,

      客氣了,如果您能在您的部落格分享程式,或許有人再利用這程式分析衛星雲圖,來估測颱風路徑,那會是很棒的科學實驗。

      PS. 最近買了兩本新書,一本叫精準預測,另一本叫預測工程師的遊戲,還沒開始看,看完後再分享心得。 ^_^

      刪除