码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • RLChina2022-强化学习暑期课程-博弈搜索算法


    《RLChina2022-强化学习暑期课程-博弈搜索算法》的学习笔记
    主讲人:中科院自动化 林舒老师

    RLChina2022-强化学习暑期课程-博弈搜索算法学习笔记

    • 序列决策问题
      • 定义与模型
      • 序列决策问题示例:推箱子游戏
      • 通用求解算法:搜索
        • 搜索分类
    • 盲目搜索
      • 1.深度优先搜索-DFS
        • 算法思想
        • 优化思路
          • 剪枝
          • 其他优化
      • 2.广度优先搜索-BFS
        • 算法思想
        • 基础:泛洪填充法
        • 改进
        • 其他基本优化
      • 深度优先搜索与广度优先搜索对比
      • 推箱子游戏的广度优先搜索算法代码实现
    • 启发式搜索
      • 1. A ∗ A^{*} A∗算法
        • 算法基础:最优优先搜索
        • 特性
        • 局限性
      • 2. I D A ∗ IDA^{*} IDA∗算法
        • 简介
        • 算法框架
    • 对抗搜索
      • 1.简介
      • 2. α − β \alpha-\beta α−β剪枝
        • 搜索框架
        • 翻转棋实现思路
        • 不足
      • 3.蒙特卡洛树搜索MCTS
        • 实现步骤
        • 代码实践:翻转棋游戏的蒙特卡洛树搜索实现
        • 应用
    • 参考

    序列决策问题

    定义与模型

    通过一系列的(多步)决策来达到某种目标,而不是像DL分类中的单步决策。每一步决策都会影响后续决策。
    现实生活中的例子:

    • 路线规划
    • 游戏博弈
    • 机械控制
    • 语言理解:语音的识别;文本的理解。目前的方式都是通过上下文的理解分析。
    • …

    序列决策问题一般可以用马尔可夫决策(MDP)模型描述。MDP包含以下组成部分:
    简单起见,后续主要使用确定性的转移函数。
    在这里插入图片描述
    MDP 模型将序列决策问题统一为最优路径问题:将状态视为结点,转移函数视为边,要求从起点 s 0 s_{0} s0​ 出发到达任意终点 s t ∈ T s_{t}\in T st​∈T,使得路径上奖励之和最大。

    序列决策问题示例:推箱子游戏

    R ( s , a ) ≡ − 1 R(s,a)\equiv -1 R(s,a)≡−1表示目标是想让移动步数最少。
    在这里插入图片描述

    通用求解算法:搜索

    在这里插入图片描述

    搜索分类

    • 暴力搜索:枚举算法、随机游走
    • 盲目搜索:深度优先搜索、广度优先搜索
    • 启发式搜索:在盲目搜索的基础上,加入一些对问题的理解。如 A ∗ A^{*} A∗和 I D A ∗ IDA^{*} IDA∗
    • 对抗搜索: α − β \alpha-\beta α−β剪枝,蒙特卡洛树搜索

    前三种搜索一定能达到最优解,而对抗搜索是提高了效率,在解的最优性上有些取舍

    盲目搜索

    • 深度优先搜索
    • 广度优先搜索

    1.深度优先搜索-DFS

    DEEP-FIRST-SEARCH (DFS)

    算法思想

    在这里插入图片描述
    在这里插入图片描述
    回溯法并没有在暴力搜索的基础上,进行任何改进。依旧是全局遍历。

    这就涉及到搜索核心优化技术:剪枝

    优化思路

    剪枝

    在这里插入图片描述
    剪枝分类举例:

    • 上述的推箱子的游戏中,如果将箱子推到一个死胡同,那么这个路径肯定无法到达最终状态,那么就减掉。即为可行性剪枝
    • 如果当前路径的未来的奖励已经无法大于当前最优解,那么直接返回。即为最优性剪枝。
      在这里插入图片描述
      在这里插入图片描述

    其他优化

    • 去除重复状态
    • 迭代加深

    在这里插入图片描述

    2.广度优先搜索-BFS

    Breadth-First-Search(BFS)

    算法思想

    在这里插入图片描述

    基础:泛洪填充法

    在这里插入图片描述

    改进

    在这里插入图片描述

    其他基本优化

    在这里插入图片描述

    深度优先搜索与广度优先搜索对比

    在这里插入图片描述

    推箱子游戏的广度优先搜索算法代码实现

    • https://github.com/jidiai/SummerCourse2022/blob/main/course2/examples/bfs-sokoban/submission.py
    • https://gitee.com/rlchina/summercourse2022/blob/main/course2/examples/bfs-sokoban/submission.py

    与强化学习的区别:
    搜索算法不需要与环境交互,这样就省了建立环境模型这样的步骤

    启发式搜索

    在这里插入图片描述
    启发搜索只是改变了搜索的顺序,指导更快找到最优解

    1. A ∗ A^{*} A∗算法

    算法基础:最优优先搜索

    在广度优先的基础上,最先访问较好的节点
    在这里插入图片描述

    特性

    在这里插入图片描述
    在这里插入图片描述

    局限性

    在这里插入图片描述

    2. I D A ∗ IDA^{*} IDA∗算法

    简介

    I:Iteration
    D:Deep
    在这里插入图片描述
    因为我们的目的是要找奖励最大值,所以我们设定一个f下限。

    算法框架

    在这里插入图片描述

    对抗搜索

    1.简介

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2. α − β \alpha-\beta α−β剪枝

    最优性剪枝
    在这里插入图片描述

    搜索框架

    在这里插入图片描述

    翻转棋实现思路

    在这里插入图片描述
    翻转棋 α − β \alpha-\beta α−β剪枝代码实现:

    • https://github.com/jidiai/SummerCourse2022/blob/main/course2/examples/
      alphabeta-reversi/submission.py
    • https://gitee.com/rlchina/summercourse2022/blob/main/course2/examples/
      alphabeta-reversi/submission.py

    不足

    在这里插入图片描述
    此外,评估函数也不好写。

    3.蒙特卡洛树搜索MCTS

    实现步骤

    在这里插入图片描述
    模拟:也叫蒙特卡洛方法。随机。重复玩多次游戏,记录结果,然后在回溯进行更新

    代码实践:翻转棋游戏的蒙特卡洛树搜索实现

    • https://github.com/jidiai/SummerCourse2022/blob/main/course2/examples/mcts-reversi/submission.py
    • https://gitee.com/rlchina/summercourse2022/blob/main/course2/examples/mcts-reversi/submission.py

    应用

    AlphaGo就是RL + MCTS

    参考

    1.http://rlchina.org/topic/500

  • 相关阅读:
    string类基本使用
    一年顶十年
    CI/CD 工具和技术:释放 DevOps 的力量
    卷积神经网络手写数字分类
    隐藏idea中的文件
    仅售 15 美元,树莓派 Zero W 继任者终于发布,可惜没躲过全球缺“芯”
    星火大模型AI接口Spring中项目中使用【星火、AIGC】
    Agda学习笔记1
    day36
    python入门基础(13)--类、对象、全局函数,类内部调用
  • 原文地址:https://blog.csdn.net/weixin_44769214/article/details/126365749
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号