• [教程] 如何选择ModelArts训练作业的各个路径参数
    提交训练作业需要先将代码和数据上传到OBS上,然后训练作业会运行OBS上的代码,并读取OBS上数据进行训练,最后将生成的模型保存到OBS上。其中,读取OBS数据和保存模型文件至OBS这两个操作都需要在训练代码中编程实现。创建训练作业的部分参数如下图: 数据存储位置:存放训练数据的OBS路径,将数据集都放到这个路径下代码目录:存放训练代码的OBS路径,将训练代码全都放到这个路径下启动文件:代码目录下的一个代码文件OBS路径,作为主启动文件训练输出位置:OBS路径,保证这个路径是一个空路径,用于保存程序运行中生成的模型文件和其他有用的文件其中,数据存储位置和代码目录两个路径是输入数据路径,训练输出位置是输出数据的路径。我们在规划路径的时候,最好保证这个三个OBS路径相互独立,互相之间没有包含和重合关系,否则可能会导致训练作业运行失败。
  • [技术干货] 代码中自动下载Keras预训练模型速度缓慢或者失败怎么办
    代码中自动下载Keras预训练模型速度缓慢或者失败怎么办当执行代码base_model = VGG16(weights='imagenet', include_top=False)时,如果本地没有下载过相应的预训练模型,Keras就会自动去网络上下载。如果自动下载的速度慢或者失败,可以将预训练模型放到Notebook本地路径~/.keras/models/下来解决。原理是Keras会先从本地路径~/.keras/models/下寻找预训练模型,如果找到,就会直接加载本地的预训练模型,而不会从网络下载。有以下两种方式将模型文件放到Notebook本地:进入Notebook terminal,然后切换到~/.keras/models/路径下,使用wget <URL>命令从网上下载预训练模型至Notebook本地(推荐)。部分预训练模型的URL如下:https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5https://github.com/fchollet/deep-learning-models/releases/download/v0.1/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5其他预训练模型的URL可以从该网址查找https://github.com/fchollet/deep-learning-models/releases 。从网上下载预训练模型至本地,然后上传至OBS,最后从OBS下载至Notebook本地。可以从https://github.com/fchollet/deep-learning-models/releases 网址找到所有Keras官方预训练模型的下载链接。部分预训练模型的下载链接见方法1。上传文件至OBS,然后从OBS下载至Notebook本地的方法参考此FAQ
  • [技术干货] 运行训练代码出现内存不够问题并导致实例崩溃
    运行训练代码出现内存不够问题并导致实例崩溃在Notebook实例中运行训练代码,如果数据量太大或者训练层数太多,亦或者或者其他原因,导致出现“内存不够”问题,最终导致该容器实例崩溃。 出现此问题后,如果您重新打开此Notebook,系统将自动重启Notebook,来修复实例崩溃的问题。此时只是解决了崩溃问题,如果重新运行训练代码仍将失败。如果您需要解决“内存不够”的问题,建议您创建一个新的Notebook,使用更高规格的资源池,比如GPU或专属资源池来运行此训练代码。
  • [技术干货] 自动学习训练失败原因是什么?
    自动学习训练失败原因是什么?自动学习项目存储图片数据的OBS路径下,不允许存放文件夹,同时文件的名称中不允许存在特殊字符(特殊字符集:['~', '`', '@', '#', '$', '%', '^', '&', '*', '{', '}', '[', ']', ':', ';', '+', '=', '<', '>', '/'])。如果违反了以上两点规则之一,就会训练失败。
  • [问题求助] Atlas 200 DK是否支持pytorch、mxnet训练模型转换为离线模型
    最近想要找一个靠谱的深度学习硬件平台,刚接触Atlas 200 DK,对它的使用存在一定的疑问,希望获得解答:查看技术白皮书,指明是否支持Pytorch、Mxnet框架下的模型转换为Atlas支持的离线模型,如何操作?视频流输入仅支持2路树莓派摄像头吗,得到的树莓派视频流是什么格式的?如何支持usb摄像头输入?我学习过官网上的教程,上面提到Atlas 200 DK只能作为”从设备“,请问如何理解”从设备“这个名词?它可以用在实际的产品上吗?
  • [问题求助] 训练任务可以中断再继续吗?
    我的GPU时间快用完了,中断了还能继续训练吗?
  • [问题求助] 如何将camera获得的单张图片传入给batch size为32的模型
    目前我在使用alexnet做模型分类,在训练时使用32为batch size,在模型转换时使用32 3 227 227的input size然而实际在修改face detection的代码时发现camera模块传回的图片数量固定为1,直接修改代码会报数据不匹配如:CheckDataLen:framework/domi/ome/model_manager/model_manager.cpp:488:"data len(92160) does not match the model data len(2949120), input index:0 Error Code:0x3000001(Parameter's invalid!)"在facial_recognition示例中使用了大小为8的batch size,然而face_detection和camera模块传出的图片消息数量为1,请问facial_recognition中的batch是如何在face feature mask中扩展到4个的。另外,我们在训练时使用32的batch是为了提高模型的准确率,是否有办法在实际inference时推理单张图片得到结果,谢谢!
  • [其他] 体验modelarts五期的实战训练
            最近的人工智能ai趋势很火 正好发现了华为云的modelarts 跟着git上的实战训练营学习了五期 总的来说还是非常不错的 。        由于自己对ai这一块是白纸一张小白一个 我们华为的modelarts 平台 给我提供的体验感觉就是非常不错。  从自动训练到标注数据集,建立训练模型,然后部署上        线,最后在线分析 分析出来的结果都是令人满意。通过notebook也让我体会到了Python作为大数据分析和ai模型分析是非常棒。 在使用控制台的时候  总是需要自己手动关闭资源  这个就有点坑了。。。。不得不说有时候忘了关闭资源就是一件很痛苦的事情 希望大家能够多注意一下这个问题 ,也希望咱们华为modelarts的控制台能够越来越完善。        最后呢,我个人的体验是比较满意,也通过这个实操学到了很多东西,华为给了我这么一个简单上手,通俗易懂的这么一个平台 很棒!
  • [问题求助] 求助:怎样在ModelArts中保存和读取模型用于恢复中断的训练任务
    怎样在ModelArts中保存和读取模型用于恢复中断的训练任务pytorch或tensorflow或keras都可以,谢谢
  • [技术干货] 模型调试技巧 ---实战营经验总结
    这周参加了AI实战营,目前完成了前三期,有一些小小的感悟,所以将提升模型性能的经验分享给大家。关于训练深度最难的事情之一是要处理的参数的数量,从学习速率a到Momentum(动量梯度下降法)的参数β,也许还想使用学习率衰减。如果使用Momentum或Adam优化算法的参数,也许还有β_1,β_2和ε,所以,的不是单一的学习率a。而且根据经验,有的超参数比其它的更重要些,我认为,最为广泛的学习应用是a,学习速率是需要调试的最重要的超参数。除了a,还有一些参数需要调试,例如Momentum参数β,一般0.9就是个很好的默认值。当然还会调试mini-batch的大小,训练轮数等,这些都要经过慢慢地调试以确保最优算法运行有效。ModelArts 算是非常好的产品了,现在深度学习越来越火,但是一般人都没能力搞一台好的计算资源。ModelArts给了我们这样的机会能使用到高效且便宜的计算资源。
  • 深度学习推荐模型PIN:诺亚推荐黑科技
           深度学习目前是大数据人工智能领域的研究前沿,它通过构建深层的大规模神经网络模型结合大数据训练从而取得卓越的模式识别和预测效果。在经典数据挖掘领域,例如个性化推荐系统和互联网精准广告等应用问题中,深度学习的解决方案也在被尝试提出。和图像识别、语音识别等深度学习已经广泛应用的领域不同,在推荐系统和计算广告这类问题中,预测所基于的数据大都是离散的类别型数据(Categorical Data)。例如一位正在浏览手机页面的用户,她的当前场景数据是一系列的类别描述:“深圳、星期五、晚上10点、曾经下载过英语四级君和携程旅行、华为P20”;我们希望根据此信息预测该用户是否喜欢一个华为应用市场里的马蜂窝旅游。        华为应用市场是华为终端消费者云最重要的业务和产品之一,同时也是诺亚方舟实验室推荐搜索项目组落地验证先进技术的最重要场景之一。华为应用市场基于上百万应用,服务于上亿全球用户,有着极大的数据规模以支撑大规模机器学习算法,包括基于深度学习的推荐算法。在2018年初,诺亚方舟实验室的研究员自研的深度学习模型DeepFM [5]受到了业界极大的关注,并且在华为应用市场商用上线,在线上AB测试中非常显著地提升了应用的下载转化率(详情见前篇“深度学习推荐模型DeepFM:助理华为应用市场APP推荐”)。与此同时,华为诺亚方舟实验室推荐搜索项目组的研究员与上海交通大学Apex数据和知识管理实验室俞勇教授和张伟楠教授的研究团队,研发出了效果更加优秀的深度学习推荐模型PIN (Product-network In Network) [1],该工作于2018年被信息检索顶级期刊TOIS (ACM Transaction on Information Systems) 接收,已申请专利,并在华为应用市场中商用上线,效果非常优秀。该工作已经公布于Arxiv:https://arxiv.org/pdf/1807.00311.pdf。       基于深度学习的推荐模型可以总结为:表达层、表达交互层、全连接层、单模型输出层、整合计算层 (可选)、最终输出层 (可选),如图1所示。表达层的作用是将每个域离散的类别数据映射为适合神经网络输入的表达,一般采用分布式表示(DistributedRepresentation),也即是将一个特征映射到一个低维稠密空间中。深度学习框架将此特征作为第一层网络输入,在接下来的表达交互层以及全连接层中完成高阶模式识别,并最终在输出层给出预测。表达交互层的作用是研发人员基于领域知识设计特征的交互逻辑,引导特征的(初步)交互,使得神经网络较为方便地学习出高效的特征交互,为之后的全连接层做准备。该模块算是整个学习框架中最具有科研价值的模块,它决定了神经网络的表达范围,并且很大程度影响了网络参数能收敛到怎样一个局部最优点。全连接层的作用是在表达交互层之后自由地学习模式,算是深度学习的黑箱部分。对于全连接层的设计主要考虑的是层数、每层节点规模、激活函数以及Dropout率。这些设计需要结合数据规模以及表达交互层的设计来调试。输出层的设计较为简单。对于二分类问题一般是一个Sigmoid激活函数;对于多分类问题一般是一个Softmax分布给出每个类的预测概率。在训练单模型的任务中,该输出就是模型的预测值。在训练过程中,设计合理的损失函数来计算输出和目标值之间的损失并将其反向传播回前面的每层进行参数更新是深度学习模型成功学习的关键。神经网络是天然的整合计算(Ensemble)模型,可以自动寻找到多个模型的输出和真是目标值之间的关系,使得整合输出层的输出更加接近目标值。整合计算层的设计依赖于单模型的数量和种类。整合计算层的输入除了单模型的输出值外,还可以是一些输出数据的特征,这些特征能够帮助整合计算层学习如何选择或者变换各个单模型的输出。图1 基于深度学习的推荐模型框架        PIN模型最主要的创新点来自于表达交互层。不设计表达交互层会导致神经网络的学习无法控制,很难搞清楚网络是否能学习到有效特征;而过度的设计表达交互层则可能使得网络的建模空间显著减小,无法学习到研发人员考虑之外的有效模式。FNN [3]和Wide & Deep Network [2]并没有设计表达交互层,它们直接将全连接层接到了分布式表达层上面;PNN [4]和DeepFM [5]有基于向量內积和外积的表达交互层,这个设计就是源于研发人员对FM [6]的向量乘法交互的领域知识。以上两种欠拟合的特征交互建模方式无法非常高效地学习特征之间的关系。我们了解到FFM [7]模型在FM的基础上加入了特征域 (field)的信息,用更多的参数去建模特征之间的交互关系。具体来说,在FFM模型中,每一个特征都有(m-1)个隐式特征表达(m为特征域的个数),其中每一个特征表达用于该特征与其他任意一个域的特征进行交互。因此用于特征表达的参数总数来说,FFM模型是FM模型的(m-1)倍。因为其精确的特征交互建模能力,FFM模型受到工业界的广泛关注,但是因为其容易过拟合的缺陷,在工业界的大规模应用还需要做一定的改进。PIN模型将FFM的思想引入模型,但是没有像FFM那样为每个特征做分域的特征表达。在PIN模型中,每个特征依然只有一个特征表达(和FM, PNN, DeepFM一致),但是在做特征交互时,不是简单的向量内积或者外积,而是用子神经网络来建模特征之间的交互关系。这种建模方式,比简单使用向量内积或者外积(例如PNN, DeepFM)要更加复杂有效,而比为每个域分别存储(m-1)个特征向量要简洁(例如FFM)。PIN的网络结构图2所示:图2 PIN网络结构图       图2(a)表示一个网络架构图,其中product operator可以有不同的定义:如果定义为向量内积,则为PNN,这里成为IPNN(图2(b)所示);如果定义为矩阵乘法,则为KPNN(图2(c)所示);如果定义为子神经网络,则为PIN(图2(d)所示)。        我们对PIN模型在4个数据集上进行了离线测试,其中包括三个公开数据集Criteo, Avazu和iPinYou和一个华为数据集。在这4个数据集上的测试,都充分显示出了PIN模型的优越性。图3 离线测试结果(Criteo, Avazu, iPinYou, Huawei)        更进一步地,我们将PIN模型应用在华为应用市场的游戏推荐中,经过多天的观测,相比于基础模型,PIN模型将下载率提升30%以上;相比于DeepFM模型,PIN模型也有10%左右的提升。        为了让学术界的学者和工业界的同行们更好地了解我们的PIN模型,该模型投稿TOIS的版本代码公开在上海交通大学Apex实验室学生曲彦儒的个人Github上,具体网址是:https://github.com/Atomu2014/product-nets-distributed  华为云用户可通过使用推荐系统服务中的排序策略,免费体验PIN算法。创建算法训练链接如下:https://console.huaweicloud.com/res/?agencyId=7e2975e1cc6041339c9bc7700b54cd2b&region=cn-north-1&locale=zh-cn#/main/createSort详情请参考华为云推荐系统开发指南,链接如下:https://support.huaweicloud.com/usermanual-res/res_01_0022.html  
  • 基于深度强化学习的大规模推荐系统
    华为诺亚方舟实验室推荐搜索团队与上海交通大学Apex数据和知识管理实验室俞勇/张伟楠教授团队合作在AAAI 2019 (AAAI Conference on Artificial Intelligence)发表论文。我们在该论文中研究的重点是在推荐系统的典型场景下(大规模离散动作空间,large-scale discrete action space),如何用深度强化学习进行推荐。该论文提出了一种基于树型策略梯度(tree-structured policy gradient)的强化学习模型TPGR。我们设计首先对所有待推荐物品构造一棵平衡层次聚类树(balanced hierarchical clustering tree),然后利用策略梯度(policy gradient)去学习这样的策略:如何在构造得到的树上的每一个非叶子节点,选择最优子树。相比于其他的深度强化学习模型,该方法能够显著地提升推荐系统的精度以及长期收益,并且可以使得模型的训练速度大幅提升。该论文已经公布在Arxiv上:https://arxiv.org/abs/1811.05869 在个性化推荐系统中,一个非常重要的目标是准确预测用户对物品的喜好程度,这不仅影响到用户体验,同时直接影响企业的收益。因此,用户行为预测有重要意义,而目前基础、主流的预测方法都是基于监督学习(supervised learning)的模型。用监督学习建模的主要问题是:将推荐过程看做是一个静态的预测过程,但是实际上应该是一个动态的序列决策过程(用户的兴趣可以被推荐系统改变);最大化推荐结果的即时利益,而很多时候那些即时利益很小但是未来回报很好的物品也应该考虑被推荐。 强化学习在许多动态交互、长期规划的场景中(如无人驾驶、游戏),取得了巨大成功,而最近互联网公司也尝试将强化学习应用于推荐搜索系统。强化学习模型是智能体(agent)的策略,是智能体(agent)在和环境(environment)之间的交互过程中学习而得。在推荐系统中,用户与推荐系统也是互相交互的。将强化学习应用于推荐系统时,智能体(agent)是推荐系统,而环境(Environment)是所有的用户。强化学习包含5个要素:状态(state)、动作(action)、转移(transition)、奖励函数(reward)、折扣(discount rate)。基于强化学习的推荐过程可以抽象成这样:根据用户当前的状态(如,该用户过去与物品的一些交互行为,以及用户本身的画像信息等),推荐系统依据学习到的策略,做出一个动作(如,推荐一个商品、一组商品,或者生成一个排序函数等);用户根据该动作对应的推荐结果,给出自己的反馈(根据用户的反馈,推荐系统得到奖励),而推荐系统根据该奖励来估算该动作的长期(折扣)价值,从而更新策略;用户则进入到一个新的状态。  强化学习模型可以分为以下两类:基于值的方法(value-based):学习一个Q函数,根据当前状态,计算所有动作的Q值,每次推荐都选取Q值最大的动作;基于策略的方法(policy-based):学习一个策略函数,根据当前状态,策略决定最优动作或者其分布;▶ Deterministic policy: 策略给出最优的动作,一般为连续型动作,如空调的温度或者函数参数等;▶ Stochastic policy: 策略给出最优动作的分布,一般为连续型动作或者离散型动作,如推荐物品等。 在推荐场景中,很多时候推荐候选集的数量较大(成千上万的物品待推荐),是大规模离散动作的应用场景。现有的强化学习模型均无法在这种场景下进行高效的训练和决策。Value-based方法更新时需要计算target Q值,需要遍历所有的动作;而决策时需要计算所有动作的Q值来决定最好的动作。Stochastic policy方法更新时需要遍历所有动作去计算softmax函数;而决策时也需要计算softmax函数去进行采样以得到执行的动作。Deterministic policy方法在训练和决策时,需要将生成的动作与所有候选集中的商品进行计算得到排序分数,因此需要遍历大量的物品。TPGR模型与现有基于强化学习推荐模型[1-5]的区别如下表所示。 [5]虽然也适用于大规模离散动作,但是模型本身有着很大的设计缺陷,详情请看我们的论文。 基于现有工作的缺陷,我们提出了一种能够在大规模离散动作的场景下高效工作的强化学习模型TPGR (Tree-structured Policy Gradient for Recommendation)。这个模型分为两步:第一步,对于所有物品,构造一棵平衡层次聚类树;第二步,对该树的每一个非叶子节点,构造一个policy network并联合训练。下面我们对这两步进行详细地介绍。第一步,对所有物品,构造一棵平衡层次聚类树。其中,这棵树的叶子节点表示一个待推荐的物品,非叶子节点表示一些中间信息。推荐一个物品即为从根节点沿着某一条路径走向一个叶子节点的过程,一条路径与一个物品是一一对应的关系。平衡层次聚类树指的是:每个非叶子节点的下属子树也是平衡的,且这些子树的高度差距不大于1。我们构造平衡层次聚类树的目的是为了限制找到某一个物品而在该树里游走的最大步数,从而为复杂度找到一个合理的上限值。在代码实现过程中,为了简化,我们假设该树是一棵c叉树,即每个非叶子节点都有c个孩子节点(除了叶子节点的父亲节点)。构造平衡层次聚类树的方法有多种,包括K-means方法和PCA方法,详细过程可以参考我们的论文。下图所示即为我们为8个物品构造的一棵平衡层次聚类树。第二步,对于树中所有的非叶子节点,构造一个policy network。其中,每个policy network负责决定下一步走向该非叶子节点的哪一个孩子节点;则推荐一个物品的概率即为沿着该路径每一个概率的乘积。下图展示了一个选择item 8进行推荐过程。树中每一个非叶子节点(从node 1到node 7)都有一个独立的policy network。从根节点node 1出发,policy network 1选择了node 3,而policy network 3选择了node 7,接下去policy network 7最终选择了item 8。Item 8被选择的概率即为policy network 1选择node 3、policy network 3选择node 7、policy network 7选择item 8的概率乘积。我们用REINFORCE方法对所有的policy network进行联合训练。详细的训练过程可以参考我们的论文。我们在MovieLens和Netflix两个数据集上对TPGR和其他的模型进行了对比。其他的模型包括普通模型(Popularity, GreedySVD),MAB模型(LinearUCB, HLinearUCB),强化学习模型(DDPG-KNN, DDPG-R, DQN-R)。评价指标有传统的推荐评价指标(Precision, Recall, F1)和online learning的评价指标(Reward)。我们发现,TPGR模型在两个数据集上相比于其他模型,可以大幅提升评价指标,如下表所示。同时我们还测试了不同模型之间的训练和决策时间对比,我们发现TPGR模型更加高效。我们现在正在尝试将这个模型应用于华为应用市场的推荐业务中,以给广大用户更好的体验。大家如果有任何问题,欢迎联系我们。我们将一直致力于产学结合的研究,欢迎各位有志之士的加入! References[1] Xiangyu Zhao et al. Recommendation with Negative Feedback via Pairwise Deep ReinforcementLearning. KDD 2018.[2] Guanjie Zheng et al. A Deep Reinforcement Learning Framework for News Recommendation.WWW 2018.[3] Xiangyu Zhao et al. Deep Reinforcement Learning for Page-wiseRecommendation. RecSys 2018.[4] Yujing Hu et al. Reinforcement Learning to Ranking in E-commerce Search Engine:Formalization, Analysis, and Application. KDD 2018.[5] Gabriel Dulac-Arnold et al. Deep Reinforcement Learning in LargeDiscrete Action Spaces. arXiv 1512.07679.
  • [线上活动] 【立即报名】人脸情绪识别案例分享
    随着机器学习和深度神经网络两个领域的迅速发展以及智能设备的普及,人脸识别技术正在经历前所未有的发展,关于人脸识别技术讨论从未停歇。目前,人脸识别精度已经超过人眼,同时大规模普及的软硬件基础条件也已具备,应用市场和领域需求很大,基于这项技术的市场发展和具体应用正呈现蓬勃发展态势。而人脸表情识别(facialexpression recognition, FER)作为人脸识别技术中的一个重要组成部分,近年来在人机交互、安全、机器人制造、自动化、医疗、通信和驾驶领域得到了广泛的关注,成为学术界和工业界的研究热点。本次,我们邀请了重磅级嘉宾-华为云MVP任如意老师,为我们介绍人脸识别中的表情识别的相关内容,并基于ModelArts AI一站式开发平台带领大家实操,解锁人脸情绪识别新技能! 除了有大咖分享我们还准备了精美的礼品书籍,移动电源,京东卡就等你来了!  直播安排• 人脸情绪识别背景介绍及简单综述• 情绪识别算法介绍• ModelArts的主要功能模块以及周边产品(如对象存储)介绍,及云化AI开发的优点• 实操演示(介绍包括数据上传、挂载、任务创建、代码环境准备、jupyter使用最佳实践、GPU使用心得等)• 介绍ModelArts的任务模式、模型发布等模块• Q&A 直播时间2019年8月27日20:00-21:00课程形式:线上直播互动 课程免费报名扫描海报二维码或点击https://developer.huaweicloud.com/signup/9f3cc214fe4d4e60afda718754d73b2d即可免费报名预约!提交报名后,华为云将于直播当天(8月27号 周二)通过邮件或短信向您推送在线直播观看地址,敬请关注。现场参与评论互动,若提问内容被导师翻牌,将有机会获得《极简人工智能》书籍1本!
  • MVP实战直播:ModelArts实现人脸情绪识别案例
    随着机器学习和深度神经网络两个领域的迅速发展以及智能设备的普及,人脸识别技术正在经历前所未有的发展,关于人脸识别技术讨论从未停歇。目前,人脸识别精度已经超过人眼,同时大规模普及的软硬件基础条件也已具备,应用市场和领域需求很大,基于这项技术的市场发展和具体应用正呈现蓬勃发展态势。而人脸表情识别(facialexpression recognition, FER)作为人脸识别技术中的一个重要组成部分,近年来在人机交互、安全、机器人制造、自动化、医疗、通信和驾驶领域得到了广泛的关注,成为学术界和工业界的研究热点。本次,我们邀请了重磅级嘉宾-华为云MVP任如意老师,为我们介绍人脸识别中的表情识别的相关内容,并基于ModelArts AI一站式开发平台带领大家实操,解锁人脸情绪识别新技能! 除了有大咖分享我们还准备了精美的礼品书籍,移动电源,京东卡就等你来了!  直播安排• 人脸情绪识别背景介绍及简单综述• 情绪识别算法介绍• ModelArts的主要功能模块以及周边产品(如对象存储)介绍,及云化AI开发的优点• 实操演示(介绍包括数据上传、挂载、任务创建、代码环境准备、jupyter使用最佳实践、GPU使用心得等)• 介绍ModelArts的任务模式、模型发布等模块• Q&A 直播时间2019年8月27日20:00-21:00课程形式:线上直播互动 课程免费报名扫描海报二维码或点击https://developer.huaweicloud.com/signup/9f3cc214fe4d4e60afda718754d73b2d即可免费报名预约!提交报名后,华为云将于直播当天(8月27号 周二)通过邮件或短信向您推送在线直播观看地址,敬请关注。现场参与评论互动,若提问内容被导师翻牌,将有机会获得《极简人工智能》书籍1本!
  • 深度学习推荐模型DeepFM:助力华为应用市场APP推荐
             IJCAI(International Joint Conferenceon Artificial Intelligence,人工智能国际联合大会)是人工智能领域的顶级会议,每年接收来自学术界及工业界在机器学习和人工智能领域的最新研究进展,历年在IJCAI发表的论文在机器学习和人工智能技术的发展上作出了积极的贡献。    在澳大利亚墨尔本召开的IJCAI2017会议上,来自华为伏羲推荐团队的专家发表了他们在深度学习推荐算法方面的最新成果。伏羲推荐引擎是华为应用市场联合华为诺亚方舟实验室开发的一款推荐系统。针对华为应用市场的业务特点和数据特征,伏羲推荐算法团队提出的端到端的深度学习推荐模型DeepFM,助力华为应用市场更加精准、个性化的推荐体验。华为诺亚方舟实验室算法专家在IJCAI2017演讲   特征工程(FeatureEngineering)是影响推荐系统的重要因素。相比于其他机器学习系统,推荐系统更依赖于特征工程。传统的大规模线性模型(如逻辑回归),通常依赖于人工方式设计特征。同时由于线性模型无法对特征间的非线性关系进行自动建模,通常依赖于特征组合(Feature combination)来实现二阶或高阶特征的构造。例如,在应用市场场景下: ■ 一些流行的应用比较容易被用户下载,说明应用的标识会影响用户下载(一阶特征)■ 吃饭时间一些外卖类的应用比较容易被用户下载,说明应用的类型和时间综合起来会影响用户下载(二阶特征)■ 年轻男性喜欢下载射击类和角色扮演类的游戏,说明应用类型、用户年龄和用户性别综合起来会影响用户下载 (三阶特征)    人工方式的特征工程,通常有两个问题:一个是特征爆炸。以通常使用的Poly-2模型为例,该模型采用直接对2阶特征组合建模来学习它们的权重,这种方式构造的特征数量跟特征个数乘积相关,例如:加入某类特征有1万个可能的取值(如APP),另一类特征也有1万个可能的取值(如用户),那么理论上这两个特征组合就会产生1亿个可能的特征项,引起特征爆炸的问题;如果要考虑更高阶的特征,如3阶特征,则会引入更高的特征维度,比如第三个特征也有1万个(如用户最近一次下载记录),则三个特征的组合可能产生10000亿个可能的特征项,这样高阶特征基本上无法有效学习。另一个问题是大量重要的特征组合都隐藏在数据中,无法被专家识别和设计(关于这个的一个有名的例子是啤酒和尿片的故事)。依赖人工方式进行特征设计,存在大量有效的特征组合无法被专家识别的问题。实现特征的自动组合的挖掘,就成为推荐系统技术的一个热点研究方向,深度学习作为一种先进的非线性模型技术在特征组合挖掘方面具有很大的优势。   针对上述两个问题,广度模型和深度模型提供了不同的解决思路。其中广度模型包括FM/FFM等大规模低秩(Low-Rank)模型,FM/FFM通过对特征的低秩展开,为每个特征构建隐式向量,并通过隐式向量的点乘结果来建模两个特征的组合关系实现对二阶特征组合的自动学习。作为另外一种模型,Poly-2模型则直接对2阶特征组合建模来学习它们的权重。FM/FFM相比于Poly-2模型,优势为以下两点。第一,FM/FFM模型所需要的参数个数远少于Poly-2模型:FM/FFM模型为每个特征构建一个隐式向量,所需要的参数个数为O(km),其中k为隐式向量维度,m为特征个数;Poly-2模型为每个2阶特征组合设定一个参数来表示这个2阶特征组合的权重,所需要的参数个数为O(m^2)。第二,相比于Poly-2模型,FM/FFM模型能更有效地学习参数:当一个2阶特征组合没有出现在训练集时,Poly-2模型则无法学习该特征组合的权重;但是FM/FFM却依然可以学习,因为该特征组合的权重是由这2个特征的隐式向量点乘得到的,而这2个特征的隐式向量可以由别的特征组合学习得到。总体来说,FM/FFM是一种非常有效地对二阶特征组合进行自动学习的模型。   深度学习是通过神经网络结构和非线性激活函数,自动学习特征之间复杂的组合关系。目前在APP推荐领域中比较流行的深度模型有FNN/PNN/Wide &Deep。FNN模型是用FM模型来对Embedding层进行初始化的全连接神经网络。PNN模型则是在Embedding层和全连接层之间引入了内积/外积层,来学习特征之间的交互关系。Wide & Deep模型由谷歌提出,将LR和DNN联合训练,在Google Play取得了线上效果的提升。   但目前的广度模型和深度模型都有各自的局限。广度模型(LR/FM/FFM)一般只能学习1阶和2阶特征组合;而深度模型(FNN/PNN)一般学习的是高阶特征组合。在之前的举例中可以看到无论是低阶特征组合还是高阶特征组合,对推荐效果都是非常重要的。Wide & Deep模型依然需要人工特征工程来为Wide模型选取输入特征。   DeepFM模型结合了广度和深度模型的有点,联合训练FM模型和DNN模型,来同时学习低阶特征组合和高阶特征组合。此外,DeepFM模型的Deep component和FMcomponent从Embedding层共享数据输入,这样做的好处是Embedding层的隐式向量在(残差反向传播)训练时可以同时接受到Deep component和FM component的信息,从而使Embedding层的信息表达更加准确而最终提升推荐效果。DeepFM相对于现有的广度模型、深度模型以及Wide & Deep模型的优势在于:(1)DeepFM模型同时对低阶特征组合和高阶特征组合建模,从而能够学习到各阶特征之间的组合关系;(2)DeepFM模型是一个端到端的模型,不需要任何的人工特征工程。DeepFM算法架构   为了验证DeepFM模型的精度,分别在Criteo Kaggle的竞赛数据集和华为应用市场的数据集上进行了实验。Criteo Kaggle的数据集按照9:1的比例划分训练集和测试集。华为应用市场数据集由8天连续数据构成:前7天数据为训练集,后1天数据为测试集。实验结果表明:相比较业界最新的推荐算法,DeepFM模型在华为数据集上,AUC提升0.36%~0.86%,LogLoss提升0.34%~1.1%。DeepFM算法效果对比   目前DeepFM已在线上运行几个月时间,相比基线模型,线上效果提升10%以上,并且模型更加容易调优和稳定,表现出深度学习模型的优越性。DeepFM成果发表后,取得广泛的学术和业界关注,团队还在深度学习推荐算法方面持续投入,研究更好的深度学习网络架构,实现更好的特征表达和特征交互方式,持续改进深度学习推荐模型,为华为应用市场和华为游戏中心的用户提供更好的个性化、精准化的用户体验,保持华为应用市场推荐系统的技术领先。诺亚实验室与上海交大张伟楠教授团队新的工作,对DeepFM进行了进一步扩展和优化,提出新的深度学习模型(PIN,Product-network In Network),将在下一篇帖子做详细介绍。https://bbs.huaweicloud.com/forum/thread-22695-1-1.html 华为云用户可通过使用推荐系统服务中的排序策略,免费体验DeepFM算法。创建算法训练链接如下:https://console.huaweicloud.com/res/?agencyId=7e2975e1cc6041339c9bc7700b54cd2b®ion=cn-north-1&locale=zh-cn#/main/createSort详情请参考华为云推荐系统开发指南,链接如下:https://support.huaweicloud.com/usermanual-res/res_01_0022.html