背景

Jev 要解决的问题可以形式化为:给定状态 (state)、问题 (Question)和候选集合 (candidate action),输出候选上的条件分布:
在实现上,目前看下来有几种范式,核心差异取决于用什么方法构建策略分布。
  1. 基于原生LLM;代表方法:openjev-sglang、SGLang Decisions、LLM as Jev
  1. 给LLM新增一个决策head。代表方法有:NanoJev, PPLX Decider
  1. 基于相似度打分的思路。代表方法:CLM
下面具体说明。

基于现成的LLM

这个方法完全依赖LLM本身的能力,可以不用训练,也可以微调。核心是把选项编号为LLM词表中的一个token。
还是以之前的例子为例:
构建输入的prompt
可见,在这个例子中,它的选项编码成了大写英文字母:A/B/C
送入到LLM中进行prefill,最后一个有效输入位置输出的next token logit 是词表大小,再从中gather候选token的logit ,随后再接一层softmax,变为策略的概率分布。
令 , 是对应选项的标签 token ID:
是LLM的backbone;为LM head;为temperature。
notion image
这个方法有一个痛点:选项需要是LLM词表中的一个独立token。只用alphabet字母表的话,虽然语义比较契合LLM,但字母表的大小是有限的,超出范围的决策无法表示。解决方法有:
1)从现有LLM词表中选择更多经过验证的单 token 标签。例如 openjev-sglang 使用 A–Z 加上经过 tokenizer 验证的 AA、AB 等组合,支持 64 个标签。
2)不追求独立的token,允许预设的选项拆分为多个token,计算每个标签序列的对数概率,再在候选之间归一化。如LLM as Jev paper。
3)给词表新增独立的special token来表示选项,如: <jev_0000>, <jev_0001>,...等。这能保证分词独立性,但需要在embedding layer和lm head适配新增的token。(这个方案目前还没看到开源方案,但也是常规的思路)

给LLM新增一个决策head

代表方法:NanoJev, PPLX Decider
与第一个的核心差异在于将LM原本的head换成一个用于决策的head 。实现上,有多种思路。
思路1:一条输入序列,用last token的hidden state构造策略分布。
令 表示当前候选在决策 head 中对应的输出位置,其中 :
notion image
思路2: 按照候选构建多条输入序列
notion image

基于相似度打分的思路

代表方法:CLM
这个方法将LLM视为encoder,分别将(s,q)和候选action编码为向量,对向量相似度进行softmax得到策略概率分布
notion image
其中,是两个投影层。由于做了归一化,实际就是余弦相似度。
训练方式为对比学习中的InfoNCE。

小结

本文介绍了将LLM转为策略模型的3种常用思路:1)基于原生LLM;2)给LLM新增一个决策head;3)基于相似度打分的思路。本文的阐述偏直觉性的理解,并未介绍具体的实现细节,感兴趣的同学建议深入阅读源码,或原论文。
如有疏漏之处,敬请指出~
 
Jev 系列解读(一):深入Laya的模型结构与 RLCD训练匈牙利算法小结
Loading...