Redian新闻
>
第八篇:强化学习值迭代及代码实现

第八篇:强化学习值迭代及代码实现

科技

你好,我是郭震(zhenguo)

前几天我们学习强化学习策略迭代,今天,强化学习第8篇:强化学习值迭代

值迭代是强化学习另一种求解方法,用于找到马尔可夫决策过程(MDP)中的最优值函数。

值迭代

值迭代可以总结为如下几点:

  • 值迭代通过不断迭代更新值函数来逼近最优值函数,从而确定最优策略。

  • 值迭代的关键是在每次迭代中更新值函数。

  • 对于每个状态,通过考虑所有可能的动作和下一个状态,选择能够使值最大化的动作,并计算更新后的值函数。

  • 迭代更新值函数,更新公式也是贝尔曼方程,和策略迭代值函数更新公式一样。

  • 值迭代需要进行多次迭代,直到值函数收敛为止。收敛时,值函数不再发生显著变化。

可以看到:值迭代是比策略迭代更为简单的一种迭代方法。

代码实现

值迭代,求迷宫问题,完整代码。

只使用numpy

import numpy as np

定义迷宫地图,在迷宫地图中,不同的数字代表不同的含义:

  • 0:表示可以通过的空格,即可行走的路径。
  • -1:表示墙壁或障碍物,表示不能通过的障碍物区域。
  • 1:表示目标位置,即终点位置。

其中,0代表可行走的路径,-1代表障碍物或墙壁,1代表迷宫的终点位置。这些数值用于描述迷宫的不同区域,以帮助算法进行路径搜索和价值计算。如下所示:

# 定义迷宫地图
maze = np.array([
    [0, 0, 0, 0],
    [0, -1, 0, -1],
    [0, 0, 0, 0],
    [-1, 0, -1, 1]
])

定义参数

# 定义参数
gamma = 0.9  # 折扣因子
epsilon = 1e-6  # 收敛阈值

初始值函数

# 初始化值函数
V = np.zeros(maze.shape)

进行值迭代

# 进行值迭代
while True:
    delta = 0
    for i in range(maze.shape[0]):
        for j in range(maze.shape[1]):
            if maze[i, j] == -1 or maze[i, j] == 1:
                continue
            # 计算当前状态的最大价值
            max_value = float("-inf")
            for action in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
                ni, nj = i + action[0], j + action[1]
                if ni >= 0 and ni < maze.shape[0] and nj >= 0 and nj < maze.shape[1] and maze[ni, nj] != -1:
                    max_value = max(max_value, gamma * V[ni, nj])
            # 更新值函数
            new_value = maze[i, j] + max_value
            delta = max(delta, abs(new_value - V[i, j]))
            V[i, j] = new_value
    if delta < epsilon:
        break

# 打印最优值函数
print("最优值函数:")
print(V)

这里面的核心代码就是求解贝尔曼方程:


其中, 表示状态  的值函数,即按照某个策略获得的预期回报。 表示选择能够使得值最大化的动作  表示对所有可能的下一个状态  和奖励  进行求和。 表示在状态  下执行动作  后转移到状态  且获得奖励  的概率。 是折扣因子,用于平衡当前和未来的奖励。


在上述代码中,首先定义了迷宫地图,并设置了折扣因子和收敛阈值。然后,通过值迭代算法逐步更新值函数,直到值函数的变化小于收敛阈值为止。最后,打印出最优的值函数。


感谢你的点赞和转发,让我更新更有动力

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
强化学习驱动的低延迟视频传输强化学习的应用领域和案例无需强化学习的与人类偏好对齐的语言模型:Wombat袋熊耗时两年,谷歌用强化学习打造23个机器人帮助垃圾分类八丈五倍子,黄花自东瀛2022南美南极行(33)南极之旅MABIM:多智能体强化学习算法的“炼丹炉”第二篇:强化学习中的7个基础概念第10篇:强化学习Q-learning求解迷宫问题 代码实现我将开始更新 强化学习第四范式开源强化学习研究通用框架,支持单智能体、多智能体训练,还可训练自然语言任务!训练速度提升17%第三篇:强化学习发展历史领域驱动设计DDD|从入门到代码实践Intel为 Linux 开发新调度补丁,12代及以上 CPU 性能更强了!Dr Sun 2023 暑假基础物理化学 AP 物理化学 奥林匹克化学ICLR 2023 | PromptPG:当强化学习遇见大规模语言模型博士申请 | 亚利桑那州立大学魏华老师招收强化学习全奖博士/硕士/本科/实习生语言模型做先验,统一强化学习智能体,DeepMind选择走这条通用AI之路复习强化学习过往四篇0代码训练GPT-5?MIT微软证实GPT-4涌现自我纠错能力,智能体循环根据反馈让代码迭代!ICLR 2023 | 如何融合进化算法与强化学习打破性能瓶颈?AI设计蛋白质新方法登Science!利用强化学习,直接根据预想优化结构第六篇:强化学习策略迭代 通俗解释大环圈旅行线 (中)第五篇:强化学习基础之马尔科夫决策过程OpenAI联创Karpathy爱上羊驼:纯C代码实现婴儿Llama2,MacBook可运行,已揽1.6k星Gzip+ kNN文本分类竟然击败Transformers:无需预训练、14行代码实现Qlib全新升级:强化学习能否重塑金融决策模式?二婚难用ChatGPT和强化学习玩转《我的世界》,Plan4MC攻克24个复杂任务蛋白设计新时代!Science: 开发出基于强化学习的蛋白结构设计方法ICLR 2023|节省95%训练开销,清华黄隆波团队提出强化学习专用稀疏训练框架WWW 2023|快手:通过强化学习提升用户留存大环圈旅行线 (下)第十二篇:强化学习SARSA算法
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。