Skip to content

Commit 5f6d1b9

Browse files
committed
修复esmm的描述问题 & pdf中的图片大小问题
1 parent 9e7a3e3 commit 5f6d1b9

30 files changed

+307
-138
lines changed

docs/_images/esmm.png

106 KB
Loading

docs/_images/esmm_sample_bias.png

34.4 KB
Loading

docs/_images/xdeepfm.png

-211 KB
Loading

docs/_sources/chapter_2_ranking/1.wide_and_deep.rst.txt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@
1818

1919
这个架构的核心思想是将模型结构拆分为两个部分,分别承担不同的职责,如下图所示:
2020

21+
.. _wide_and_deep_model_structure:
22+
2123
.. figure:: ../img/wide_and_deep.png
24+
:width: 400px
2225

2326
Wide & Deep 模型结构图
2427

28+
29+
2530
**记忆的捷径:Wide部分**
2631

2732
Wide部分本质上是一个广义线性模型,比如逻辑回归。它的优势在于结构简单、可解释性强,并且能高效地“记忆”那些显而易见的关联规则。其数学表达形式如下:
@@ -105,9 +110,9 @@ Deep不仅是一个具体的模型,更是一种重要的设计哲学,它为
105110
.. parsed-literal::
106111
:class: output
107112
108-
+-------+--------+---------------+
109-
| auc | gauc | valid_users |
110-
+=======+========+===============+
111-
| 0.604 | 0.5764 | 928 |
112-
+-------+--------+---------------+
113+
+--------+--------+---------------+
114+
| auc | gauc | valid_users |
115+
+========+========+===============+
116+
| 0.5958 | 0.5745 | 928 |
117+
+--------+--------+---------------+
113118

docs/_sources/chapter_2_ranking/2.feature_crossing/1.second_order.rst.txt

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,15 @@ FM: 隐向量内积与参数共享
1616
:cite:`rendle2010factorization`
1717
,并见证了它如何作为双塔模型的雏形,通过向量匹配实现召回。在精排阶段,FM的价值得到了更核心的体现。它作为解决特征交叉自动化问题的开创性模型,其核心思想——**为每个特征学习一个低维隐向量,并用向量内积来参数化所有二阶交叉项的权重**——不仅有效解决了参数数量过多和数据稀疏性两大难题,也为这一小节后续模型奠定了方法论的基础。
1818

19+
.. _fm_model_structure:
20+
1921
.. figure:: ../../img/fm_model.png
22+
:width: 400px
2023

2124
FM模型结构
2225

26+
27+
2328
为了捕捉特征间的交互关系,一个直接的想法是在线性模型的基础上增加所有特征的二阶组合项,即多项式模型:
2429

2530
.. math::
@@ -72,10 +77,15 @@ FM
7277
:cite:`xiao2017attentional`
7378
在此基础上引入注意力机制,为不同的特征交叉分配权重,使模型能关注到更重要的交互。例如,在预测一位用户是否会点击一条体育新闻时,“用户年龄=18-24岁”与“新闻类别=体育”的交叉,其重要性显然要高于“用户年龄=18-24岁”与“新闻发布时间=周三”的交叉。
7479

80+
.. _afm_model_structure:
81+
7582
.. figure:: ../../img/afm_architecture.png
83+
:width: 500px
7684

7785
AFM模型结构
7886

87+
88+
7989
AFM 的模型结构在 FM
8090
的基础上进行了扩展。它首先将所有成对特征的隐向量进行\ **元素积(Hadamard
8191
Product, 记为 :math:`\odot`\ **\ ,而不是像 FM
@@ -172,10 +182,15 @@ Product)作为补充,尝试从更丰富的角度来表示特征间的交互*
172182
的核心创新在于其“乘积层”(Product Layer),该层专门用于对特征 Embedding
173183
进行显式的交叉操作,其输出再送入后续的全连接网络。
174184

185+
.. _pnn_model_structure:
186+
175187
.. figure:: ../../img/pnn.png
188+
:width: 400px
176189

177190
PNN模型结构
178191

