2023-10-12-iLQR算法公式推导(二)

(接上文)

反向传播

根据控制系统的控制目标,我们需要对系统的状态进行反向传播,即从系统的最终状态 x N x_N xN 开始,反向传播到系统的初始状态 x 0 x_0 x0 ,我们首先对 J N J_N JN 进行泰勒展开,根据泰勒展开的公式:

J N ( x N + δ x N ) = J N ( x N ) + δ J N ( x N ) ≈ J N ( x N ) + ∂ J N ( x N ) ∂ x N δ x N + 1 2 δ x N T ∂ 2 J N ( x N ) ∂ x N 2 δ x N = ℓ f ( x N ) + p N T δ x N + 1 2 δ x N T P N δ x N (12) \begin{aligned} J_N(x_N+\delta x_N)&=J_N(x_N)+\delta J_N(x_N)\\ &\approx J_N(x_N)+\frac{\partial J_N(x_N)}{\partial x_N}\delta x_N+\frac{1}{2}\delta x_N^T\frac{\partial^2 J_N(x_N)}{\partial x_N^2}\delta x_N\\ &=\ell_f(x_N)+p_N^T\delta x_N+\frac{1}{2}\delta x_N^TP_N\delta x_N\\ \end{aligned} \tag{12} JN(xN+δxN)=JN(xN)+δJN(xN)JN(xN)+xNJN(xN)δxN+21δxNTxN22JN(xN)δxN=f(xN)+pNTδxN+21δxNTPNδxN(12)

即:

p N T = ∂ J N ( x N ) ∂ x N P N = ∂ 2 J N ( x N ) ∂ x N 2 (13) \begin{aligned} p_N^T&=\frac{\partial J_N(x_N)}{\partial x_N}\\ P_N&=\frac{\partial^2 J_N(x_N)}{\partial x_N^2}\\ \end{aligned} \tag{13} pNTPN=xNJN(xN)=xN22JN(xN)(13)

如果终末代价函数 J ^ ( x N ) \hat J(x_N) J^(xN) 是如下形式:

J ^ ( x N ) = ℓ f ( x N ) = 1 2 ( x N − x f ) T Q f ( x N − x f ) (14) \begin{aligned} \hat J(x_N)&=\ell_f(x_N)\\ &=\frac{1}{2}(x_N-x_f)^TQ_f(x_N-x_f)\\ \end{aligned} \tag{14} J^(xN)=f(xN)=21(xNxf)TQf(xNxf)(14)

则有:

p N T = ∂ J N ( x N ) ∂ x N = ( x N − x f ) T Q f P N = ∂ 2 J N ( x N ) ∂ x N 2 = Q f (15) \begin{aligned} p_N^T&=\frac{\partial J_N(x_N)}{\partial x_N}\\ &=(x_N-x_f)^TQ_f\\ P_N&=\frac{\partial^2 J_N(x_N)}{\partial x_N^2}\\ &=Q_f\\ \end{aligned} \tag{15} pNTPN=xNJN(xN)=(xNxf)TQf=xN22JN(xN)=Qf(15)

现在我们得到了轨迹尾部的 p p p P P P ,下面我们来计算他们的递推关系,根据公式(5)和公式(8),有:

δ J ^ i ( x i ) = min ⁡ δ u i δ J ~ i ( x i , u i ) = min ⁡ δ u i [ Q x i T δ x i + Q u i T δ u i + 1 2 δ x i T Q x i 2 δ x i + 1 2 δ u i T Q u i 2 δ u i + 1 2 δ x i T Q x i u i δ u i + 1 2 δ u i T Q u i x i T δ x i ] (16) \begin{aligned} \delta \hat J_i(x_i) &= \min_{\delta u_i}\delta \tilde J_i(x_i,u_i)\\ &= \min_{\delta u_i}[Q_{x_i}^T\delta x_i+Q_{u_i}^T\delta u_i+\frac{1}{2}\delta x_i^TQ_{x_i^2}\delta x_i+\frac{1}{2}\delta u_i^TQ_{u_i^2}\delta u_i\\ &+\frac{1}{2}\delta x_i^TQ_{x_iu_i}\delta u_i+\frac{1}{2}\delta u_i^TQ_{u_ix_i}^T\delta x_i] \end{aligned} \tag{16} δJ^i(xi)=δuiminδJ~i(xi,ui)=δuimin[QxiTδxi+QuiTδui+21δxiTQxi2δxi+21δuiTQui2δui+21δxiTQxiuiδui+21δuiTQuixiTδxi](16)

