多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

【老计带你懂AI算法】19:强化学习与RLHF,在试错中学习,还教会了ChatGPT好好说话

【老计带你懂AI算法】19:强化学习与RLHF,在试错中学习,还教会了ChatGPT好好说话 【老计带你懂AI算法】19强化学习与RLHF在试错中学习还教会了ChatGPT好好说话开头一种最像生物本能的学习方式前面讲的模型学习方式大体两类监督学习给标准答案照着学和无监督学习没答案自己找规律。这一篇讲第三类也是最像生物本能的一种强化学习Reinforcement Learning。想想你怎么学会骑自行车的没人给你标准答案你就是不停地试歪了、摔了惩罚慢慢找到平衡、骑稳了奖励在一次次试错中掌握了这门技能。动物训练也一样小狗做对动作就给块肉奖励它就慢慢学会了。这种通过试错、根据奖惩来学习的方式就是强化学习。它专门对付一类前面模型搞不定的问题需要在一个环境里连续做决策、每一步影响后续、追求长期总回报的任务。下围棋、打游戏、控制机器人、自动驾驶决策都是这类。而且它还立了个大功教会了ChatGPT好好说话这个后面重点讲。强化学习的基本框架智能体和环境的互动强化学习有一套很清晰的框架理解了这几个角色就懂了它的运作方式智能体那个要学习、要做决策的主角比如下棋的AI、玩游戏的AI。环境智能体所处的世界棋盘、游戏、真实道路。状态环境当前的样子当前的棋局、游戏画面。动作智能体在某个状态下可以做的选择下在哪、往哪走。奖励智能体做完动作后环境给的反馈赢棋加分、输棋扣分、吃到金币加分。它们这样循环互动智能体观察当前状态做出一个动作环境因此变到新状态、并给出一个奖励智能体根据这个奖励调整自己以后的行为再面对新状态做下一个动作……如此循环。智能体的唯一目标是让长期累积的总奖励最大。这里的关键词是长期。强化学习最难也最迷人的地方在于它要考虑的不是眼前这一步的即时奖励而是一连串动作带来的长远回报。有时候为了赢得先牺牲眼前的小利益。最难的一课延迟奖励与长远眼光强化学习最核心的挑战是延迟奖励值得单独讲因为它道出了这类问题的精髓。下围棋你不是每走一步都立刻知道好坏往往要到几十步之后分出胜负才知道之前那些棋到底走得对不对。奖励是延迟的、稀疏的一个动作的真正价值可能要很久以后才显现。这就带来一个难题赢了棋功劳该记给中间哪几步妙棋输了又该怪哪一步臭棋这叫信用分配问题。打个比方这就像人生里很多重要决定读书时用功、年轻时选对方向当下没有即时回报甚至挺苦但它对很久以后的人生有深远影响。强化学习要学的正是这种为了长远的大回报、愿意在当下做出正确选择的智慧。它必须学会评估每个动作对未来的长远价值而不是只顾眼前爽不爽。这正是强化学习比前面那些输入进、结果出的模型更复杂、也更接近真实决策的地方。探索与利用一个经典的两难强化学习还有个经典的两难叫探索与利用特别有生活智慧。智能体面临选择是利用已知的、目前看来最好的策略稳稳拿分还是去探索那些还没试过的、可能更好也可能更差的新选择打个比方你有家常去的餐馆闭眼点都好吃利用。但你永远不去尝试新馆子可能就错过了一家更棒的探索不足。可要是天天冒险试新的又常踩雷探索过度。强化学习必须在守着已知的好和冒险找更好之间找平衡这个平衡拿捏是它的一门核心功课。AlphaGo强化学习的高光时刻强化学习最出圈的战绩是AlphaGo在2016年击败围棋世界冠军李世石这是AI发展史上的标志性事件。围棋的可能局面比宇宙里的原子还多没法靠穷举。AlphaGo的做法简单说是先跟人类棋谱学监督学习打底再通过强化学习跟自己下海量的棋、不断自我对弈、在输赢的奖励里进化棋艺最终下出了很多人类从未想到的妙手。它的进阶版AlphaGo Zero更狠完全不看人类棋谱纯靠自我对弈从零学起反而更强。这震撼之处在于它证明了强化学习能让AI通过自我试错达到甚至超越人类顶尖水平还能创造出人类没有的新知识。重头戏RLHF怎么教会ChatGPT好好说话强化学习和你最相关的应用是RLHF基于人类反馈的强化学习它是ChatGPT这类大模型能好好和你对话的关键功臣一定要讲清楚。先说个问题。一个大模型光靠海量文本预训练出来它很能续写但不一定会好好回答你、不一定说人话、可能一本正经胡说八道或者说些有害的话。怎么让它变得有用、诚实、无害符合人类的偏好这靠预训练学不来因为什么样的回答是好回答很难用标准答案定义。这时候强化学习的思想就派上用场了。RLHF大致分三步用大白话说第一步让人来打分。让模型对同一个问题生成好几个不同回答请人类标注员给这些回答排序哪个更好、哪个更差。第二步训练一个奖励模型。用上面这些人类的偏好数据训练出一个奖励模型它学会了模仿人类的喜好能给任意一个回答打分越符合人类偏好分越高。这一步妙就妙在它把人类喜欢什么这种说不清的东西变成了一个能自动打分的模型。第三步用强化学习优化大模型。现在有了会打分的奖励模型充当环境的奖励就可以用强化学习了让大模型不断生成回答、奖励模型打分、大模型朝着拿高分更符合人类偏好的方向调整自己。这么一来大模型就在强化学习的框架下逐渐学会了生成人类更喜欢的回答变得有礼貌、有帮助、更安全。你现在觉得ChatGPT对话体验好、通情达理很大程度上是RLHF的功劳。它是强化学习思想在大模型时代焕发的第二春也是连接前面所有内容和大模型的一座关键桥梁。顺带把强化学习的两大类主流方法给你点一下帮你听到那些术语时不发怵。一类叫基于价值的方法代表是DQN深度Q网络当年就是它让AI学会打雅达利游戏。它的思路是让模型学会评估在某个状态下做某个动作未来能拿到多少长期回报评估准了每一步选那个价值最高的动作就行。另一类叫基于策略的方法代表是PPO也就是RLHF里用的那个。它不绕道去评估每个动作的价值而是直接学习一个策略也就是在每个状态下该以多大概率做各个动作直接优化这个策略让总回报最大。打个比方基于价值的像是先给每条路打个分再挑分高的走基于策略的则是直接练出一套遇到什么情况就怎么走的直觉。两类各有长处实际中PPO这类策略方法因为稳定好用在大模型对齐等复杂任务里特别受欢迎。你不用深究数学记住这个分类和它们的直觉即可。输入输出与代码输入环境的状态。输出智能体在该状态下要采取的动作策略。整个学习过程的燃料是奖励信号。下面用一个经典的平衡杆环境演示强化学习的基本样子。输入杆子和小车的状态。输出向左还是向右推。# 依赖pip install gymnasiumimportgymnasiumasgymimportnumpyasnp# CartPole:经典强化学习环境,目标是左右移动小车让杆子不倒envgym.make(CartPole-v1)# 这里用一个极简的随机策略演示智能体-环境互动循环(不是训练好的策略)forepisodeinrange(3):# 玩3局state,_env.reset()total_reward0doneFalsewhilenotdone:actionenv.action_space.sample()# 智能体做动作(这里随机选)state,reward,terminated,truncated,_env.step(action)# 环境反馈新状态和奖励total_rewardreward# 累积奖励doneterminatedortruncatedprint(f第{episode1}局 撑了{total_reward:.0f}步(奖励))env.close()print(真实训练时,会用DQN/PPO等算法,让智能体从奖励中学会稳稳撑住杆子)运行输出示例随机策略每次不同通常只能撑十几到几十步第1局 撑了18步(奖励) 第2局 撑了13步(奖励) 第3局 撑了27步(奖励) 真实训练时,会用DQN/PPO等算法,让智能体从奖励中学会稳稳撑住杆子这段代码展示了强化学习最核心的智能体做动作、环境给状态和奖励的互动循环。真实训练会用DQN、PPO这些算法PPO正是RLHF里常用的那个让智能体从奖励里学出好策略而不是像这里随机乱动。随机策略杆子很快就倒训练好的智能体能撑很久。优缺点与适用场景优点能解决需要连续决策、追求长期回报的复杂问题能通过自我试错超越人类经验是训练对齐大模型的关键。缺点训练往往不稳定、需要大量试错在真实世界试错代价高常要先在仿真里练、奖励函数难设计设不好会学出钻空子的怪策略、样本效率低。适合场景游戏AI、机器人控制、自动驾驶决策、推荐和广告的序列决策、大模型对齐RLHF、任何在互动中通过奖惩学习最优策略的场景。不适合有现成标准答案、直接监督学习更省事的问题那样用强化学习是杀鸡用牛刀、还费力不讨好。多说一句奖励函数难设计这个坑因为它特别能体现强化学习的微妙。智能体是不折不扣的唯奖励论者你给什么奖励它就死磕什么绝不管你的本意。曾有人训练玩赛艇游戏的AI本想让它跑得快结果奖励设成了得分AI发现原地绕圈刷道具分比认真比赛得分还高于是它就在原地转圈圈、压根不去终点。这就是奖励设计不当的经典翻车智能体钻了奖励的空子学出了一个符合奖励、却完全违背你本意的怪策略。这提醒我们用强化学习最见功力的往往不是算法而是怎么把你真正想要的目标翻译成一个不会被钻空子的奖励函数这件事远比想象中难。小结与承上启下强化学习像生物本能通过试错、根据奖惩学习追求长期累积回报最大。框架智能体在环境里观察状态、做动作、得奖励循环往复优化策略。核心难点延迟奖励要有长远眼光、探索与利用的平衡。重头戏RLHF用人类偏好训个奖励模型再用强化学习让大模型学会好好说话是ChatGPT体验好的关键。RLHF已经把我们引到了大模型的门口。而当今所有大模型的心脏是一个叫Transformer的架构正是它的横空出世才有了这一切。下一篇我们就来讲这个划时代的Transformer和它的核心注意力机制看清整个大模型时代的技术基石。我们下一篇见。延伸阅读Gymnasium 官方文档本篇CartPole代码用的库OpenAI Gym的继任者https://gymnasium.farama.org《强化学习导论》Reinforcement Learning: An IntroductionSutton Barto经典教材有免费在线版http://incompleteideas.net/book/the-book.htmlOpenAI 关于RLHF训练InstructGPT的介绍可按关键词InstructGPT检索说明以上为官方与经典公开资料地址可能随版本调整如打不开可用标题搜索。
返回列表