diff --git a/8-Reinforcement/2-Gym/translations/README.ko.md b/8-Reinforcement/2-Gym/translations/README.ko.md index 8fc05e8f..bf2e3256 100644 --- a/8-Reinforcement/2-Gym/translations/README.ko.md +++ b/8-Reinforcement/2-Gym/translations/README.ko.md @@ -121,7 +121,7 @@ cartpole balancing 문제를 풀려면, 대상 환경을 초기화할 필요가 ## State discretization -Q=Learning에서, 각 state에서 할 것을 정의하는 Q-Table을 만들 필요가 있습니다. 이렇게 하려면, state가 **discreet**으로 되어야하고, 더 정확해지면, 한정된 discrete 값 숫자를 포함해야 합니다. 그래서, 관측치를 어떻게든지 **discretize** 해서, 한정된 state 세트와 맵핑할 필요가 있습니다. +Q-Learning에서, 각 state에서 할 것을 정의하는 Q-Table을 만들 필요가 있습니다. 이렇게 하려면, state가 **discreet**으로 되어야하고, 더 정확해지면, 한정된 discrete 값 숫자를 포함해야 합니다. 그래서, 관측치를 어떻게든지 **discretize** 해서, 한정된 state 세트와 맵핑할 필요가 있습니다. 이렇게 할 수 있는 몇 방식이 있습니다: @@ -337,4 +337,4 @@ env.close() 지금부터 agent에 게임에서 원하는 state를 정의하는 보상 함수로 제공하고, 검색 공간을 지능적으로 탐색할 기회를 주며 좋은 결과로 도달하도록 어떻게 훈련하는지 배웠습니다. discrete적이고 연속 환경의 케이스에서 Q-Learning 알고리즘을 성공적으로 적용했지만, discrete적인 액션으로 했습니다. -Atari 게임 스크린에서의 이미지처럼, 액션 상태 또한 연속적이고, 관찰 공간이 조금 더 복잡해지는 시뮬레이션을 공부하는 것도 중요합니다. 이 문제는 좋은 결과에 도달하기 위해서, neural networks처럼, 더 강한 머신러닝 기술을 자주 사용해야 합니다. 이러한 더 구체적인 토픽은 곧 오게 될 더 어려운 AI 코스의 주제입니다. \ No newline at end of file +Atari 게임 스크린에서의 이미지처럼, 액션 상태 또한 연속적이고, 관찰 공간이 조금 더 복잡해지는 시뮬레이션을 공부하는 것도 중요합니다. 이 문제는 좋은 결과에 도달하기 위해서, neural networks처럼, 더 강한 머신러닝 기술을 자주 사용해야 합니다. 이러한 더 구체적인 토픽은 곧 오게 될 더 어려운 AI 코스의 주제입니다. diff --git a/8-Reinforcement/2-Gym/translations/README.zh-cn.md b/8-Reinforcement/2-Gym/translations/README.zh-cn.md index 16d993f8..19492235 100644 --- a/8-Reinforcement/2-Gym/translations/README.zh-cn.md +++ b/8-Reinforcement/2-Gym/translations/README.zh-cn.md @@ -218,7 +218,7 @@ import random - **计算平均累积奖励**,经过多次模拟。我们每 5000 次迭代打印一次进度,并计算这段时间内累积奖励的平均值。这意味着如果我们得到超过 195 分——我们可以认为问题已经解决,甚至比要求的质量更高。 -- **计算最大平均累积结果**,`Qmax`,我们将存储与该结果对应的Q-Table。当你运行训练时,你会注意到有时平均累积结果开始下降,我们希望保留与训练期间观察到的最佳模型相对应的 Q-Table 值。 +- **计算最大平均累积结果**,`Qmax`,我们将存储与该结果对应的 Q-Table。当你运行训练时,你会注意到有时平均累积结果开始下降,我们希望保留与训练期间观察到的最佳模型相对应的 Q-Table 值。 1. 在 `rewards` 向量处收集每次模拟的所有累积奖励,用于进一步绘图。(代码块 11) @@ -265,13 +265,13 @@ import random - **接近我们的目标**。我们非常接近实现在连续 100 多次模拟运行中获得 195 个累积奖励的目标,或者我们可能真的实现了!即使我们得到更小的数字,我们仍然不知道,因为我们平均超过 5000 次运行,而在正式标准中只需要 100 次运行。 -- **奖励开始下降**。有时奖励开始下降,这意味着我们可以"破坏" Q-Table 中已经学习到的值,这些值会使情况变得更糟。 +- **奖励开始下降**。有时奖励开始下降,这意味着我们可以“破坏” Q-Table 中已经学习到的值,这些值会使情况变得更糟。 如果我们绘制训练进度图,则这种观察会更加清晰可见。 ## 绘制训练进度 -在训练期间,我们将每次迭代的累积奖励值收集到`rewards`向量中。以下是我们根据迭代次数绘制它时的样子: +在训练期间,我们将每次迭代的累积奖励值收集到 `rewards` 向量中。以下是我们根据迭代次数绘制它时的样子: ```python plt.plot(reawrd) @@ -279,7 +279,7 @@ plt.plot(reawrd) ![原始进度](../images/train_progress_raw.png) -从这张图中,无法说明任何事情,因为由于随机训练过程的性​​质,训练课程的长度差异很大。为了更好地理解这个图,我们可以计算一系列实验的 **running average**,假设为 100。这可以使用 `np.convolve` 方便地完成:(代码块 12) +从这张图中,无法说明任何事情,因为由于随机训练过程的性质,训练课程的长度差异很大。为了更好地理解这个图,我们可以计算一系列实验的 **running average**,假设为 100。这可以使用 `np.convolve` 方便地完成:(代码块 12) ```python def running_average(x,window): @@ -296,9 +296,9 @@ plt.plot(running_average(rewards,100)) - **对于学习率**,`alpha`,我们可以从接近 1 的值开始,然后不断减小参数。随着时间的推移,我们将在 Q-Table 中获得良好的概率值,因此我们应该稍微调整它们,而不是用新值完全覆盖。 -- **增加epsilon**。我们可能希望缓慢增加`epsilon`,以便探索更少,开发更多。从`epsilon`的较低值开始,然后上升到接近 1 可能是有意义的。 +- **增加 epsilon**。我们可能希望缓慢增加 `epsilon`,以便探索更少,开发更多。从 `epsilon` 的较低值开始,然后上升到接近 1 可能是有意义的。 -> **任务 1**:玩转超参数值,看看是否可以获得更高的累积奖励。你超过195了吗? +> **任务 1**:玩转超参数值,看看是否可以获得更高的累积奖励。你超过 195 了吗? > **任务 2**:要正式解决问题,你需要在 100 次连续运行中获得 195 的平均奖励。在培训期间衡量并确保你已经正式解决了问题! @@ -326,7 +326,7 @@ env.close() ## 🚀挑战 -> **任务 3**:在这里,我们使用的是 Q-Table 的最终副本,它可能不是最好的。请记住,我们已将性能最佳的 Q-Table 存储到 `Qbest` 变量中!通过将`Qbest`复制到`Q`来尝试使用性能最佳的 Q-Table 的相同示例,看看你是否注意到差异。 +> **任务 3**:在这里,我们使用的是 Q-Table 的最终副本,它可能不是最好的。请记住,我们已将性能最佳的 Q-Table 存储到 `Qbest` 变量中!通过将 `Qbest` 复制到 `Q` 来尝试使用性能最佳的 Q-Table 的相同示例,看看你是否注意到差异。 > **任务 4**:这里我们不是在每一步选择最佳动作,而是用相应的概率分布进行采样。始终选择具有最高 Q-Table 值的最佳动作是否更有意义?这可以通过使用 `np.argmax` 函数找出对应于较高 Q-Table 值的动作编号来完成。实施这个策略,看看它是否能改善平衡。