若由本篇博文增加关注,就解封本篇博文的VIP权限哈,记得在下方留言哈
本篇文章将开始进行DP-TBD。首先你需要了解什么是DP即动态规划,而不是急于去找什么是DP-TBD。动态规划是一种最优化的思想,DP-TBD是在这种思想上发展起来的。
为了能够深入了解什么是动态规划,你首先必须要掌握以下三点:
- Viterbi(维特比)算法
- 多阶段决策
- HMM
这三点你必须要好好百度一下看看相关知识,这对于下面了解动态规划很重要!很重要!很重要!
- 有了上面的知识后,咱们来看一下一个最短路径问题
如果要求从A到G的最短路径,最简单的方法就是把从A到G的所有路径全部找出来,然后把各条路径上的权值相加找到最小值所对应的路径即可。但是当路径很复杂的时候就会出现,用上面的穷举法会特别麻烦。所以就出现了一种叫做动态规划的思想。
对于上图我需要有以下几点说明:
- A,B1,B2…F1,F2,G:所处的状态,称为状态变量
- A:第一阶段,B1,B2:第二阶段,后面的以此类推
- 只有相邻的两个阶段有路径,有间隔的阶段可没有路径的。
- 从当前时刻的一个状态到下一个阶段的状态(下一个阶段的哪个状态都有可能):决策
- 路径上的权值:决策代价
- 从A到G的每一条路径的长度即权值之和:整体代价,其实我们如果在找最短路径的话,就是找这个整体代价的最小值。
- 如果要找最优路径,不论到达哪一阶段的哪个状态变量,剩下的肯定还是找最优路径。
- 接下来我要抛出很多的变量了,仔细阅读,自己在纸上跟着我的思路画一下,你会更加理解下面变量的意思:
- xk:k:是第k阶段,xk则是第k阶段的状态变量
- uk(xk):k阶段时的决策,称为决策变量
- Uk(xk):uk(xk)的集合
- 策略:从开始到最后阶段所做的决策的集合即:
{u1(x1),u2(x2),u3(x3),…,uk(xk)} - 值函数:这个函数很重要,怎样找到最优路径,就是看这个值函数什么时候达到最大,它用来评价整体代价的优劣。即:
v(x1;u1,u2,…uk) - fk(xk)=max v(x1;u1,u2,…uk):最优值函数
- wj(xj,uj):决策代价,可以类比上图中的权值
- 假设
v ( x 1 ; u 1 , u 2 , ⋯ , u k ) = ∑ j = 1 k w j ( x j , u j ) v\left(x_{1} ; u_{1}, u_{2}, \cdots,u_{k}\right)=\sum_{j=1}^{k} w_{j}\left(x_{j}, u_{j}\right) v(x1;u1,u2,⋯,uk)=∑j=1kwj(xj,uj)
可以认为此处的值函数是一条路径上的权值之和 - 此时
f k ( x k ) = max { u , j ∈ U [ ∑ j = 1 k w j ( x j , u j ) ] = max ( u j , v k ) ∈ U [ w k ( x k , u k ) + ∑ j = 1 k − 1 w j ( x j , u j ) ] = max { u k } ∈ U [ w k ( x k , u k ) + f k − 1 ( x k − 1 ) ] , k = 2 , 3 , ⋯ , M \begin{aligned} f_{k}\left(x_{k}\right) &=\max _{\{u, j \in U}\left[\sum_{j=1}^{k} w_{j}\left(x_{j}, u_{j}\right)\right] \\ &=\max _{\left(u_{j}, v_{k}\right) \in U}\left[w_{k}\left(x_{k}, u_{k}\right)+\sum_{j=1}^{k-1} w_{j}\left(x_{j}, u_{j}\right)\right] \\ &=\max _{\left\{u_{k}\right\} \in U}\left[w_{k}\left(x_{k}, u_{k}\right)+f_{k-1}\left(x_{k-1}\right)\right], \quad k=2,3, \cdots, M \end{aligned} fk(xk)={u,j∈Umax[j=1∑kwj(xj,uj)]=(uj,vk)∈Umax[wk(xk,uk)+j=1∑k−1wj(xj,uj)]={uk}∈Umax[wk(xk,uk)+fk−1(xk−1)],k=2,3,⋯,M(1) - 我们假设初始的决策代价是 f 1 ( x 1 ) = w 1 ( x 1 , u 1 ) f_{1}\left(x_{1}\right)=w_{1}\left(x_{1}, u_{1}\right) f1(x1)=w1(x1,u1)(2)
- 由式(1)和式(2)可得
f k ( x k ) = max { u k } ∈ U [ w k ( x k , u k ) + f k − 1 ( x k − 1 ) ] f_{k}\left(x_{k}\right)=\max _{\left\{u_{k}\right\} \in U}\left[w_{k}\left(x_{k}, u_{k}\right)+f_{k-1}\left(x_{k-1}\right)\right] fk(xk)=max{uk}∈U[wk(xk,uk)+fk−1(xk−1)]
= max { u k } ∈ U { w k ( x k , u k ) + max { u k − 1 } ∈ U [ w k − 1 ( x k − 1 , u k − 1 ) ] + … + max { u 2 } ∈ U [ w 2 ( x 2 , u 2 ) ] + f 1 ( x 1 ) } =\max _{\left\{u_{k}\right\} \in U}\left\{w_{k}\left(x_{k}, u_{k}\right)+\max _{\left\{u_{k-1}\right\} \in U}\left[w_{k-1}\left(x_{k-1}, u_{k-1}\right)\right]+\ldots+\max _{\left\{u_{2}\right\} \in U}\left[w_{2}\left(x_{2}, u_{2}\right)\right]+f_{1}\left(x_{1}\right)\right\} =max{uk}∈U{wk(xk,uk)+max{uk−1}∈U[wk−1(xk−1,uk−1)]+…+max{u2}∈U[w2(x2,u2)]+f1(x1)}
= max { u k } ∈ U [ h k ( x k ) ] =\max _{\left\{u_{k}\right\} \in U}\left[h_{k}\left(x_{k}\right)\right] =max{uk}∈U[hk(xk)] - h k ( x k ) = w k ( x k , u k ) + max { u k − 1 } ∈ U [ h k − 1 ( x k − 1 ) ] h_{k}\left(x_{k}\right)=w_{k}\left(x_{k}, u_{k}\right)+\max _{\left\{u_{k-1}\right\} \in U}\left[h_{k-1}\left(x_{k-1}\right)\right] hk(xk)=wk(xk,uk)+max{uk−1}∈U[hk−1(xk−1)]
- 我们称hk(xk)为阶段值函数,这里的阶段值函数该怎样理解呢?v(x1;u1,u2,…uk)是一条完整路径上的值函数,而阶段值函数,顾名思义,它是前k阶段的值函数,这就是每一阶段都有一个值函数,当然这个值函数是根据wk(xk,uk)的取值不同而随之变化的。
- 我们假设 h 1 ( x 1 ) = w 1 ( x 1 , u 1 ) h_{1}\left(x_{1}\right)=w_{1}\left(x_{1}, u_{1}\right) h1(x1)=w1(x1,u1)
- 接下来就到最重要的一步了,最优策略: { x ^ K } = { x ^ K : ( ∑ k = 1 K h k ( x k ) ) max } \left\{\hat{x}_{K}\right\}=\left\{\hat{x}_{K}:\left(\sum_{k=1}^{K} h_{k}\left(x_{k}\right)\right)_{\max }\right\} {x^K}={x^K:(∑k=1Khk(xk))max}
- 其中 x ^ K = { x ^ ( 1 ) , x ^ ( 2 ) , ⋯ , x ^ ( K ) } \hat{x}_{K}=\{\hat{x}(1), \hat{x}(2), \cdots, \hat{x}(K)\} x^K={x^(1),x^(2),⋯,x^(K)},这里记录了最优策略中每一阶段决策时对应的状态。