私はこれがばかげた質問であることを知っています、しかし私はそれを置く良い方法を見つけることができません。
私はTensorFlowとTFAgentsを使用してきましたが、現在RayRLlibに移行しています。すべてのRLフレームワーク/ライブラリを見ると、以下の2つの違いについて混乱しました。
たとえば、TensorFlowにはKerasコードがあり、RayRLlibはTensorFlowとPyTorchの両方をサポートしています。それらはすべてどのように関連していますか?
これまでの私の理解では、Kerasではニューラルネットワークを作成でき、TensorFlowはRLの数学ライブラリに近いものです(PyTorchについては十分に理解していません)。また、TFAgentやRLlibなどのライブラリは、KerasやTensorFlowなどのフレームワークを使用して既存のRLアルゴリズムを実装し、プログラマーがそれらを簡単に利用できるようにします。
誰かがそれらがどのように相互接続/異なっているかを説明できますか?どうもありがとうございました。
はい、あなたは正しいです。Keras、TF(keras btwも使用)、Pytorchなどのフレームワークは、一般的なディープラーニングフレームワークです。ほとんどの人工ニューラルネットワークのユースケースでは、これらのフレームワークは問題なく機能し、典型的なパイプラインは次のようになります。
ただし、強化学習は、他のほとんどのデータサイエンスMLアプリケーションとは大幅に異なります。まず、RLでは、モデル(エージェント)を環境と相互作用させることにより、実際に独自のデータセットを生成します。これは、特に計算の観点から、状況を大幅に複雑にします。これは、従来のMLシナリオでは、ほとんどの計算量の多い作業がそのmodel.fit()呼び出しによって行われるためです。そして、前述のフレームワークの良いところは、その呼び出しから、コードが実際に非常に効率的なC / C ++コードに入るということです(通常、GPUを使用するためにCUDAライブラリも実装します)。
RLの大きな問題は、エージェントが対話する環境です。私はこの問題を2つの部分に分けます。
a)環境は、実行していることに基づいて常に変化するため、これらのフレームワークに実装することはできません。そのため、あなたはそれが非常に効率的でつもりはない-チャンスがある-コードに環境を持っています。
b)環境はコードの重要なコンポーネントであり、エージェントと常に複数回相互作用します。その相互作用を仲介する方法は複数あります。
これらの2つの要因は、環境を標準化する必要性と、環境とエージェント間の相互作用につながります。この標準化により、再利用性の高いコードと、正確に動作する方法について他の人がより解釈しやすいコードが可能になります。さらに、この方法では、たとえば、環境オブジェクトが実際にこれを管理するように作成されていなくても、並列環境を簡単に実行できます(たとえば、TFエージェントでこれが可能です)。
したがって、RLフレームワークは、この標準化とそれに付随する機能を提供しています。ディープラーニングフレームワークとの関係は、RLライブラリには、多くの場合、文献で最も関連性の高い、事前に実装された柔軟なエージェントアーキテクチャが多数付属していることです。これらのエージェントは通常、特定のRLフレームワーク内での操作を標準化するクラスにラップされたいくつかの凝ったANNアーキテクチャにすぎません。したがって、これらのANNモデルのバックエンドとして、RLフレームワークはDLフレームワークを使用して計算を効率的に実行します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加