質問: オフライン学習とオンライン学習の間の移行方法 私はRLエージェントを次のように時系列で(PythonのTensorFlowを使って)訓練しています:期間$ t $での関心の量を予測するために、期間$ [tW、 t)$。トレーニング中は、$ M $の観測とトレーニングを受けるための報酬が得られるまで、ウィンドウが段階的に進歩します。履歴データが足りなくなるまで、それは1つのエポックです。小さな学習率で数千のエポックを練習します(損失は非常に不安定です)。 結局のところ、私は予測をするために環境からライブデータを引き出すことを開始したいと思います。 この時点で、私がオンラインでトレーニングを続けたいのであれば、どのようにエポックを扱うべきですか?もはや "データがなくなりました"ということはありません。
回答: RLアルゴリズムはオンラインで実行することができますが、実際にはポリシーを学習するとき(Q-learningのように)、関数近似で安定しません。これを避けるために、新しいエクスペリエンスを履歴に追加し、エージェントは履歴から学習します(エクスペリエンスリプレイと呼ばれます)。新しいデータは即座に入手することができますが、バッチサイズと履歴サイズによっては、いくつかのタイムステップでパラメータを変更するために使用されない可能性があります。 通常、DQNのようなRLシステムでは、履歴データのいくつかのウインドウ(多分すべての履歴データ、おそらく最後のNステップ)の中で、各アクション間でランダムにサンプリングされたバッチを訓練します。アクション間に実行するトレーニングの量は、モデルのハイパーパラメータであり、より新しいデータに対するサンプリングバイアスです。 たとえば、 Deep MindチームのAtariゲームプレーの論文で、エージェントはミニゲームをサンプリングし、ゲームをオンラインでプレイしながら、各行動の間にニューラルネットワークを訓練する32の観測(状態、アクション、報酬、次の状態)を有するバッチ。 エポックの概念は、オンライン学習では発生しません。各エポックを使用してパフォーマンス・メトリックを報告し、比較可能な数値を引き続き使用する場合は、代わりにいくつかのトレーニング反復を選択できます。これには固定のルールはありませんが、過去のデータに対して訓練したのと同じ回数の繰り返しについて同じ統計を報告することを検討することをおすすめします。あなたの履歴に1万のトレーニングサンプルがあり、現在50ステップのミニバッチサイズでオンライントレーニングを行っている場合は、10,000/50 = 200タイムステップごとに進捗状況を報告してください。