神經網絡在NetBeans平台
簡介
NetBeans平台是一個通用的Java Swing應用程序框架,它提供的GUI組件和模塊系統的開發定制的桌面應用程序。 最著名的NetBeans平台上的應用,當然,在NetBeans IDE中,但也有許多其他的例子,可以看到在 NetBeans平台的魅力 。
Neuroph工作室 是一個Java開發環境,建立神經網絡之上的NetBeans平台和Neuroph框架。 這是IDE的環境中定制的神經網絡的發展。 Neuroph Studio是一個GUI,坐在上面Neuroph框架。 Neuroph框架是一個全功能的Java框架,它提供的類神經網絡的建設。
除了提供易於使用的神經網絡的嚮導和工具,Neuroph Studio還集成了基本的Java開發模塊從 NetBeans IDE中,因此開發人員可以創建,測試和部署各種基於 Java組件神經網絡在同樣的環境。 在此之前,開發人員通常需要兩個應用程序:一個用於神經網絡的發展和一個 Java開發。
神經網絡是人工智能(機器學習技術)適用於不明確的問題,如識別,預測,分類和控制。 本文介紹如何創建一些Java神經網絡進行分類。 請注意,Neuroph Studio還具有支持圖像識別,文字字符識別,識別和手寫的信,這將包括在以後的文章。
注意 :如果你想安裝Neuroph Studio和Neuroph框架,以便您可以嘗試的例子所描述的這篇文章, 下載 Neuroph框架和Neuroph室(用於Microsoft Windows,Linux或Mac,這取決於你的操作系統系統運行)。
簡要概述了神經網絡的Neuroph工作室
在我展示如何創建和使用神經網絡的現實世界的問題,我將首先簡要地解釋什麼是神經網絡,並提供一些一般性的原則它們如何工作。
神經網絡計算模型的靈感來自於人類大腦的工作方式。 雖然他們都非常簡單的模式基於已知的原則,對於大腦如何工作,他們表現出一些非常有趣的功能,如學習,推廣,協會的能力。 此外,他們擅長處理噪音或不完整的數據。
神經網絡圖式結構,由一組相互關聯的節點稱為 神經元 。 每個神經元有投入,通過它接收來自其他神經元的輸入(連接到它的投入)和產出,通過它發送輸出到其他神經元(連接到它的輸出)。 以何種方式相互連接的神經元的神經類型決定了網絡結構。
除了 神經元之間的連接模式,網絡行為是由內部處理的神經元和所謂的 連接權 。 連接權數值與神經元之間的連接,並通過調整這些值使用適當的算法(稱為 學習規則 ),我們可以調整網絡行為。
典型的神經元處理包括計算加權和神經元的輸入和連接權值,然後餵養到一些功能(步驟,乙狀結腸,或常用的tanh函數)。 該函數的輸出代表了輸出的神經元。
該 Neuroph框架提供了所有這些神經網絡組件開箱即用,不管你是否要創建一個共同的類型神經網絡或自定義神經網絡。
Neuroph Studio還提供了範例,證明的基本原則是神經網絡。
基本神經元樣
示例演示了基本的神經元的基本組成部分和處理單個神經元。
1。 要打開神經元的基本樣本,是Neuroph Studio中,選擇 文件>“新建項目”>樣例“> Neuroph>”基本神經元樣 。
![](http://www.oracle.com/technetwork/articles/java/newprojectbasicneuronsample-317373.png)
圖 1。 新項目的基本神經元樣
這個基本的神經元模型包括以下部分:
- 兩個輸入,X1和X2,與相應的權重,W1和W2上。
- 一個輸入功能,用加權求和計算公式如下:
商S =(× 1 * W1的)+(X2的* W2)的
。 - 一個傳遞函數,它接受加權和作為輸入和輸出的計算神經元功能使用簡單的步驟。 如果加權之和大於零,函數輸出 1,否則輸出 0。
![](http://www.oracle.com/technetwork/articles/java/basicneuronsample-317372.png)
圖 2。 基本神經元樣
2。 嘗試運行此示例和播放通過改變神經元的輸入和權值,然後點擊 計算輸出 按鈕。
在學習過程中,一個神經元的權重自動調整,以獲得所需的行為。 這些是基本原則,如何人工神經元的工作,但也有很多變化,根據類型的神經網絡。
一個神經網絡類型通常用於許多不同類型的問題,是多層感知器(MLP)網絡。 該網絡由若干層的神經元(至少三個),每個神經元從一層連接到每一個神經元的下一層。 常見的傳遞函數為這種類型的網絡,是所謂的S型函數。 這種類型的體系結構的網絡,如圖 3所示。
![](http://www.oracle.com/technetwork/articles/java/mlp-317377.png)
圖 3。 建築多層感知器網絡的一
這種類型的網絡可以用於各種機器學習任務,如識別,預測,逼近,等等。 Neuroph Studio提供了一個示例,演示了一個多層感知器網絡,可用於分類問題。
多層感知器分類樣本
此示例顯示了如何多層感知器網絡可以用來學習複雜分類任務。
1。 要運行示例,在Neuroph Studio中,選擇 文件>“新建項目”>樣例“> Neuroph>多層感知器分類樣本 ,如圖4。
![](http://www.oracle.com/technetwork/articles/java/newprojectmlpclassificationsample-317434.png)
圖 4。 多層感知器網絡樣本
2。 創建一個分類任務按一下功能空間(為 x1,x2)。
左鍵單擊創建紅點,並用鼠標右鍵單擊創建的藍點。 每個點代表一個項目有兩個功能(X1和X2)。
這些項目代表了神經網絡的數據,要學會在這樣一種方式,對於一個給定的輸入(X1和X2),它可以決定輸入是否屬於藍色的類或紅色類。
![](http://www.oracle.com/technetwork/articles/java/mlp-sample-1-317436.png)
圖 5。 數據為樣本多層感知器網絡
這個數字對應的輸入功能的數字輸入神經元的神經網絡,而其他的分類類通常對應於輸出神經元。 在這個例子中,我們只有兩個班,我們只使用一個輸出神經元,這應該輸出零類和一個藍色的紅色類。
我們還需要設置隱層神經元數(和層),這取決於分類的複雜性。 隱藏神經元是神經元之間的輸入和輸出層,和MLP網絡可能有一個或多個隱藏層。
3。 在相應的字段中,輸入神經元的數量在隱藏層。 獨立的數字與空間。
對於這個簡單的例子,五隱藏神經元就足夠了。
除了隱藏神經元的數目,我們可以設置一些學習參數,如學習率,動量,最大錯誤和最大迭代,這是典型的設置用於反向傳播(學習算法的MLP)。
給這些為默認值了,但請記住,針對不同的問題,其他一些值可能會得到更好的結果。 這些值總是在區間 [0,1]。
4。 按一下 火車 按鈕。
利用神經網絡建立和學習過程開始。 過了一段時間,你可以看到結果在多層感知器分類樣本標籤,如圖 6。
![](http://www.oracle.com/technetwork/articles/java/mlp-sample-2-317442.png)
圖 6。 結果多層感知器網絡的樣本
圖 6顯示了神經網絡看到了給定的數據,以及它將如何解釋任何其他數據送入神經網絡。
我們也看到了網絡學會了如何給定的數據通過查看整個網絡錯誤 Graph選項卡。 本圖,這是顯示在圖 7顯示了如何學習規則調整了網絡權值,以減少誤判(網絡錯誤)。
![](http://www.oracle.com/technetwork/articles/java/mlp-sample-3-317446.png)
圖 7。 共有網絡錯誤 Graph選項卡
我們也可以看看神經網絡本身在MlpSampleNet1選項卡,如圖 8。
![](http://www.oracle.com/technetwork/articles/java/mlp-sample-4-317456.png)
圖 8。 神經網絡選項卡顯示在MlpSampleNet1
請注意,在這個形象,有三個神經元的輸入層和隱含層六個。 一個神經元層是在這兩個 偏差神經元 ,它總是輸出1。 這種偏見神經元提供了額外的內部輸入。
前面的例子是最簡單的可能的,我們並不需要為它的神經網絡。 但是,我們用這個例子是想說明工作時的基本原則和神經網絡。 神經網絡可以真正做複雜的分類,如一個如圖 9所示。
![](http://www.oracle.com/technetwork/articles/java/mlp-sample-5-317458.png)
圖 9。 示例綜合分類
你可以嘗試不同的分類問題和學習環境得到一個感覺是如何工作的。
一旦你訓練你的神經網絡,你可以將其序列化一個 Java類通過點擊保存按鈕 Neuroph工作室。 然後你可以將它部署到應用程序中使用Neuroph框架。 下面是示例代碼:
/ /從文件載入序列化網絡 NeuralNetwork nnet = NeuralNetwork.load(“MySavedNeuralNetwork.nnet”); / /設置網絡的輸入,我們要分類 nnet.setInput(0.5,0.9); / /處理輸入 /計算網絡 nnet.calculate ()/ /得到networkoutput /分類結果的double []輸出 = nnet.getOutput();
注 :您可以創建一個Java項目並運行此代碼直接從Neuroph工作室,而你需要把一個引用到neuroph - 2.5.jar文件從您的項目,以便能夠使用此代碼。 jar文件是一個Neuroph框架類庫,它是可用的,以及完整的Neuroph Framework文檔和源代碼,下載 neuroph - 2.5b.zip文件 。
創建和自定義神經網絡訓練
前面的例子創建了利用分類樣本 Neuroph工作室。 但是,您可以輕鬆創建和自定義神經網絡訓練使用嚮導。 要創建一個神經網絡和傳授網絡分類問題,您執行下列任務:
- 創建一個新的Neuroph Studio項目。
- 創建一個新的神經網絡,利用神經網絡嚮導。
- 創建一個新的訓練集訓練集使用嚮導。
- 訓練神經網絡,利用訓練集創建的。
下面是具體步驟。
1。 首先,創建一個新的Neuroph Studio項目通過選擇 文件>“新建項目”> Neuroph> Neuroph項目 。
![](http://www.oracle.com/technetwork/articles/java/newproject1-317459.jpg)
圖 10。 創建一個新的神經 Studio項目
2。 輸入您的項目名稱,然後點擊 完成 。
![](http://www.oracle.com/technetwork/articles/java/newproject2-317460.jpg)
圖 11。 指定項目名稱
3。 創建一個多層感知器神經網絡通過選擇 文件>“新建文件”> Neuroph>神經網絡 。
![](http://www.oracle.com/technetwork/articles/java/newnn-1-317461.jpg)
圖 12。 創建一個多層感知器網絡
4。 設置類型的神經網絡多層感知器,輸入網絡名稱。
![](http://www.oracle.com/technetwork/articles/java/newnn-2-317462.jpg)
圖 13。 設置網絡類型
您將被要求設置網絡參數。
5。 輸入網絡參數值,如圖14所示,然後點擊 完成 。
![](http://www.oracle.com/technetwork/articles/java/newnn-3-317464.jpg)
圖 14。 設置網絡參數
這將創建神經網絡,顯示在圖 15。
![](http://www.oracle.com/technetwork/articles/java/newnn-4-317465.jpg)
圖 15。 神經網絡是建立
6。 創建培訓通過選擇 文件>“新建文件”> Neuroph>訓練集 。
![](http://www.oracle.com/technetwork/articles/java/newts-1-317466.jpg)
圖 16。 建立訓練集
7。 指定訓練集的設置,如下面的圖 17。
對於這個例子中,我們將使用虹膜分類數據集,這是眾所周知的分類問題的數據集。
總之,我們有四個屬性和三類虹膜鮮花和分類是一個有點棘手。 參見 本維基百科文章 的更多細節。 請注意這個數字對應的屬性的數量的網絡輸入,同時輸出數對應的分類類別。
![](http://www.oracle.com/technetwork/articles/java/newts-2-317468.jpg)
圖 17。 指定的培訓設定的設置
8。 Iris數據集導入從 這個歸文件 ,它使用製表符分隔值(TSV)。
這裡我們用一個規範化的數據集,它只是意味著原始值調整到區間 [0,1]。
![](http://www.oracle.com/technetwork/articles/java/newts-3-317469.jpg)
圖 18。 Iris數據集導入
訓練集看起來像這樣:
![](http://www.oracle.com/technetwork/articles/java/newts-4-317470.jpg)
圖 19。 例如訓練集
9。 對網絡進行訓練,神經網絡點擊打開它,選擇光圈訓練集從訓練集列表,然後點擊 列車 按鈕。
10。 學習使用默認參數設置學習參數對話框,單擊 列車 按鈕。
![](http://www.oracle.com/technetwork/articles/java/train-1-317471.jpg)
圖 20。 使用默認學習參數
在整個網絡錯誤 Graph選項卡,可以觀看到網絡錯誤最小化在學習的過程。
![](http://www.oracle.com/technetwork/articles/java/train-2-317474.jpg)
圖 21。 共有網絡錯誤 Graph選項卡
綜述
本文介紹了如何使用Neuroph工作室一起Neuroph輕鬆地創建Java框架神經網絡。 更多細節神經網絡理論和實踐已經超出了本文的範圍,但一些資源,提供了 另見 部分。
這是非常方便的擁有一個完整的神經網絡和Java開發環境,Neuroph Studio是第一個應用程序提供這種類型的環境。 由於 Neuroph Studio是開源的,它是非常適合的教育和研究,但它也有利於 Java開發誰想要使用神經網絡的一部分,他們的項目。
參見
- Neuroph下載頁面
- Neuroph主頁
- NetBeans平台頁面
- 虹膜分類問題(維基百科的文章)
- 神經網絡在英國伯明翰大學課程
- 神經網絡在威拉米特大學課程
- 人工神經網絡 - 一種基於神經網絡教程
- 神經網絡的常見問題
作者簡介
Sevarac是一所教學助理貝爾格萊德大學部的人工智能實驗室軟件工程和研究員
他一直致力於開發一個Java神經網絡框架,這是發布為開源項目 Neuroph 。
還創辦了當地NetBeans社區 淨豆用戶組塞爾維亞 。
About the Author
Zoran Sevarac is a teaching assistant at Belgrade University, Department for Software Engineering, and a researcher at the Laboratory for Artificial Intelligence at Belgrade University. He is also a member of GOAI Research Network. Through his research, he has been working on the development of a Java neural network framework, which was released as the open source projectNeuroph. He holds a master's degree in Information Systems, and he is a Ph.D. candidate. He is also the founder of the local NetBeans community Net Beans User Group Serbia.
Downloads:
: NetBeans Platform
![Download](http://www.oracleimg.com/ocom/groups/public/@otn/documents/digitalasset/126893.gif)
沒有留言:
張貼留言