深度学习与自动驾驶中的一些技术

深度学习与自动驾驶中的一些技术

强化学习 reinforcement learning
  1. 框架

    1. 智能体在环境中运行
    2. 智能体具备执行动作的能力
    3. 每个动作都会影响智能体的未来状态
    4. 通过奖励信号衡量成功与否
    5. 目标是选择能最大化未来奖励的动作
  2. 马尔可夫决策过程 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

  3. Major Components of an RL Agent

    policy:策略;智能体的行为函数

    value function:价值函数;每个状态和\或动作的好坏程度

    model:模型;智能体对环境的表征

  4. 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)未来奖励的动作

  5. 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

  6. 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)

    1. Deep Q-Network: Atari

    2. 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
  1. LSTM:选择忘记什么和记住什么

  2. LSTM Conveyer Belt

    LSTM传送带用于传输先前状态和新的数据:

    决定忘记什么(状态)

    决定记住什么(状态)

    决定输出什么(条件判断)

    1. 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)

    2. 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)C t=tanh(Wc⋅[ht−1,xt]+bC)

    3. step3:执行遗忘和状态更新

      Ct=ft∗Ct−1+it∗C~tC_t=f_t*C_{t-1}+i_t*\widetilde{C}_tCt=ft∗Ct−1+it∗C t

    4. 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)