forked from nosuggest/Reflection_Summary
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
shataowei
committed
Nov 29, 2019
1 parent
c040d90
commit 8aa0259
Showing
4 changed files
with
210 additions
and
35 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# DNN与DeepFM之间的区别? | ||
DNN是DeepFM中的一个部分,DeepFM多一次特征,多一个FM层的二次交叉特征 | ||
|
||
# Wide&Deep与DeepFM之间的区别? | ||
DeepFM对Wide&Deep中的Wide层进行了优化,增加了交叉特征 | ||
|
||
# 你在使用deepFM的时候是如何处理欠拟合和过拟合问题的? | ||
欠拟合:增加deep部分的层数,增加epoch的轮数,增加learning rate,增加正则化力度 | ||
过拟合:在deep层直接增加dropout的率,减少epoch轮数,增加更多的数据,减少正则化力度,shuffle数据 | ||
|
||
# DeepFM怎么优化的? | ||
- embedding向量可以通过FM初始化 | ||
- Deep层可以做优化 | ||
- NFM:把deep层的做NFM类型的处理,其实就是deep层在输入之前也做一个二阶特征的交叉处理和fm层一致 | ||
- FM层可以变得交叉更多阶 | ||
- XDeepFM | ||
|
||
# 不定长文本数据如何输入deepFM? | ||
- 截断补齐 | ||
- 结合文本id+文本长度,在做文本处理之前,先做不等长的sum_pooled的操作 | ||
|
||
# deepfm的embedding初始化有什么值得注意的地方吗? | ||
- 常规的是Xavier,输出和输出可以保持正态分布且方差相近:np.random.rand(layer\[n-1],layer\[n])*np.sqrt(1/layer\[n-1]) | ||
- relu的情况下通常是HE,保证半数神经元失活的情况下对输出方差影响最小::np.random.rand(layer\[n-1],layer\[n])*np.sqrt(2/layer\[n-1]) | ||
- 文本项目上也可以用预训练好的特征 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# 变长数据如何处理的? | ||
- input数据中只拿了近20次的点击,部分用户是没有20次的历史行为的,所以我们记录了每一个用户实际点击的次数,在做embedding的时候,我们除以的是真实的history length | ||
- 20次点击过去一周内的行为,曾经尝试扩大历史点击次数到40,60没有很明显的效果提升 | ||
- 点击行为是处理过的,一个session内只有一次点击的行为不会被记录 | ||
- 点击行为是处理过的,连续多次的重复点击会进行处理 | ||
|
||
# input是怎么构造的 | ||
- 最近历史20次点击商品id/文章id,如果不足不需要补充 | ||
- 实际历史点击次数 | ||
- 最后一次点击商品id/文章id | ||
- example age:商品/文章上线时长 | ||
- user_info:age/gender/地理位置/注册时长 | ||
- cross_info:最后一次点击距click时间,最后一次点击商品浏览次数 | ||
- phone_info:设备信息,登录状态 | ||
|
||
# 最后一次点击实际如何处理的? | ||
我们会以日进行切分,每日首次点击的lastclick会以\[unknow]进行替代,隔日的点击不会进行计算 | ||
|
||
# output的是时候train和predict如何处理的 | ||
- train的时候是进行负采样的 | ||
- predict的时候是进行的all_embedding dot | ||
|
||
# 如何进行负采样的? | ||
- 该次点击时间之前所以的item或者article作为代选集 | ||
- 负采样我们会进行剔除,把该次click下的同时show的样本进行剔除后采样 | ||
- 均衡采样,不会根据其他样本show time进行加权 | ||
- 为了尽可能多的修正全量样本,尽快达到收敛 | ||
- 为了避免其他推荐产生的交叉影响 | ||
|
||
# item向量在softmax的时候你们怎么选择的? | ||
是用初始化我们在进行history click embedding过程中使用的初始化的向量,没有在最后层重新构造一个item embedding的结果,实测效果翻倍的要好 | ||
|
||
# Example Age的理解? | ||
实际使用的时候采取的是item上线时间-now的差值,article发表的时间-now的差值,并进行归一化。作用主要是为了平衡因为文章/商品的存量时间对当前选择的一个影响 | ||
|
||
# 什么叫做不对称的共同浏览(asymmetric co-watch)问题? | ||
item对比nlp问题的时候,上下文信息更适用于文本等固定结果的探索问题(完形填空问题);而在预测next one这种问题下,只通过上文进行预测,更加合适和合理。浏览信息大概率都是不对称的,而常规的i2i模型的假设都是对称的,上下文都可以用的 | ||
|
||
# 整个过程中有什么亮点?有哪些决定性的提升? | ||
- 共享item embedding vector | ||
- 加入user feature和cross feature且对feature采取了归一化,归一化方式中均方法+log法对长尾数据有效的标准化了 | ||
- 负样本的选取 | ||
- attention所起到的作用并不是很明显,尝试了传统的DIN中的attention和传统的Transform中的attention,效果一般 | ||
- 这点其实违反直觉,可能原因是模型对负反馈没有很好的建模 |