192+
193+
179194
PNN 的乘积层会产生两部分信号,一部分是线性信号
180195
:math:`\mathbf{l}_z`\ ,直接来自于各特征的 Embedding 向量,定义为:
181196

@@ -255,10 +270,15 @@ FiBiNET: 特征重要性与双线性交互
255270
:cite:`huang2019fibinet`
256271
模型认识到了这个问题,\ **它在进行二阶特征交叉之前,先动态地学习每个特征的重要性权重,然后再通过双线性交互来捕捉更精细的特征关系**\ 。这种设计使得模型能够有选择性地进行特征交互,从而提升二阶特征交叉的质量。
257272

273+
.. _fibinet_architecture:
274+
258275
.. figure:: ../../img/fibinet_architecture.png
276+
:width: 500px
259277

260278
FiBiNET架构图
261279

280+
281+
262282
FiBiNET 的创新主要体现在两个核心模块上:\ **SENET
263283
特征重要性学习机制**\ \ **双线性交互层**\
264284

@@ -269,10 +289,15 @@ Network)** :cite:`hu2018squeeze`
269289
机制,用于动态学习每个特征的重要性权重。与传统方法对所有特征一视同仁不同,SENET
270290
能够自适应地为不同特征分配不同的权重,让模型更加关注那些对预测任务更重要的特征。
271291

292+
.. _fibinet_senet_structure:
293+
272294
.. figure:: ../../img/fibinet_senet.png
295+
:width: 400px
273296

274297
SENET层结构详解
275298

299+
300+
276301
SENET 的工作流程包含三个关键步骤:
277302

278303
1. **Squeeze (挤压)**: 通过全局平均池化将每个特征的 :math:`k` 维嵌入向量
@@ -326,10 +351,15 @@ DeepFM :cite:`guo2017deepfm` 是对 Wide & Deep
326351
组件共享同一份特征嵌入(Embedding)**\ ,这带来了两大好处:首先,模型可以同时从原始特征中学习低阶和高阶的特征交互;其次,共享
327352
Embedding 的方式使得模型训练更加高效。
328353

354+
.. _deepfm_architecture:
355+
329356
.. figure:: ../../img/deepfm_architecture.png
357+
:width: 400px
330358

331359
DeepFM模型结构
332360

361+
362+
333363
DeepFM 的结构非常清晰,它由 FM 和 DNN 两个并行的组件构成,两者共享输入。
334364

335365
- **FM 组件**: 负责学习一阶特征和二阶特征交叉。其输出 yFM
@@ -398,16 +428,16 @@ Deep那样依赖专家的特征工程。这种设计使得DeepFM成为一个端
398428
+---------+--------+--------+---------------+
399429
| 模型 | auc | gauc | valid_users |
400430
+=========+========+========+===============+
401-
| fm | 0.5977 | 0.5701 | 928 |
431+
| fm | 0.5909 | 0.5711 | 928 |
402432
+---------+--------+--------+---------------+
403-
| afm | 0.5875 | 0.5655 | 928 |
433+
| afm | 0.5821 | 0.5646 | 928 |
404434
+---------+--------+--------+---------------+
405-
| nfm | 0.5721 | 0.5497 | 928 |
435+
| nfm | 0.5966 | 0.5628 | 928 |
406436
+---------+--------+--------+---------------+
407-
| pnn | 0.5918 | 0.5733 | 928 |
437+
| pnn | 0.5967 | 0.5713 | 928 |
408438
+---------+--------+--------+---------------+
409-
| fibinet | 0.5982 | 0.5686 | 928 |
439+
| fibinet | 0.5995 | 0.5745 | 928 |
410440
+---------+--------+--------+---------------+
411-
| deepfm | 0.5917 | 0.5725 | 928 |
441+
| deepfm | 0.6069 | 0.5743 | 928 |
412442
+---------+--------+--------+---------------+
413443

docs/_sources/chapter_2_ranking/2.feature_crossing/2.higher_order.rst.txt

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,15 @@ DCN: 残差连接的高阶交叉
1414
通过一个创新的Cross Network来替代Wide &
1515
Deep模型中的Wide部分。该网络的核心思想是在每一层都与原始的输入特征进行交叉,从而以一种显式且可控的方式,自动构建更高阶的特征交互,而无需繁琐的人工特征工程。
1616

