實質上鼓勵一下吧

目前分類:類神經網路 (8)

瀏覽方式: 標題列表 簡短摘要

由於類神經網路需要處理大量的資料與運算,非常適合使用多工的方式設計,以加快整個網路的運作。實際上,類神經網路在求解是非常快速的,意思就是說如果將一個範例丟到輸入單元到整個算完得到輸出值是非常快的,那麼思考方向就不應該是將單一的神經元做成多工的模式。因為當你要建立一個執行緒(thread)也是需要花時間,而一個神經元在做輸出運算也不過是一兩個浮點運算的事情而已,這樣會變得非常不值得,甚至會比沒有多工的時候還要慢。

會有效率上的問題實際上是會發生在學習的過程中,以股票分析為例子,一年就有365個範例需要進行學習,假設一個範例平均要用1000次來進行收斂,那麼就有365,000次的學習運算需要反復的做,因此設計的時候以一個範例為一個執行緒會是比較有效率的設計方式。

漠哥 發表在 痞客邦 PIXNET 留言(1) 人氣()

之前寫的類神經程式因為考慮到多執行緒,許多人看不懂,這一篇用C#寫,使用陣列來表達神經元,並且完全不考慮多執行緒的問題,應該比較容易理解。

class Element {

漠哥 發表在 痞客邦 PIXNET 留言(18) 人氣()

前面已經交代了類神經網路的倒傳遞網路程式碼,也就是說類神經網路是一個必須教他正確的輸入輸出範例,然後它會依照曾經學習過的範例提出新範例的評估值,理論上範例越多就越精確。實際在應用的時候如果學習範例只有在一百個以內,基本上並不會有任何問題,但是只要超過一定的數量,網路的學習速率、層數、寬度等的設置就變得相當重要。

學習速率在範例少的時候通常可以設置成書上所寫的0-10之間,但是實際測試,範例很多的時候0-10之間的學習速率卻容易產生偏離的結果,或許是完全不會收斂的狀況,必須將數值設定得很小才有收斂的機會。

漠哥 發表在 痞客邦 PIXNET 留言(1) 人氣()

前一篇釋出了倒傳遞網路的程式碼,這一篇應用前一篇所寫的網路物件,將學習機器人實做出來。由於寫出這個程式並不容易,需要考慮到執行效率的問題,因此直接使用多執行緒的方式來撰寫。而做出來的神經網路因為可以應用在許多地方,因此使用物件導向的方式製作機器人原始物件,程式很難懂,我儘量詳細說明。

直接列出完整學習機器人的程式碼,請連同前面的程式一起貼在一個檔案裏面即可,如果連該複製什麼都搞不清楚,那麼表示你連VB.NET也搞不清楚,也不用再看下去了。

漠哥 發表在 痞客邦 PIXNET 留言(2) 人氣()

感覺上研究這個問題的人都沒有搞得很清楚,畢竟類神經網路是要用到蠻難理解的數學,並且要真正會寫程式才成。這一篇我就重新整理一下,用比較簡單的方法再把神經網路程式做一遍。

首先宣告神經元,並且同時考慮序列化的動作,序列化的重點有以下幾點:

漠哥 發表在 痞客邦 PIXNET 留言(5) 人氣()

這一篇老早寫好,雖然這兩篇的點閱率極高,但是卻完全沒有回應,資訊人真的是……。

延伸閱讀:

漠哥 發表在 痞客邦 PIXNET 留言(18) 人氣()

上一篇類神經網路基礎篇得到了相當多的搜尋引擎查詢和點閱(不過卻沒有人回應,玩技術的人實在是不善於跟人溝通呀,隨便回個兩句也好呀,這叫我怎麼把二十幾年的經驗丟出來呢),這一篇接著來說怎麼設計一個類神經網路程式。

Neture[5]

漠哥 發表在 痞客邦 PIXNET 留言(7) 人氣()

這次來寫點不一樣的東西,保證很多人看不懂甚至看不下去,因為要弄懂這個東西需要有很好的電腦觀念和數學觀念。但是為什麼要寫這個東西呢,因為微軟的資料庫(Microsoft SQL Server 2005)裡面的資料挖掘就是利用這樣的機制所設計出來的,能夠了解這個原理會讓資料庫管理人員能夠正確的應用這項技術。

漠哥研究這個東西實際上已經有十幾年了,但是數學本身并不是很好,而且所能夠找到的參考書籍和論文大多是胡說八道,或者是只寫了結果要用某某微積分方法,卻沒有說明為什麼,對於我這種只能記原理的人來說非常的痛苦,因此進度緩慢,也不敢說有什麽心得。也順便抱怨一下,以前學校也學過微積分,但是卻沒有人告訴我那些東西可以用在什麼地方,讓我從三角函數小老師一下子變成了數學白癡,幸好生活中用到微積分的地方不多,不然真的活不下去了。

漠哥 發表在 痞客邦 PIXNET 留言(22) 人氣()