- PyBrain 教程
- PyBrain - 首頁
- PyBrain概述
- PyBrain - 環境設定
- PyBrain - PyBrain 網路介紹
- PyBrain - 使用網路
- PyBrain - 使用資料集
- PyBrain - 資料集型別
- PyBrain - 匯入資料集資料
- PyBrain - 在網路上訓練資料集
- PyBrain - 測試網路
- 使用前饋網路
- PyBrain - 使用迴圈網路
- 使用最佳化演算法訓練網路
- PyBrain - 層
- PyBrain - 連線
- PyBrain - 強化學習模組
- PyBrain - API 和工具
- PyBrain - 例子
- PyBrain 有用資源
- PyBrain - 快速指南
- PyBrain - 有用資源
- PyBrain - 討論
PyBrain概述
Pybrain 是一個使用 Python 實現的開源機器學習庫。該庫提供了一些易於使用的網路訓練演算法、資料集和訓練器來訓練和測試網路。
其官方文件中對 Pybrain 的定義如下:
PyBrain 是一個用於 Python 的模組化機器學習庫。其目標是為機器學習任務提供靈活、易於使用且功能強大的演算法,以及各種預定義的環境來測試和比較您的演算法。
PyBrain 是 Python-Based Reinforcement Learning, Artificial Intelligence, and Neural Network Library 的縮寫。事實上,我們首先想出了這個名字,後來才對這個相當具有描述性的“反向縮寫”進行了逆向工程。
Pybrain 的特性
以下是 Pybrain 的特性:
網路
網路由模組組成,並使用連線連線起來。Pybrain 支援神經網路,如前饋網路、迴圈網路等。
前饋網路是一種神經網路,其中節點之間的資訊沿前向方向移動,並且永遠不會向後傳播。前饋網路是人工神經網路中第一個也是最簡單的網路。
資訊從輸入節點傳遞到隱藏節點,然後傳遞到輸出節點。
迴圈網路類似於前饋網路;唯一的區別在於它必須記住每個步驟的資料。必須儲存每個步驟的歷史記錄。
資料集
資料集是用於在網路上進行測試、驗證和訓練的資料。要使用的資料集型別取決於我們將要使用機器學習執行的任務。Pybrain 支援的最常用的資料集是 SupervisedDataSet 和 ClassificationDataSet。
SupervisedDataSet - 它包含輸入和目標欄位。它是資料集最簡單的形式,主要用於監督學習任務。
ClassificationDataSet - 它主要用於處理分類問題。它接收輸入、目標欄位,以及一個名為“class”的額外欄位,它是給定目標的自動備份。例如,輸出將是 1 或 0,或者輸出將根據給定的輸入將值分組在一起,即它將屬於一個特定類別。
訓練器
當我們建立一個網路(即神經網路)時,它將根據提供給它的訓練資料進行訓練。網路是否訓練得當將取決於在該網路上測試的測試資料的預測結果。Pybrain 訓練中最重要的一點是使用 BackpropTrainer 和 TrainUntilConvergence。
BackpropTrainer - 它是一個訓練器,它根據監督或 ClassificationDataSet 資料集(可能是順序的)透過反向傳播誤差(及時)來訓練模組的引數。
TrainUntilConvergence - 它用於在資料集上訓練模組,直到它收斂。
工具
Pybrain 提供工具模組,可以幫助透過匯入包來構建網路:pybrain.tools.shortcuts.buildNetwork
視覺化
無法使用 pybrain 視覺化測試資料。但是 Pybrain 可以與其他框架(如 Mathplotlib、pyplot)一起使用來視覺化資料。
Pybrain 的優點
Pybrain 的優點包括:
Pybrain 是一個開源免費的機器學習庫。對於任何對機器學習感興趣的新手來說,這是一個很好的開始。
Pybrain 使用 Python 實現,與 Java/C++ 等語言相比,它在開發方面速度更快。
Pybrain 可以輕鬆地與其他 Python 庫一起使用來視覺化資料。
Pybrain 支援流行的網路,如前饋網路、迴圈網路、神經網路等。
在 Pybrain 中使用 .csv 載入資料集非常容易。它還允許使用來自其他庫的資料集。
使用 Pybrain 訓練器輕鬆進行資料訓練和測試。
Pybrain 的侷限性
Pybrain 對遇到的任何問題提供的幫助較少。在stackoverflow和Google Group上有一些未解答的問題。
Pybrain 的工作流程
根據 Pybrain 文件,機器學習流程如下圖所示:
一開始,我們有原始資料,經過預處理後可以與 Pybrain 一起使用。
Pybrain 的流程從資料集開始,資料集分為訓練資料和測試資料。
建立網路,並將資料集和網路提供給訓練器。
訓練器在網路上訓練資料,並將輸出分類為訓練誤差和驗證誤差,這些誤差可以視覺化。
可以驗證測試資料以檢視輸出是否與訓練資料匹配。
術語
使用 Pybrain 進行機器學習時,需要考慮一些重要的術語。它們如下:
總誤差 - 指網路訓練後顯示的誤差。如果誤差在每次迭代中不斷變化,則表示它仍然需要時間來穩定,直到它開始顯示每次迭代之間的恆定誤差。一旦它開始顯示恆定誤差數字,就表示網路已收斂,並且無論應用任何額外的訓練都將保持不變。
訓練資料 - 用於訓練 Pybrain 網路的資料。
測試資料 - 用於測試經過訓練的 Pybrain 網路的資料。
訓練器 - 當我們建立一個網路(即神經網路)時,它將根據提供給它的訓練資料進行訓練。網路是否訓練得當將取決於在該網路上測試的測試資料的預測結果。Pybrain 訓練中最重要的一點是使用 BackpropTrainer 和 TrainUntilConvergence。
BackpropTrainer - 它是一個訓練器,它根據監督或 ClassificationDataSet 資料集(可能是順序的)透過反向傳播誤差(及時)來訓練模組的引數。
TrainUntilConvergence - 用於在資料集上訓練模組,直到它收斂。
層 - 層基本上是一組用於網路隱藏層的函式。
連線 - 連線的工作方式類似於層;唯一的區別在於它將資料從網路中的一個節點轉移到另一個節點。
模組 - 模組是包含輸入和輸出緩衝區的網路。
監督學習 - 在這種情況下,我們有輸入和輸出,我們可以使用演算法將輸入與輸出對映起來。該演算法被設計為在給定的訓練資料上學習並在其上進行迭代,並且當演算法預測正確資料時,迭代過程停止。
無監督學習 - 在這種情況下,我們有輸入但不知道輸出。無監督學習的作用是儘可能多地利用給定的資料進行訓練。