https://www.tensorflow.org/tutorials/reinforcement_learning/actor_critic?hl=zh-cn

在 GitHub 上查看源代码

https://tensorflow.google.cn/images/GitHub-Mark-32px.png?hl=zh-cn


本教程演示如何使用 TensorFlow 实现 Actor-Critic 方法以在 Open AI Gym CartPole-v0 环境中训练代理。假定读者对(深度)强化学习策略梯度方法有所了解。

Actor-Critic 方法

Actor-Critic 方法是表示与价值函数无关的策略函数的时间差分 (TD) 学习方法。

策略函数(或策略)返回代理基于给定状态可以采取的动作的概率分布。价值函数确定从给定状态开始并在此后永远根据特定策略运行的代理的预期回报。

在 Actor-Critic 方法中,策略被称为行动者,它根据给定状态提出一组可能的动作,而估算的价值函数则被称为评价者,它根据给定的策略评估行动者所采取的动作。

在本教程中,将使用一个具有两个输出的神经网络来表示行动者评价者

CartPole-v0

CartPole-v0 环境中,将长杆连接到沿无摩擦轨道移动的小车上。长杆开始时是直立的,代理的目标是通过对小车施加 -1+1 的力来防止其倒下。对于长杆保持直立的每个时间步骤,奖励为 +1。当 1) 长杆与垂直方向的夹角超过 15 度或 2) 小车从中心移出超过 2.4 个单位时,片段结束。

<figure>
    <image src="<https://tensorflow.org/tutorials/reinforcement_learning/images/cartpole-v0.gif>">
    <figcaption>
      Trained actor-critic model in Cartpole-v0 environment
    </figcaption>
  </figure>

在 100 次连续试验中,当片段的平均总奖励达到 195 时,问题被视为“已解决”。

安装

导入必要的软件包并配置全局设置。

pip install gym[classic_control]pip install pyglet
# Install additional packages for visualizationsudo apt-get install -y python-opengl > /dev/null 2>&1pip install git+https://github.com/tensorflow/docs > /dev/null 2>&1
import collections
import gym
import numpy as np
import statistics
import tensorflow as tf
import tqdm

from matplotlib import pyplot as plt
from tensorflow.keras import layers
from typing import Any, List, Sequence, Tuple

# Create the environment
env = gym.make("CartPole-v1")

# Set seed for experiment reproducibility
seed = 42
tf.random.set_seed(seed)
np.random.seed(seed)

# Small epsilon value for stabilizing division operations
eps = np.finfo(np.float32).eps.item()