为了使得 δ J ~ i ( x i ) \delta \tilde J_i(x_i) δJ~i(xi) 最小,我们需要对 δ J ~ i ( x i ) \delta \tilde J_i(x_i) δJ~i(xi) 求导,令导数为0,有:

∂ δ J ~ i ( x i ) ∂ δ u i = Q u i + 1 2 Q u i x i T δ x i + Q u i 2 δ u i + 1 2 Q x i u i δ x i = Q u i + Q u i x i T δ x i + Q u i 2 δ u i = 0 (17) \begin{aligned} \frac{\partial \delta \tilde J_i(x_i)}{\partial \delta u_i}&=Q_{u_i}+\frac{1}{2}Q_{u_ix_i}^T\delta x_i+Q_{u_i^2}\delta u_i+ \frac{1}{2} Q_{x_iu_i}\delta x_i\\ &=Q_{u_i}+Q_{u_ix_i}^T\delta x_i+Q_{u_i^2}\delta u_i = 0\\ \end{aligned} \tag{17} δuiδJ~i(xi)=Qui+21QuixiTδxi+Qui2δui+21Qxiuiδxi=Qui+QuixiTδxi+Qui2δui=0(17)

解上述方程,有:

δ u ^ i = − Q u i 2 − 1 ( Q u i + Q u i x i T δ x i ) ≜ K i δ x i + d i (18) \begin{aligned} \delta \hat u_i &= -Q_{u_i^2}^{-1}(Q_{u_i}+Q_{u_ix_i}^T\delta x_i)\\ &\triangleq K_i\delta x_i + d_i\\ \end{aligned} \tag{18} δu^i=Qui21(Qui+QuixiTδxi)Kiδxi+di(18)

即:

K i = − Q u i 2 − 1 Q u i x i d i = − Q u i 2 − 1 Q u i (19) \begin{aligned} K_i &= -Q_{u_i^2}^{-1}Q_{u_ix_i}\\ d_i &= -Q_{u_i^2}^{-1}Q_{u_i}\\ \end{aligned} \tag{19} Kidi=Qui21Quixi=Qui21Qui(19)

将上述公式(18)代入公式(9),并展开,有:

δ J ~ i ( x i , u i ) = 1 2 [ δ x i K i δ x i + d i ] T [ Q x i 2 Q x i u i Q u i x i Q u i 2 ] [ δ x i K i δ x i + d i ] + [ Q x i Q u i ] T [ δ x i K i δ x i + d i ] = 1 2 δ x i T Q x i 2 δ x i + 1 2 ( K i δ x i + d i ) T Q u i 2 ( K i δ x i + d i ) + 1 2 δ x i T Q x i u i ( K i δ x i + d i ) + 1 2 ( K i δ x i + d i ) T Q u i x i δ x i + Q x i T δ x i + Q u i T ( K i δ x i + d i ) = 1 2 δ x i T [ Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i ] δ x i + [ Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u ] T δ x i + 1 2 d i T Q u i 2 d i + Q u i T d i (20) \begin{aligned} \delta \tilde J_i(x_i,u_i)&=\frac{1}{2} \begin{bmatrix} \delta x_i \\ K_i\delta x_i + d_i \end{bmatrix}^T \begin{bmatrix} Q_{x_i^2} & Q_{x_iu_i}\\ Q_{u_ix_i} & Q_{u_i^2} \end{bmatrix} \begin{bmatrix} \delta x_i \\ K_i\delta x_i + d_i \end{bmatrix}+ \begin{bmatrix} Q_{x_i} \\ Q_{u_i} \end{bmatrix}^T \begin{bmatrix} \delta x_i \\ K_i\delta x_i + d_i \end{bmatrix}\\ &=\frac{1}{2} \delta x_i^TQ_{x_i^2}\delta x_i+\frac{1}{2}(K_i\delta x_i+d_i)^TQ_{u_i^2}(K_i\delta x_i+d_i)\\ &+\frac{1}{2}\delta x_i^TQ_{x_iu_i}(K_i\delta x_i+d_i)+\frac{1}{2}(K_i\delta x_i+d_i)^TQ_{u_ix_i}\delta x_i\\ &+Q_{x_i}^T\delta x_i+Q_{u_i}^T(K_i\delta x_i+d_i)\\ &=\frac{1}{2} \delta x_i^T[Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}]\delta x_i\\ &+[Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_u]^T\delta x_i\\ &+\frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ \end{aligned} \tag{20} δJ~i(xi,ui)=21[δxiKiδxi+di]T[Qxi2QuixiQxiuiQui2][δxiKiδxi+di]+[QxiQui]T[δxiKiδxi+di]=21δxiTQxi2δxi+21(Kiδxi+di)TQui2(Kiδxi+di)+21δxiTQxiui(Kiδxi+di)+21(Kiδxi+di)TQuixiδxi+QxiTδxi+QuiT(Kiδxi+di)=21δxiT[Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi]δxi+[Qxi+KiTQui2di+Qxiuidi+KiTQu]Tδxi+21diTQui2di+QuiTdi(20)

