エージェントが状態の連続する順序に従わない場合、問題をMDPとしてモデル化するにはどうすればよいですか?
私の問題では、エージェントは状態の連続する順序に従わず、次のように選択します $\epsilon$-優先キューからの最良のペア(状態、アクション)を貪欲にします。より具体的には、私のエージェントが状態になったとき$s$ 利用可能なアクションを開きます $\{ a_i \}$、次にそれぞれを推定します $(s,a)$ペアリング(DQNとの回帰)し、キューに格納します。エージェントを状態に変更するには$s'$、使用可能なアクションの1つに従う代わりに、キューから最適なペアを選択します $\{ a_i \}$ の $s$。状態には、他の状態とは部分的に異なるアクションセットがあることに注意してください。
ただし、このように、エージェントが状態の連続する順序に従わない場合、MDPをモデル化するにはどうすればよいですか?
具体的には、いくつかのシードURLを入力するフォーカスドクローラーがあります。シード付きの関連URLをできるだけ多く出力したい。RLフレームワークを次のようにモデル化します。
- 状態:ウェブページ、
- アクション:州のウェブページのアウトリンクURL、
- 報酬:外部ソースから、Webページのコンテンツが関連しているかどうかを知っています。
問題は、クロール中に、エージェントが連続する状態遷移を追跡して前進し続けると、クロールトラップまたはローカル最適点に陥る可能性があることです。これが、クロールで優先キューが重要に使用される理由です。クロールエージェントは、状態遷移の連続する順序に従わなくなりました。各状態とアクションのペアは、推定アクション値とともにプライオリティキューに追加されます。毎回、キュー内のすべてのペアの中から最も有望な状態とアクションのペアを選択します。各URLアクションは、それが抽出された状態Webページを考慮して推定できることに注意してください。
回答
あなたの問題は基本的に、この設定での状態とアクションが何であるかを混乱させていることです。ウェブページはあなたの州ではありません。あなたの状態は、ペアの優先キュー全体(website-outlink)
+(new_website-outlink)
ペアです。あなたの行動はあなたが選択するペアです。
これは、可変サイズの状態空間と可変サイズのアクション空間の問題設定を同時に実行します。これに対処するために、(一般的に)state==observation
必要がないことに注意することから始めましょう。それで、あなたの観察は何ですか?観察結果は、次のいずれかの可変サイズのバッチです。
(website-outlink)
ペアまたはnext_website
(それぞれnext_website
が対応するペアによって決定されます)
これらの観察結果はどちらも問題なく機能する可能性があります。どちらを選択するかは、エージェントに「開く前に開くリンク」または「(開いた後に)意味のあるリンク」を学習させるかどうかの問題です。
優先キューが基本的に行っているのは、次のような巧妙なトリックを追加することです。
- 状態を順序付けておくための計算の複雑さを軽減します(状態はではなく、
website
のリスト/バッチであることを忘れないでくださいwebsite-outlink
) - 各アクションのQ値を不必要に再計算することを回避します(アクションはからアウトリンクを選択するのではなく
new_website
、キュー内の使用可能なすべての選択肢からアウトリンクを選択することに注意してください)
ただし、実際に2回目の保存を行うには、各ペアのQ値を保存することが重要であることに注意してください!!!
注意すべき最後の重要な点は、リプレイバッファを使用するシナリオ(DQNを選択したことを考えるとおそらくそうです)では、RBから学習している間は優先キューを使用できないということです。理由を確認する(そして学習プロセスが実際にどのように見えるかを詳細に確認する)には、Q値の更新が次の式で与えられることを覚えておくところから始めます。あなたの状態s_t
は(準順序付けされた1)ペアのバッチです。Q(s_t, a_t)
上のDQN回帰を実行しているだけの出力であるだけであなたはこのバッチで最高のウェブサイト/ペア(持っていますこの状態からどのアクションが実行されたかについて一貫性を保つために、RBに遷移を追加するときに最良の選択を示すインデックスを追加します)。ただし、最適な将来価値の見積もりを計算するには、次の状態のすべてのWebサイト/ペアのQ値を再計算する必要があります。RBからトレーニングする場合、優先キューを使用することはできません。
1最後のWebサイトを見ているときに、そこにあったすべてのWebサイトに対して優先キューが注文されましたnew_website-outlink
が、現在追加しているすべてのペアはまだ注文されていません。それでもエージェントを実行する必要があります。その後、優先キューの残りの部分と一緒にエージェントを注文して、次の状態を生成できます(new_new_website-outink
ペアがあるため、注文されません)。