PyBrain-概要

Pybrainは、Pythonを使用して実装された機械学習用のオープンソースライブラリです。このライブラリは、ネットワーク、データセット、トレーナーがネットワークをトレーニングおよびテストするための使いやすいトレーニングアルゴリズムを提供します。

公式ドキュメントによるPybrainの定義は次のとおりです-

PyBrainは、Python用のモジュール式機械学習ライブラリです。その目標は、機械学習タスク用の柔軟で使いやすく、しかも強力なアルゴリズムと、アルゴリズムをテストおよび比較するためのさまざまな定義済み環境を提供することです。

PyBrainは、Pythonベースの強化学習、人工知能、ニューラルネットワークライブラリの略です。実際、私たちは最初に名前を思いつき、後でこの非常にわかりやすい「Backronym」をリバースエンジニアリングしました。

Pybrainの機能

Pybrainの機能は次のとおりです-

ネットワーク

ネットワークはモジュールで構成され、接続を使用して接続されます。Pybrainは、フィードフォワードネットワーク、リカレントネットワークなどのニューラルネットワークをサポートしています。

feed-forward networkはニューラルネットワークであり、ノード間の情報は順方向に移動し、逆方向には移動しません。フィードフォワードネットワークは、人工ニューラルネットワークで利用可能なネットワークの中で最初で最も単純なネットワークです。

情報は、入力ノードから、非表示ノードの隣に、後で出力ノードに渡されます。

Recurrent Networksフィードフォワードネットワークに似ています。唯一の違いは、各ステップでデータを記憶する必要があることです。各ステップの履歴を保存する必要があります。

データセット

データセットは、ネットワークでテスト、検証、トレーニングするために提供されるデータです。使用するデータセットのタイプは、機械学習で実行するタスクによって異なります。Pybrainがサポートする最も一般的に使用されるデータセットは次のとおりです。SupervisedDataSet そして ClassificationDataSet

SupervisedDataSet −のフィールドで構成されています input そして target。これはデータセットの最も単純な形式であり、主に教師あり学習タスクに使用されます。

ClassificationDataSet−主に分類問題の処理に使用されます。取り入れますinputtargetフィールドと、指定されたターゲットの自動バックアップである「クラス」と呼ばれる追加のフィールド。たとえば、出力は1または0のいずれかになるか、出力は指定された入力に基づいて値と一緒にグループ化されます。つまり、特定の1つのクラスに分類されます。

トレーナー

ネットワーク、つまりニューラルネットワークを作成すると、与えられたトレーニングデータに基づいてトレーニングされます。ネットワークが適切にトレーニングされているかどうかは、そのネットワークでテストされたテストデータの予測に依存します。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は、フィードフォワードネットワーク、リカレントネットワーク、ニューラルネットワークなどの一般的なネットワークのサポートを提供します。

  • Pybrainでは、.csvを使用してデータセットを読み込むのは非常に簡単です。また、別のライブラリのデータセットを使用することもできます。

  • Pybrainトレーナーを使用すると、データのトレーニングとテストが簡単になります。

Pybrainの制限

Pybrainは、直面する問題に対してあまり助けを提供しません。未回答の質問がいくつかありますstackoverflowGoogle Group

Pybrainのワークフロー

Pybrainのドキュメントによると、機械学習の流れを次の図に示します。

最初に、前処理後にPybrainで使用できる生データがあります。

Pybrainのフローは、トレーニング済みデータとテストデータに分割されたデータセットから始まります。

  • ネットワークが作成され、データセットとネットワークがトレーナーに渡されます。

  • トレーナーはネットワーク上でデータをトレーニングし、出力をトレーニング済みエラーと視覚化可能な検証エラーとして分類します。

  • テストされたデータを検証して、出力がトレーニングされたデータと一致するかどうかを確認できます。

用語

機械学習のためにPybrainを使用する際に考慮すべき重要な用語があります。それらは次のとおりです-

Total Error−ネットワークのトレーニング後に表示されるエラーを指します。エラーが反復ごとに変化し続ける場合は、反復間で一定のエラーが表示されるようになるまで、解決するのにまだ時間が必要であることを意味します。一定のエラー数が表示され始めると、ネットワークが収束し、追加のトレーニングが適用されても同じままであることを意味します。

Trained data −Pybrainネットワークのトレーニングに使用されるデータです。

Testing data −トレーニングされたPybrainネットワークをテストするために使用されるデータです。

Trainer−ネットワーク、つまりニューラルネットワークを作成すると、与えられたトレーニングデータに基づいてトレーニングされます。ネットワークが適切にトレーニングされているかどうかは、そのネットワークでテストされたテストデータの予測に依存します。Pybrain Trainingの最も重要な概念は、BackpropTrainerとTrainUntilConvergenceの使用です。

BackpropTrainer −エラーを(時間を通じて)バックプロパゲーションすることにより、監視ありデータセットまたはClassificationDataSetデータセット(潜在的にシーケンシャル)に従ってモジュールのパラメーターをトレーニングするトレーナーです。

TrainUntilConvergence −収束するまで、データセットでモジュールをトレーニングするために使用されます。

Layers −レイヤーは基本的に、ネットワークの非表示レイヤーで使用される一連の機能です。

Connections−接続はレイヤーと同様に機能します。唯一の違いは、ネットワーク内の1つのノードから別のノードにデータをシフトすることです。

Modules −モジュールは、入力バッファと出力バッファで構成されるネットワークです。

Supervised Learning−この場合、入力と出力があり、アルゴリズムを使用して入力と出力をマッピングできます。アルゴリズムは、与えられて反復されたトレーニングデータを学習するように作成され、アルゴリズムが正しいデータを予測すると、反復のプロセスが停止します。

Unsupervised−この場合、入力はありますが、出力はわかりません。教師なし学習の役割は、与えられたデータを使用して可能な限りトレーニングを受けることです。