根据公式(7)的定义,有:

p i = Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u P i = Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i (21) \begin{aligned} p_i&=Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_u\\ P_i&=Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}\\ \Delta \hat J_i&=\frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ \end{aligned} \tag{21} piPiΔJ^i=Qxi+KiTQui2di+Qxiuidi+KiTQu=Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi=21diTQui2di+QuiTdi(21)

上边的 p i p_i pi δ J ^ i \delta \hat J_i δJ^i 的关于 δ x i \delta x_i δxi 的一阶项系数, P i P_i Pi δ J ^ i \delta \hat J_i δJ^i 的关于 δ x i \delta x_i δxi 的二阶项系数, Δ J ^ i \Delta \hat J_i ΔJ^i δ J ^ i \delta \hat J_i δJ^i 的常数项,论文中将 Δ J ^ i \Delta \hat J_i ΔJ^i 称为“代价的期望变化(expected change in cost)”,后边我们会将每一个时间步长的“代价的期望变化”相加,得到总的“代价的期望变化”,它将用来判断“前向传播”中每一次迭代是否满足线性搜索(Line Search)的条件,我对这个地方的处理有些困惑。 Δ J ^ i \Delta \hat J_i ΔJ^i 作为一个与 δ x i \delta x_i δxi 无关的常数,它不会影响后续对于 p i p_i pi P i P_i Pi 及其之前的值的递推。

额外说明:观察公式(21)和公式(19),如果将 d i d_i di 代入 Δ J ^ i \Delta {\hat J}_i ΔJ^i 到中会得到一个它的更简洁的形式:

Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i = 1 2 ( − Q u i 2 − 1 Q u i ) T Q u i 2 ( − Q u i 2 − 1 Q u i ) + Q u i T ( − Q u i 2 − 1 Q u i ) = 1 2 Q u i T Q u i 2 − 1 Q u i − Q u i T Q u i 2 − 1 Q u i = − 1 2 Q u i T Q u i 2 − 1 Q u i (21.1) \begin{aligned} \Delta \hat J_i&=\frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ &=\frac{1}{2}(-Q_{u_i^2}^{-1}Q_{u_i})^TQ_{u_i^2}(-Q_{u_i^2}^{-1}Q_{u_i})+Q_{u_i}^T(-Q_{u_i^2}^{-1}Q_{u_i})\\ &=\frac{1}{2}Q_{u_i}^TQ_{u_i^2}^{-1}Q_{u_i}-Q_{u_i}^TQ_{u_i^2}^{-1}Q_{u_i}\\ &=-\frac{1}{2}Q_{u_i}^TQ_{u_i^2}^{-1}Q_{u_i}\\ \end{aligned} \tag{21.1} ΔJ^i=21diTQui2di+QuiTdi=21(Qui21Qui)TQui2(Qui21Qui)+QuiT(Qui21Qui)=21QuiTQui21QuiQuiTQui21Qui=21QuiTQui21Qui(21.1)

不过我们我们不使用这个形式,因为在后续的“前向传播”过程中的LineSearch过程会通过一个scale参数来调整 d i d_i di,因此我们把每一个点的 Δ J ^ i \Delta \hat J_i ΔJ^i 都写成一个关于 d i d_i di 的形式,并且分别存储它的一次项和二次项的系数,即 Q u i Q_{u_i} Qui Q u i 2 Q_{u_i^2} Qui2 ,这样在调整scale参数的时候,我们只需要对这两个系数进行scale就可以了。

