Wide & Deep论文阅读笔记

Introduction

Memorization记忆能力(Wide):

可以简单定义为学习item和features的共同出现频率以及在历史数据中的协同关系。

Generalization泛化能力(Deep):

可以简单认为是基于相关关系的传递性去发掘在历史没出现过或者很少出现新的特征组合。

Wide & Deep Learning

Wide部分

Wide部分是形式为
y = w T x + b y=\boldsymbol w^T\boldsymbol x+b y=wTx+b
的广义线性模型。
其中(向量默认为列向量):

  1. y \boldsymbol y y为预测值
  2. x = [ x 1 , x 2 , . . . , x d ] x = [x_1,x_2,...,x_d] x=[x1,x2,...,xd]为特征向量
  3. w = [ w 1 , w 2 , . . . , w d ] w = [w_1,w_2,...,w_d] w=[w1,w2,...,wd]为模型参数
  4. b b b为偏置项

特征集合包括原始特征值以及经过转换(tranformed)后的特征(特征既可以是连续的,也可以是稀疏的),其中最为重要的就是cross-product transformation

定义:
ϕ k ( x ) = ∏ i = 1 d x i c k i c k i ∈ { 0 , 1 } \phi_k(\boldsymbol x) = \prod_{i=1}^dx_i^{c_{ki}}\quad c_{ki}\in \{0,1\} ϕk(x)=i=1dxickicki{0,1}
其中 c k i c_{ki} cki是一个布尔值,当第i个特征是第k个tranformation的"一部分"(part of)时为1,否则为0。

这个看起来有些复杂的式子可以简单理解为one-hot特征之后进行组合而来的新特征,transformation ϕ k \phi_k ϕk及其所用到的原始特征都是我们自己定义的,只不过组合的方式是将特征值进行类乘。

cross-product transformation只用于在二值(稀疏)特征中学习组合特征,并为模型增加非线性。

Deep部分

Deep部分为一个前馈神经网络,主要作用就是E mbedding(从稀疏高维的categorical features嵌入(Embedding)到一个低维实数域的向量)。Embedding向量维度多数在[10,100]区间内。

隐藏层(hidden layer)的计算表达式:
a ( l + 1 ) = f ( W ( l ) a ( l ) + b ( l ) ) a^(l+1) = f(W^{(l)}a^{(l)}+b^{(l)}) a(l+1)=f(W(l)a(l)+b(l))
其中:
l l l为隐藏层序号, f f f为激活函数(通常使用ReLUs) W ( l ) W^{(l)} W(l) a ( l ) a^{(l)} a(l) b ( l ) b^{(l)} b(l)为l层的参数、输入、偏置。

Wide & Deep 联合训练

wideanddeep

对Wide和Deep部分所输出的对数几率进行加权求和作为prediction,并fed到logistic损失函数中进行训练。

原论文中使用FTRL+L1正则作为Wide部分的优化器,使用AdaGrad作为Deep部分的优化器。

Wide & Deep融合后图示如上图,数学表达如下:
P ( Y = 1 ∣ x ) = σ ( w w i d e T [ x , ϕ ( x ) + w d e e p T a ( l f ) + b ] ) P(Y=1|x) = \sigma(\boldsymbol w_{wide}^T[\boldsymbol x,\phi(\boldsymbol x)+\boldsymbol w_{deep}^Ta^{(l_f)}+b]) P(Y=1x)=σ(wwideT[x,ϕ(x)+wdeepTa(lf)+b])
其中:
Y Y Y为二值标签, σ ( ⋅ ) \sigma(·) σ为sigmoid函数, ϕ ( x ) \phi(\boldsymbol x) ϕ(x)为对原始特征 x x xcross-product transformation b b b为偏置项, w w i d e \boldsymbol w_{wide} wwide为Wide部分权重, w d e e p \boldsymbol w_{deep} wdeep为应用到最后激活层 a ( l f ) a^{(l_f)} a(lf)的权重。

### 关于 Wide & Deep Learning for Recommender Systems 的出处 Wide & Deep 学习框架首次被提出是在由 Google 发表的一篇重要论文中,这篇论文名为《Wide & Deep Learning for Recommender Systems》[^1]。此论文主要探讨了一种新的机器学习架构——宽深网络(Wide & Deep Network),其目的是为了在推荐系统中更好地平衡记忆化(Memorization)和泛化能力(Generalization)。这种架构通过联合训练广度模型(Wide Model)和深度神经网络模型(Deep Neural Network, DNN Model),从而实现了短期收益最大化的同时兼顾长期探索的可能性。 具体而言,Wide 部分负责处理高频特征及其组合的记忆功能,而 Deep 部分则专注于捕捉低频甚至未见过的特征组合,以此增强系统的泛化性能[^4]。这一设计使得该模型特别适合应用于数据稀疏性较高的场景下,例如个性化推荐服务等领域。 因此,《Wide & Deep Learning for Recommender Systems》可以被认为是原始文献的主要来源之一,并且已经被广泛认可为推荐算法研究领域内的经典之作。 ```python # 示例代码片段用于说明如何实现基本的 Wide&Deep 架构 import tensorflow as tf def build_wide_deep_model(wide_columns, deep_columns): feature_columns = wide_columns + deep_columns # 定义输入层 inputs = { col.name: tf.keras.layers.Input(name=col.name, shape=(1,), dtype=tf.float32) for col in feature_columns } # 广度部分 (线性模型) wide = tf.feature_column.input_layer(inputs, wide_columns) # 深度部分 (DNN 模型) deep = tf.feature_column.input_layer(inputs, deep_columns) for units in [128, 64]: deep = tf.keras.layers.Dense(units)(deep) deep = tf.keras.layers.BatchNormalization()(deep) deep = tf.keras.layers.ReLU()(deep) # 合并两部分输出 combined_output = tf.keras.layers.concatenate([wide, deep]) output = tf.keras.layers.Dense(1, activation='sigmoid')(combined_output) model = tf.keras.Model(inputs, output) return model ``` #### 参考上述内容总结得出结论: 综上所述,《Wide & Deep Learning for Recommender Systems》一文出自谷歌团队的研究成果,它是当前许多实际生产环境中所采用的技术基础理论依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值