网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
i
)
s_t^{(i)}
st(i)为第
i
i
i条轨迹的第
t
t
t个状态):
μ
(
π
)
=
1
n
∑
i
=
1
n
∑
t
=
0
∞
γ
t
ϕ
(
s
t
(
i
)
)
\mu(\pi)=\frac{1}{n}\sum_{i=1}{n}\sum_{t=0}{\infty}\gammat\phi(s_t{(i)})
μ(π)=n1i=1∑nt=0∑∞γtϕ(st(i))
在实际求解中,计算有限的时域
t
t
t近似即可。
\qquad
学徒学习的基本思想是寻找Reward使得所有的Agent产生的Reward都小于Expert的Reward的,再用这个reward去训练Agent。但为了防止Margin走向0和无穷大两个极端,在约束条件时还加入了一些限制。
该算法的步骤如下:
- 获得专家轨迹
π
E
\pi_E
πE,定于特征提取函数
ϕ
(
s
t
)
,
t
=
1
,
2
,
.
.
.
,
N
\phi(s_t),t=1,2,…,N
ϕ(st),t=1,2,…,N,产生一个Random Agent,迭代次数
g
=
0
g=0
g=0,随机设定一个
w
w
w,奖赏函数
r
ϕ
=
w
T
μ
(
π
)
r_\phi=w^T\mu(\pi)
rϕ=wTμ(π)
2. 利用
ϕ
\phi
ϕ提取专家轨迹的特征
ϕ
(
s
1
(
E
)
)
,
ϕ
(
s
2
(
E
)
)
,
.
.
.
,
ϕ
(
s
N
(
E
)
)
\phi(s_1{(E)}),\phi(s_2{(E)}),…,\phi(s_N^{(E)})
ϕ(s1(E)),ϕ(s2(E)),…,ϕ(sN(E))
3. 定义折扣因子
γ
\gamma
γ并计算专家轨迹的特征期望
μ
(
π
E
)
=
∑
t
γ
t
ϕ
(
s
t
(
E
)
)
\mu(\pi_E)=\sum_t\gammat\phi(s_t{(E)})
μ(πE)=∑tγtϕ(st(E))
4. 奖赏函数设为
r
ϕ
=
w
T
μ
(
π
g
)
r_\phi=w^T\mu(\pi_g)
rϕ=wTμ(πg),Agent与环境互动(可能会互动不止一次,因为model的更新需要时间),产生轨迹
π
g
\pi_g
πg,提取特征为
ϕ
(
s
1
(
E
)
)
,
ϕ
(
s
2
(
E
)
)
,
.
.
.
,
ϕ
(
s
M
(
E
)
)
\phi(s_1{(E)}),\phi(s_2{(E)}),…,\phi(s_M^{(E)})
ϕ(s1(E)),ϕ(s2(E)),…,ϕ(sM(E)),也计算Agent的轨迹期望值
μ
(
π
g
)
=
∑
t
γ
t
ϕ
(
s
t
(
g
)
)
\mu(\pi_g)=\sum_t\gammat\phi(s_t{(g)})
μ(πg)=∑tγtϕ(st(g))
5. 求解最优
w
=
w
∗
w=w^*
w=w∗以更新线性Reward函数
r
ϕ
=
w
T
μ
(
π
)
r_\phi=w^T\mu(\pi)
rϕ=wTμ(π):
m
a
x
t
,
w
t
s
.
t
.
{
w
T
μ
(
π
E
)
≥
w
T
μ
(
π
g
)
t
,
g
=
0
,
1
,
.
.
.
,
i
−
1
∥
w
∥
2
≤
1
\begin{aligned}& max_{t,w}\quad t\ & s.t.\begin{cases}w^T\mu(\pi_E)\geq w^T\mu(\pi_g)+t,g=0,1,…,i-1 \[2ex] \lVert w\rVert_2\leq1 \end{cases} \end{aligned}
maxt,wts.t.⎩
⎨
⎧wTμ(πE)≥wTμ(πg)+t,g=0,1,…,i−1∥w∥2≤1
6. g
=
g
1
g=g+1
g=g+1,若达到最大迭代次数,终止,否则转步骤4.
其他的步骤都没什么,主要是步骤(5),步骤(5)不仅不是线性规划,还带有一个令人讨厌的非线性约束(意味着只能采用拉格朗日乘子法),但如果大家仔细分析这个问题就会发现,损失函数只和t有关,而
w
w
w向量虽然有模长的限制,但是方向是可以随意变化的,那么为了让Margin最大,肯定要取和
μ
(
π
E
)
−
μ
(
π
g
)
\mu(\pi_E)-\mu(\pi_g)
μ(πE)−μ(πg)平行的方向,然后取到最大模长1,由此步骤(5)就迎刃而解。对于
g
=
0
,
1
,
2
,
.
.
.
,
i
g=0,1,2,…,i
g=0,1,2,…,i均成立的问题,只需要计算取Margin最小的
w
∗
w^*
w∗以满足
t
t
t即可:
w
g
∗
=
μ
(
π
E
)
−
μ
(
π
g
)
∥
μ
(
π
E
)
−
μ
(
π
g
)
∥
2
,
(
g
=
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
w
w向量虽然有模长的限制,但是方向是可以随意变化的,那么为了让Margin最大,肯定要取和
μ
(
π
E
)
−
μ
(
π
g
)
\mu(\pi_E)-\mu(\pi_g)
μ(πE)−μ(πg)平行的方向,然后取到最大模长1,由此步骤(5)就迎刃而解。对于
g
=
0
,
1
,
2
,
.
.
.
,
i
g=0,1,2,…,i
g=0,1,2,…,i均成立的问题,只需要计算取Margin最小的
w
∗
w^*
w∗以满足
t
t
t即可:
w
g
∗
=
μ
(
π
E
)
−
μ
(
π
g
)
∥
μ
(
π
E
)
−
μ
(
π
g
)
∥
2
,
(
g
=
[外链图片转存中…(img-EH38JbCk-1715875737568)]
[外链图片转存中…(img-wHOISWo3-1715875737569)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新