正向传播

现在我们已经计算了每个时间步长的最佳反馈增益,现在我们通过模拟动力学来更新标称轨迹。由于初始状态是固定的,整个正向模拟可以通过以下公式表示:

δ x i = x ‾ k − x k δ u i = K i δ x i + α d i u ‾ i = u i + δ u i x ‾ i + 1 = f ( x ‾ i , u ‾ i ) (22) \begin{aligned} \delta x_i &= \overline x_k - x_k\\ \delta u_i &= K_i\delta x_i + \alpha d_i\\ \overline{u}_i &= u_i + \delta u_i\\ \overline{x}_{i+1} &= f(\overline{x}_i,\overline{u}_i)\\ \end{aligned} \tag{22} δxiδuiuixi+1=xkxk=Kiδxi+αdi=ui+δui=f(xi,ui)(22)

其中 x ‾ i \overline x_i xi u ‾ i \overline u_i ui 是更新之后名义轨迹, 0 ≤ α ≤ 1 0 \le\alpha\le1 0α1 是一个对于前馈项的缩放因子。

与所有非线性优化一样,需要沿着下降方向进行线路搜索,以确保足够的代价的降低,我们使用参数α采用简单的回溯线搜索。在应用公式(22)以获取候选状态和控制轨迹之后,我们计算了代价的实际减少与预期减少的比率:

z = Δ J Δ J ^ ( α ) = J ( x ‾ 0 , U ‾ ) − J ( x 0 , U ) ∑ i = 0 N − 1 Δ J ^ i ( α ) (23) z=\frac{\Delta J}{\Delta \hat J(\alpha)}=\frac{J(\overline x_0,\overline U)-J(x_0,U)}{\sum_{i=0}^{N-1}\Delta \hat J_i(\alpha)} \tag{23} z=ΔJ^(α)ΔJ=i=0N1ΔJ^i(α)J(x0,U)J(x0,U)(23)

其中:

Δ J ^ ( α ) = ∑ i = 0 N − 1 Δ J ^ i ( α ) = ∑ i = 0 N − 1 [ α 2 1 2 d i T Q u i 2 d i + α Q u i T d i ] (24) \begin{aligned} \Delta \hat J(\alpha) &= \sum_{i=0}^{N-1}\Delta \hat J_i(\alpha)\\ &=\sum_{i=0}^{N-1}[\alpha^2\frac{1}{2}d_i^TQ_{u_i^2}d_i+\alpha Q_{u_i}^Td_i]\\ \end{aligned} \tag{24} ΔJ^(α)=i=0N1ΔJ^i(α)=i=0N1[α221diTQui2di+αQuiTdi](24)

其中 Δ J ^ i ( α ) \Delta \hat J_i(\alpha) ΔJ^i(α) 是公式(21)中的 Δ J ^ i \Delta \hat J_i ΔJ^i 的被 α \alpha α 参数化之后的结果。 Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 可以在“前向传播”时,通过分别存储公式(24)中的两项然后将它们和 α \alpha α α 2 \alpha^2 α2 相乘来计算高效的计算。

如果 z z z [ β 1 , β 2 ] [\beta_1,\beta_2] [β1,β2] 之间,通常是 [ 1 e − 4 , 10 ] [1e-4,10] [1e4,10] ,则我们接受这个候选轨迹,否则我们将 α \alpha α 缩小到 γ α \gamma\alpha γα ,其中 0 < γ < 1 0<\gamma<1 0<γ<1 ,通常是 γ = 0.5 \gamma=0.5 γ=0.5 。我们重复这个过程,直到 z z z [ β 1 , β 2 ] [\beta_1,\beta_2] [β1,β2] 之间。

我们可以考察 α = 0 \alpha=0 α=0 这个极限情况,根据公式(22),有:

δ x 0 = x ‾ 0 − x 0 δ u 0 = K i δ x 0 + α d i \begin{aligned} \delta x_0 &= \overline x_0 - x_0\\ \delta u_0 &= K_i\delta x_0 + \alpha d_i\\ \end{aligned} δx0δu0=x0x0=Kiδx0+αdi

