Wide&Deep
记忆能力:模型直接学习并利用历史数据中物品或特征的“共现频率”的能力。
- 高频、常见的特征
泛化能力:模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。
不应该进 DNN,进入 DNN 之后没有记忆性。
Wide 侧
-
人工特征工程
- 只输入已安装应用以及曝光应用
TODO #card 为什么现在搜索排序或者推荐不常用这种架构?
+
[[Code]]
-
tf.estimator.DNNLinearCombinedClassifier
-
稀疏特征向量如何乘以一个稠密的权重矩阵
-
One-Hot-Encoding
-
Multi-Hot-Encoding
-
tf.sparse.SparseTensor(indices, values, dense_shape)
dense_shape 需要指定原始 tensor 的尺寸 -
[[Tensorflow]]
-
tf.sparse_tensor_dense_matmul(sp_a, b, ……)
- 特征权重默认为 1
-
tf.nn.embedding_lookup_sparse(params, sp_ids, sp_weights)
-
相同 id 取出权重后可以指定聚合方法
-
一个 feature 有多个
<tag, value>
-
实际使用
safe_embedding_lookup_sparse
-
和
embedding_lookup
区别- 处理离散特征只有一个取值的情况。无法处理多个 tag。
-
-
-
如何实现两部分使用不同的优化器
group
-
特征
-
_CategoricalColumn
-
_WeightedCategoricalColumn
-
_DenseColumn
-
_EmbeddingColumn
-
[[Ref]]
-
[[@看Google如何实现Wide & Deep模型]]
-
为什么wide&deep模型用ftrl和adagrad两种优化方法? - 知乎 #card
-
wide 部分看成传统的 lr,用 ftrl 可以得到稀疏权重,ftrl 考虑之前每一轮训练的梯度和。
- lr稀疏为了减少特征数量,可以降低计算复杂度
-
deep 部分是神经网络,权重是否稀疏不重要,过去样本提供的信息少于最近的样本提供的信息。
-
-
见微知著,你真的搞懂Google的Wide&Deep模型了吗? - 知乎
- Wide 部分大量 id 特征进行交叉,利用 [[FTRL]] 以及 L1 正则过滤稀疏特征。