Schwertlilien
As a recoder: notes and ideas.

2025-3-28/29-RL简介

3.28:

难绷,一直在补坑。。。

这个补完了:AI Agent介绍

3.29:

这几天一直在看Reinforcement Learning。是的,我的框架还没搭好,原因是看的太浅了,不了解RL的一些执行细节,虽然之前有看过Markov Process,但是又是一段时间过去了,忘的都差不多了。

于是来写RL的一些东西。参考来自于李宏毅的RL介绍。

Reinforcement Learning

一句话介绍:不知道正确的答案,借由与环境互动、根据得到的奖励知道:什么是好的、什么是不好的。

区分ML/RL:

  • ML:找一个function(映射输入/输出)-->定义loss函数-->最优化
  • RL:代理或是叫智能体(Agent)与环境(Env)互动(Observation/Action),相互影响(Reward)
RL最初用于做游戏比较多

介绍一些术语

Actor/Agent:执行动作的主体,叫做代理或是智能体(下文都称之为智能体)。

Environment:外部的环境。既会影响智能体的行为、又会被智能体执行的行为所影响。

Observation/State:智能体通过环境得到现在的外部的状态、或许还包括了过去对外部状态的观测。

Action:智能体决定执行的动作、会影响到外部的环境。

Policy:智能体A不同于其他智能体B,对于智能体如何决定执行的动作、以及动作又会怎么影响环境(Reward)的整体。可以说是整个模型。通过Reward的optimization可以更新。

Episode:一个episode指的是一句游戏从开始到结束、其中经过的所有的状态以及动作的时间。可以得到一系列\(\{s,a\}\)(状态-动作)的集合。

Trajectory:指一个智能体在环境中进行了一系列动作是所经历的状态、动作、奖励的序列。一般是一个episode可以得到的一系列\(\{s,a\}\)的集合是一个Trajectory。用于训练智能体、学习从状态到动作、最终最大化总体奖励。

Reward:抽象的程度比较高,总的来说就是批判智能体执行当前动作的评价标准。与此相关的概念有:

  1. discount cumculated function: 在状态\(s\)下采取动作\(a\)后,期望获得多少的奖励。
  2. value function:在状态\(s\)下,无论采取什么动作,期望的奖励是多少(对于当前状态的评估,一般是平均期望奖励)。
  3. Advantage function:\(A(s,a)\)表示某个特定动作\(a\)相对于其他动作的优劣程度。

RL与ML之间的联系

对于强化学习来说,实际上比较类似于分类任务,对于给定的输入in:Env-->Observation/State,预测out:Action。并给出不同Action的置信度(然后Agent按照不同Action得到的置信度sample、从Action的distribution中sample)。

要是输入是img,那么和ML也没什么不同。

\[ \text{Action}=f(\text{Observation}) \]

目标: 找到最佳policy(model),\(\max\text{Reward}\)

对于\(f\),假如输入是图片、那么需要使用CNN/ViT提取特征;

假如我们想更进一步看到历史的图片,那么可能会选取RNN提取特征。

定义loss

对于RL:经过observation: \(s_1,s_2,\dots,s_T\)(\(T\)时间游戏结束),在时间\(t\)下施加动作\(a_t\),得到奖励\(r_t\)

计算总奖励: \(R=\sum^T_{t=1}r_t\), 目标(loss func): \(\max R\)

最优化:根据R的值,例如梯度下降更新policy。

image-20250331233352045

此过程中存在的问题?为什么RL那么难训看人品?

  1. sample具有随机性:动作必须要随机sample,要保证会有没出现过的动作,
  2. Env,Reward,是黑盒(里面是什么不知道):Env给出对应回应,Reward给出分数,不知道依据什么给出回应。
  3. Env/Reward也具有随机性(随着Action的随机)
  4. 重点:如何求解最优化问题?

RL的过程会有点像GAN:

  • Env: Discriminator
  • Agent: Generator

如何操控Agent输出

在给定的State下,有两种可能行为:

  • 一定采取行动\(a\)
  • 一定不要采取行动\(a\)

注意:是会采取行动\(a\),也会采取行动\(b\);明晰此处的不要采取行动\(a\),说明会采取\(a\)以外动作的可能性。

这是我们能够得到的训练数据(收敛了在不同\(s\)下采取了动作\(a\)/以及不想采取某动作)

image-20250401000256422

对于Agent,输入State \(s\),输出Action \(a\)。输出动作与Ground truth之间可以计算交叉熵,这样就有loss,再对loss求梯度下降。

搜索
匹配结果数:
未搜索到匹配的文章。