Pybrain-overview
PyBrain-概要
Pybrainは、Pythonを使用して実装された機械学習用のオープンソースライブラリです。 このライブラリは、ネットワーク、データセット、トレーナー向けの使いやすいトレーニングアルゴリズムを提供し、ネットワークをトレーニングおよびテストします。
公式文書で述べられているPybrainの定義は次のとおりです-
PyBrainは、Python用のモジュール式機械学習ライブラリです。 その目標は、機械学習タスク用の柔軟で使いやすいまだ強力なアルゴリズムと、アルゴリズムをテストおよび比較するためのさまざまな定義済み環境を提供することです。
PyBrainは、Pythonベースの強化学習、人工知能、ニューラルネットワークライブラリの略です。 実際、最初に名前を思いついた後、この非常に記述的な「Backronym」をリバースエンジニアリングしました。
Pybrainの特徴
以下はPybrainの特徴です-
ネットワーク
ネットワークはモジュールで構成され、接続を使用して接続されます。 Pybrainは、フィードフォワードネットワーク、リカレントネットワークなどのニューラルネットワークをサポートしています。
- フィードフォワードネットワーク*は、ノード間の情報が順方向に移動し、決して逆方向に移動しないニューラルネットワークです。 フィードフォワードネットワークは、人工ニューラルネットワークで利用可能なネットワークの中で最初で最も単純なネットワークです。
情報は、入力ノードから、非表示ノードの隣に、さらに出力ノードに渡されます。
- リカレントネットワーク*は、フィードフォワードネットワークに似ています。唯一の違いは、各ステップでデータを記憶する必要があることです。 各ステップの履歴を保存する必要があります。
データセット
データセットは、ネットワーク上でテスト、検証、トレーニングするために提供されるデータです。 使用するデータセットのタイプは、機械学習で実行するタスクによって異なります。 Pybrainがサポートする最も一般的に使用されるデータセットは、 SupervisedDataSet および ClassificationDataSet です。
*SupervisedDataSet* - *_input_* および *_target_* のフィールドで構成されます。 これはデータセットの最も単純な形式であり、主に教師付き学習タスクに使用されます。
*ClassificationDataSet* -主に分類の問題に対処するために使用されます。 *_input _* 、 *_ target_* フィールドと、指定されたターゲットの自動バックアップである「クラス」と呼ばれる追加フィールドを取ります。 たとえば、出力は1または0であるか、指定された入力に基づいた値で出力がグループ化されます。つまり、特定のクラスに分類されます。
トレーナー
ネットワーク、つまりニューラルネットワークを作成すると、与えられたトレーニングデータに基づいてトレーニングされます。 ネットワークが適切にトレーニングされているかどうかは、そのネットワークでテストされたテストデータの予測に依存します。 Pybrain Trainingで最も重要な概念は、BackpropTrainerとTrainUntilConvergenceの使用です。
*BackpropTrainer* -エラーを逆伝播することにより(時間をかけて)教師付きまたはClassificationDataSetデータセット(潜在的にシーケンシャル)に従ってモジュールのパラメーターをトレーニングするトレーナーです。
*TrainUntilConvergence* -収束するまでデータセットでモジュールをトレーニングするために使用されます。
道具
Pybrainは、パッケージをインポートしてネットワークを構築するのに役立つツールモジュールを提供しています: pybrain.tools.shortcuts.buildNetwork
可視化
pybrainを使用してテストデータを視覚化することはできません。 しかし、PybrainはMathplotlibやpyplotなどの他のフレームワークと連携してデータを視覚化できます。
Pybrainの利点
Pybrainの利点は-
- Pybrainは、機械学習を学習するためのオープンソースの無料ライブラリです。 これは、機械学習に興味のある初心者にとっては良いスタートです。
- Pybrainはpythonを使用して実装しているため、Java/C ++などの言語と比較して開発が高速になります。
- Pybrainは、Pythonの他のライブラリと簡単に連携してデータを視覚化します。
- Pybrainは、フィードフォワードネットワーク、リカレントネットワーク、ニューラルネットワークなどの一般的なネットワークをサポートしています。
- .csvを使用してデータセットを読み込むことは、Pybrainでは非常に簡単です。 また、別のライブラリのデータセットを使用できます。 *Pybrainトレーナーを使用すると、データのトレーニングとテストが簡単になります。
Pybrainの制限
Pybrainは、直面している問題に対するヘルプをあまり提供しません。* stackoverflow および *Google Group で未回答のクエリがいくつかあります。
Pybrainのワークフロー
Pybrainのドキュメントによると、機械学習の流れは次の図に示されています-
最初に、前処理後にPybrainで使用できる生データがあります。
Pybrainのフローは、トレーニングデータとテストデータに分割されたデータセットから始まります。
- ネットワークが作成され、データセットとネットワークがトレーナーに提供されます。
- トレーナーはネットワーク上のデータをトレーニングし、出力をトレーニング可能なエラーと視覚化可能な検証エラーとして分類します。
- テストされたデータを検証して、出力がトレーニングされたデータと一致するかどうかを確認できます。
用語
機械学習のためにPybrainを使用する際に考慮すべき重要な用語があります。 彼らは次のとおりです-
合計エラー-ネットワークのトレーニング後に表示されるエラーを指します。 エラーが繰り返しごとに変化し続ける場合、繰り返しの間に一定のエラーが表示されるまで、落ち着くまでに時間が必要であることを意味します。 一定のエラー数の表示が開始されると、ネットワークが収束し、追加のトレーニングが適用されるかどうかに関係なく同じままになることを意味します。
訓練されたデータ-Pybrainネットワークを訓練するために使用されるデータです。
テストデータ-それは訓練されたPybrainネットワークをテストするために使用されるデータです。
*Trainer* -ネットワーク、つまりニューラルネットワークを作成すると、与えられたトレーニングデータに基づいてトレーニングされます。 ネットワークが適切にトレーニングされているかどうかは、そのネットワークでテストされたテストデータの予測に依存します。 Pybrain Trainingで最も重要な概念は、BackpropTrainerとTrainUntilConvergenceの使用です。
*BackpropTrainer* -エラーを逆伝播することにより(時間をかけて)教師付きまたはClassificationDataSetデータセット(潜在的にシーケンシャル)に従ってモジュールのパラメーターをトレーニングするトレーナーです。
*TrainUntilConvergence* -データセット上でモジュールが収束するまでトレーニングするために使用されます。
レイヤー-レイヤーは基本的にネットワークの隠されたレイヤーで使用される機能のセットです。
接続-接続はレイヤーと同様に機能します。唯一の違いは、ネットワーク内のあるノードから別のノードにデータをシフトすることです。
モジュール-モジュールは、入力および出力バッファで構成されるネットワークです。
教師あり学習-この場合、入力と出力があり、アルゴリズムを使用して入力と出力をマッピングできます。 アルゴリズムは、与えられたトレーニングデータを学習するために作成され、アルゴリズムが正しいデータを予測すると、反復プロセスが停止します。
監視なし-この場合、入力はありますが、出力はわかりません。 教師なし学習の役割は、与えられたデータで可能な限り訓練を受けることです。