强化学习实操入门随笔

2024-09-02 21:20

本文主要是介绍强化学习实操入门随笔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

碎碎念:经过思考,打通底层逻辑,我认为未来ai的功能是在沟通领域代替人,未来人-人模式(媒介是死的语言,比如看古人留下的文字、聊天的暂时不在)会变成人-ai替身-人模式(符合本人想法的“预测个性化语言”)。由于沟通越来越虚拟化和低成本,以及各种模态(比如视频链接)的数字媒介比见面聊天效率更高,所以制作人的各种在虚拟数字空间的“替身”(模仿聊天、总结信息等秘书类事务)是很可能出现的重点问题。


一、先知道是什么

强化学习的目标是通过探索(尝试新动作)和利用(选择已知的最优动作)来学习最优策略,使得在长期内获得的奖励最大化。

智能体/代理(玩家) Agent:执行动作并学习如何优化行为的实体。

环境 Environment, 智能体与之交互并从中学习的世界。

行为 Action a :智能体如何响应环境(一般来说是有限种行为)。所有可能的行为的集合称为 action-space(行为空间)。

状态 State s :环境的当前特征。环境可以处于的所有可能状态的集合称为状态空间。

奖励 Reward r :奖励是环境对智能体的关键反馈。它驱使代理学习并改变其未来的行动。多个时间步长的奖励聚合称为回报。

策略 Policy:代理根据当前状态选择动作的规则或方法,可以是确定性的或随机的。

价值函数 Value Function:用于评估某一状态或状态-动作对的好坏,以帮助智能体决策。

截图来自:【强化学习】一小时完全入门_哔哩哔哩_bilibili

这些或全部或部分的在代码中都会有对应的实体,详见后面

二、有什么可以去做?

(1)训练模型(Agent)

Train a Mario-playing RL Agent — PyTorch Tutorials 2.2.1+cu121 documentation

pytorch官方网站的教程,可以看看这个里面的Agent是怎么构建的,act接口就是一般的step接口。

2024-04-07 23:35:36摘录——

数字实体执行一座城市的所有任务,人工智能可以与数字世界甚至物理世界的一切事物进行交互,不断学习和适应新环境,周围的人对此司空见惯,仿佛一切都理应如此……Agent 可以翻译为“代理”,在 AI 领域有了“智能体“这一含义,是当前人工智能技术的发展方向,它可以代表用户执行任务并做出决策,具有高度的自主性和适应性。

为了驱动 AI Agents 工作流程的重大进展,吴恩达在演讲中提出了四种设计模式:反思、运用工具、规划、多智能体协同。每种设计模式引用了两篇论文,一共八篇。


  “AI 程序员”席卷而来,吴恩达四步设计让 Agent 提前超越 GPT-5-CSDN博客

(2)研究算法(基于数据的、基于规则的)

(3)做平台(Environment)

用copilot可以轻松的生成一个字符界面的游戏吃豆人的代码,并且是带着强化学习基础接口风格(规则?)的代码,还可以框选解释代码,真好用。然后问GPT强化学习接口,出现了大段的切题回答,不由得去想真的是“太阳底下无新事( 《旧约:传道书》第1章9节)”吗?

强化学习环境基础接口介绍:

def __init__(self):
def reset(self):
def step(self, action):
def render(self, mode='human'):
#态势、奖惩反馈、终止信号从上面的step函数获取
next_state, reward, done, _ = env.step(action)

在强化学习(Reinforcement Learning, RL)应用于游戏开发中,通常需要游戏提供一系列接口(API)来与RL算法进行交互。以下是一些常见的接口:

1. 状态接口(State Interface)-条件构设

  • 功能: 该接口用于获取当前游戏的状态,通常是一个多维向量或矩阵,描述了游戏中的重要信息,如棋盘布局、角色位置、资源数量等。
  • 用途: RL算法需要通过该接口了解当前的游戏情境,以便选择下一步动作。

2. 动作接口(Action Interface)-操控

  • 功能: 允许RL算法对游戏做出决策并执行动作,如移动角色、攻击敌人、建造建筑等。
  • 用途: 通过该接口,RL算法能够直接影响游戏的进行,并观察其动作带来的效果。

3. 奖励接口(Reward Interface)-评估

  • 功能: 提供每个动作后游戏给出的即时反馈,通常是一个数值,表示动作的好坏。
  • 用途: 奖励信号是RL算法学习策略的核心依据,帮助算法优化决策。

4. 重置接口(Reset Interface)-导调

  • 功能: 允许重置游戏到初始状态,通常用于在每次训练迭代结束后重新开始游戏。
  • 用途: 在训练过程中,算法会反复探索游戏中的各种可能性,因此需要频繁重置游戏。

5. 结束状态接口(Terminal State Interface)

  • 功能: 检查游戏是否已经结束(如赢得比赛或游戏失败)。
  • 用途: 确定训练过程是否需要结束并重置游戏,以便进行新的训练迭代。

6. 渲染接口(Rendering Interface)-态势显示

  • 功能: 用于显示游戏画面,虽然对算法本身不直接有用,但在调试和可视化时非常重要。
  • 用途: 开发者可以使用该接口监控游戏过程和算法决策,以更好地理解和优化算法。

7. 历史记录接口(History Interface)-回放

  • 功能: 提供先前游戏状态和动作的记录,用于回溯和分析。
  • 用途: 这种记录对于分析算法的学习过程和策略优化非常有帮助。

这些接口使得游戏能够与强化学习算法有效互动,支持算法在游戏环境中不断学习和改进策略。实际应用中,这些接口通常由游戏引擎或自定义的API提供,例如OpenAI Gym、Unity ML-Agents等。

三、哪里算力薅羊毛?

我被网上是算力竞赛弄得对自己2016年买的神舟战神都没信息了,后来跑几个简单的强化学习例子发现除了慢点没啥别的……我的i7-6700HQ还能再战!

蹭算力的话,谷歌的colab不错。

https://colab.research.google.com/

2022年10月学人工智能导论时做实验用的华为云modelarts(学校发的300元额度)

https://console.huaweicloud.com/modelarts


四、配置强化学习环境

Gymnasium Documentation (farama.org)icon-default.png?t=N7T8https://gymnasium.farama.org/Gymnasium是OpenAI Gym库的维护分支,里面有很多的雅达利(Atari)游戏环境,可以作为智能体所要交互的环境。

PS:今天折腾了一天的Bowling这个小游戏,由于gym在0.20.0有重大更新,导致过去的常见的可以复制过来的代码都没法直接用……貌似调用位置也在变,什么AlE之类的也都有改名……调用方法也都有所变化……最好直接找官方说明文档。

这篇关于强化学习实操入门随笔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131104

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多