最適制御の手法である、Differential Dynamic Programming(DDP), iterative LQR(iLQR), Sequential LQR(SLQ) がたまに強化学習の論文に出てくるが、どういう文脈で生まれたものなのか、その関係性はどうなっているのかわからないので私は苦しめられてきた。 以下の資料を参考にして理解を深めていったので、分かる範囲のことをまとめたい。
離散システムの最適化問題
以下の離散システムを考える。 xi+1=fi(xi,ui),i=0,…,N−1 ここで、fiは何らかの関数で、線形とは限らない。
このシステムにおいて、以下の評価関数を最小にしたいと考える。 J(x,u)=N−1∑i=0Li(xi,ui)+Lf(xN) Nは有限の時間ステップ、Li(xi,xi)はstep iにおけるコスト関数であり、 Lf(XN)は終端時刻におけるコストである。 このときに、あるステップiから終端までのコストを
Ji(x,u)=N−1∑j=iLi(xi,ui)+Lf(xN)
とし、iから終端までの最適コストを Vi(x)=minuJi(x,u) とすると、最適コストは部分最適コストで表現できるため、以下のように再帰的に表現できる。 Vi(x)=minu[l(xi,ui)+Vi+1(xi+1)]=minu[l(xi,ui)+Vi+1(f(xi,ui))]
ここで、システム表現xi+1=fi(xi,ui)を用いている。 また、 Qi(xi,ui)=l(xi,ui)+Vi+1(f(xi,ui)) とおくと、
Vi(x)=minuQi(xi,ui)
であるから、最適制御入力はxiの関数 u∗i(xi)=argminQi(xi,ui) を求めることで実現できる。
以上の離散システムにおいて、最適化を行う流れは以下のようになる
- 初期軌道 x0,⋯,xNを設定する。これはヒューリスティックに決定する。例えば、ランダムに設定したり、スタートからゴールまでを結ぶ直線上に配置するなどが考えられる。
- 後退パスにおいて最適化する。i=Nからi=0に向かって逆方向に式(8)の最適化を行う
- 2.で計算した最適制御入力を用いるとして、順方向パスを式(1)に従って計算する。この結果を1.の初期値の代わりに用いて2.以降を繰り返す。
Shooting法
x,uを設計変数として最適化を行うことはできるが、システムf(xi,ui)の最適化を想定しているので、uが分かればxは得られる関係にある。 そこで、Jをuの関数として表し、uについて最適化している。 このような方法は、初期値から入力を操作してゴールを目指すことが的当てのように見えることから、Shooting法と呼ばれる。 式(8)においてuのみを設計変数として最適化していることから、このあと述べるDDP, iLQR, SLPもShooting法(Single Shooting)の一種ということになる。
Neuton法を用いた最適化
関数Qi(x,u)をxi+δx, ui+δu周りで2次のテイラー展開すると、近似した関数ˉQ(x,u)は ˉQ(x,u)=Q+Quδu+Qxδx+12[δuδx][QuuQuxQxuQxx][δuδx] となる。 ただし、以下ではQi(xi,ui)を単にQと、 また、関数f(x,y)の偏微分∂f∂x,∂f2∂x2,∂f2∂xyはfx,fxx,fxyとする表記を用いる。
ここで、 ξ=[δuδx], p=[QuQx],
H=[QuuQuxQxuQxx] とおくと、
\begin{equation} \bar{Q}(x, u) = Q
- p^{\mathrm{T}} \xi
- \xi^{\mathrm{T}} \mathrm{H} \xi \end{equation} であり、さらに展開すると \begin{equation} \begin{aligned} \bar{Q}(x, u) &= Q
- \frac{1}{2} p^{\mathrm{T}} \mathrm{H}^{-1} p
- \frac{1}{2} ( \xi^{\mathrm{T}} \mathrm{H} \xi
- 2 p^{\mathrm{T}} \xi
- p^{\mathrm{T}} \mathrm{H}^{-1} p) \\
&= Q
- \frac{1}{2} p^{\mathrm{T}} \mathrm{H}^{-1} p
- \frac{1}{2} ( \xi^{\mathrm{T}} \mathrm{H}
- p^{\mathrm{T}})
(
\xi + \mathrm{H}^{-1} p) \\
&= Q
- \frac{1}{2} p^{\mathrm{T}} \mathrm{H}^{-1} p
- \frac{1}{2} (
\xi + \mathrm{H}^{-1} p)
\mathrm{H}
(
\xi + \mathrm{H}^{-1} p) \\
\end{aligned} \end{equation} であるから、 ˉQがもとの関数を十分に近似できていると仮定したとき、 ξ=−H−1p のときに、Qが最小となる。 このように2次の近似を用いて最適解を求める方法は、Newton法にほかならない。
式(10)をさらに計算すると
[δuδx]=−[Q−1uu+Q−1uuQuxS−1QxuQ−1uu−Q−1uuQuxS−1−S−1QxuQ−1uuS−1][QuQx]
=−[Q−1uuQu+Q−1uuQux[S−1QxuQ−1uu−S−1Qx]−S−1QxuQ−1uuQu+S−1Qx] となる。 これより、最適制御入力は以下で与えられる。 δu∗(δx)=k+Kδx k=Q−1uuQu,K=Q−1uuQux
ハミルトニアンHの要素は Qx=lx+fTxV′xQu=lu+fTuV′xQxx=lxx+fTxV′xxfx+V′x˙fxxQux=lux+fTxV′xxfx+V′x˙fuxQuu=luu+fTuV′xxfu+V′x˙fuu であり、 ΔV=−12kTQuukVx=Qx−KTQuukVxx=Qxx−KTQuuK
以上の式(13), (14), (15), (16)を用いて実際に最適制御入力を求めることができる。
Differential Dynamic Programming(DDP)
以上をふまえて、離散システムの逐次最適化における手順2に、式(13)を用いる、 すなわち、
- 初期軌道 x0,⋯,xNを設定する。
- i=Nからi=0に向かって、式(13)における係数を計算する。
- 2.で計算した最適制御入力を用いるとして、順方向パスを式(1)に従って計算する。この結果を1.の初期値の代わりに用いて2.以降を繰り返す。
の手順を踏む手法が、DDPである。
線形システムへの近似とQuadratic Cost functionの採用
非線形システムf(x,u)をstep iの状態xk, 入力ukにおいて線形化することを考える
(x−xk)=Ak(x−xk)+Bk(u−uk)
ここで、 Ak=∂fk∂x(xk,uk)Bk=∂fk∂u(xk,uk)
である。 座標系を変換することで時変線形システムとしてモデリングできることがわかる。 線形システムの最適化問題としては、LQR(Linear Quadratic Regrator)がよく知られており、そのコスト関数は
lk(xk,uk)=12xTQx+12uTRu
この離散システムを最小化する解は以下のRicatti方程式を解くことで得られることが知られている。
\begin{equation} S(k) = Q + A_k^{\mathrm{T}} S(k+1) A_k
- A_k^{\mathrm{T}}S(k+1)B_k(R + B_k^{\mathrm{T}}S(k+1)B_k)^{-1}B_k^{\mathrm{T}}S(k+1)A_k \label{eq:ricatti_eq} \end{equation}
iterative LQR(iLQR)
式(???)を満たす最適制御入力は式(14)からfの二階微分の項を除いたものになっている。 このため、DDPがニュートン法であったのに対してiLQRはガウスニュートン法を用いたものであるとも言える。 iLQRはDDPのようにヘッシアンを計算する必要も逆行列を計算する必要もないため、DDPに比べて高速に処理できる。 一方で、DDPよりも収束は遅いため、iteration数は大きくなるようだ。
Sequential LQR(SLQ)
SLQはiLQRに対して、離散システムの逐次最適化における手順3で、式(13)を用いたものである。
まとめ
DDP, iLQR, SLQの関係をまとめた。 どれも、2次の近似における最適化だということがわかった。