因为 α = 0 \alpha=0 α=0 x ‾ 0 = x 0 \overline x_0 = x_0 x0=x0 ,所以 δ u 0 = 0 \delta u_0=0 δu0=0 ,根据公式(22), u ‾ 0 \overline u_0 u0 相比于 u 0 u_0 u0 没有任何变化,相应的 x ‾ 1 \overline x_1 x1 相对于 x 1 x_1 x1 也没有变化,因此在这个情况下整条轨迹都不会有任何变动。相反,如果 α > 0 \alpha > 0 α>0 ,那么整个轨迹会根据 α \alpha α 的值而有所变化, α \alpha α 的大小决定了变化的程度。如果按照这个逻辑,我们可以这样理解公式(23)中的 z z z :其中 Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 是将代价函数线性化之后的期望的代价变化, Δ J \Delta J ΔJ 则表示轨迹更新之后代价的实际变化,如果我们选取的 α \alpha α 没有使得更新的轨迹偏离线性化的位置过多,那么 Δ J \Delta J ΔJ Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 的比值不会太大,即 z z z 的值不会太大,反之,如果我们选取的 α \alpha α 使得更新的轨迹偏离线性化的位置过多,那么 Δ J \Delta J ΔJ Δ J ^ ( α ) \Delta \hat J(\alpha) ΔJ^(α) 的比值会很大,即 z z z 的值会很大,这样我们就可以通过 z z z 的值来判断我们选取的 α \alpha α 是否合适。

正则化(Regularization)

由于数值计算精度的问题, Q u i 2 Q_{u_i^2} Qui2 可能会不满足正定条件,因此我们需要对 Q u i 2 Q_{u_i^2} Qui2 进行正则化,有以下两种正则化的方法:

方法1:

根据公式(11):

Q ‾ u i 2 = Q u i 2 + ρ I = ℓ u i 2 + B i T P i + 1 B i + ρ I d i = − Q ‾ u i 2 − 1 Q u i K i = − Q ‾ u i 2 − 1 Q u i x i Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i p i = Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u i P i = Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i (25) \begin{aligned} \overline{Q}_{u_i^2} &= Q_{u_i^2}+\rho I\\ &= \ell_{u_i^2}+B_i^TP_{i+1}B_i+\rho I\\ \\ d_i &= -\overline{Q}_{u_i^2}^{-1}Q_{u_i}\\ K_i &= -\overline{Q}_{u_i^2}^{-1}Q_{u_ix_i}\\ \\ \Delta \hat J_i &= \frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ p_i &= Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_{u_i}\\ P_i &= Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}\\ \end{aligned} \tag{25} Qui2diKiΔJ^ipiPi=Qui2+ρI=ui2+BiTPi+1Bi+ρI=Qui21Qui=Qui21Quixi=21diTQui2di+QuiTdi=Qxi+KiTQui2di+Qxiuidi+KiTQui=Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi(25)

方法2:

根据公式(11):

Q ‾ u i 2 = ℓ u i 2 + B i T ( P i + 1 + ρ I ) B i Q ‾ u i x i = ℓ u i x i + B i T ( P i + 1 + ρ I ) A i d i = − Q ‾ u i 2 − 1 Q u i K i = − Q ‾ u i 2 − 1 Q ‾ u i x i Δ J ^ i = 1 2 d i T Q u i 2 d i + Q u i T d i p i = Q x i + K i T Q u i 2 d i + Q x i u i d i + K i T Q u i P i = Q x i 2 + K i T Q u i 2 K i + Q x i u i K i + K i T Q u i x i (26) \begin{aligned} \overline{Q}_{u_i^2} &= \ell_{u_i^2}+B_i^T(P_{i+1}+\rho I)B_i\\ \overline{Q}_{u_ix_i} &= \ell_{u_ix_i}+B_i^T(P_{i+1}+\rho I)A_i\\ \\ d_i &= -\overline{Q}_{u_i^2}^{-1}Q_{u_i}\\ K_i &= -\overline{Q}_{u_i^2}^{-1}\overline{Q}_{u_ix_i}\\ \\ \Delta \hat J_i &= \frac{1}{2}d_i^TQ_{u_i^2}d_i+Q_{u_i}^Td_i\\ p_i &= Q_{x_i}+K_i^TQ_{u_i^2}d_i+Q_{x_iu_i}d_i+K_i^TQ_{u_i}\\ P_i &= Q_{x_i^2}+K_i^TQ_{u_i^2}K_i+Q_{x_iu_i}K_i+K_i^TQ_{u_ix_i}\\ \end{aligned} \tag{26} Qui2QuixidiKiΔJ^ipiPi=ui2+BiT(Pi+1+ρI)Bi=uixi+BiT(Pi+1+ρI)Ai=Qui21Qui=Qui21Quixi=21diTQui2di+QuiTdi=Qxi+KiTQui2di+Qxiuidi+KiTQui=Qxi2+KiTQui2Ki+QxiuiKi+KiTQuixi(26)

