深度学习与自动驾驶中的一些技术
深度学习与自动驾驶中的一些技术
强化学习 reinforcement learning
-
框架
- 智能体在环境中运行
- 智能体具备执行动作的能力
- 每个动作都会影响智能体的未来状态
- 通过奖励信号衡量成功与否
- 目标是选择能最大化未来奖励的动作
-
马尔可夫决策过程 Markov Decision Process
是一种用于自动驾驶汽车深度学习的数学模型,用于描述序列决策问题
s0,a0,r1,s1,a1,r2,...,sn−1,an−1,rn,sns_0,a_0,r_1,s_1,a_1,r_2,...,s_{n-1},a_{n-1},r_n,s_ns0,a0,r1,s1,a1,r2,...,sn−1,an−1,rn,sn
sss:state;
aaa:action;
rrr:reward
sns_nsn:Terminal state
-
Major Components of an RL Agent
policy:策略;智能体的行为函数
value function:价值函数;每个状态和\或动作的好坏程度
model:模型;智能体对环境的表征
-
value function
future reward
:R=r1+r2+r3+...+rnR=r_1+r_2+r_3+...+r_nR=r1+r2+r3+...+rn
Rt=rt+rt+1+rr+2+...+rnR_t=r_t+r_{t+1}+r_{r+2}+...+r_nRt=rt+rt+1+rr+2+...+rn
discounted future reward
(environment is stochastic)未来奖励的折扣(环境是随机的):Rt=rt+γrt+1+γ2rt+2+...+γn−trn=rt+γ(rt+1+γ(rt+2+...))=rt+γRt+1R_t=r_t+γr_{t+1}+γ^2r_{t+2}+...+γ^{n-t}r_n = r_t+γ(r_{t+1}+γ(r_{t+2}+...)) = r_t+γR_{t+1}Rt=rt+γrt+1+γ2rt+2+...+γn−trn=rt+γ(rt+1+γ(rt+2+...))=rt+γRt+1
对于智能体来说,一个好的策略是始终选择一个最大化(discounte)未来奖励的动作
-
Q-Learning
Q学习是一种强化学习算法,常用于自动驾驶等机器学习领域
state value function
:状态价值函数:VΠ(s)V^Π(s)VΠ(s)在s开始并跟随Π时的预期返回
state-action value function
:状态-动作价值函数:QΠ(s,a)Q_Π(s,a)QΠ(s,a)在s中开始、执行a和跟随Π时的预期返回
Useful for finding the optimal policy
可用于查找最佳策略可以基于经验进行估计(Monte Carlo)
使用QΠ(s,a)Q_Π(s,a)QΠ(s,a)选择最佳动作
Q-learning: off-policy
非策略使用任何策略来估计Q,以最大化未来的奖励:Q(st,at)=maxRt+1Q(s_t,a_t)=maxR_{t+1}Q(st,at)=maxRt+1
Q直接近似于Q* (Bellman最优性方程)
与所遵循的政策无关
仅需满足一个条件:持续更新每个(s,a)对
Qt+1(st,at)=Qt(st,at)+α(Rt+1+γmaxaQt(st+1,a)−Qt(st,at))Q_{t+1}(s_t,a_t)=Q_t(s_t,a_t)+α(R_{t+1}+γmax_aQ_t(s_{t+1},a)-Q_t(s_t,a_t))Qt+1(st,at)=Qt(st,at)+α(Rt+1+γmaxaQt(st+1,a)−Qt(st,at))
Qt+1(st,at)Q_{t+1}(s_t,a_t)Qt+1(st,at):新状态
Qt(st,at)Q_t(s_t,a_t)Qt(st,at):旧状态
Rt+1R_{t+1}Rt+1:奖励
ααα:学习率
γγγ:discount factor
-
Deep Q-Learning
使用函数(带参数)来近似Q函数
非线性:Q-Network
Q(s,a;θ)≈Q∗(s,a)Q(s,a;\theta)≈Q^*(s,a)Q(s,a;θ)≈Q∗(s,a)
-
Deep Q-Network: Atari
-
training:
bellman equation:Q(s,a)=r+γmaxa′Q(s′,a′)Q(s,a)=r+γmax_{a'}Q(s',a')Q(s,a)=r+γmaxa′Q(s′,a′)
loss function(squared error):L=E[(r+γmaxa′Q(s′,a′)−Q(s,a))]L=E[(r+γmax_{a'}Q(s',a')-Q(s,a))]L=E[(r+γmaxa′Q(s′,a′)−Q(s,a))]
-
Long Short Term Memory(LSTM)Networks
-
LSTM:选择忘记什么和记住什么
-
LSTM Conveyer Belt
LSTM传送带用于传输先前状态和新的数据:
决定忘记什么(状态)
决定记住什么(状态)
决定输出什么(条件判断)
-
step1:决定忘记/忽视什么
ft=σ(Wf⋅[ht−1,xt]+bf)f_t=\sigma(W_f·[h_{t-1},x_t]+b_f)ft=σ(Wf⋅[ht−1,xt]+bf)
-
step2:决定要更新哪些状态值(使用sigmoid函数)以及用哪些值进行更新(使用tanh函数)
it=σ(Wi⋅[ht−1,xt]+bi)i_t=\sigma(W_i·[h_{t-1},x_t]+b_i)it=σ(Wi⋅[ht−1,xt]+bi)
C~t=tanh(Wc⋅[ht−1,xt]+bC)\widetilde{C}_t=tanh(W_c·[h_{t-1},x_t]+b_C)Ct=tanh(Wc⋅[ht−1,xt]+bC)
-
step3:执行遗忘和状态更新
Ct=ft∗Ct−1+it∗C~tC_t=f_t*C_{t-1}+i_t*\widetilde{C}_tCt=ft∗Ct−1+it∗Ct
-
step4:生成输出时使用tanh [-1,1]决定数值,同时使用sigmoid [0,1]进行过滤
ot=σ(Wo[ht−1,xt]+bo)o_t=\sigma(W_o[h_{t-1},x_t]+b_o)ot=σ(Wo[ht−1,xt]+bo)
ht=ot∗tanh(Ct)h_t=o_t*tanh(C_t)ht=ot∗tanh(Ct)
-