PyBrain概述



Pybrain 是一個使用 Python 實現的開源機器學習庫。該庫提供了一些易於使用的網路訓練演算法、資料集和訓練器來訓練和測試網路。

其官方文件中對 Pybrain 的定義如下:

PyBrain 是一個用於 Python 的模組化機器學習庫。其目標是為機器學習任務提供靈活、易於使用且功能強大的演算法,以及各種預定義的環境來測試和比較您的演算法。

PyBrain 是 Python-Based Reinforcement Learning, Artificial Intelligence, and Neural Network Library 的縮寫。事實上,我們首先想出了這個名字,後來才對這個相當具有描述性的“反向縮寫”進行了逆向工程。

Pybrain 的特性

以下是 Pybrain 的特性:

網路

網路由模組組成,並使用連線連線起來。Pybrain 支援神經網路,如前饋網路、迴圈網路等。

前饋網路是一種神經網路,其中節點之間的資訊沿前向方向移動,並且永遠不會向後傳播。前饋網路是人工神經網路中第一個也是最簡單的網路。

資訊從輸入節點傳遞到隱藏節點,然後傳遞到輸出節點。

迴圈網路類似於前饋網路;唯一的區別在於它必須記住每個步驟的資料。必須儲存每個步驟的歷史記錄。

資料集

資料集是用於在網路上進行測試、驗證和訓練的資料。要使用的資料集型別取決於我們將要使用機器學習執行的任務。Pybrain 支援的最常用的資料集是 SupervisedDataSetClassificationDataSet

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 對遇到的任何問題提供的幫助較少。在stackoverflowGoogle Group上有一些未解答的問題。

Pybrain 的工作流程

根據 Pybrain 文件,機器學習流程如下圖所示:

Workflow Of Pybrain

一開始,我們有原始資料,經過預處理後可以與 Pybrain 一起使用。

Pybrain 的流程從資料集開始,資料集分為訓練資料和測試資料。

  • 建立網路,並將資料集和網路提供給訓練器。

  • 訓練器在網路上訓練資料,並將輸出分類為訓練誤差和驗證誤差,這些誤差可以視覺化。

  • 可以驗證測試資料以檢視輸出是否與訓練資料匹配。

術語

使用 Pybrain 進行機器學習時,需要考慮一些重要的術語。它們如下:

總誤差 - 指網路訓練後顯示的誤差。如果誤差在每次迭代中不斷變化,則表示它仍然需要時間來穩定,直到它開始顯示每次迭代之間的恆定誤差。一旦它開始顯示恆定誤差數字,就表示網路已收斂,並且無論應用任何額外的訓練都將保持不變。

訓練資料 - 用於訓練 Pybrain 網路的資料。

測試資料 - 用於測試經過訓練的 Pybrain 網路的資料。

訓練器 - 當我們建立一個網路(即神經網路)時,它將根據提供給它的訓練資料進行訓練。網路是否訓練得當將取決於在該網路上測試的測試資料的預測結果。Pybrain 訓練中最重要的一點是使用 BackpropTrainer 和 TrainUntilConvergence。

BackpropTrainer - 它是一個訓練器,它根據監督或 ClassificationDataSet 資料集(可能是順序的)透過反向傳播誤差(及時)來訓練模組的引數。

TrainUntilConvergence - 用於在資料集上訓練模組,直到它收斂。

- 層基本上是一組用於網路隱藏層的函式。

連線 - 連線的工作方式類似於層;唯一的區別在於它將資料從網路中的一個節點轉移到另一個節點。

模組 - 模組是包含輸入和輸出緩衝區的網路。

監督學習 - 在這種情況下,我們有輸入和輸出,我們可以使用演算法將輸入與輸出對映起來。該演算法被設計為在給定的訓練資料上學習並在其上進行迭代,並且當演算法預測正確資料時,迭代過程停止。

無監督學習 - 在這種情況下,我們有輸入但不知道輸出。無監督學習的作用是儘可能多地利用給定的資料進行訓練。

廣告
© . All rights reserved.