1. Scaling Law 缩放定律
特指 AI / 大模型 / 推荐里总结出来的客观规律 :模型效果(Loss / 精度 / 业务收益)和 参数量、训练数据量、计算量之间,满足幂律缩放关系。
核心是:参数量越大、数据越多 → 效果稳定变好,且有可预测的公式规律不是瞎堆,是有理论可预测、有固定曲线。
关键词:定律、规律、公式、趋势、可预测
2. Scaling Up 规模扩容 / 做大模型
是动词行为 :主动把模型参数量加大、层数加深、输入序列拉长、训练数据变多、算力拉满,就是单纯「把规模往上堆」的工程动作。
关键词:做大、扩容、堆规模、升级配置、工程落地
3. Tokenize → Token ID → Embedding 概念讲解
Tokenize = 把句子切成小碎片(词/子词/token)
给每个碎片/token一个唯一编号 = Token ID
Embedding = 把数字编号变成向量(有身份、有语义)
Token 是文本碎片Token ID 是身份编号
Embedding 是编号对应的向量
Tokenize 是"切词",Embedding 是"查表变向量"。
输入大模型输入前必须经过三步:
Tokenize(分词):将原始文本切成模型能处理的子词/词碎片。
转 Token ID:将每个 token 映射为唯一数字编号。
Embedding:将编号通过查表转换为稠密向量,才能输入大模型。
文本 → Tokenize → Token ID → Embedding → 进入大模型
举例:I am making a cake.
第一步:Tokenize(切词)
输入:`I am making a cake`
切完变成:`['I', 'am', 'mak', 'ing', 'a', 'cake']` → 这一步只是切文本,没有任何向量!
第二步:转成 Token ID(编号)
模型不认识文字,只认识数字。
给每个 token 一个固定编号:
I → 101
am → 234
mak → 567
ing → 890
a → 102
cake → 765
得到:`[101, 234, 567, 890, 102, 765]` → 这一步还是数字,不是向量!
第三步:Embedding 查表(变成向量)
模型有一个大表:
编号 → 向量
101 → [0.1, 0.3, 0.2, ...]
234 → [0.5, 0.2, 0.7, ...]
最终得到一组向量,才能输入 Transformer。
4. Embedding(sparse) + Interaction(dense) 概念讲解:
4.1. Embedding (sparse)
✅ 就是:对稀疏离散特征做 Embedding
完全就是你想的:
用户ID、商品ID、类别、城市、性别......高维稀疏 onehot 离散特征
把每个离散特征映射成低维稠密向量。
括号里的 sparse 意思是:
输入是稀疏离散特征,不是Embedding本身稀疏
Embedding向量本身是稠密的!
一句话:> Embedding(sparse) = 稀疏离散特征 → Embedding稠密向量
4.2. Interaction (dense)
✅ 正确定义:
Interaction 是对上面 Embedding 出来的稠密向量做特征交叉/交互
括号里的 dense 意思是:交互计算作用在稠密Embedding向量上,
不是输入是稠密连续特征!
不管你原始是稀疏离散还是稠密数值特征:
最终全部变成稠密向量 → 再进 Interaction 层做交叉。
一句话:> Interaction(dense) = 稠密Embedding向量之间做特征交叉交互
极简总结
Embedding(sparse):处理原始稀疏离散特征,转成稠密Embedding向量
Interaction(dense):在稠密Embedding向量空间里做特征交叉交互
和原始稠密连续特征无关!
5.Tokenize / Tokenization 两者等价吗?
完全等价!一模一样!
Tokenization:名词,分词/Token化过程
Tokenize:动词,把文本切成Token
工业界、论文、博客里随便混用,意思都是:
> 把一句话文本 → 切成一个个Token(单词/子词)
传统推荐模型(DeepFM/AFM等)
输入:稀疏离散ID特征
↓
Embedding(sparse):稀疏离散 → 稠密Embedding向量
↓
Interaction(dense):稠密Embedding之间做特征交叉注意力交互
↓
输出预测
Transformer模型(推荐/广告现在新范式)
输入:文本稀疏Token序列
↓
Tokenize/Tokenization:文本→Token
↓
Token Embedding:稀疏Token→稠密Embedding
↓
Self-Attention Interaction:稠密向量自注意力交互
6.传统深度推荐模型一般由两部分组成:Embedding (sparse) + Interaction (dense),其中 embedding 层通常占据绝大多数参数,这句话重新梳理下
术语定义:
- Embedding 部分
= 所有ID类离散特征的查表Embedding
用户ID、商品ID、店铺ID、品类ID、设备ID......海量稀疏ID查表向量
→ 这部分参数量极其巨大,几十亿~上千亿参数
- Dense 部分(Interaction + 上层网络)
= 注意力、Transformer交叉、MLP全连接网络、特征交互层
也就是你学的:Attention、AFM、DeepFM交叉、DNN、Transformer交互
→ 这部分才叫业界说的 Dense层
7. embedding 的维度 跟 特征个数,或者 离散特征的维度有什么关系吗 我记得上家公司广告业务ctr/cvr预估项目中,使用的特征只有有几十个,模型超参embedd=32;目前我家,特征个数800+,基本都dense类特征,emb=4,且模型拟合效果也不错。请说明一下这种现象
一次性讲透:Embedding维度、特征个数、离散特征数量三者关系
先给核心结论:
一.三个概念拆解
1.离散特征个数
你有多少特征域,比如年龄、性别、城市、设备、类目、历史行为 Item....., 目前有800+特征域。
2.单特征Vocab大小
每个离散特征里有多少枚举值,比如用户ID几千万、类目几百个、城市几百个。
3.Embedding维度(emb_dim)
每个离散特征查表后,输出一个向量的长度,之前emb=32,现在emb=4。
二、关键结论:emb_dim 和 特征域个数几乎没有强制绑定关系
- emb_dim不取决于【你有多少特征域(800个)】,不是特征越多,emb_dim必须越大。
2)emb_dim大小看三件事:
- 单个特征本身的语义复杂度
- 简单特征:性别、是否会员、二元标记-->emb=4/8完全够用
- 复杂特征:用户ID、物品ID、长序列Item-->需要16/32/64
- 模型整体参数量预算
- 参数量公式:参数量=
- 特征多、Vocab大,为了控制参数量,只能把emb_dim压小到4、8。
- 参数量公式:参数量=
- 任务难度&数据信息量
- 业务数据密度高、行为信号足、低维emb也能学到足够区分度;
- 冷启动、稀疏数据多,才需要加高emb_dim。
三、特征少,emb=32;特征多800+个离散,emb=4拟合的也不错,具体分析下这种现象
原因1:特征变量变多,大多是低语义简单特征
800+特征大量是二元标识、小枚举统计、标签类特征、业务标记位,这类特征本身不需要高维向量表达,4维向量足以把它的语义差异分开,没必要32维。
**原因2:特征数量多了,特征之间互补冗余。**以前特征少,只能靠单个高维emb硬抗表达能力;现在800+个特征互相补充、交叉叠加,单个特征不用学太复杂,4维就够。
原因3:为了控制参数量,被迫将emb_dim
如果800+离散特征还用emb=32,:
emb=32:总参数量暴涨800*32=25600基础占用
emb=4:只有800*4=3200
emb太大,参数量爆炸、推理变慢、线上QPS扛不住,必须压到小维度。
原因4:现代模型靠特征交叉/Transformer/Mixer补表达
不是靠单个Embedding高维硬堆;
单个特征emb很低维,后面靠网络高阶交叉自动组合出复杂语义,所以emb=4照样拟合很好。
疑问1:推荐模型里「Embedding占绝大多数参数,Dense层很少」是什么意思?
我给你说真实结构(DeepFM/AFM/传统CTR模型):
- Embedding层:海量ID查表(用户亿级、商品亿级)
每个ID一个向量 → 参数爆炸,占95%以上参数
- Dense交互层(Interaction+DNN):
就是特征交叉、注意力、上层全连接网络
结构简单、层数少、维度低 → 参数非常非常少
举例真实比例:
Embedding:10亿参数
Attention+DNN稠密交互网络:几百万~几千万参数
所以业界说:> 推荐模型:Embedding巨多,Dense交互很少
疑问2:LLM恰恰相反:Dense层占绝大多数,Embedding很少,是什么意思?
LLM结构:
- Token Embedding:词表很小(几万~几十万token)
→ Embedding参数很少
- 主体:几十层Transformer多头自注意力+FFN稠密网络
→ 99%参数都在Dense交互网络(Attention+FFN)
总结对比:
| 模型 | Embedding 查表参数 | Dense 交互网络 (Attention/DNN) 参数 |
|---|---|---|
| 传统推荐 CTR | 极多(95%+) | 极少 |
| 大模型 LLM | 极少 | 极多(99%+) |
疑问3:什么叫 Scaling Up?
Scaling Up = 模型变大、变强、涨效果
LLM能scaling up:只要把Dense交互网络加深加宽,效果就持续涨。
但传统推荐模型不能这么scaling up,因为:
推荐模型参数全堆在Embedding ID查表,
Dense交互网络又很小很弱,没有能力变大变强。
疑问4:为什么要「减少Embedding结构复杂度,把更多能力交给Dense Interaction」?
传统推荐:
能力全靠ID离散Embedding查表记忆(记住用户喜欢什么)
交互网络Dense很弱,几乎不学规律、不学泛化、不学推理。
缺点:
Embedding越来越大,爆炸膨胀
泛化极差,冷启动不行
无法理解语义、无法推理、无法迁移
不能像LLM一样Scaling Up涨效果
所以业界自然想法:
- 降低Embedding复杂度
不要再用海量独立ID查表Embedding(不要纯记忆)
把ID压缩、统一表征、简化Embedding、不再巨量查表
- 把模型能力转移到Dense交互层
加大Attention/Transformer稠密交互网络
让模型靠交互推理学到规律,而不是靠Embedding死记硬背ID
这样推荐系统就能像LLM一样:
Scaling Up(加大稠密交互网络→效果持续变好)
总结:
业界所说推荐模型结构:Embedding(稀疏ID查表嵌入)占绝大部分参数,Dense层(特征交互、注意力、DNN网络)参数量很少。
其中Dense并非指原始连续稠密特征,而是指稠密向量上的交互推理网络。
LLM则相反,Token Embedding参数量很小,绝大部分参数在Attention+FFN稠密交互网络,因此可以通过加大网络实现Scaling Up效果持续增长。
为了让推荐系统也能Scaling Up,需要降低Embedding查表记忆的复杂度,不再依赖海量ID记忆,将模型建模能力迁移到更强的Dense交互网络。
重新理解下面这句话:
推荐模型参数结构通常是:Embedding:占绝大多数,Dense层:很少,而 LLM 则恰恰相反:Dense层占绝大多数,如果推荐系统也想 scaling up,那么一个自然的想法是:
减少 embedding 结构复杂度,把更多能力交给 dense interaction。
于是就出现了一个思路:
把推荐特征 Token 化,然后使用 Transformer 进行建模。
类比 NLP:word → token,推荐系统:feature → token
于是就出现了一个思路: 把推荐特征 Token 化,然后使用 Transformer 进行建模。 类比 NLP:word → token,推荐系统:feature → token
二、流行的工作 RankMixer:语义分组 Tokenization RankMixer 提出的核心思想是: Semantic Group Tokenization(语义分组 Token) 首先按照语义将特征分组: 用户属性特征(User features) 物料特征(Item features) 行为序列特征(Sequence features) 交叉特征(Cross features) 每一组内部先进行 embedding 并拼接,然后在每个语义组内部 均匀切分 Token。最终每个语义组都会生成多个 token,这种设计的好处是: token 数量可控 保留语义结构 计算更适合并行
我想问的是,每一组embedding后拼接,那么就不需要 查表了吗? 为什么之前的离散特征需要查表,这个就不需要查表呢?
上面是文章中原话,我这里重新理解一下:
先直接回答你最核心、最疑惑的一句:
不是不需要查表!!!依然需要Embedding查表!
RankMixer 没有抛弃离散特征ID查表,只是改变了查表之后的结构,把传统推荐的「单特征单Embedding向量」改成了「分组Embedding → 切分成Token」。
1.先回忆:传统推荐模型(DeepFM/AFM)怎么做离散特征?
每个离散特征字段(用户ID、商品ID、城市、性别、品类...)
→ 单独查表 Embedding Lookup
每个字段输出1个稠密向量
然后所有向量直接拼接 → 送入Interaction交叉层
结构:
离散ID特征 → 查表Embedding → 单向量 → 拼接 → 交叉交互
特点:
Embedding全是ID查表参数(占99%参数)
一个特征=一个向量,没有Token概念
没法直接进Transformer,不能Token化建模
2.RankMixer:语义分组Token化,到底变了什么?
它第一步依然是离散特征查表Embedding!完全没变!
它只改查表之后的步骤:
步骤1(依然查表!)
用户属性组里所有离散ID特征 → 各自查表Embedding
行为序列组里所有ID → 各自查表Embedding
物料特征组里所有ID → 各自查表Embedding
步骤2(RankMixer新增)
同语义组内所有Embedding向量拼接在一起,变成一个长向量
比如用户组所有特征Embedding拼成一条长稠密向量
步骤3(核心:均匀切分Token)
把这条长向量均匀切成多段
每一段 = 一个Semantic Group Token
每一组embedding后拼接,那么就不需要 查表了吗?
为什么之前的离散特征需要查表,这个就不需要查表呢?
✅ 正确答案:
RankMixer 依然需要离散特征ID查表Embedding!!!
和传统推荐查表完全一样。
区别只有:
传统推荐:查表出来 → 一个特征一个向量,直接用
RankMixer:查表出来 → 同语义分组拼接长向量 → 再切成Token
查表 = 完全保留
Token化 = 查表之后的二次重构
4.一句话彻底分清(超好理解)
-
离散特征ID → 查表Embedding:这一步是特征转稠密向量,所有模型都必须有,RankMixer也有
-
Embedding拼接+切分Token:这一步是向量重组织成Transformer可用格式,是RankMixer创新
不是不用查表,
是查表之后不直接当特征用,而是打包分组切成Token。
5.再对应你原文RankMixer好处,瞬间全部通顺
原文:
> 按照语义分组Embedding并拼接,每组内部均匀切分Token
好处:token数量可控、保留语义结构、并行友好
解释:
依然ID查表Embedding(没丢传统推荐能力)
按语义分组,不破坏用户/物料/行为语义
长向量切Token,token数量可控,不会爆炸
变成标准Token序列,直接喂Transformer/RankMixer建模
完美承接你之前的结论:
> 推荐特征 Token化,类比NLP:word→token,推荐feature→token
疑问5:传统推荐: 能力全靠ID离散Embedding查表记忆(记住用户喜欢什么),没理解的是:为啥embedding就是记忆属性呢,我理解embedding dim是超参,且也是模型学出来的呀,为什么dense就可以学习到泛化呢
为啥说 ID类离散Embedding = 纯记忆?明明也是模型学出来的、dim也是超参啊?
为啥 Dense连续特征 = 天然带泛化能力?
一、先纠正你的误区
你说得完全没错:
Embedding 确实是模型反向传播学出来的
Embedding维度 确实是人工设的超参
但"是不是记忆 / 是不是泛化",不看怎么学、不看是不是超参,
看的是:特征本身的信息结构是什么。
二、先讲:什么叫「记忆 Memorization」
推荐里的记忆定义:
> 模型记住单个个体的历史行为、一对一的直接匹配关系,
> 不会推理、不会类比、不会举一反三。
直白说:见过的样本我记得住,没见过的我推不出来。
三、为什么 ID / 离散特征 Embedding 天生就是「记忆」?
1)ID 本身没有任何语义,只是一个编号
用户ID、物品ID、店铺ID、视频ID......
本质就是一串唯一编号,本身没有任何数学大小、顺序、语义关系。
比如:
ID=10086
ID=10087
这两个数字大小相邻,但用户兴趣可能毫无关系。
2)模型能做的 只有一件事:给每个ID单独分配一个向量,死记它的行为
训练过程等价于:
> 给每一个用户ID、每一个物品ID,单独配一条专属Embedding向量 ,
> 用这个向量死记这个用户点过什么、看过什么。
这就是查表记忆: 每个ID一条独立记录,ID之间没有自动相似推理,没出现过的新ID,完全没能力猜
关键:虽然是模型学出来的,但本质是「独立插槽记档案」
你觉得"是模型学的就不是记忆",这是误区。
学习 ≠ 泛化
可以学习单独记录(记忆),也可以学习规律(泛化)。
ID Embedding 学的是:给每个ID配专属向量存档 → 纯记忆。
四、为什么 Dense 稠密特征天生自带「泛化 Generalization」?
1)Dense 是有连续物理含义的数值
比如:
用户历史点击率 0.02
视频完播率 0.65
用户活跃度 3.7
内容时长、互动频次
这些数值有大小、有趋势、有连续变化关系。
2)模型能学到数值规律、区间规律,可以举一反三
模型能学到:
> 完播率越高 → 越容易被推荐
> 点击率在 0.01~0.03 的用户是一类偏好
不用见过每一个具体用户,只要数值落在这个区间,模型就能自动推理、预估。
这就是泛化:
见过一类规律,就能推广到没见过的新样本。
- Sparse/ID Embedding:
虽然是模型训练得到、维度是超参,但因为ID只是无语义唯一编号,模型只能给每个ID分配独立向量逐条存档记行为,属于记忆能力,没法自动类比泛化。
- Dense稠密特征:
自带连续数值语义、有大小和区间规律,模型能学到通用规则,对新样本做推理,天然具备泛化能力。
工业界经典搭配
传统推荐:
靠ID Embedding负责记忆(记住历史偏好)
靠Dense统计特征 + 侧特征负责泛化(推理未知用户/物品)
两者互补,才是完整推荐能力。
表格:
| 特征类型 | 原始特征性质 | 处理方式 | 输出形态 | 是否有序 / 有连续语义 | 能力属性(记忆 / 泛化) | 核心特点 | 工业适用场景 |
|---|---|---|---|---|---|---|---|
| ID 类天然离散特征(用户 ID / 物品 ID / 城市 / 性别 / 类目) | 天然分类离散,编号无业务大小含义 | 直接编码为 Vocab 索引,查表 Embedding | 稠密 Embedding 向量 | 无序、无数值渐变关系,ID 编号相邻不代表兴趣相似 | 纯记忆,几乎无泛化 | 每个独立 ID 单独分配向量,只能逐条存档记住历史偏好;新 ID 无法推理类比 | 强个性化记忆、用户独有行为偏好刻画 |
| 原始 Dense 连续特征(点击率 / 完播率 / 时长 / 活跃度 / 频次) | 原生浮点 / 整数连续数值,有大小、区间、渐变规律 | 归一化 / 标准化,直接一维数值送入网络,不做 Embedding | 稠密标量(1 维数值) | 严格有序,数值连续平滑变化 | 强泛化,弱记忆 | 模型可学习数值区间规律、平滑插值;从未见过的新数值也能推理 | 需要强泛化、保留细粒度数值梯度 |
| 连续特征分桶离散(年龄 / 点击率 / 时长人工切桶) | 原本是连续数值,人为划分区间桶 | 先分桶→桶编号→查表 Embedding | 稠密 Embedding 向量 | 桶之间有序、保留区间渐变趋势 | 中间态:有泛化、弱于原生 Dense | 丢失精细粒度,但保留相邻桶相似性,可类比推理;不会退化成 ID 纯记忆 | 抗离群值、训练更稳、统一 Sparse 特征输入格式 |
| 对比维度 | 稠密 / 稀疏 | 记忆 / 泛化 |
|---|---|---|
| 判定依据 | 数据存储与向量形态:是否大量为 0 | 特征语义结构 & 推理能力:是否有连续规律、可类比插值 |
| 关联关系 | 仅描述格式,和记忆、泛化无绑定关系 | 和是否稠密无关,只看原始特征有没有有序连续语义 |
| 典型误区 | 认为「Embedding 是稠密就自带泛化」 | 认为「离散特征一定是纯记忆」 |
| 业务诉求 | 特征选择方案 |
|---|---|
| 追求最强泛化能力、保留数值细粒度 | 连续值归一化直接当 Dense 输入 |
| 抗离群噪声、训练稳定、统一特征格式 | 连续特征分桶离散后走 Embedding |
| 需要强个性化记忆、刻画独有用户偏好 | 依赖 ID 类 Sparse 特征 + Embedding 查表 |