
在学习了FTRL和FM之后我们将来学习WideDeep。我的理解就是一个LRMLP。好的那么接下来我们就举一个例子来具体说明wide and deep是怎么操作的。Wide 部分的使命记忆Memorization假设我们现在用户特征和物品特征① 用户特征、居住地cityx1(北京)、x2(上海)、x3(广州)、x4(深圳)、x5(成都)....薪资水平salarys1(低)、s2(中)、s3(高)② 物品特征、商品品类categoryc1(电子)、c2(服饰)、c3(食品)、c4(家居)....商品价格pricep1(100元)、p2(250元)、p3(300元)....我们有了这样一些这样一些数据就需要通过特征工程进行处理。那么在这里由于wide部分我们使用LR所以需要人工交叉特征比如人工交叉特征交叉 1居住地 商品品类比如北京 电子、上海 服饰交叉 2薪资水平 商品价格比如高薪资 高价、低薪资 低价在wide层我们采用LR模型那我们只需要做One-Hot 编码。而且由于该层的目的是记住哪些显而易见的规则所以我们不会采用embedding。记忆 记住明确的、高频的、强规则比如北京用户 → 爱买电子产品要实现这个必须用稀疏的 One-Hot 特征 人工交叉特征。下面是对于LR部分输入对比输入类型稀疏 One-HotWide 标准用法稠密 Embedding你说的可行用法特征含义原始特征北京 1电子 1压缩后的向量丢失原始特征信息核心能力强记忆直接学到「北京 电子」这个规则的权重弱记忆向量是模糊的记不住具体规则可解释性极高权重高 这个规则有效极低不知道向量代表什么WideDeep 定位✅ 完美匹配「记忆」使命❌ 变成了泛化和 Deep 部分重复而且在这一部分我们将采用FTRL优化器因为我们前面提到该优化器可以适应高维稀疏的特征。Deep 部分Embedding MLP我们这里把刚才的特征copy过来。假设我们现在用户特征和物品特征① 用户特征、居住地cityx1(北京)、x2(上海)、x3(广州)、x4(深圳)、x5(成都)....薪资水平salarys1(低)、s2(中)、s3(高)② 物品特征、商品品类categoryc1(电子)、c2(服饰)、c3(食品)、c4(家居)....商品价格pricep1(100元)、p2(250元)、p3(300元)....我们需要做什么呢Deep 类别特征→Embedding→拼接→多层神经网络MLP这是和 LR 最大的区别不用人工交叉神经网络自动学特征交互。Embedding 层把高维 One-Hot 特征 → 低维稠密向量比如每个特征映射为5 维 Embeddingcity (5 维 One-Hot) → emb (5 维)salary (3 维 One-Hot) → emb (5 维)category (4 维 One-Hot) → emb (5 维)price (3 维 One-Hot) → emb (5 维)特征拼接4 个 Embedding 向量拼接 →20 维稠密向量MLP 层全连接神经网络输入 20 维 → 隐藏层 1 (16 维) → 隐藏层 2 (8 维) → 输出 (1 维)更加详细的解释就是规则 1一个特征字段 一个独立的 Embedding 层你有4 个特征字段→创建 4 个独立的 Embedding 层层 1专门给city用层 2专门给salary用层 3专门给category用层 4专门给price用规则 2每个 Embedding 层存储该字段所有取值的向量比如city有 5 个取值 → Embedding 层里存5 个向量salary有 3 个取值 → Embedding 层里存3 个向量规则 3输入样本时只取「当前特征取值」对应的向量举个你数据的真实样本用户北京 (x1) 低薪资 (s1)物品电子 (c1) 100 元 (p1)Deep 端的 Embedding 操作从cityEmbedding 层 → 取出北京对应的向量从salaryEmbedding 层 → 取出低薪资对应的向量从categoryEmbedding 层 → 取出电子对应的向量从priceEmbedding 层 → 取出100 元对应的向量规则 4把所有向量拼接喂给 MLP4 个向量拼在一起 → 输入神经网络。到这里我们就把deep层讲清楚了。那么下面有几个问题1. 是「一个特征一个 embedding」吗✅是但严格说是一个特征字段Field一个 Embedding 层不是「北京」单独一个层、「上海」单独一个层而是city共用一个层所有城市取值共享这个层。2. 是「一个用户一个 embedding」吗❌绝对不是千万不要这么理解一个用户是多个特征的组合居住地 薪资 ...如果一个用户一个 Embedding电商有几亿用户根本存不下新用户直接没有 Embedding无法预测。那么在这一部分我们可以采用常规的优化器。