17+
.. _dcn_model_structure:
18+
1719
.. figure:: ../../img/deepcross.png
20+
:width: 400px
1821

1922
DCN模型结构
2023

24+
25+
2126
DCN的整体结构由并行的Cross Network和Deep
2227
Network两部分组成,它们共享相同的Embedding层输入。首先,模型将稀疏的类别特征转换为低维稠密的Embedding向量,并与数值型特征拼接在一起,形成统一的输入向量
2328
:math:`\mathbf{x}_0`\
@@ -39,10 +44,15 @@ Network是DCN的核心创新。它由多个交叉层堆叠而成,其精妙之
3944
Network的初始输入向量,\ :math:`\mathbf{w}_l, \mathbf{b}_l \in \mathbb{R}^d`
4045
分别是第 :math:`l` 层的权重和偏置列向量。
4146

47+
.. _cross_network_structure:
48+
4249
.. figure:: ../../img/cross_network.png
50+
:width: 300px
4351

4452
Cross Network
4553

54+
55+
4656
我们可以观察到,这个结构本质上是一个残差网络。每一层都在上一层输出
4757
:math:`\mathbf{x}_l` 的基础上,增加了一个交叉项
4858
:math:`\mathbf{x}_0 \mathbf{x}_l^T \mathbf{w}_l` 和一个偏置项
@@ -77,9 +87,14 @@ Interaction Network, CIN) :cite:`lian2018xdeepfm` ,以
7787

7888
xDeepFM的整体架构同样由三部分组成:一个传统的线性部分、一个用于隐式高阶交叉的DNN,以及创新的CIN网络用于显式高阶交叉。这三部分的输出最终被结合起来进行预测。
7989

90+
.. _xdeepfm_architecture:
91+
8092
.. figure:: ../../img/xdeepfm.png
93+
:width: 400px
94+
95+
xdDeepFM模型架构
96+
8197

82-
xdeepfm模型架构
8398

8499
CIN的设计目标是实现向量级别的显式高阶交互,同时控制网络复杂度。它的输入是一个\ :math:`m \times D`\ 的矩阵
85100
:math:`\mathbf{X}_0`\ ,其中 :math:`m`
@@ -159,10 +174,15 @@ AutoInt (Automatic Feature Interaction) :cite:`song2019autoint`
159174
架构的核心思想,\ **通过多头自注意力机制来自动、自适应地学习任意阶数的特征交互**\ 。与前面介绍的方法不同,AutoInt
160175
不依赖于固定的交互模式,而是让模型在训练过程中学习出最有效的特征交互组合。
161176

177+
.. _autoint_overview:
178+
162179
.. figure:: ../../img/autoint_overview.png
180+
:width: 400px
163181

164182
AutoInt模型原理示意图
165183

184+
185+
166186
AutoInt
167187
的整体架构相对简洁,它将所有输入特征(无论是类别型还是数值型)都转换为相同维度的嵌入向量
168188
:math:`\mathbf{e}_m \in \mathbb{R}^d`\ ,其中 :math:`m` 代表第 :math:`m`
@@ -208,10 +228,15 @@ AutoInt
208228
:math:`\mathbf{\tilde{e}}_m^{(h)}`
209229
本质上就是一个通过自适应学习得到的新组合特征。
210230

231+
.. _autoint_attention:
232+
211233
.. figure:: ../../img/autoint_attention.png
234+
:width: 350px
212235

213236
自注意力机制示意图
214237

238+
239+
215240
**多层交互与高阶特征学习**
216241

