Miyamoto
1 はじめに
この記事では強化学習における手法の一つであるDDPGについて紹介します。対応するワードはDQNやQテーブルなどです。これらと並列の単語として、DDPGが存在します。
Deep Deterinistic Policy Gradientの略で、その名の通り決定論的(Deterministic)\(^{\ast 1}\)(Policy Gradient)を、深層ニューラルネット(Deep)で行います。
DQN(Deep Q Network)については解説しません。DQNについては下記リンクをご覧ください。
\(^{\ast 1}\)確率要素のない。
2 方策勾配について。DQN等との比較
DQNなどでは、状態行動価値関数と方策関数はひとまとめにされていました。すなわち、
(1)
\[\pi (s) := \underset{a}{\mathrm{arg \max Q}}(s,a)\]
という形で方策関数が定義されました。すなわち\(Q\)関数の構成が即方策関数の構成になっていたわけです。しかし、方策勾配型は異なります。
\(\pi\)という関数を、行動ごとの確率が出力される関数ではなく、\(\pi : S \to \mathbb{R}^n\)という、行動(今回は決定された値段)し、何らかの手段(一般的には深層ニューラルネット)を用いて構成します。
2.1 DDPGにおけるランダム性
リンクでも解説した通り、強化学習においては、ランダムな行動決定の導入が必要となります。これを探索という。DDPGにおける探索は、毎回生成した正規乱数\(\epsilon\)を使います。
(2)
\[a = \pi(s)+\sigma \epsilon\]
\(\sigma\)はあらかじめ固定しておいた数字です。\(2\)や\(1\)や\(0.5\)くらいがおすすめです
2.2 学習について
\(Q\) 関数の更新についてはリンクをご覧ください。DQNと同じく\(Q\)関数を更新していきますが、今回は \(Q\) と独立した\(\pi\)という関数を用意したため、こちらについても更新をしていく必要があります。最大化したいのは当然 \(Q\) 値\(^{\ast 2}\)
(3)
\[E [\sum_{i=0}^{\infty}\gamma ^t rt]\]
ですので、 \(Q\) 関数を利用して更新していきます。 \(^{\ast 3}\)
\(\pi\) のパラメータを\(\theta\)と置きます。通常の回帰や分類問題は、これを損失関数という、パラメータの悪さを評価する関数\(L\)と学習率\(\alpha\)を用いて
(4)
\[\theta \leftarrow \theta – \alpha \nabla L(\theta)\]
という形でパラメータを更新していきます。これは数学的な感覚になってしまうのですが、\(L\)が小さくなる方向に関数を更新していきます。
一方で、この方策関数\(\pi\)のパラメータを更新するときは\(J (\theta)\)という、\( \theta \)のよさを評価する関数を用いて、
(5)
\[\theta \leftarrow \theta + \alpha \nabla J(\theta)\]
という形で更新していきます。これは上の逆で、\(J\)が大きくなるようにパラメータを更新していきます。\(^{\ast 4}\)
\(^{\ast 2}\)累積報酬和の期待値。
\(^{\ast 3}\)GANと同じように交互に二段階最適化していきます。
\(^{\ast 4}\)分類問題などでは悪さを評価するのに、強化学習では良さを評価するのは、タスクの特徴によって、それぞれ悪さと良さを評価しやすいからです。
2.21 J の構成について
パラメータの良さを評価する関数\(J\)については、最大化したいタスクに合わせて構成します。
今の状態を\(s\)として
(6)
\[J(\theta):= E[Q(s,\pi_\theta(s))]\]
とするのが妥当でしょう。
2.21 方策勾配定理
実際に勾配を計算するときは、この定理を使います。
定理1 方策勾配定理
(7)
\[\nabla J(\theta) = E[\nabla _\theta\pi (\theta)\nabla_a Q(s,a)| {a=\pi_\theta(s)}]\]
この期待値というのはReply Memoly などの確率要素に対するものです。ぱっとみただの連鎖律ですが、確率要素が入るため結構ややこしくなります。
3 専門:方策勾配定理について
方策勾配定理について、いくら調べてもろくな証明が出てこなかったので、我々が自力で証明しました。
たぶんこれは見つけられなかっただけであり、すでに厳密な証明がされているはずなので、\( Q \)関数収束に関する論文のふろくにおまけという形で書いています。[2]\(^{\ast 5}\)
\(^{\ast 5}\)国際学会IDS-2020 に弊社が出したこの論文が採択されました!
定理2 方策勾配定理の厳密な証明
\(Q\)関数と\(\pi\)はニューラルネットによる構成をされているものとする。すなわち
(8)
\[f_i(x):=V_i\eta(W_ix+b_i)+a_i\]
ただし\(V_i,W_i\) は行列。 \( a_i, b_i \) はベクトル、 \( \eta\)は活性化関数であるとする。
\(Q(x)=f_{n} \circ f_{n-1} \circ \ldots \ldots . \circ f_{1}(x)\)、\(\pi\)
も別 の\(f_i\)を用いて同様の定義がなされているものとする。このとき、次が成り立つ。(9)
\[\nabla J(\theta) = E[\nabla _\theta\pi(\theta)\nabla_aQ(s,a)| _{a=\pi_\theta(s)}]\]
ルベーグ積分論に基づく実解析の見地から厳密な証明を行いました。ぜひご覧ください。
ニューラルネットで実装が行われているということが重要。これにより入力や各パラメータに対して、各々の関数がリプシッツ連続になります。ここが証明のカギ。
4 弊社における取り組み
弊社ソフトウェアthroough(スルー)に、このDDPG の技術を用いた強化学習アルゴリズムを準備中です。このDDPG を用いることにより、1円単位での値付けが可能となります。
DQN と比べて大きなメリットは「ネットワークが順番を認識できる」という点にあります。
例えば、100円と120円と140円という選択肢があったとして、DQN では100円と120円、100円と140円の差の違いを認識できませんが、DDPG はそれを認識して最適化することができます。
参考文献
[1] Timothy P Lillicrap, Jonathan J Hunt, Alexander Pritzel, Nicolas Heess, Tom Erez, Yuval Tassa,
David Silver, and Daan Wierstra. Continuous control with deep reinforcement learning. arXiv preprint
arXiv:1509.02971, 2015.
[2] Konatsu Miyamoto, Masaya Suzuki, Yuma Kigami, Kodai Satake,Convergence of Q-value in case of Gaus-
sian rewards,arXiv preprint arxiv:2003.03526,2020