RLアルゴリズムをテストするための環境である、クラシックコントロール、ロボティクス、ビデオゲーム、ボードゲームなどを提供します。強化学習の基礎として頻繁に使用されるため、ここに含めました。人々はフレームワークのようにそれを使用します。これは、RL実装と環境の間のインターフェースと考えてください。それは非常に多作であり、以下にリストされている他のフレームワークの多くは、Gymとのインターフェースも備えています。すべてを比較するためのベースラインとして機能します。これはRLで最も人気のあるリポジトリの1つになります。◎入門Gymで何が起こっているかを視覚化する場合は、これらの環境をレンダリングする必要があります。ラップトップではほとんど動作しますが、ブラウザでは制限のため苦労します。これを回避するには、仮想ディスプレイを使用する必要があります。基本的に、ビデオドライバーをモックアウトする必要があります。これは、「入門」コードのほとんどがビデオラッピングコードであることを意味します。付属のノートブックで見つけることができるすべての退屈なものを無視すると、コアのGymコードは次のようになります。environment現時点ではランダム行動を渡すだけです。Dopamine「Dopamine」は、公式のGoogle製品ではありませんが、Googleの従業員によって作成され、Googleのgithubでホストされています。RLフレームワークへの比較的新しい参入者です。多数のGithubスターと、Googleトレンドランキングを誇っています。プロジェクトが開始されてからのコミット、コミッター、および時間が限られているため、これは驚くべきことです。gin-config」構成フレームワークを使用することで、コードとしての構成を強調していることです。利点は、実行に固有のすべてのパラメータを含む単一の構成ファイルをリリースできることです。欠点は、構成ファイルの複雑さが増し、理解できないコードでいっぱいの別のファイルのようになる可能性があることです。欠点は、構成ファイルの複雑さが増すことで、理解できないコードで埋まっている別ファイルのようになる可能性があることです。Manifests」や「JSON」(他の多くのフレームワークと同様)などの「dumb」構成ファイルに固執します。接続はコードで行う必要があります。主な利点の1つは、プラグ可能性と再利用を促進することです。これは、データサイエンス製品の開発時にしばしば無視されるOOPおよび機能の重要な概念です。非常に短い時間でかなりのトラクションを獲得したことは明らかです。率直に言って、それは私を少し心配しています。貢献者は4人で、コミットは100件のみです。これらの4人のうち、3人はコミュニティからのものです(バグ修正など)。残りの1人が130万行を超えるコードをコミットしました。コミット履歴から、コードは別のリポジトリから転送されたようです。120万行のコミットはベストプラクティスではありません。Inc.に割り当てられています。貢献者の合意に安心しています。モジュール性に関しては、それほど多くはありません。エージェントの抽象化はありません。config」から構成されます。実装されているものも多くありません。環境の公式な抽象化もありません。実際、Tensorflowオブジェクトをいたるところに渡しており、Tensorflowインターフェイスの使用を想定しているようです。公式OOPスタイルの抽象化は、他のほとんどのフレームワークとは異なります。要するに、ほとんどモジュール化されておらず、再利用は不格好(IMO)であり、普及しているように見えますが、あまり成熟しておらず、コミュニティのサポートもありません。付属のノートブックで例を見つけることができますが、前提は、構成ファイルを介してRLアルゴリズムを構築することです。これは次のようになります。skip_unknown=False)コードはたくさんありますが、複雑なアルゴリズムを実装しているので、それを期待するかもしれません。ハイパーパラメータがそこにあることは非常にうれしいですが、すべてのダイナミックインジェクション(@クラスのインスタンスを示す)のファンであるかどうかはわかりません。支持者は「うわー、見て、このラインを変えるだけでオプティマイザを交換できる」と言うでしょう。私は普通の古いPythonでもそれができると考えています。schedule='continuous_train')dqn_runner.run_experiment()次に、実行状況のビデオ動画を行います。RLlib「Ray」は、Pythonユーザーが主にMLの目的でスケーラブルなソフトウェアを構築できるようにすることを目的としたプロジェクトとして始まりました。それ以来、特定のMLユースケース専用のモジュールをいくつか追加しました。1つは分散ハイパーパラメーター調整で、もう1つは分散RLです。その結果、人気の数値は、おそらくRLではなく、ハイパーパラメーターと汎用のスケーラビリティのユースケースに起因する可能性が高いです。ライブラリの分散フォーカスは、エージェント実装が本質的に分散されるもの(A3Cなど)になる傾向があるか、収束するのに数年もかか​​らないように分散が必要な非常に複雑な問題を解決しようとすることを意味します(例:Rainbow)。それにも関わらず、RLの本番稼働を検討している場合、またはハイパーパラメータチューニング、または環境改善のために訓練を何度も繰り返している場合は、「Ray」を使用してスケールアップしてフィードバック時間を短縮するのが理にかなっています。実際、他の多くのフレームワーク(具体的にはSLM-LabおよびRLgraph)は、この目的のために内部で「Ray」を使用しています。「Ray」にはRLに強い適用性があると思います。分散計算に明確に焦点を当てることは良いことです。コミットと貢献者の膨大な数も安心です。多くの基礎となるコードはC++にあります。いくつかはJavaです。Pythonは60%だけです。全体として、ドキュメントは優れており、明確な建築図面が提示されています。それはモジュール式で、拡張性が高く、コミュニティによって非常によくサポートされ、受け入れられています。唯一の欠点は、複雑さにあります。Colabにプリインストールされているpyarrowのバージョンには、「Ray」と互換性がありません。プリインストールされたバージョンをアンインストールし、ランタイムを再起動する必要があります。Dopamineの例と同じ方法でビデオ録画することができませんでした。私の仮説は、それらが別々のプロセスで実行されているため、偽のpyvirtualdisplayデバイスにアクセスできないということです。例を試してみましょう。2>&1pyarrowを削除してrllibをインストールしたら、Notebookカーネルを再起動する必要があります。次に、Rayをインポートします。tuneray.init()そして、DQNを使用してCartpole環境のハイパーパラメーター調整ジョブを実行します。},)ここには多くのシンタックスシュガーがありますが、訓練機能をカスタマイズするのはかなり簡単です。Keras-RL私はKerasが大好きです。抽象化、シンプルさ、アンチロックインが大好きです。以下のコードを見ると、Kerasの魔法を見ることができます。したがって、「Keras-RL」が最適だと思います。他のフレームワークほど多くの牽引力を得ていないようです。ドキュメントを見ると、空です。コミットを見ると、ほとんどの作業を行った少数の勇敢な魂だけがいます。これをメインのKerasプロジェクトと比較してください。私はその理由を知っていると思います。Kerasは、ユーザーがさまざまなDL構造をすばやくプロトタイプできるようにゼロから構築されました。これは、ニューラルネットワークを抽象化してモジュール化できるという事実に依存していました。keras-rlのコードを見ると、教科書にあるように実装されています。SARSAとDQNの類似性にもかかわらず、各エージェントには独自の実装があります。モジュール性にはある程度のレベルがありますが、レベルが高すぎると思います。手遅れではありません。多くの人が興味を持った場合、またはコアKerasプロジェクトからより多くのサポートがあった場合、これが将来のRLフレームワークになる可能性があります。今のところ、私はそうは思いません。説明した他のフレームワークを使用することで、Kerasの利点を簡単に得ることができるからです。公式のサンプルはそのまま使用できます。私が行った変更は、模擬ディスプレイを使用して、テストのビデオ録画を追加することだけでした。TRFL「TRFL」は、DeepmindによるTensorflowの拡張版です。2.0サポートの明確な欠如です。主な問題は、低レベルすぎることです。Keras-RLの正反対です。TRFLが提供する機能は、いくつかのヘルパー関数です。Q学習値関数は、抽象名を持つTensorflowテンソルの負荷を取り込みます。例として、このノートブックを見ることをお勧めします。コードは非常に低レベルであることに注意してください。Tensorforce「Tensorforce」には、「TRFL」と同様の目的があります。Tensorflowをターゲットにしながら、RLプリミティブを抽象化しようとします。Tensorflowを使用することで、Tensorflowを使用することのすべての利点、つまりグラフモデル、簡単なクロスプラットフォーム展開が得られます。環境、ランナー、エージェント、モデルの4つの高レベルの抽象化があります。これらはほとんどあなたが期待することを行いますが、「モデル」抽象化は通常見られるものではありません。モデルはエージェント内にあり、エージェントのポリシーを定義します。これは、たとえば、標準のQ学習モデルを1つの小さな関数のみを変更するQ学習nステップモデルでオーバーライドできるため、便利です。これはまさに私が探していたTRFLとKerasの中間です。それはOOP方式で実装されており、一部の人はそれを好み、他の人は好みません。少なくとも抽象化はあります。このようなライブラリ、またはDLに焦点を当てたRLライブラリーの欠点は、コードの多くが基礎となるDLフレームワークによって複雑になることです。ここでも同じことが言えます。ランダムモデル、つまりランダムアクション(正確に1行のコードを必要とするもの)を選択するモデルは、79行の長さです。私はここで少し面白くなっています(ライセンス、クラスボイラープレート、改行など)。「単純な」RLアルゴリズム、つまりモデルを使用しないRLアルゴリズムの実装がないことも意味します。エントロピー、バンディッット、単純なMDP、SARSA、いくつかの表形式の方法など。これらのモデルにはDLフレームワークが必要ないためです。要約すると、抽象化のレベルはスポットにあると思います。DLフレームワークに限定することの利点と問題は残っています。これはバージョン0.4.3に基づいており、主要な書き直しが進行中であることに注意してください。入門のサンプルは賢明です。環境、エージェント、ランナー(実際にトレーニングを行うもの)を作成しています。エージェントの仕様は少し異なります。Ginの設定を思い出させます。サンプルでは、それらの仕様をexamplesディレクトリから取得していますが、それらを使用してハイパーパラメータ検索を実行することがどれほど簡単か想像できます。Horizon「Horizo​​n」はFacebookのフレームワークで、PyTorch専用です。「Horizo​​n」の主な使用例は、バッチ設定でRLモデルを訓練することです。具体的には、入力データを考慮して可能な限り最良の方策を学習しようとします。したがって、他のフレームワークと同様に、焦点は方策外のモデル駆動型RLとモデル内のDLです。これはPyTorchの使用により区別されます。KerasのバックエンドとしてPyTorchを使用して、これをKeras-RLと比較することもできます。TensorForceのセクションで、このような焦点を絞ったフレームワークの短所について既に説明したので、再度説明しません。いくつかの興味深い違いがあります。Gymとの緊密な統合はありません。代わりに、GymデータをJSONにダンプし、JSONをエージェントに読み戻すことで、意図的に2つを分離します。これは冗長に聞こえるかもしれませんが、実際にはデカップリングに非常に適しているため、よりスケーラブルで、脆弱性が少なく、柔軟性があります。欠点は、複雑さが増すため、ジャンプするフープが増えることです。Horizo​​n用のpipインストーラーはありません。thriftをインストールしてから、Horizo​​nをビルドする必要があります。そのため、ノートブックにこれをインストールしようとは思いません。◎入門あなたは多くの時間と多くの忍耐を必要とします。Coach「Coach」のフレームワークで最初に気付くのは、実装されているアルゴリズムの数です。それは膨大であり、実装するのに何週間も何週間もかかったに違いありません。次に気付くのは、統合環境の数です。これにどれだけ時間がかかったのかを考えると、フレームワークの残りの部分に大きな希望を与えます。非常に見栄えの良い専用のダッシュボードが付属しています。他のほとんどのフレームワークは、Tensorboardプロジェクトに依存しています。これまで見たことのないすごい機能の1つは、Kubernetesの組み込み展開です。Coachによるオーケストレーションは遠すぎると思いますが、彼らがそれについて考えていたという事実は、標準的なツールでKuberentesにデプロイするのにおそらく十分にスケーラブルであることを意味します。モジュール性のレベルは驚くべきものです。あらゆる種類の探索戦略を実装し、さまざまなモデル設計にあらゆる種類の変更を加えることができるクラスがあります。私が考えることができるのは少し面倒ですが、モデルとしてDLを使用するように強制するのと同じ制限です。私は、より単純なアプリケーションのサブセットはDLほど複雑なものを必要とせず、より伝統的な回帰法に利益をもたらすことができると確信しています。DLのものを削除する小さなスタブクラスを追加するのはかなり簡単であるはずです。興味深いことに、フレームワークはKerasを使用しているため、TensorflowとMXNetをサポートしています。KerasはPyTorchをサポートしていないため、PyTorchはサポートされていません。率直に言って、私はこのフレームワークが星やグーグルページ数の観点で人気がない理由を理解できません。最高のドキュメントと素晴らしいレベルのモジュール性を備えた最も包括的なフレームワークです。指摘したい重要な注意事項が2つあります。ドキュメントまたはデモのタグ付きバージョンを見ていることを確認してください。masterブランチには、pipがインストールされたバージョンでは機能しないいくつかの新機能があります。Gymのバージョンに依存します。gym==0.12.5を実行してランタイムを再起動する必要があります。MAgent「MAgent」は、多数エージェントRLの問題を解決できるフレームワークです。これは、単一またはごく少数のエージェントのみを使用する他のRLフレームワークと比較して、まったく目的が異なります。彼らは、何百万人ものエージェントにまで拡大できると主張しています。これもpipインストーラーはありません。皆さん、プロジェクト用のpipインストーラーを作成してください。使いやすさ、ひいてはプロジェクトの牽引力にとって非常に重要です。パフォーマンス上の理由で、プロジェクト全体がCで書かれているからだと思います。内部でTensorflowを使用し、独自のグリッドワールドのような環境を構築します。エージェントは、「実際の」シミュレーションを念頭に置いて設計されています。エージェントのサイズ、表示できる範囲を指定できます。柔軟なルール定義に従って報酬が与えられます。要するに、フレームワークは、ライフスタイルゲームのゲームをすぐに使えるようにセットアップされており、エージェントの振る舞いや報酬に関する追加のモジュール性を備えています。このため、より高度なDLメソッドのいくつかを使用して、複雑で調整されたタスクを実行するようにエージェントを訓練できます。詳細については、入門ガイドをご覧ください。私はこのアイデアに非常に感銘を受けました。上記のGithubの統計からわかるように、1年に4回のコミットは基本的にほとんど使用されていないことを意味します。最後の主要な更新は2017年でした。これは他に類を見ないフレームワークであるだけに残念です。入門ガイドからいくつかのサンプルを試しました。訓練版には数時間かかります。examples/api_demo.pyは学習したモデルをテストしているだけなので、非常に高速です。独自のテキスト形式で環境をレンダリングします。ブラウザでレンダーを解析してホストするWebウェブサーバを実行する必要がありますが、私たちは共同研究室にいるため、Webサーバを実行することはできません。そのため、ファイルをダウンロードしようとしましたが、MacではなくColabでバイナリをビルドしたため、バイナリを実行できませんでした。それで少しイライラしました。gifまたはmp4のmp4などの標準形式でレンダリングした場合は、はるかに簡単になります。残念なことに、私はいくつかの複雑な動作を生成することを楽しみにしていました。以下の著者がのデモが目を楽しませてくれます。機能したコードの残りは次のとおりです。examples/api_demo.pyこの最後の呼び出しは、examplesフォルダ内の任意のpythonファイルと交換できます。TF-Agents「TF-Agents」は、Googleのもう1つのNOGPであり、Tensorflow専用のフレームワークです。したがってこれを、「TRFL」「TensorForce」「Dopamine」の直接の競合として扱います。誰かが疑問を投げかけます。「TRFL」と「Dopamine」が既に存在するのに、なぜGoogle従業員が別のRLフレームワークを作成したのでしょうか。「TF-Agents」と「Dopamine」の関係を議論する中で、貢献者は次のように示唆しています。「Dopamine」とTF-Agentは強く重複しているようです。「Dopamine」は、再現性がプロジェクトの中心に置かれているため、高速プロトタイピングとベンチマークに使用されることを目指していますが、「TF-Agent」は、生産レベルの強化学習アルゴリズムによって使用されます。正直に言うと、「生産レベル」が何を意味するのかわかりません。コラボの優れたサンプルがいくつかありますが、ドキュメントはありません。実稼働環境でノートブックを使用すべきではありません。サンプルを掘り下げると、コードが非常に重いことが明らかになります。単純なCartPoleのサンプルには多くのコード行があります。そこには多くの説明とデバッグコードがありますが、それは今後の兆候のように見えます。コードは非常にきれいに見えます。それはうまく分離されており、モジュール性はよさそうです。あなたが期待するすべての抽象化はそこにあります。私が選びたいのはエージェントの抽象化だけです。これは基本クラスであり、Tensorflowに直接結合されています。これはかなりの量の複雑さを追加し、それが抽象化されて欲しいので、必要になるまで心配する必要はありませんでした。他の抽象化の大部分についても同じことが言えます。いえこれは、「TRFL」よりもはるかに有能なライブラリであることは明らかです。◎入門リポジトリにはノートブックが用意されているので、ここにコピーして貼り付けるだけで時間を無駄にすることはありません。Colabで直接実行することもできます。SLM-Lab「SLM-Lab」は、PyTorchに基づくモジュラー型のRLフレームワークです。研究者向けに設計されているようです。彼らはモジュール性の重要性を強調していますが、単純かつモジュール化することはおそらく不可能だと正しく述べています。興味深いことに、それはスケーラブルにするために、内部で「Ray」も使用されています。2017年にスタートし、貢献者が少なく、GitHubスターの相対的な人気にもかかわらず、多くの活動があります。コミットの大部分はワンライナーですが、著者によるコミットは驚くべきものです。残念ながら、これはpipでインストールできないフレームワークであり、ビルド関連のCライブラリとminicondaの全負荷をインストールしようとします。これはColabでは問題です。優れたエンジニアであるため、すべてのドキュメントを無視し、試行錯誤を繰り返して自分で機能するように努めました。それはほとんど機能しましたが、PyTorchを初期化するときに、修正方法がわからないという問題に遭遇しました。ドキュメントに少し苦労しました。アーキテクチャドキュメントは限られており、残りの部分は、使用の方に重点を置いています。使用法とは、現在の実装で実験を実行することを意味します。モジュールをさまざまな方法で接続する方法を教えてくれるドキュメントを見つけるのに苦労しました。これはJSON仕様ファイルを介して行われるべきだと彼らは考えていると思います。実際、最初の動機は次のとおりです。アルゴリズムと環境を比較し、仮説をテストするための実験をすばやくセットアップし、コンポーネントを再利用し、結果を分析して比較し、結果を記録できるフレームワークが必要でした。そのため、ここでの目標は、「Dopamine」や「TensorForce」によく似た構成による再利用を可能にすることです。この「構成としてのRL」はテーマのようです。私は確信していません。私は、コードがより慣用的で、より柔軟であると主張します。それは人々が慣れているものです。ユーザーが学習しなければならない別のドメイン固有言語(DSL)である構成を介して何かを行うたびに。そのDSLは一般に静的である(Ginはそうではない)ため、DSLの実装が制限を設定します。DSLでカバーされないエッジケースが存在するため、すべての人に適しているわけではありません。DeeR「DeeR」の最初の印象は良いものでした。pipインストーラーがあります。それはモジュール性について叙情的です。Pythonの依存関係は、「numpy」と「Joblib」の2つだけです。ドキュメントは明確ですが、全体的なアーキテクチャのドキュメントが欠落しています。ドキュメントを見つけるには、クラスとコードを掘り下げる必要があります。「モジュール」は、「Environment」「Agent」「Policies」のように、予想どおりに分割されています。「Controller」という興味深いクラスがあります。このクラスは、エピソード完了や行動実行毎などのライフサイクルフックを提供します。エピソードの最後に何らかのログを取りたい場合、このクラスをサブクラス化し、onEpisodeEndをオーバーライドできます。「Controller」のサンプルがいくつかあり、そのうちの1つが「EpsilonController」です。これにより、e-greedyアルゴリズムの値etaまたはepsilon値を動的に変更できます。実行中に学習プロセスを変更できるため、これは非常に強力です。ソフトウェアエンジニアリングの観点からすると、これは非常に危険です。「プログラマーはここにいる」ので、関数型プログラマーは別のオブジェクトの状態を変更しないように指示します。APIの機能がより優れていて、エージェントのeta状態を直接変更するのではなく、たとえばエージェントのnextを計算する関数を渡すことができれば、より便利でした。これにより若干複雑になる場合があります。フレームワークにはいくつかの学習アルゴリズムも含まれていますが、Coachのような包括的なものではありません。◎入門pipのインストールと非常に少ない依存関係のおかげで、起動と実行が最も簡単なフレームワークでした。https://github.com/VinF/deer.git例を実行できるように、gitリポジトリのクローンを作成しました。次に、すべてをインポートします。bcそしてサンプルを実行します。epoch_length=1000)ここでは、環境をインスタンス化し、Q-Learningアルゴリズムを作成し、そのアルゴリズムを使用するエージェントを作成しています。次にエージェントの関数attach()を使用して、これまでに説明してきたこれらすべてを追加します。ロギングとインターリーブのトレーニング期間とテスト期間を追加します。このいずれかを編集したい場合は、興味のある部分を再実装するだけです。唯一の問題は、Toyのサンプルが機能しなかったことです。テストスコアが常に0であり、訓練損失が時間とともに増加するという点で、訓練値は少し奇妙に見えました。Garage「Garage」は「RLlab」の後続であり、同じ目的を持ちますが、個々のサポートではなく、コミュニティになります。ドキュメントは少しまばらです。多数のアルゴリズムを実装していることを強調していません。実際、この静かな小さなディレクトリには、必要なものがほとんどすべてあります。それが問題になる場合は、Tensorflowと非常に緊密に結合されています。ここには多くの機能がありますが、完全に隠されています。コードはかなり適切に文書化されていますが、公開されていません。あなたはそれを見つけるためにそれを掘り下げる必要があります。繰り返しますが、pipインストーラーはありません。いくつかのカスタムcondaのインストールといくつかのapt-get依存関係だけです。そのため、アルゴリズムの実装には非常に大きな価値があることがわかりますが、今回は開始をスキップします。Surreal「Surreal」は、アプリケーションのスイートです。第1に、それはRLフレームワークです。別のフレームワークを構築しないように、新しいRoboticsシミュレータ、オーケストレーター、クラウドインフラストラクチャプロビジョニング機能、分散コンピューティング用のプロトコルも提供します。それはスタンフォードから来ているため、アプローチとユースケースは学術的であるため、PyTorchのデフォルトの使用です。etc)に標準の産業用コンポーネントを使用した方が簡単だったでしょう。これらの問題はすでに解決されています。ロボットシミュレータは、MuJoCoシミュレーションのコレクションです。そのため、これは(MuJoCoのライセンス条項にもかかわらず)環境リストに追加されました。RLフレームワークには、人生に大きな調和が必要です。apt-getとcondaのインストールの別の組み合わせです。私は、彼らがGithubの課題追跡を無効にしていることに気づきました。各著者に属する明示的な著作権表示があります。これはオープンソースではありません。ロボスイートはMITライセンスを取得しているのでしょうか。