基于MindSpore框架wide&deep模型的实战CTR体验
本节课是MindSpore21天实战营第五堂课,由何老师分享了CTR的概念及推荐算法的相关应用场景,及Wide&Deep模型是如何实现推荐的。
1、CTR的概念:
即Click-Through-Rate:点击通过率,衡量互联网广告效果的一项重要指标。
2、推荐算法的相关应用场景:
2.1 微博的信息流排序,类似于今日头条,也是容易引起大家竞相关心和追逐的热议话题;
2.2 影视剧的相似度推荐;
2.3 购买此物品的人同样购买了…购物推荐;
2.4 游戏推荐;
2.5广告的精准投放;
…
推荐算法的应用是时下热门的AI话题,效果直接,效益可观…
3、Wide&Deep模型,记忆与泛化的组合。
3.1 Wide(Ps:Memorization):
在目前大规模线上推荐排序系统中,通用的线性模型如LR被广泛应用。线性模型通常输入二进制的one-hot稀疏表示特征进行训练。比如特征“user_installed_app=netflix”为1,表示用户已安装netflix。交叉特征AND(user_installed_app=netflix,impresion_app=Pandora)表示既安装了netflix app同时又浏览过Pandora的用户特征为1,否则为0。wide模型可以通过利用交叉特征高效的实现记忆能力,达到准确推荐的目的。wide模型通过加入一些宽泛类特征实现一定的泛化能力。但是受限与训练数据,wide模型无法实现训练数据中未曾出现过的泛化。
Ps:
从历史数据中进行学习,与过去直接相关,达到较精准的预测。
局限性:但对训练数据中不存在的数据,无法泛化
使用one-hot Encoding构成的稀疏矩阵表示特征,可单一,可交叉,交叉特征需要人为设计。
3.2 Deep(Ps:Generallization):
像FM和DNN这种Embedding类的模型,可以通过学习到的低维度稠密向量实现模型的泛化能力,包括可以实现对未见过的内容进行泛化推荐。当模型query-item矩阵比较稀疏时,模型的会过分泛化,推荐出很多无相关性的内容,准确性不能得到保证。
Ps:透过模型找到新的特征组合,这样的特征组合在过去很少出现(没被记忆),增加预测的多样性。将Wide稀疏特征映射到embedding layer,转化为1维的稠密矩阵,实现特征的提取和降维。利用空间向量的相似性进行泛化排序。
3.3 W&D 平衡Wide模型和Deep模型的记忆能力和泛化能力。
和大多数推荐系统类似,Google Play推荐系统主要分Retrieve和Ranking两个阶段。(youtube论文的Matching和Ranking,详情请戳这里。)
Retrieve阶段负责召回候选集,缩减待排序item数据,文中是O(10)数量级。Ranking进行进行精排序,即最终展示的app list 顺序。 Query包括用户画像,上下文特征等内容;Item就是App。交互行为特征可能是点击和购买。
4、实战体验:
环境:GPU V100 8vCPUs 64GB/MindSpore 1.0.0
脚本:存放于mindspore-21-days-tutorials 仓chapter5目录下
数据:Criteo开放数据集
• 全量数据:官方下载
• train_demo:10% 全量数据集,存放于华为云OBS平台
• mini_demo:1% 全量数据集,存放于华为云OBS平台
4.1本次因为个人笔记本无GPU选项,在师兄的推荐下,实践时采用了华为云ECS弹性服务器,按需计费定制了pi2推理加速服务器。
4.1.1操作系统选择为Ubuntu,远程登录操作类似本地终端模式。
4.1.2 Docker环境安装nvidia-docker,具体教程参考。
4.1.3 与本地文件的交互:因个人计算机为Windows10系统,参考官方文档选择了WINSCP,实现了弹性云服务器与Windows系统文件的交互。其他配置和过程可参考弹性云服务器的“文件上传”帮助。
4.2 体验过程:
4.2.1 用下载的train_demo:10% 全量数据集对已有训练模型进行验证,该数据集为老师按正样本和负样本各占一定比例进行抽取组成的数据集。验证结果如下:
4.2.2
①对下载的1%全量criteo数据集(mini_demo.txt)进行数据处理,生成mindrecord格式的数据集;
②用此数据集进行训练,生成checkpoint文件;结果如下:
③利用生成的checkpoint文件进行验证,结果如下:
通过初体验和进阶体验了解了Wide&Deep模型的构成和原理,为日后深入学习奠定了良好的基础。
- 点赞
- 收藏
- 关注作者
评论(0)