惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
T
The Blog of Author Tim Ferriss
H
Help Net Security
博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
博客园 - 聂微东
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
B
Blog
Engineering at Meta
Engineering at Meta
V
V2EX
Hugging Face - Blog
Hugging Face - Blog

Benson's blog

Enjoy life Internship AI on academic research How AI Will Change the Mobile Ecosystem Look ahead Goodbye 2025 Hacker News to Kindle Another project How to imporve english Introduction of Fraud detection PopTranslate Last day in netease Better idea between Copilot-typed and CLI-typed assistant Gemini-cli LLM Post-Training experience Papers I readed recently about LLM application Difference between LLMs and traditional computer technology GRPO Weekly-#26 AI Application Weekly-#25 AI infra and application Weekly-#24 First week as LLM inference engineer Weekly-#23 seeking job Weekly-#22 2025 New Year AutoSwitch Translate Goodbye 2024 Weekly-#20 Breaking of glass Cross Entropy Loss of Triton Weekly-#18 Cross Entropy Loss of Triton Weekly-#17 Triton Puzzles Weekly-#16 AutoBuilder
强化学习简介
Benson · 2022-11-16 · via Benson's blog

概念

强化学习是机器学习的一个分支,指模型输出结果后从环境中获取反馈,从而优化自身的一种学习方法。

人类的学习过程就是学习知识,然后根据环境的反馈不断提升自己。最典型的比如开车,可以通过现实的反馈得知当前操作是否合理。再比如数学推理,人类本身就可以证明某个数学结果的真伪,当然这个证明过程或许比较长,但至少是可证明的。

最著名的案例是 DeepMind 的 AlphaGo 击败围棋世界冠军李世石,生成对抗网络GAN也属于强化学习的一种。

Q-learning

Q-learning 是不断维护一个 Q[status][action]=value 的二维数据表,value 代表当前 status 下执行 action 能获取到的奖励。

通过不断地学习、试错,来更新这个Q表,使得Q表的取值越来越合理,这样无论对于任意一种状态,都能选择到Q值最大的action进行操作。

实际的更新过程中,会认为当前action的收益 + 下次status的Q值是当前 status-action 的实际Q值,以此作为基准来不断更新当前的预测值,即当前的 Q[status][action],具体逻辑可以参考莫烦大佬的样例。个人理解这种更新逻辑不一定最好,只是为了得到最合理的Q表的一种手段。

Saras

Saras 和 Q-learning 比较类似,区别在于,Q-learning 计算实际Q值时,取的是使value最大的action,但实际执行时,下次动作不一定是这个action(因为要保证探索性,下次action有一定的随机性),而对于 Saras,选择的是下次实际动作的action,而不是最大的action,这样就能更好地保证随机性,对需要结果多样性的场景来说更加合适。

Sarsa(lambda)

默认的场景里,当前的状态离最优状态都很远,只有等第一次遇到最优态的时候才能获取到收益,才能真正更新Q值,那么这时候要更新前面多少步的status对应的Q值呢?lambda 就是起这个作用的,lambda 范围[0, 1],取0时只更新当前步骤的Q值,取1时更新从初始状态到当前状态的所有Q值,当然距离当前状态越远,更新的权值就越小。

Deep Q Network

现实很多情况中 status 的状态是无法枚举的,于是就有了 DQN,使用隐式向量作为 status 的表征,Q 表用神经网络模型来替换,从而把Q-learning 和 神经网络融合在一起,解决了 status 无法枚举的问题。DQN 主要有两点值得提一下,1)历史的 Q 表学习样本可以累积,也可以重复使用,累积一段时间之后再去更新模型。2)DQN 造了两个结构一样的模型,分别叫做估计模型和现实模型,估计模型参数不断更新,现实模型隔一段时间会同步估计模型的参数。现实模型的输入的是下一步的status,占有先机,因此不需要持续更新也能创造比较准确率的Q值。原文中交替更新的两个相同结构的模型是DQN的一大亮点,但我还无法理解。。总觉得一起更新的话效果会更好一点。

Double DQN:使用 Q_max_predict (s, a) 来替代 Q_max_target (s, a) ,防止实际结果过大,加快收敛速度。ps:这不就是说明 predict 模型要比 target 模型更好嘛!

Prioritized Experience Replay (DQN):跟 Sarsa(lambda) 的作用比较类似,能获取到收益的步骤很少,因此要高效利用这个步骤,DQN中,会根据误差(Q预估-Q收益)对样本进行带权采样,当前步骤获取到收益时,预估的误差会很大,那被采样的概率就很高。

Dueling DQN:把Q值分成两部分,status 本身固有的值 和 action-status 的增益。目的是为了让Q值更加符合实际的场景。

Policy Gradients

Q-learning 中 action 取值都是离散型的,Policy Gradients 就是适配 action 是连续取值的情况。

这样每次的学习目标就不再是误差,而是每个action对应的 收益了。

进阶

Actor Critic:将环境反馈也用神经网络替代,解决 Policy Gradients 只能回合更新,而不能单步更新的问题。

soft-Actor Critic:让Q模型不只关注收益,也关注输出值的熵,提高模型的探索能力。

已经越来越像生成对抗网络了。

很有意思的案例,回头再搞一搞: https://github.com/Farama-Foundation/Gymnasium

总结

强化学习的优势在于,面对业务场景,只要能把场景的状态和验证机制描述清楚,就能利用多次交互来获得最优的模型效果。比如 AlphaGo。还有其他可行的场景吗?比如自动驾驶、机器人、游戏、数学推理。很值得探索。

这也特别贴合人的学习过程。现在文本、视觉、语音等各个小模块的效果已经比较成熟,缺点是解释性不够,用一个无法解释的模型来达成AGI几乎是不现实的,一个可能的解决办法是,用一个可解释、可控的框架把不同的功能模型组合起来,从而达成AGI。这个可解释的框架,会是强化学习吗?

参考

莫烦教程

推理 sota

Soft Actor-Critic论文笔记

rl-book-Applications