用Java開源項目JOONE實現人工智慧編程[1]2008-06-30 16:08
文/朱先忠編譯
簡介
很少有程式員不對這裡或者那裡所包含的人工智慧編程所吸引,然而,許多對AI感興趣的程式員很快就因其中包含的演算法的複雜性而退卻。在本文中,我們將討論一個能大大簡化這種複雜性的Java開源工程。
Java物件導向的神經網路(JOONE)是一開源工程,它提供給Java程式員一個高適應性的神經網路。該JOONE工程原始碼由LGPL所保護。簡
言之,這意味著原始碼是可自由使用的而且你不需要支付版稅就可以使用JOONE。JOONE可以從
http://joone.sourceforge.net/處下載。
JOONE能允許你輕易地從一個Java程式中建立神經網路。JOONE支援許多特徵,如多線程和分散式處理。這意味著JOONE能利用多處理機電腦和多台電腦的優勢來進行分散式處理。
神經網路
JOONE用Java實現了一個人工神經網路。一個人工神經網路試圖仿效生物學神經網路的功能--神經網路組成今天在地球上幾乎所有高等生命的大腦形式。神經網路由神經原組成。圖1顯示了一個實際神經原圖。
使用JOONE
在這篇文章中,你將看到一個簡單的怎樣使用JOONE的執行個體。神經網路題目涉及廣泛並覆蓋許多不同的應用領域。在本文中,我們將展示給你怎樣使用JOONE來解決一個很簡單的模式識別問題。模式識別是神經網路中的最普遍的應用之一。
模式識別提供給神經網路一種模式,判斷是否該神經網路能夠識別出該模式。這種模式應該能夠在某種程度上被扭曲而該神經網路仍然能夠識別它。這很像人類識
別東西(如一個交通標誌)的能力。人類應該能夠識別在下雨天,晴天或者晚上的交通標誌。即使這些映像看上去可能相當不同,但人類的大腦仍能夠判斷出它們是
一樣的映像。
當進行JOONE編程時,你一般要使用兩種類型的對象。你要使用神經原層對象,用於描述一層的一個或多個的具有相似特徵的神經原。神經網路經常有一層或兩層神經元。這些神經元層通過觸角聯絡在一起。這些觸角把這種待識別的模式,從一個神經元層傳輸到另一個神經元層。
觸角不僅把這種模式從一個神經元層傳輸到另一個神經元層。觸角還將產生一些指向這種模式的元素的斜線。這些斜線將導致這種模式的某些元素在被傳輸到下一
個神經元層時不如通過其它方式傳遞更有效些。這些斜線通常稱為權重,它們形成神經網路的儲存系統。通過調整儲存在觸角中的這些權重,可以更改神經網路的行
為。
觸角在JOONE中還承擔著另外一個角色。在JOONE中,可以把觸角看作是資料導管。正如觸角把模式從一個神經元層傳輸到另一個神經元層,指定版本的觸角用於把模式傳入和傳出神經網路。下面將給你展示一個簡單的單層的神經網路是怎樣被構建並進行模式識別的。