217242
“多头”机制允许模型在不同的子空间中并行地学习不同方面的特征交互。模型将所有
@@ -273,10 +298,10 @@ AutoInt 的一个巨大优势是其可解释性,通过可视化注意力权重
273298
+---------+--------+--------+---------------+
274299
| 模型 | auc | gauc | valid_users |
275300
+=========+========+========+===============+
276-
| dcn | 0.6078 | 0.572 | 928 |
301+
| dcn | 0.6039 | 0.5744 | 928 |
277302
+---------+--------+--------+---------------+
278-
| xdeepfm | 0.6 | 0.574 | 928 |
303+
| xdeepfm | 0.6038 | 0.5736 | 928 |
279304
+---------+--------+--------+---------------+
280-
| autoint | 0.5919 | 0.5695 | 928 |
305+
| autoint | 0.5986 | 0.5725 | 928 |
281306
+---------+--------+--------+---------------+
282307

docs/_sources/chapter_2_ranking/3.sequence.rst.txt

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ Ad)不同而动态变化的。**
3030
.. _din_architecture:
3131

3232
.. figure:: ../img/din_architecture.png
33+
:width: 800px
3334

3435
DIN模型架构图(右)及其与基准模型(左)的对比
3536

3637

38+
3739
**技术实现:注意力机制**
3840

3941
为了实现“局部激活”这一思想,DIN在模型中引入了一个关键模块——**局部激活单元(Local
@@ -71,10 +73,12 @@ DIEN) :cite:`zhou2019deep`
7173
.. _dien_architecture:
7274

7375
.. figure:: ../img/dien.png
76+
:width: 800px
7477

7578
DIEN模型架构图
7679

7780

81+
7882
DIEN的核心思想是,直接对原始、显性的行为序列建模是不够的。行为只是表象,我们更应该关注行为背后那个潜在的、抽象的
7983
**“兴趣”状态**\ ,并对这个兴趣状态的演化过程进行建模。为此,DIEN设计了一个两阶段结构,如上图所示。
8084

@@ -138,20 +142,30 @@ Gate)上融入了注意力机制。注意力得分\ :math:`a_t`\ 由\ :math:`t
138142
从DIN到DIEN,我们看到了模型对用户兴趣的理解从“静态相关”走向了“动态演化”。然而,它们都将用户的行为看作一条连续的序列。但现实中,用户的行为模式更多是间断性的。用户通常在\ **一个会话(Session)**
139143
内拥有一个明确且集中的意图,而在\ **不同会话**\ 之间,兴趣点可能发生巨大转变。
140144

145+
.. _dsin_session_structure:
146+
141147
.. figure:: ../img/dsin_session.png
148+
:width: 350px
142149

143150
用户行为的会话结构示例
144151

152+
153+
145154
如上图所示,一个用户可能在一个会话里集中浏览各种裤子,而在下一个会话则专注于戒指。这种\ **会话内同质、会话间异质**\ 的现象非常普遍。如果直接用一个RNN模型处理这种“断层”明显的长序列,模型需要花费很大力气去学习这种兴趣的突变,效果并不理想。
146155

147156
深度会话兴趣网络(Deep Session Interest Network, DSIN)
148157
:cite:`feng2019deep`
149158
基于这一观察,提出我们应该将“会话”作为分析用户行为的基本单元,并采用一种\ **分层**\ 的思想来建模。
150159

160+
.. _dsin_architecture:
161+
151162
.. figure:: ../img/dsin_architecture.png
163+
:width: 400px
152164

153165
DSIN模型架构图
154166

167+
168+
155169
**DSIN的技术实现:分层建模**
156170

157171
DSIN的架构如上图所示,其建模过程可以清晰地分为几个层次:
@@ -207,10 +221,10 @@ DSIN通过引入“会话”这一更符合用户实际行为模式的中间单
207221
+--------+--------+--------+---------------+
208222
| 模型 | auc | gauc | valid_users |
209223
+========+========+========+===============+
210-
| din | 0.5783 | 0.5557 | 928 |
224+
| din | 0.579 | 0.5563 | 928 |
211225
+--------+--------+--------+---------------+
212-
| dien | 0.5719 | 0.5482 | 928 |
226+
| dien | 0.5832 | 0.5476 | 928 |
213227
+--------+--------+--------+---------------+
214-
| dsin | 0.4343 | 0.5342 | 99 |
228+
| dsin | 0.5527 | 0.5545 | 99 |
215229
+--------+--------+--------+---------------+
216230

0 commit comments

Comments
 (0)