本文主要是介绍强化学习实操入门随笔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
碎碎念:经过思考,打通底层逻辑,我认为未来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)https://gymnasium.farama.org/Gymnasium是OpenAI Gym库的维护分支,里面有很多的雅达利(Atari)游戏环境,可以作为智能体所要交互的环境。
PS:今天折腾了一天的Bowling这个小游戏,由于gym在0.20.0有重大更新,导致过去的常见的可以复制过来的代码都没法直接用……貌似调用位置也在变,什么AlE之类的也都有改名……调用方法也都有所变化……最好直接找官方说明文档。
这篇关于强化学习实操入门随笔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!