MindSpore21天实战营(5):基于Wide&Deep;实现CTR预估实战
“ModelArts + MindSpore”实战Wide&Deep实现CTR预估
“MM”我知道,但是什么是Wide&Deep?什么是CTR?
前言
尽管之前参与的【2020华为云AI实战营】,涉及到8大热门领域:图像分类、物体检测、自然语言处理NLP、OCR文字识别、图像分割、视频分析、人脸识别以及语言识别,也接触到了ResNet50、Faster RCNN、YOLOv3、BERT等算法模型,MindSpore 21天实战营第五课提及的这个Wide&Deep以及CTR等概念还是第一次听说,好在老师有详细的讲解。CTR是Click-Through-Rate的缩写,中文字面意思就是点击通过比率,是互联网广告常用的术语,是衡量互联网广告的一项重要指标。简直应了那句“隔行如隔山”的老话,好在我几乎每天都上网,每天都接触各个大厂的各种推荐、百毒公司的搜索广告、微勃公司的信息流展示等等,原来背后的技术或多或少应用了CTR预估。而CTR预估的经典模型之一就是Wide&Deep,论文地址:https://arxiv.org/pdf/1606.07792.pdf。Wide&Deep模型由单层Wide模型和多层Deep模型组成,因此使得模型能够同时具备记忆(memorization)和泛化(generalization)能力,满足了推荐系统的准确性和拓展性。Wide&Deep的论文由Google Play的推荐团队发表于2016年。背景知识了解了个大概就准备动手实践。
准备
数据集准备,MindSpore提供已处理好的Criteo开发数据集分别是全量数据1%和10%的部分数据,具体可查看https://github.com/mindspore-ai/mindspore-21-days-tutorials 中 chapter5 的指导文档。本次实践依旧通过ModelArts的我的笔记本运行脚本进行获取数据集和预训练模型。其中10%的数据集可用来验证预训练模型,1%的数据集可用来预训练。
和上一次实践一样通过git获取代码,本次实践用到的是昇腾环境,因此使用的是mindspore-21-days-tutorials/ chapter5 / wide_deep_ascend目录下的代码。
本次实践依旧使用Pycharm Toolkit。
Precess Train_eval
先看下入参,了解下我们基于已有代码能修改哪些参数
根据入参及代码我们先进行预训练,用1%的数据训练1个epoch(默认配置)
精度在0.5左右
随着我们增加epoch,发现精度上升明显,不过这肯定是不正常的,应该是常说的过拟合。
试试就知道,咳,试试就逝世,通过10%的数据集来验证,结果精度落差很大啊,不过相比1个epoch的确提升了不少
本来想用10%的数据集来训练,不过还是遇到了问题,估计是昇腾资源比较紧张,或者是我哪个步骤操作不当。
总结
尽管MindSpore 实战营已经告一段落,作为老小白的我,非著名Copy攻城狮,一路下来投入得还是很深,也正是因为基础差,导致简单的体验作业都需要花费大量的时间去试错。通过此次实战营,我了解了一些基本的算法模型,虽然对于我而言没能力深入学习,但也能基本感受到MindSpore的强大,大部分算法模型都能用MindSpore复现,结合现有的代码,让我这种门外汉也能体验到AI的魅力。通过实战营的学习,巩固了ModelArts的使用经验,也体验到了我的笔记本的强大,同时还加深了对MindSpore的认识。当然,就算是实战营已经结束,Copy攻城狮我觉得学习也不能止步于此,接下来,我计划深入了解一下MindSpore Lite以及MindSpore开发完模型之后的部署,毕竟我本职是切图仔,切图仔需要AI赋能,往往会关注应用层的知识和技术。最后附上Atwood定律:Any application that can be written in JavaScript, will eventually be written in JavaScript