注意 Q u i 2 Q_{u_i^2} Qui2 Q ‾ u i 2 \overline Q_{u_i^2} Qui2 以及 Q u i x i Q_{u_ix_i} Quixi Q ‾ u i x i \overline Q_{u_ix_i} Quixi 在使用上的细微区别,前者被用来计算期望的代价变化 Δ J ^ i \Delta \hat J_i ΔJ^i 和向后传播的递归,正则化之后的后者被用来计算反馈增益 K i K_i Ki 和前馈项 d i d_i di

约束(Constraints)

要处理约束,需要使用增广拉格朗日法(Augmented Lagrange Method) 对原有的代价 J ( x 0 , U ) J(x_0,U) J(x0,U) 进行增广,在这里暂时不做讨论,后边会有专门的文章来讨论增广拉格朗日法在iLQR中的应用。即AL-iLQR算法

终止条件

iLQR一般具有三种终止条件:

  1. 代价函数的变化量小于某个阈值,即 ∣ J p r e − J ∣ < ϵ \vert J_{pre}-J\vert <\epsilon JpreJ<ϵ
  2. 前馈增益项的变化量小于某个阈值,即 ∣ d p r e − d ∣ < ϵ \vert d_{pre}-d\vert <\epsilon dpred<ϵ
  3. 迭代次数达到某个阈值。

到此为止,我们已经完成了对于iLQR算法的讨论。

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DQN算法是一种基于Q-learning的深度强化学习算法,其目标是学习一个Q函数,使得该函数能够最大化累积奖励。DDQN算法是对DQN算法的改进,通过解决DQN算法中过高估计Q值的问题,提高了算法的性能。Dueling DQN算法则是在DDQN算法的基础上,提出了一种新的神经网络结构,使得算法的学习效率更高。 下面是DQN算法公式推导分析: 1. Q-learning的更新公式为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma \max_{a} Q(s_{t+1},a) - Q(s_t,a_t))$ 2. DQN算法使用了深度神经网络来逼近Q函数,将更新公式改为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma \max_{a} Q(s_{t+1},a; \theta^-) - Q(s_t,a_t; \theta))$,其中$\theta$为当前网络的参数,$\theta^-$为目标网络的参数,$\max_{a} Q(s_{t+1},a; \theta^-)$表示在下一个状态$s_{t+1}$中,选择动作$a$所得到的最大Q值。 3. DDQN算法在DQN算法的基础上,使用了双网络结构,解决了DQN算法中过高估计Q值的问题。更新公式为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma Q(s_{t+1},\arg\max_{a} Q(s_{t+1},a; \theta); \theta^-) - Q(s_t,a_t; \theta))$,其中$\arg\max_{a} Q(s_{t+1},a; \theta)$表示在下一个状态$s_{t+1}$中,选择动作$a$所得到的最大Q值对应的动作。 4. Dueling DQN算法在DDQN算法的基础上,提出了一种新的神经网络结构,使得算法的学习效率更高。具体来说,Dueling DQN算法的输出包括两个分支,分别是该状态的状态价值V(标量)和每个动作的优势值A(与动作空间同维度的向量)。网络结构如下图所示: [Dueling DQN网络结构](https://img-blog.csdn.net/20170727145756345?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbnhpYW9fYmFpZHUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 更新公式为:$Q(s_t,a_t) \leftarrow V(s_t) + (A(s_t,a_t) - \frac{1}{|\mathcal{A}|} \sum_{a} A(s_t,a))$,其中$V(s_t)$表示状态$s_t$的价值,$A(s_t,a_t)$表示在状态$s_t$下选择动作$a_t$的优势值,$\frac{1}{|\mathcal{A}|} \sum_{a} A(s_t,a)$表示所有动作的平均优势值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值