From 2e9a4ebd07920d7ee2ec91726b583cacedaa6777 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 14:58:11 +0800 Subject: [PATCH 01/25] Update chapter1_questions&keywords.md Update Something About Interview --- docs/chapter1/chapter1_questions&keywords.md | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/chapter1/chapter1_questions&keywords.md b/docs/chapter1/chapter1_questions&keywords.md index 7d04060..96b02f0 100644 --- a/docs/chapter1/chapter1_questions&keywords.md +++ b/docs/chapter1/chapter1_questions&keywords.md @@ -88,4 +88,25 @@ 答:environment 跟 reward function 不是我们可以控制的,environment 跟 reward function 是在开始学习之前,就已经事先给定的。我们唯一能做的事情是调整 actor 里面的 policy,使得 actor 可以得到最大的 reward。Actor 里面会有一个 policy, 这个 policy 决定了actor 的行为。Policy 就是给一个外界的输入,然后它会输出 actor 现在应该要执行的行为。 +## 3 Something About Interview + +- 高冷的面试官: 看来你对于RL还是有一定了解的,那么可以用一句话谈一下你对于强化学习的认识吗? + +答: 强化学习包含环境,动作和奖励三部分,其本质是agent通过与环境的交互,使得其作出的action所得到的决策得到的总的奖励达到最大,或者说是期望最大。 + +- 高冷的面试官: 你认为强化学习与监督学习和无监督学习有什么区别? + +答: 首先强化学习和无监督学习是不需要标签的,而监督学习需要许多有标签的样本来进行模型的构建;对于强化学习与无监督学习,无监督学习是直接对于给定的数据进行建模,寻找数据(特征)给定的隐藏的结构,而强化学习需要通过延迟奖励学习策略来得到"模型"对于正确目标的远近(通过奖励惩罚函数进行判断),这里我们可以将奖励惩罚函数视为正确目标的一个稀疏、延迟形式。另外强化学习处理的多是序列数据,其很难像监督学习的样本一样满足IID条件。 + +- 高冷的面试官: 根据你上面介绍的内容,你认为强化学习的使用场景有哪些呢? + +答: 七个字的话就是多序列决策问题。或者说是对应的模型未知,需要通过学习逐渐逼近真实模型的问题并且当前的动作会影响环境的状态,即服从马尔可夫性的问题。同时应满足所有状态是可重复到达的(满足可学习型的)。 + +- 高冷的面试官: 强化学习中所谓的损失函数与DL中的损失函数有什么区别呀? + +答: DL中的loss function目的是使预测值和真实值之间的差距最小,而RL中的loss function是是奖励和的期望最大。 + +- 高冷的面试官: 你了解model-free和model-based吗?两者有什么区别呢? + +答: 两者的区别主要在于是否需要对于真实的环境进行建模, model-free不需要对于环境进行建模,直接与真实环境进行交互即可,所以其通常需要较大的数据或者采样工作来优化策略,这也帮助model-free对于真实环境具有更好的泛化性能; 而model-based 需要对于环境进行建模,同时再真实环境与虚拟环境中进行学习,如果建模的环境与真实环境的差异较大,那么会限制其泛化性能。现在通常使用model-free进行模型的构建工作。 From 1c9272074fa9d6b4054a19d260aeafabf81a0985 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 15:08:41 +0800 Subject: [PATCH 02/25] Update chapter1_questions&keywords.md --- docs/chapter1/chapter1_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter1/chapter1_questions&keywords.md b/docs/chapter1/chapter1_questions&keywords.md index 96b02f0..e1db18d 100644 --- a/docs/chapter1/chapter1_questions&keywords.md +++ b/docs/chapter1/chapter1_questions&keywords.md @@ -96,7 +96,7 @@ - 高冷的面试官: 你认为强化学习与监督学习和无监督学习有什么区别? -答: 首先强化学习和无监督学习是不需要标签的,而监督学习需要许多有标签的样本来进行模型的构建;对于强化学习与无监督学习,无监督学习是直接对于给定的数据进行建模,寻找数据(特征)给定的隐藏的结构,而强化学习需要通过延迟奖励学习策略来得到"模型"对于正确目标的远近(通过奖励惩罚函数进行判断),这里我们可以将奖励惩罚函数视为正确目标的一个稀疏、延迟形式。另外强化学习处理的多是序列数据,其很难像监督学习的样本一样满足IID条件。 +答: 首先强化学习和无监督学习是不需要标签的,而监督学习需要许多有标签的样本来进行模型的构建;对于强化学习与无监督学习,无监督学习是直接对于给定的数据进行建模,寻找数据(特征)给定的隐藏的结构,一般对应的聚类问题,而强化学习需要通过延迟奖励学习策略来得到"模型"对于正确目标的远近(通过奖励惩罚函数进行判断),这里我们可以将奖励惩罚函数视为正确目标的一个稀疏、延迟形式。另外强化学习处理的多是序列数据,样本之间通常具有强相关性,但其很难像监督学习的样本一样满足IID条件。 - 高冷的面试官: 根据你上面介绍的内容,你认为强化学习的使用场景有哪些呢? From fd96771ca1c252b160a47bfd0889baec76affeea Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 17:29:45 +0800 Subject: [PATCH 03/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index 0fe703f..be2b195 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -65,3 +65,39 @@ - 第一个步骤是 **policy evaluation** ,即当前我们在优化这个 policy $\pi$ ,所以在优化过程中得到一个最新的这个 policy 。 - 第二个步骤是 **policy improvement** ,即取得价值函数后,进一步推算出它的 Q 函数。得到 Q 函数过后,那我们就直接去取它的极大化。 3. **Value iteration:** 我们一直去迭代 Bellman Optimality Equation,到了最后,它能逐渐趋向于最佳的策略,这是 value iteration 算法的精髓,就是我们去为了得到最佳的 $v^*$ ,对于每个状态它的 $v^*$ 这个值,我们直接把这个 Bellman Optimality Equation 进行迭代,迭代了很多次之后它就会收敛到最佳的policy以及其对应的状态,这里面是没有policy function的。 + + +## 3 Something About Interview + +- 高冷的面试官: 请问马尔可夫过程是什么?马尔可夫决策过程又是什么?其中马尔可夫最重要的性质是什么呢? + + 答: 马尔可夫过程是是一个二元组 $ $ ,S为状态的集合,P为状态转移概率矩阵; + 而马尔可夫决策过程是一个五元组 $ $,其中 $R$ 表示为从 $S$ 到 $S'$ 能够获得的奖励期望, $\gamma$为折扣因子, $A$ 为动作集合. + 马尔可夫最重要的性质是下一个状态只与当前状态有关,与之前的状态无关,也就是 $P[S_{t+1} | S_t] = P[S_{t+1}|S_1,S_2,...,S_t]$ + +- 高冷的面试官: 请问我们一般怎么求解马尔可夫决策过程? + + 答: 我们直接求解马尔可夫决策过程可以直接求解贝尔曼等式(动态规划方程),即$V(s)=R(S)+ \gamma \sum_{s' \in S}P(s'|s)V(s')$ ,特别地,矩阵形式:$V=R+\gamma PV$.但是贝尔曼等式很难求解且计算复杂度较高,所以可以使用动态规划,蒙特卡洛,时间差分等方法求解. + +- 高冷的面试官: 请问如果数据流不满足马尔科夫性怎么办?应该如何处理? + + 答: 如果不满足马尔科夫性,即下一个状态与之前的状态也有关,若还仅仅用当前的状态来进行求解决策过程,势必导致决策的泛化能力变差。 为了解决这个问题,可以利用RNN对历史信息建模,获得包含历史信息的状态表征。表征过程可以 使用注意力机制等手段。最后在表征状态空间求解马尔可夫决策过程问题。 + +- 高冷的面试官: 请分别写出基于状态值函数的贝尔曼方程以及基于动作值的贝尔曼方程. + + 答: + 1. 基于状态值函数的贝尔曼方程: + +$$ +v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} +$$ + + 2. 基于动作值的贝尔曼方程: + +$$ +q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] +$$ +- 高冷的面试官: 请问最佳价值函数(optimal value function) $v^{*}$ 和最佳策略(optimal policy) $ \pi^{*} $ 为什么等价呢? + + 答: 最佳价值函数的定义为: $$ v^{*}(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $\pi$ 来让每个状态的价值最大。$v^{*}$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 + From 157db18d0b1ea0605c040d9c8ab72aef81b606cb Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 17:31:30 +0800 Subject: [PATCH 04/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index be2b195..228430c 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -97,7 +97,7 @@ $$ $$ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] $$ -- 高冷的面试官: 请问最佳价值函数(optimal value function) $v^{*}$ 和最佳策略(optimal policy) $ \pi^{*} $ 为什么等价呢? +- 高冷的面试官: 请问最佳价值函数(optimal value function) $v^$ 和最佳策略(optimal policy) $ \pi^$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v^{*}(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $\pi$ 来让每个状态的价值最大。$v^{*}$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 + 答: 最佳价值函数的定义为: $$ v^(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $\pi$ 来让每个状态的价值最大。$v^$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From a52b7a90554237e674ef0b7849c857b5a16c0d03 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 17:32:18 +0800 Subject: [PATCH 05/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index 228430c..dae73b7 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -86,13 +86,13 @@ - 高冷的面试官: 请分别写出基于状态值函数的贝尔曼方程以及基于动作值的贝尔曼方程. 答: - 1. 基于状态值函数的贝尔曼方程: + 1. 基于状态值函数的贝尔曼方程: $$ v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} $$ - 2. 基于动作值的贝尔曼方程: + 2. 基于动作值的贝尔曼方程: $$ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] From 07152d285db2b93527e9dc6cf1c8072444362191 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:47:10 +0800 Subject: [PATCH 06/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index dae73b7..faa8c6b 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -86,18 +86,18 @@ - 高冷的面试官: 请分别写出基于状态值函数的贝尔曼方程以及基于动作值的贝尔曼方程. 答: - 1. 基于状态值函数的贝尔曼方程: +1. 基于状态值函数的贝尔曼方程: $$ v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} $$ - 2. 基于动作值的贝尔曼方程: +2. 基于动作值的贝尔曼方程: $$ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] $$ -- 高冷的面试官: 请问最佳价值函数(optimal value function) $v^$ 和最佳策略(optimal policy) $ \pi^$ 为什么等价呢? +- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^$$ 和最佳策略(optimal policy) $$\pi^$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v^(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $\pi$ 来让每个状态的价值最大。$v^$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 + 答: 最佳价值函数的定义为: $$ v^(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v^$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From cbce04c541ddd2097914a78dac76341a49c503dd Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:49:08 +0800 Subject: [PATCH 07/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index faa8c6b..c153aff 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -99,5 +99,5 @@ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] $$ - 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^$$ 和最佳策略(optimal policy) $$\pi^$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v^(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v^$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 + 答: 最佳价值函数的定义为: $$ v^ (s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v^$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From 1c8e91e3bb80fc975313830a770a05f38bda4dea Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:55:31 +0800 Subject: [PATCH 08/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index c153aff..e610e1b 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -85,19 +85,19 @@ - 高冷的面试官: 请分别写出基于状态值函数的贝尔曼方程以及基于动作值的贝尔曼方程. - 答: -1. 基于状态值函数的贝尔曼方程: + 答: 基于状态值函数的贝尔曼方程: $$ v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} $$ -2. 基于动作值的贝尔曼方程: + 基于动作值的贝尔曼方程: $$ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] $$ -- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^$$ 和最佳策略(optimal policy) $$\pi^$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v^ (s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v^$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 +- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v{^}$$ 和最佳策略(optimal policy) $$\pi{^}$$ 为什么等价呢? + + 答: 最佳价值函数的定义为: $$ v{^}(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From fd078f78910c6cfd5571ef7ab7a69ba883af2d9f Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:57:11 +0800 Subject: [PATCH 09/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index e610e1b..702cb08 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -99,5 +99,5 @@ $$ - 高冷的面试官: 请问最佳价值函数(optimal value function) $$v{^}$$ 和最佳策略(optimal policy) $$\pi{^}$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v{^}(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 + 答: 最佳价值函数的定义为: $$ v{^}(s)=\max_{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From 301fdcf9e9d8df91b943fd41fe733f312122a845 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:57:53 +0800 Subject: [PATCH 10/25] Create chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index 702cb08..e610e1b 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -99,5 +99,5 @@ $$ - 高冷的面试官: 请问最佳价值函数(optimal value function) $$v{^}$$ 和最佳策略(optimal policy) $$\pi{^}$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v{^}(s)=\max_{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 + 答: 最佳价值函数的定义为: $$ v{^}(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From ec577286be92cf426b1a9f81a7e5e8e2939dcaa8 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:59:24 +0800 Subject: [PATCH 11/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index e610e1b..c8380cd 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -89,15 +89,15 @@ $$ v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} -$$ + 基于动作值的贝尔曼方程: $$ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] -$$ -- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v{^}$$ 和最佳策略(optimal policy) $$\pi{^}$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$ v{^}(s)=\max _{\pi} v^{\pi}(s) $$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 +- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^$$ 和最佳策略(optimal policy) $$\pi^$$ 为什么等价呢? + + 答: 最佳价值函数的定义为: $$v^(s)=\max_{\pi} v^{\pi}(s)$$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From b231f7c65d4d468e497a3de6e72d643ca3ed4dbb Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 21:04:30 +0800 Subject: [PATCH 12/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index c8380cd..7ab79db 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -85,19 +85,27 @@ - 高冷的面试官: 请分别写出基于状态值函数的贝尔曼方程以及基于动作值的贝尔曼方程. - 答: 基于状态值函数的贝尔曼方程: - + 答: + + 1. 基于状态值函数的贝尔曼方程: + $$ v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} +$$ - 基于动作值的贝尔曼方程: + 2. 基于动作值的贝尔曼方程: $$ q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] +$$ -- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^$$ 和最佳策略(optimal policy) $$\pi^$$ 为什么等价呢? - 答: 最佳价值函数的定义为: $$v^(s)=\max_{\pi} v^{\pi}(s)$$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v{^}$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),如下式所示: $$ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $$ Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 - +- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^*$$ 和最佳策略(optimal policy) $$\pi^*$$ 为什么等价呢? + + 答: 最佳价值函数的定义为: $$v^* (s)=\max_{\pi} v^{\pi}(s)$$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v^*$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),即 + $$ + \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) + $$ + Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From ddee7c64726b21fa81d62db236bce41dc516f9dc Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Wed, 3 Feb 2021 21:07:15 +0800 Subject: [PATCH 13/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 23 ++++---------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index 7ab79db..8d351c5 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -87,25 +87,10 @@ 答: - 1. 基于状态值函数的贝尔曼方程: + - 基于状态值函数的贝尔曼方程: $v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]}$ + - 基于动作值的贝尔曼方程: $q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')]$ -$$ -v_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma v_{\pi}(s')]} -$$ +- 高冷的面试官: 请问最佳价值函数(optimal value function) $v^*$ 和最佳策略(optimal policy) $\pi^*$ 为什么等价呢? + 答: 最佳价值函数的定义为: $v^* (s)=\max_{\pi} v^{\pi}(s)$ 即我们去搜索一种 policy $\pi$ 来让每个状态的价值最大。$v^*$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),即 $ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $. Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 - - 2. 基于动作值的贝尔曼方程: -$$ -q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma v_{\pi}(s')] -$$ - - - -- 高冷的面试官: 请问最佳价值函数(optimal value function) $$v^*$$ 和最佳策略(optimal policy) $$\pi^*$$ 为什么等价呢? - - 答: 最佳价值函数的定义为: $$v^* (s)=\max_{\pi} v^{\pi}(s)$$ 即我们去搜索一种 policy $$\pi$$ 来让每个状态的价值最大。$$v^*$$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),即 - $$ - \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) - $$ - Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 From 4d8c1886d4ff4261c211f08156434618d6859164 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 15:18:30 +0800 Subject: [PATCH 14/25] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 42 ++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index d5d71cb..831bf4f 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -50,3 +50,45 @@ 1. Sarsa 就是一个典型的 on-policy 策略,它只用一个 $\pi$ ,为了兼顾探索和利用,所以它训练的时候会显得有点胆小怕事。它在解决悬崖问题的时候,会尽可能地离悬崖边上远远的,确保说哪怕自己不小心探索了一点了,也还是在安全区域内不不至于跳进悬崖。 2. Q-learning 是一个比较典型的 off-policy 的策略,它有目标策略 target policy,一般用 $\pi$ 来表示。然后还有行为策略 behavior policy,用 $\mu$ 来表示。它分离了目标策略跟行为策略。Q-learning 就可以大胆地用 behavior policy 去探索得到的经验轨迹来去优化我的目标策略。这样子我更有可能去探索到最优的策略。 3. 比较 Q-learning 和 Sarsa 的更新公式可以发现,Sarsa 并没有选取最大值的 max 操作。因此,Q-learning 是一个非常激进的算法,希望每一步都获得最大的利益;而 Sarsa 则相对非常保守,会选择一条相对安全的迭代路线。 + + +## 3 Something About Interview + +- 高冷的面试官:同学,你能否简述on-policy和off-policy的区别? + + 答: off-policy和on-policy的根本区别在于生成样本的policy和参数更新时的policy是否相同。对于on-policy,行为策略和要优化的策略是一个策略,更新了策略后,就用该策略的最新版本对于数据进行采样;对于off-policy,使用任意的一个行为策略来对于数据进行采样,并利用其更新目标策略。如果举例来说,Q-learning在计算下一状态的预期收益时使用了max操作,直接选择最优动作,而当前policy并不一定能选择到最优的action,因此这里生成样本的policy和学习时的policy不同,所以Q-learning为off-policy算法;相对应的SARAS则是基于当前的policy直接执行一次动作选择,然后用这个样本更新当前的policy,因此生成样本的policy和学习时的policy相同,所以SARAS算法为on-policy算法。 + +- 高冷的面试官:小同学,能否讲一下Q-Learning,最好可以写出其 $Q(s,a)$ 的更新公式。另外,它是on-policy还是off-policy,为什么? + + 答: Q-learning是通过计算最优动作值函数来求策略的一种时序差分的学习方法,其更新公式为: + $$ + Q(s, a) \larr Q(s, a) + \alpha [r(s,a) + \gamma \max_{a'} Q(s', a') - Q(s, a)] + $$ + 其是off-policy的,由于是Q更新使用了下一个时刻的最大值,所以我们只关心哪个动作使得 $Q(s_{t+1}, a)$ 取得最大值,而实际到底采取了哪个动作(行为策略),并不关心。这表明优化策略并没有用到行为策略的数据,所以说它是 off-policy 的。 + +- 高冷的面试官:小朋友,能否讲一下SARSA,最好可以写出其Q(s,a)的更新公式。另外,它是on-policy还是off-policy,为什么? + + 答:SARSA可以算是Q-learning的改进(这句话出自「神经网络与深度学习」的第 342 页)(可参考SARSA「on-line q-learning using connectionist systems」的 abstract 部分),其更新公式为: + $$ + Q(s, a) \larr Q(s, a) + \alpha [r(s,a) + \gamma Q(s', a') - Q(s, a)] + $$ + + + 其为on-policy的,SARSA必须执行两次动作得到 $(s,a,r,s',a') $才可以更新一次;而且 $a'$ 是在特定策略 $\pi$ 的指导下执行的动作,因此估计出来的 $Q(s,a)$ 是在该策略 $\pi$ 之下的Q-value,样本生成用的 $\pi$ 和估计的 $\pi$ 是同一个,因此是on-policy。 + +- 高冷的面试官:请问value-based和policy-based的区别是什么? + + 答: + + 1. 生成policy上的差异:前者随机,后者确定。Value-Base中的 action-value估计值最终会收敛到对应的true values(通常是不同的有限数,可以转化为0到1之间的概率),因此通常会获得一个确定的策略(deterministic policy);而Policy-Based不会收敛到一个确定性的值,另外他们会趋向于生成optimal stochastic policy。如果optimal policy是deterministic的,那么optimal action对应的性能函数将远大于suboptimal actions对应的性能函数,性能函数的大小代表了概率的大小。 + 2. 动作空间是否连续,前者离散,后者连续。Value-Base,对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优action,会在这附近徘徊,过小的离散间距会使得action的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度;而Policy-Based适用于连续的动作空间,在连续的动作空间中,可以不用计算每个动作的概率,而是通过Gaussian distribution (正态分布)选择action。 + 3. value-based,例如Q-learning,是通过求解最优值函数间接的求解最优策略;policy-based,例如REINFORCE,Monte-Carlo Policy Gradient,等方法直接将策略参数化,通过策略搜索,策略梯度或者进化方法来更新策略的参数以最大化回报。基于值函数的方法不易扩展到连续动作空间,并且当同时采用非线性近似、自举和离策略时会有收敛性问题。策略梯度具有良好的收敛性证明。 + 4. 补充:对于值迭代和策略迭代:策略迭代。它有两个循环,一个是在策略估计的时候,为了求当前策略的值函数需要迭代很多次。另外一个是外面的大循环,就是策略评估,策略提升这个循环。值迭代算法则是一步到位,直接估计最优值函数,因此没有策略提升环节。 + +- 高冷的面试官:请简述以下时序差分(Temporal Difference,TD)算法。 + + 答:TD算法是使用广义策略迭代来更新Q函数的方法,核心使用了自举(bootstrapping),即值函数的更新使用了下一个状态的值函数来估计当前状态的值。也就是使用下一步的 $Q$ 值 $Q(S_{t+1},A_{t+1})$ 来更新我这一步的 Q 值 $Q(S_t,A_t) $。完整的计算公式如下: + $$ + Q(S_t,A_t) \larr Q(S_t,A_t) + \alpha [R_{t+1}+\gamma Q(S_{t+1},A_{t+1})] + $$ + From d50b34636453e02002dbda8cbe27c200ba55285b Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 16:34:48 +0800 Subject: [PATCH 15/25] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index 831bf4f..65185c1 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -92,3 +92,7 @@ Q(S_t,A_t) \larr Q(S_t,A_t) + \alpha [R_{t+1}+\gamma Q(S_{t+1},A_{t+1})] $$ +- 高冷的面试官:请问蒙特卡洛方法(Monte Carlo Algorithm,MC)和时序差分(Temporal Difference,TD)算法是无偏估计吗?另外谁的方法更大呢?为什么呢? + +答:蒙特卡洛方法(MC)是无偏估计,时序差分(TD)是有偏估计;MC的方差较大,TD的方差较小,原因在于TD中使用了自举(bootstrapping)的方法,实现了基于平滑的效果,导致估计的值函数的方差更小。 + From e4aa7ec1b110a5a509786c274833445a3219350d Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 16:35:50 +0800 Subject: [PATCH 16/25] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index 65185c1..489dc69 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -94,5 +94,5 @@ - 高冷的面试官:请问蒙特卡洛方法(Monte Carlo Algorithm,MC)和时序差分(Temporal Difference,TD)算法是无偏估计吗?另外谁的方法更大呢?为什么呢? -答:蒙特卡洛方法(MC)是无偏估计,时序差分(TD)是有偏估计;MC的方差较大,TD的方差较小,原因在于TD中使用了自举(bootstrapping)的方法,实现了基于平滑的效果,导致估计的值函数的方差更小。 + 答:蒙特卡洛方法(MC)是无偏估计,时序差分(TD)是有偏估计;MC的方差较大,TD的方差较小,原因在于TD中使用了自举(bootstrapping)的方法,实现了基于平滑的效果,导致估计的值函数的方差更小。 From 755b7bfcfc14cb1b9df5d79160b8fe8a5344d24e Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 17:01:52 +0800 Subject: [PATCH 17/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index 8d351c5..f59962b 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -94,3 +94,9 @@ 答: 最佳价值函数的定义为: $v^* (s)=\max_{\pi} v^{\pi}(s)$ 即我们去搜索一种 policy $\pi$ 来让每个状态的价值最大。$v^*$ 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy),即 $ \pi^{*}(s)=\underset{\pi}{\arg \max }~ v^{\pi}(s) $. Optimal policy 使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个 optimal value function,就可以说某一个 MDP 的环境被解。在这种情况下,它的最佳的价值函数是一致的,就它达到的这个上限的值是一致的,但这里可能有多个最佳的 policy,就是说多个 policy 可以取得相同的最佳价值。 +- 高冷的面试官:能不能手写一下第n步的值函数更新公式呀?另外,当n越来越大时,值函数的期望和方差分别变大还是变小呢? + +答:$n$越大,方差越大,期望偏差越小。值函数的更新公式? 话不多说,公式如下: + $$ + Q\left(S, A\right) \leftarrow Q\left(S, A\right)+\alpha\left[\sum_{i=1}^{n} \gamma^{i-1} R_{t+i}+\gamma^{n} \max _{a} Q\left(S',a\right)-Q\left(S, A\right)\right] + $$ From af67b34d42ee4dc4f9ed7fbde70089ed198375ae Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 17:02:13 +0800 Subject: [PATCH 18/25] Update chapter2_questions&keywords.md --- docs/chapter2/chapter2_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter2/chapter2_questions&keywords.md b/docs/chapter2/chapter2_questions&keywords.md index f59962b..eeabce1 100644 --- a/docs/chapter2/chapter2_questions&keywords.md +++ b/docs/chapter2/chapter2_questions&keywords.md @@ -96,7 +96,7 @@ - 高冷的面试官:能不能手写一下第n步的值函数更新公式呀?另外,当n越来越大时,值函数的期望和方差分别变大还是变小呢? -答:$n$越大,方差越大,期望偏差越小。值函数的更新公式? 话不多说,公式如下: + 答:$n$越大,方差越大,期望偏差越小。值函数的更新公式? 话不多说,公式如下: $$ Q\left(S, A\right) \leftarrow Q\left(S, A\right)+\alpha\left[\sum_{i=1}^{n} \gamma^{i-1} R_{t+i}+\gamma^{n} \max _{a} Q\left(S',a\right)-Q\left(S, A\right)\right] $$ From a4fd030699ea1b6c7c423b52cb6d279dff466226 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 17:43:00 +0800 Subject: [PATCH 19/25] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index 489dc69..daf4e54 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -96,3 +96,16 @@ 答:蒙特卡洛方法(MC)是无偏估计,时序差分(TD)是有偏估计;MC的方差较大,TD的方差较小,原因在于TD中使用了自举(bootstrapping)的方法,实现了基于平滑的效果,导致估计的值函数的方差更小。 +- 高冷的面试官:能否简单说下动态规划、蒙特卡洛和时序差分的异同点? + +答: + + - 相同点:都用于进行值函数的描述与更新,并且所有方法都是基于对未来事件的展望来计算一个回溯值。 + + - 不同点:蒙特卡洛和TD算法隶属于model-free,而动态规划属于model-based;TD算法和蒙特卡洛的方法,因为都是基于model-free的方法,因而对于后续状态的获知也都是基于试验的方法;TD算法和动态规划的策略评估,都能基于当前状态的下一步预测情况来得到对于当前状态的值函数的更新。 + + 另外,TD算法不需要等到实验结束后才能进行当前状态的值函数的计算与更新,而蒙特卡洛的方法需要试验交互,产生一整条的马尔科夫链并直到最终状态才能进行更新。TD算法和动态规划的策略评估不同之处为model-free和model-based 这一点,动态规划可以凭借已知转移概率就能推断出来后续的状态情况,而TD只能借助试验才能知道。 + + 蒙特卡洛方法和TD方法的不同在于,蒙特卡洛方法进行完整的采样来获取了长期的回报值,因而在价值估计上会有着更小的偏差,但是也正因为收集了完整的信息,所以价值的方差会更大,原因在于毕竟基于试验的采样得到,和真实的分布还是有差距,不充足的交互导致的较大方差。而TD算法与其相反,因为只考虑了前一步的回报值 其他都是基于之前的估计值,因而估计具有偏差但方差较小。 + + - 三者的联系:对于$TD(\lambda)$方法,如果 $ \lambda = 0$ ,那么此时等价于TD,即只考虑下一个状态;如果$ \lambda = 1$,等价于MC,即考虑 $T-1$ 个后续状态即到整个episode序列结束。 From 49cb06a7a6f437c0ee6529a4ca09873a5eee97ba Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 17:45:36 +0800 Subject: [PATCH 20/25] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index daf4e54..7ba1573 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -98,7 +98,7 @@ - 高冷的面试官:能否简单说下动态规划、蒙特卡洛和时序差分的异同点? -答: + 答: - 相同点:都用于进行值函数的描述与更新,并且所有方法都是基于对未来事件的展望来计算一个回溯值。 From 3aa8d4daef3972039ec5268c6bb025f5bc8452a4 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 17:53:25 +0800 Subject: [PATCH 21/25] Update chapter3_questions&keywords.md --- docs/chapter3/chapter3_questions&keywords.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/chapter3/chapter3_questions&keywords.md b/docs/chapter3/chapter3_questions&keywords.md index 7ba1573..01ea01c 100644 --- a/docs/chapter3/chapter3_questions&keywords.md +++ b/docs/chapter3/chapter3_questions&keywords.md @@ -72,8 +72,6 @@ $$ Q(s, a) \larr Q(s, a) + \alpha [r(s,a) + \gamma Q(s', a') - Q(s, a)] $$ - - 其为on-policy的,SARSA必须执行两次动作得到 $(s,a,r,s',a') $才可以更新一次;而且 $a'$ 是在特定策略 $\pi$ 的指导下执行的动作,因此估计出来的 $Q(s,a)$ 是在该策略 $\pi$ 之下的Q-value,样本生成用的 $\pi$ 和估计的 $\pi$ 是同一个,因此是on-policy。 - 高冷的面试官:请问value-based和policy-based的区别是什么? From ad54b6316b5048146a22fc932551dbed635fe493 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Thu, 4 Feb 2021 17:54:29 +0800 Subject: [PATCH 22/25] Update chapter1_questions&keywords.md --- docs/chapter1/chapter1_questions&keywords.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/chapter1/chapter1_questions&keywords.md b/docs/chapter1/chapter1_questions&keywords.md index e1db18d..88d525e 100644 --- a/docs/chapter1/chapter1_questions&keywords.md +++ b/docs/chapter1/chapter1_questions&keywords.md @@ -92,21 +92,21 @@ - 高冷的面试官: 看来你对于RL还是有一定了解的,那么可以用一句话谈一下你对于强化学习的认识吗? -答: 强化学习包含环境,动作和奖励三部分,其本质是agent通过与环境的交互,使得其作出的action所得到的决策得到的总的奖励达到最大,或者说是期望最大。 + 答: 强化学习包含环境,动作和奖励三部分,其本质是agent通过与环境的交互,使得其作出的action所得到的决策得到的总的奖励达到最大,或者说是期望最大。 - 高冷的面试官: 你认为强化学习与监督学习和无监督学习有什么区别? -答: 首先强化学习和无监督学习是不需要标签的,而监督学习需要许多有标签的样本来进行模型的构建;对于强化学习与无监督学习,无监督学习是直接对于给定的数据进行建模,寻找数据(特征)给定的隐藏的结构,一般对应的聚类问题,而强化学习需要通过延迟奖励学习策略来得到"模型"对于正确目标的远近(通过奖励惩罚函数进行判断),这里我们可以将奖励惩罚函数视为正确目标的一个稀疏、延迟形式。另外强化学习处理的多是序列数据,样本之间通常具有强相关性,但其很难像监督学习的样本一样满足IID条件。 + 答: 首先强化学习和无监督学习是不需要标签的,而监督学习需要许多有标签的样本来进行模型的构建;对于强化学习与无监督学习,无监督学习是直接对于给定的数据进行建模,寻找数据(特征)给定的隐藏的结构,一般对应的聚类问题,而强化学习需要通过延迟奖励学习策略来得到"模型"对于正确目标的远近(通过奖励惩罚函数进行判断),这里我们可以将奖励惩罚函数视为正确目标的一个稀疏、延迟形式。另外强化学习处理的多是序列数据,样本之间通常具有强相关性,但其很难像监督学习的样本一样满足IID条件。 - 高冷的面试官: 根据你上面介绍的内容,你认为强化学习的使用场景有哪些呢? -答: 七个字的话就是多序列决策问题。或者说是对应的模型未知,需要通过学习逐渐逼近真实模型的问题并且当前的动作会影响环境的状态,即服从马尔可夫性的问题。同时应满足所有状态是可重复到达的(满足可学习型的)。 + 答: 七个字的话就是多序列决策问题。或者说是对应的模型未知,需要通过学习逐渐逼近真实模型的问题并且当前的动作会影响环境的状态,即服从马尔可夫性的问题。同时应满足所有状态是可重复到达的(满足可学习型的)。 - 高冷的面试官: 强化学习中所谓的损失函数与DL中的损失函数有什么区别呀? -答: DL中的loss function目的是使预测值和真实值之间的差距最小,而RL中的loss function是是奖励和的期望最大。 + 答: DL中的loss function目的是使预测值和真实值之间的差距最小,而RL中的loss function是是奖励和的期望最大。 - 高冷的面试官: 你了解model-free和model-based吗?两者有什么区别呢? -答: 两者的区别主要在于是否需要对于真实的环境进行建模, model-free不需要对于环境进行建模,直接与真实环境进行交互即可,所以其通常需要较大的数据或者采样工作来优化策略,这也帮助model-free对于真实环境具有更好的泛化性能; 而model-based 需要对于环境进行建模,同时再真实环境与虚拟环境中进行学习,如果建模的环境与真实环境的差异较大,那么会限制其泛化性能。现在通常使用model-free进行模型的构建工作。 + 答: 两者的区别主要在于是否需要对于真实的环境进行建模, model-free不需要对于环境进行建模,直接与真实环境进行交互即可,所以其通常需要较大的数据或者采样工作来优化策略,这也帮助model-free对于真实环境具有更好的泛化性能; 而model-based 需要对于环境进行建模,同时再真实环境与虚拟环境中进行学习,如果建模的环境与真实环境的差异较大,那么会限制其泛化性能。现在通常使用model-free进行模型的构建工作。 From 804cdba17b9fdf2a50517e3eddb5a47fd62b2379 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Fri, 5 Feb 2021 23:40:39 +0800 Subject: [PATCH 23/25] Update chapter4_questions&keywords.md --- docs/chapter4/chapter4_questions&keywords.md | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/docs/chapter4/chapter4_questions&keywords.md b/docs/chapter4/chapter4_questions&keywords.md index 2402a6f..b58d456 100644 --- a/docs/chapter4/chapter4_questions&keywords.md +++ b/docs/chapter4/chapter4_questions&keywords.md @@ -68,3 +68,40 @@ - 请详细描述REINFORCE的计算过程。 答:首先我们需要根据一个确定好的policy model来输出每一个可能的action的概率,对于所有的action的概率,我们使用sample方法(或者是随机的方法)去选择一个action与环境进行交互,同时环境就会给我们反馈一整个episode数据。对于此episode数据输入到learn函数中,并根据episode数据进行loss function的构造,通过adam等优化器的优化,再来更新我们的policy model。 + + +## 3 Something About Interview + +- 高冷的面试官:同学来吧,给我手工推导一下策略梯度公式的计算过程。 + + 答:首先我们目的是最大化reward函数,即调整 $\theta$ ,使得期望回报最大,可以用公式表示如下 + $$ + J(\theta)=E_{\tau \sim p_{\theta(\mathcal{T})}}[\sum_tr(s_t,a_t)] + $$ + 对于上面的式子, $\tau$ 表示从从开始到结束的一条完整路径。通常,对于最大化问题,我们可以使用梯度上升算法来找到最大值,即 + $$ + \theta^* = \theta + \alpha\nabla J({\theta}) + $$ + 所以我们仅仅需要计算(更新)$\nabla J({\theta})$ ,也就是计算回报函数 $J({\theta})$ 关于 $\theta$ 的梯度,也就是策略梯度,计算方法如下: + $$ + \nabla_{\theta}J(\theta) = \int {\nabla}_{\theta}p_{\theta}(\tau)r(\tau)d_{\tau} + =\int p_{\theta}{\nabla}_{\theta}logp_{\theta}(\tau)r(\tau)d_{\tau}=E_{\tau \sim p_{\theta}(\tau)}[{\nabla}_{\theta}logp_{\theta}(\tau)r(\tau)] + $$ + 接着我们继续讲上式展开,对于 $p_{\theta}(\tau)$ ,即 $p_{\theta}(\tau|{\theta})$ : + $$ + p_{\theta}(\tau|{\theta}) = p(s_1)\prod_{t=1}^T \pi_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t) + $$ + 取对数后为: + $$ + logp_{\theta}(\tau|{\theta}) = logp(s_1)+\sum_{t=1}^T log\pi_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t) + $$ + 继续求导: + $$ + \nabla logp_{\theta}(\tau|{\theta}) = \sum_{t=1}^T \nabla_{\theta}log \pi_{\theta}(a_t|s_t) + $$ + 带入第三个式子,可以将其化简为: + $$ + \nabla_{\theta}J(\theta) =E_{\tau \sim p_{\theta}(\tau)}[{\nabla}_{\theta}logp_{\theta}(\tau)r(\tau)] = E_{\tau \sim p_{\theta}}[(\nabla_{\theta}log\pi_{\theta}(a_t|s_t))(\sum_{t=1}^Tr(s_t,a_t))] = \frac{1}{N}\sum_{i=1}^N[(\sum_{t=1}^T\nabla_{\theta}log \pi_{\theta}(a_{i,t}|s_{i,t}))(\sum_{t=1}^Nr(s_{i,t},a_{i,t}))] + $$ + + From 0d43b83ab69b07a9a8466e950f7449b1453c57a6 Mon Sep 17 00:00:00 2001 From: David Young <46375780+yyysjz1997@users.noreply.github.com> Date: Fri, 5 Feb 2021 23:44:11 +0800 Subject: [PATCH 24/25] Update chapter4_questions&keywords.md --- docs/chapter4/chapter4_questions&keywords.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/chapter4/chapter4_questions&keywords.md b/docs/chapter4/chapter4_questions&keywords.md index b58d456..83043bd 100644 --- a/docs/chapter4/chapter4_questions&keywords.md +++ b/docs/chapter4/chapter4_questions&keywords.md @@ -104,4 +104,13 @@ \nabla_{\theta}J(\theta) =E_{\tau \sim p_{\theta}(\tau)}[{\nabla}_{\theta}logp_{\theta}(\tau)r(\tau)] = E_{\tau \sim p_{\theta}}[(\nabla_{\theta}log\pi_{\theta}(a_t|s_t))(\sum_{t=1}^Tr(s_t,a_t))] = \frac{1}{N}\sum_{i=1}^N[(\sum_{t=1}^T\nabla_{\theta}log \pi_{\theta}(a_{i,t}|s_{i,t}))(\sum_{t=1}^Nr(s_{i,t},a_{i,t}))] $$ + - 高冷的面试官:可以说一下你了解到的基于梯度策略的优化时的小技巧吗? + + 答: + + 1. **Add a baseline:**为了防止所有的reward都大于0,从而导致每一个stage和action的变换,会使得每一项的概率都会上升。所以通常为了解决这个问题,我们把reward 减掉一项叫做 b,这项 b 叫做 baseline。你减掉这项 b 以后,就可以让 $R(\tau^n)-b$ 这一项, 有正有负。 所以如果得到的 total reward $R(\tau^n)$ 大于 b 的话,就让它的概率上升。如果这个 total reward 小于 b,就算它是正的,正的很小也是不好的,你就要让这一项的概率下降。 如果$R(\tau^n) Date: Fri, 5 Feb 2021 23:44:36 +0800 Subject: [PATCH 25/25] Update chapter4_questions&keywords.md --- docs/chapter4/chapter4_questions&keywords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter4/chapter4_questions&keywords.md b/docs/chapter4/chapter4_questions&keywords.md index 83043bd..119e976 100644 --- a/docs/chapter4/chapter4_questions&keywords.md +++ b/docs/chapter4/chapter4_questions&keywords.md @@ -104,7 +104,7 @@ \nabla_{\theta}J(\theta) =E_{\tau \sim p_{\theta}(\tau)}[{\nabla}_{\theta}logp_{\theta}(\tau)r(\tau)] = E_{\tau \sim p_{\theta}}[(\nabla_{\theta}log\pi_{\theta}(a_t|s_t))(\sum_{t=1}^Tr(s_t,a_t))] = \frac{1}{N}\sum_{i=1}^N[(\sum_{t=1}^T\nabla_{\theta}log \pi_{\theta}(a_{i,t}|s_{i,t}))(\sum_{t=1}^Nr(s_{i,t},a_{i,t}))] $$ - - 高冷的面试官:可以说一下你了解到的基于梯度策略的优化时的小技巧吗? +- 高冷的面试官:可以说一下你了解到的基于梯度策略的优化时的小技巧吗? 答: