强化学习: 从头开始看 Q-Learning + FrozenLake-v1

从头开始看 Q-Learning + FrozenLake-v1

  • RL 强化学习,读书, 看视频教程,都是一知半解。
  • 所以找份代码,向 GPT 提问,尽量把每一行代码都搞懂。 不懂的地方,就是问。
  • 最后整理一下聊天记录,单独保存为一个文件,发布出去,然后最近经常看。
  • gym 有N 个环境, RL 有 M 个算法。 此文仅仅是: 1 / (M * N)
下面的问题,都是围绕的代码是:
import gymnasium as gym
import numpy as np
import matplotlib.pyplot as plt


def run(episodes, img_name):
    rng = np.random.default_rng(1)  # 随机种子?

    env = gym.make('FrozenLake-v1', map_name="4x4", is_slippery=False, render_mode=None)

    #  说白了,q-table 记录的就是: 👉「在第 X 个格子,往 Y 方向走,能有多大收益。」
    q = np.zeros((env.observation_space.n, env.action_space.n))
    print(q.shape) # 16, 4

    learning_rate_a = 0.9      # alpha
    discount_factor_g =  0.9   # gamma

    # epsilon, 探索率, 随机率,ε-贪婪策略参数
    # ε 越大,随机成分越多,探索越多。
    # “ε”(希腊字母 epsilon,读作「艾普西龙」)。
    # 假如 epsilon = 0.2, 那么 20% 的时间, 随机选择动作, 80% 的时间, 选择 q-table 给出的最优动作。
    epsilon = 1                  # 1 = 100% 随机选择

    # 训练多少轮?  1 /  0.0001 = 10,000
    # 其实这个参数,是控制 ε 衰减速度 的参数。
    # 因为,每一轮的结尾都需要执行:
    # epsilon = max(epsilon - epsilon_decay_rate, 0),
    # 即, 每一轮减少 0.0001
    epsilon_decay_rate = 0.0001

    # 统计一下训练的效果。
    rewards_per_episode = np.zeros(episodes)

    # 训练多少轮?比如 15000 轮。
    for i in range(episodes):
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waterHBO

老哥,支持一下啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值