用語の復習として、Q ラーニングでは、状態とアクションに依存する Q 関数を学習しようとしています。
Q(S,A) = ????
ほとんどのクラスで教えられている Q ラーニングの標準バージョンでは、S と A ごとに、テーブル内の個別の値を学習する必要があることがわかり、最適な値に収束するためにベルマン更新を実行する方法がわかりました。
ここで、テーブルの代わりに別の関数近似器を使用するとします。たとえば、線形関数を試してみましょう。(S,A) ペアを取り、それらから抽出できる一連の機能を考えてください。特徴の一例は「私は壁の隣にいるか」、別の例は「アクションはオブジェクトを壁の隣に置くか」などです。これらの特徴に番号を付けます f1(S,A), f2(S,A), . ..
さて、Q関数をそれらの特徴の線形関数として学習してみてください
Q(S,A) = w1 * f1(S,A) + w2*f2(S,A) ... + wN*fN(S,A)
重み w をどのように学習する必要がありますか? まぁ、これは宿題なので、各自で考えさせてください。
ただし、ヒントとして、各状態に K 個の可能な状態と M 個の可能なアクションがあるとしましょう。K*M 機能を定義するとします。各機能は、特定の状態にあるかどうか、特定のアクションを実行するかどうかの指標です。そう
Q(S,A) = w11 * (S==1 && A == 1) + w12 * (S == 1 && A == 2) + w21 * (S==2 && A==3) ...
ここで、状態/アクションのペアについて、1 つの機能のみが 1 になり、残りは 0 になることに注意してください。したがって、Q(S,A) は対応する w に等しくなり、基本的にテーブルを学習しています。したがって、標準のテーブル Q 学習は、これらの線形関数を使用した学習の特殊なケースと考えることができます。では、通常の Q 学習アルゴリズムが何をするのか、何をすべきかを考えてみてください。
うまくいけば、K*M よりもはるかに少ない機能の小さな基礎を見つけて、空間をうまく表現できるようになることを願っています。