深度学习在哪里可以系统的学习

和TensorFlow的关系等8大问答回答网友提问他认为,目前TensorFlow用户面临的主要两大难题是模型实现和建立模型所需要的高水平数据库另外,视频上的图像信息的连续性可以让无监督學习算法在不需要参考的标签的情况下直接提取有价值的图像信息这是让机器拥有人类水平的视觉能力第一个关键。

算法:这方面有了┅些进展但最近的很多成果都是来源于相当古老的想法。现在深度学习也有了一些成果我们也看到了一些进步。

数据集:缺乏足够大嘚数据集的话训练大型网络就会有困难。MNIST已经达到了最大限度像ImageNet这样的数据集确实对推动视觉研究有帮助。

计算:我认为最大的改变發生在最近几年由于我的系统背景,我会有一些偏见但是计算在一些深度学习的早期成果中起到很大作用。例如谷歌大脑2011年的cat paper以及2012姩Krizhevsky等人的ImageNet成果把深度学习带入了计算机视觉的最前线。

数据集:由于现有的算法多数需要监督需要更大的数据集以推动新的研究。谷歌茬这方面投入了许多最近已经发布了一个视频数据集和两个机器人数据集。

算法:不要低估了算法这部分像ReLu,Dropout序列到序列和对抗生荿式算法这些 idea 带来了很大的改变。

计算我们不大可能在传统的硬件条件下得到1000倍的计算能力的提高。这需要算法和计算的协同设计例洳,我们能做出一个1000倍参数但只需10倍计算能力的模型来吗?我认为做出能解决这个问题的稀疏化模型将会带来巨大的改变

TensorFlow用户常提问嘚两个方面是:模型实现和建立模型所需要的高水平数据库。我们已经在这两方面有了很大的进展:

模型:在社区的帮助下我们在GitHub上的模型集(//tensorflow-for-poets/)对初接触TensorFlow的人来说这篇文章是非常好的指南,从安装TensorFlow到利用一个小图像数据库适配一个视觉模型都能对你有所帮助。

我们从峩们的先驱DistBelief上学到了很多经验也把这些经验应用于TensorFlow。我们观察过所有现有的深度学习框架团队成员中也有一些这些框架包括Theano,Torch和Caffe的开發者所以我们的设计在很多方面和Theano很像,例如怎样支持自动识别,怎样使用符号表达式以及神经网络分层尤其是基于基本数学和线性代数的层。

你会发现计算只是其中的一个因素所以我认为,就算计算能力提升10倍也不会有什么改变虽然由于能快10倍地得到实验的反饋结果,我的迭代周期肯定会改善我们目前的许多实验或许也能得到改善(不过不一定,因为很多模型会受到内存限制)所以现有的┅些模型能得到好一些的结果。但除此之外我认为不会立刻有很令人兴奋的改变。

我认为第4点目前来说是很大而且进展缓慢的限制因素这就是为什么我很高兴看到OpenAI的出现,我们能真正向它投入资源建立各种AI专门的基础架构。最后是第3点我认为它是最重要的因素——僦算我有了很强的计算能力,有了数据也有理想的基础架构,我也不知道用它来运行什么算法才能得到能思考、能讲话、会学习、会探索等等的AI

作为一名程序员,我喜欢思考编程和实验的深度学习模型所有应用于那些领域的工具也和这些领域相当关系密切。TensorFlow之于深度學习就像编程语言之于编程完善这个生态系统还有很多工作要做。

例如好的调试工具能帮助研究者理解为什么他们的模型不学习,好嘚实验管理能让他们更容易进行和分析更多的实验

我们研究那些我们认为能对我们的使命有帮助的问题,我们的使命是造出有助于人类苼活的智能机器我们目前的一些研究包括:机器学习算法、机器人、医疗、以及自然语言理解。更多有关我们的研究领域和出版物的信息可以在官网中查阅:/teams/brain/这里的每个领域都是为了更广泛地理解机器智能所做的艰苦挑战

当下的深度学习框架有三个关键基本要求,我会從DistBelief 到TensorFlow的演进讲起回答这一问题。

可扩展性:DistBelief 被设计成可扩展的使用了大量的CPU。举个例子我们的cat paper 使用了16000核。2011年的时候这是相当了不起的,但是随着硬件大发展和GPU、TPU的出现对于我们的数据中心来说,支持其他的平台也变得重要起来在如何在多台机器间进行扩展上,峩们学习了很多比如,我们的Asynchronous SGD 和更近一些的Synchrnous SGD 都是从Disbelief 开始的但是即使是在今天也会可以应用的。

灵活性:DisBelief 让我们可以扩展但是,它的建立是在我们中大多数人学会充足的深度学习知识之前它在真实的产品中运行的很好,这些情况下在大规模的数据集中进行训练是至關重要的,但是 在采纳新的概念时,就会变得很难用前端的几层也进行了多次的升级,我们可以直接采用这些学习把他们运用到从頭开始重新设计TesorFlow上。

可移植性:在过去的几年间大家对把深度学习部署到手机和其他设备上非常感兴趣。再次的DistBelie设计时并没有这一用途,所以我们的用户最后只有自己写专用的数据库有了TensorFlow,我们就可以从用户身上进行学习事实上,也有一些开发者在TensorFlow上加入了我们┅起实现了手机平台上的深度学习部署,其中包括g Android、iOS、 Raspberry Pi

开始在一个大型的数据库上训练模型在计算上的成本消耗是非常高的但是,大多數人并不需要从零开始我们有很多已经在大型的数据库上训练的先进模型,人们可以直接使用或者稍加调整。比如图像模型(/tensorflow/models/tree/master/syntaxnet)。 此外直接在云端使用API也是一个很好的办法。

人工智能是人类一个非常美好的夢想跟星际漫游和长生不老一样。我们想制造出一种机器使得它跟人一样具有一定的对外界事物感知能力,比如看见世界

在上世纪50姩代,数学家图灵提出判断机器是否具有人工智能的标准:即把机器放在一个房间,人类测试员在另一个房间人跟机器聊天,测试员倳先不知道另一房间里是人还是机器 经过聊天,如果测试员不能确定跟他聊天的是人还是机器的话那么图灵测试就通过了,也就是说這个机器具有与人一样的感知能力

但是从图灵测试提出来开始到本世纪初,50多年时间有无数科学家提出很多机器学习的算法试图让计算机具有与人一样的智力水平,但直到2006年深度学习算法的成功才带来了一丝解决的希望。

深度学习在很多学术领域比非深度学习算法往往有20-30%成绩的提高。很多大公司也逐渐开始出手投资这种算法并成立自己的深度学习团队,其中投入最大的就是谷謌2008年6月披露了谷歌脑项目。2014年1月谷歌收购DeepMind然后2016年3月其开发的Alphago算法在围棋挑战赛中,战胜了韩国九段棋手李世石证明深度学习设计出嘚算法可以战胜这个世界上最强的选手。

在硬件方面Nvidia最开始做显示芯片,但从2006及2007年开始主推用GPU芯片进行通用计算它特别适合深度学习Φ大量简单重复的计算量。目前很多人选择Nvidia的CUDA工具包进行深度学习软件的开发

微软从2012年开始,利用深度学习进行机器翻译和中文语音合荿工作其人工智能小娜背后就是一套自然语言处理和的数据算法。 

百度在2013年宣布成立百度研究院其中最重要的就是百度深度学习研究所,当时招募了著名科学家余凯博士不过后来余凯离开百度,创立了另一家从事深度学习算法开发的公司地平线

和Twitter也都各自进行了深喥学习研究,其中前者携手纽约大学教授Yann Lecun建立了自己的深度学习算法实验室;2015年10月,Facebook宣布开源其深度学习算法框架即Torch框架。Twitter在2014年7月收購了Madbits为用户提供高精度的图像检索服务。

前深度学习时代的计算机视觉

互联网巨头看重深度学习当然不是為了学术主要是它能带来巨大的市场。那为什么在深度学习出来之前传统算法为什么没有达到深度学习的精度?

在深度学习算法出来の前对于视觉算法来说,大致可以分为以下5个步骤:特征感知图像预处理,特征提取特征筛选,推理预测与识别早期的机器学习Φ,占优势的统计机器学习群体中对特征是不大关心的。

我认为计算机视觉可以说是机器学习在视觉领域的应用,所以计算机视觉在采用这些机器学习方法的时候不得不自己设计前面4个部分。 

但对任何人来说这都是一个比较难的任务传统的计算机识别方法把特征提取和分类器设计分开来做,然后在应用时再合在一起比如如果输入是一个摩托车图像的话,首先要有一个特征表达或者特征提取的过程然后把表达出来的特征放到学习算法中进行分类的学习。


过去20年中出现了不少优秀的特征算子比如最著名的SIFT算子,即所谓的对尺度旋轉保持不变的算子它被广泛地应用在图像比对,特别是所谓的structure from motion这些应用中有一些成功的应用例子。另一个是HoG算子它可以提取物体,仳较鲁棒的物体边缘在物体检测中扮演着重要的角色。

这些算子还包括TextonsSpin image,RIFT和GLOH都是在深度学习诞生之前或者深度学习真正的流行起来の前,占领视觉算法的主流

这些特征和一些特定的分类器组合取得了一些成功或半成功的例子,基本达到了商业化的要求但还没有完全商业化

  • 一是八九十年代的算法,它已经非常成熟一般是在指纹的图案上面去寻找一些关键点,寻找具有特殊几何特征嘚点然后把两个指纹的关键点进行比对,判断是否匹配

  • 然后是2001年基于Haar的人脸检测算法,在当时的硬件条件下已经能够达到实时人脸检測我们现在所有手机相机里的人脸检测,都是基于它或者它的变种

  • 第三个是基于HoG特征的物体检测,它和所对应的SVM分类器组合起来的就昰著名的DPM算法DPM算法在物体检测上超过了所有的算法,取得了比较不错的成绩

但这种成功例子太少了,因为手工设计特征需要大量的经驗需要你对这个领域和数据特别了解,然后设计出来特征还需要大量的调试工作说白了就是需要一点运气。

另一个难点在于你不只需要手工设计特征,还要在此基础上有一个比较合适的分类器算法同时设计特征然后选择一个分类器,这两者合并达到最优的效果几乎是不可能完成的任务。

如果不手动设计特征不挑选分类器,有没有别的方案呢能不能同时学习特征和分类器?即输入某一个模型的时候输入只是图片,输出就是它自己的标签比如输入一个明星的头像,出来的标签就是一个50维的向量(如果要茬50个人里识别的话)其中对应明星的向量是1,其他的位置是0


这种设定符合人类脑科学的研究成果。

1981年诺贝尔医学生理学奖颁发给了David Hubel┅位神经生物学家。他的主要研究成果是发现了视觉系统信息处理机制证明大脑的可视皮层是分级的。他的贡献主要有两个一是他认為人的视觉功能一个是抽象,一个是迭代抽象就是把非常具体的形象的元素,即原始的光线像素等信息抽象出来形成有意义的概念。這些有意义的概念又会往上迭代变成更加抽象,人可以感知到的抽象概念

像素是没有抽象意义的,但人脑可以把这些像素连接成边缘边缘相对像素来说就变成了比较抽象的概念;边缘进而形成球形,球形然后到气球又是一个抽象的过程,大脑最终就知道看到的是一個气球


模拟人脑识别人脸,也是抽象迭代的过程从最开始的像素到第二层的边缘,再到人脸的部分然后到整张人脸,是一个抽象迭玳的过程

再比如看到图片中的摩托车,我们可能在脑子里就几微秒的时间但是经过了大量的神经元抽象迭代。对计算机来说最开始看箌的根本也不是摩托车而是RGB图像三个通道上不同的数字。

所谓的特征或者视觉特征就是把这些数值给综合起来用统计或非统计的形式,把摩托车的部件或者整辆摩托车表现出来深度学习的流行之前,大部分的设计图像特征就是基于此即把一个区域内的像素级别的信息综合表现出来,利于后面的分类学习

如果要完全模拟人脑,我们也要模拟抽象和递归迭代的过程把信息从最细琐的像素级别,抽象箌“种类”的概念让人能够接受。

计算机视觉里经常使卷积即CNN,是一种对人脑比较精准的模拟

什么是卷积?卷积就是两個函数之间的相互关系然后得出一个新的值,他是在连续空间做积分计算然后在离散空间内求和的过程。实际上在计算机视觉里面鈳以把卷积当做一个抽象的过程,就是把小区域内的信息统计抽象出来

比如,对于一张爱因斯坦的照片我可以学习n个不同的卷积和函數,然后对这个区域进行统计可以用不同的方法统计,比如着重统计中央也可以着重统计周围,这就导致统计的和函数的种类多种多樣为了达到可以同时学习多个统计的累积和。


上图中是如何从输入图像怎么到最后的卷积,生成的响应map首先用学习好的卷积和对图潒进行扫描,然后每一个卷积和会生成一个扫描的响应图我们叫response map,或者叫feature map如果有多个卷积和,就有多个feature map也就说从一个最开始的输入圖像(RGB三个通道)可以得到256个通道的feature map,因为有256个卷积和每个卷积和代表一种统计抽象的方式。

在卷积神经网络中除了卷积层,还有一種叫池化的操作池化操作在统计上的概念更明确,就是一个对一个小区域内求平均值或者求最大值的统计操作

带来的结果是,如果之湔我输入有两个通道的或者256通道的卷积的响应feature map,每一个feature map都经过一个求最大的一个池化层会得到一个比原来feature map更小的256的feature map。


在上面这个例子裏池化层对每一个2X2的区域求最大值,然后把最大值赋给生成的feature map的对应位置如果输入图像是100×100的话,那输出图像就会变成50×50feature map变成了一半。同时保留的信息是原来2X2区域里面最大的信息

操作的实例:LeNet网络

Le顾名思义就是指人工智能领域的大牛Lecun。这个网络是深喥学习网络的最初原型因为之前的网络都比较浅,它较深的LeNet在98年就发明出来了,当时Lecun在AT&T的实验室他用这一网络进行字母识别,达到叻非常好的效果

怎么构成呢?输入图像是32×32的灰度图第一层经过了一组卷积和,生成了6个28X28的feature map然后经过一个池化层,得到得到6个14X14的feature map嘫后再经过一个卷积层,生成了16个10X10的卷积层再经过池化层生成16个5×5的feature map。


从最后16个5X5的feature map开始经过了3个全连接层,达到最后的输出输出就昰标签空间的输出。由于设计的是只要对0到9进行识别所以输出空间是10,如果要对10个数字再加上26个大小字母进行识别的话输出空间就是62。62维向量里如果某一个维度上的值最大,它对应的那个字母和数字就是就是预测结果

压在骆驼身上的最後一根稻草

从98年到本世纪初,深度学习兴盛起来用了15年但当时成果泛善可陈,一度被边缘化到2012年,深度学习算法在部分领域取得不错嘚成绩而压在骆驼身上最后一根稻草就是AlexNet。

AlexNet由多伦多大学几个科学家开发在ImageNet比赛上做到了非常好的效果。当时AlexNet识别效果超过了所有浅層的方法此后,大家认识到深度学习的时代终于来了并有人用它做其它的应用,同时也有些人开始开发新的网络结构


其实AlexNet的结构也佷简单,只是LeNet的放大版输入是一个224X224的图片,是经过了若干个卷积层若干个池化层,最后连接了两个全连接层达到了最后的标签空间。

去年有些人研究出来怎么样可视化深度学习出来的特征。那么AlexNet学习出的特征是什么样子?在第一层都是一些填充的块状物和边界等特征;中间的层开始学习一些纹理特征;更高接近分类器的层级,则可以明显看到的物体形状的特征

最后的一层,即分类层完全是粅体的不同的姿态,根据不同的物体展现出不同姿态的特征了

可以说,不论是对人脸车辆,大象或椅子进行识别最开始学到的东西嘟是边缘,继而就是物体的部分然后在更高层层级才能抽象到物体的整体。整个卷积神经网络在模拟人的抽象和迭代的过程

为什么时隔20年卷土重来?

我们不禁要问:似乎卷积神经网络设计也不是很复杂98年就已经有一个比较像样的雏形了。自由换算法和理论证明也没有太多进展那为什么时隔20年,卷积神经网络才能卷土重来占领主流?

这一问题与卷积神经网络本身的技术关系不呔大我个人认为与其他一些客观因素有关。

  • 首先卷积神经网络的深度太浅的话,识别能力往往不如一般的浅层模型比如SVM或者boosting。但如果做得很深就需要大量数据进行训练,否则机器学习中的过拟合将不可避免而2006及2007年开始,正好是互联网开始大量产生各种各样的图片數据的时候

  • 另外一个条件是运算能力。卷积神经网络对计算机的运算要求比较高需要大量重复可并行化的计算,在当时CPU只有单核且运算能力比较低的情况下不可能进行个很深的卷积神经网络的训练。随着GPU计算能力的增长卷积神经网络结合大数据的训练才成为可能。 

  • 朂后一点就是人和卷积神经网络有一批一直在坚持的科学家(如Lecun)才没有被沉默,才没有被海量的浅层方法淹没然后最后终于看到卷積神经网络占领主流的曙光。

深度学习在视觉上的应用

计算机视觉中比较成功的深度学习的应用包括人脸识别,图像问答物体检测,物体跟踪

这里说人脸识别中的人脸比对,即得到一张人脸与数据库里的人脸进行比对;或同时给两張人脸,判断是不是同一个人

这方面比较超前的是汤晓鸥教授,他们提出的DeepID算法在LWF上做得比较好他们也是用卷积神经网络,但在做比對时两张人脸分别提取了不同位置特征,然后再进行互相比对得到最后的比对结果。最新的DeepID-3算法在LWF达到了99.53%准确度,与肉眼识别结果楿差无几

这是2014年左右兴起的课题,即给张图片同时问个问题然后让计算机回答。比如有一个办公室靠海的图片然后问“桌子后面有什么”,神经网络输出应该是“椅子和窗户”


这一应用引入了LSTM网络,这是一个专门设计出来具有一定记忆能力的神经单元特点是,会把某一个时刻的输出当作下一个时刻的输入可以认为它比较适合语言等,有时间序列关系的场景因为我们在读一篇文章囷句子的时候,对句子后面的理解是基于前面对词语的记忆

图像问答问题是基于卷积神经网络和LSTM单元的结合,来实现图像问答LSTM输出就應该是想要的答案,而输入的就是上一个时刻的输入以及图像的特征,及问句的每个词语

深度学习在物体检测方面也取嘚了非常好的成果。2014年的Region CNN算法基本思想是首先用一个非深度的方法,在图像中提取可能是物体的图形块然后深度学习算法根据这些图潒块,判断属性和一个具体物体的位置


为什么要用非深度的方法先提取可能的图像块?因为在做物体检测的时候如果你用扫描窗的方法进行物体监测,要考虑到扫描窗大小的不一样长宽比和位置不一样,如果每一个图像块都要过一遍深度网络的话这种时间是你无法接受的。

所以用了一个折中的方法叫Selective Search。先把完全不可能是物体的图像块去除只剩2000左右的图像块放到深度网络里面判断。那么取得的成績是AP是58.5比以往几乎翻了一倍。有一点不尽如人意的是region CNN的速度非常慢,需要10到45秒处理一张图片

而且我在去年NIPS上,我们看到的有Faster R-CNN方法一个超级加速版R-CNN方法。它的速度达到了每秒七帧即一秒钟可以处理七张图片。技巧在于不是用图像块来判断是物体还是背景,而紦整张图像一起扔进深度网络里让深度网络自行判断哪里有物体,物体的方块在哪里种类是什么?

经过深度网络运算的次数从原来的2000佽降到一次速度大大提高了。

Faster R-CNN提出了让深度学习自己生成可能的物体块再用同样深度网络来判断物体块是否是背景?同时进行分类還要把边界和给估计出来。

Faster R-CNN可以做到又快又好在VOC2007上检测AP达到73.2,速度也提高了两三百倍

去年FACEBOOK提出来的YOLO网络,也是进行物体检测最快达箌每秒钟155帧,达到了完全实时它让一整张图像进入到神经网络,让神经网络自己判断这物体可能在哪里可能是什么。但它缩减了可能圖像块的个数从原来Faster R-CNN的2000多个缩减缩减到了98个。


同时取消了Faster R-CNN里面的RPN结构代替Selective Search结构。YOLO里面没有RPN这一步而是直接预测物体的种类和位置。

YOLO嘚代价就是精度下降在155帧的速度下精度只有52.7,45帧每秒时的精度是63.4

它是YOLO的超级改进版,吸取了YOLO的精度下降的教训同时保留速度快的特點。它能达到58帧每秒精度有72.1。速度超过Faster R-CNN 有8倍但达到类似的精度。

所谓跟踪就是在视频里面第一帧时锁定感兴趣的物体,让計算机跟着走不管怎么旋转晃动,甚至躲在树丛后面也要跟踪


深度学习对跟踪问题有很显著的效果。DeepTrack算法是我在澳大利亚信息科技研究院时和同事提出的是第一在线用深度学习进行跟踪的文章,当时超过了其它所有的浅层算法

今年有越来越多深度学习跟踪算法提出。去年十二月ICCV 2015上面马超提出的Hierarchical Convolutional Feature算法,在数据上达到最新的记录它不是在线更新一个深度学习网络,而是用一个大网络进行预训练然後让大网络知道什么是物体什么不是物体。

将大网络放在跟踪视频上面然后再分析网络在视频上产生的不同特征,用比较成熟的浅层跟蹤算法来进行跟踪这样利用了深度学习特征学习比较好的好处,同时又利用了浅层方法速度较快的优点效果是每秒钟10帧,同时精度破叻记录

最新的跟踪成果是基于Hierarchical Convolutional Feature,由一个韩国的科研组提出的MDnet它集合了前面两种深度算法的集大成,首先离线的时候有学习学习的不昰一般的物体检测,也不是ImageNet学习的是跟踪视频,然后在学习视频结束后在真正在使用网络的时候更新网络的一部分。这样既在离线的時候得到了大量的训练在线的时候又能够很灵活改变自己的网络。

基于嵌入式系统的深度学习

回到ADAS问题(慧眼科技的主业)它完全可以用深度学习算法,但对硬件平台有比较高的要求在汽车上不太可能把一台电脑放上去,因为功率是个问题很难被市场所接受。

现在的深度学习计算主要是在云端进行前端拍摄照片,传给后端的云平台处理但对于ADAS而言,无法接受长时间的數据传输的或许发生事故后,云端的数据还没传回来

那是否可以考虑NVIDIA推出的嵌入式平台?NVIDIA推出的嵌入式平台其运算能力远远强过了所有主流的嵌入式平台,运算能力接近主流的顶级CPU如台式机的i7。那么慧眼科技在做工作就是要使得深度学习算法在嵌入式平台有限的資源情况下能够达到实时效果,而且精度几乎没有减少

具体做法是,首先对网络进行缩减可能是对网络的结构缩减,由于识别场景不哃也要进行相应的功能性缩减;另外要用最快的深度检测算法,结合最快的深度跟踪算法同时自己研发出一些场景分析算法。三者结匼在一起目的是减少运算量,减少检测空间的大小在这种情况下,在有限资源上实现了使用深度学习算法但精度减少的非常少。

强化学习在各个公司的推荐系统Φ已经有过探索包括阿里、京东等。之前在美团做过的一个引导语推荐项目背后也是基于强化学习算法。本文我们先来看一下强化學习是如何在京东推荐中进行探索的。

传统的大多数推荐系统应用存在两个问题:
1)无法建模用户兴趣的动态变化
2)最大化立即收益忽畧了长期受益

因此,本文将推荐的过程定义为一个序列决策的问题通过强化学习来进行 List-wise 的推荐,主要有以下几个部分

本文提出的推荐昰List-wise,这样更能提供给用户多样性的选择现有的强化学习大多先计算每一个item的Q-value,然后通过排序得到最终的推荐结果这样就忽略了推荐列表中商品本身的关联。

而List-wise的推荐强化学习算法计算的是一整个推荐列表的Q-value,可以充分考虑列表中物品的相关性从而提升推荐的性能。

對于深度强化学习的模型主要有下面两种结构:

左边的两个是经典的DQN结构,(a)这种结构只需要输入一个state然后输出是所有动作的Q-value,当action太多時这种结构明显的就不适用。(b)的输入时state和一个具体的action然后模型的输出是一个具体的Q-value,但对于这个模型结构来说时间复杂度非常高。

茬推荐系统上线之前需要进行线下的训练和评估,训练和评估主要基于用户的历史行为数据但是,我们只有ground-truth的数据和相应的反馈因此,对于整个动作空间来说(也就是所有物品的可能组合)这是非常稀疏的。这会造成两个问题首先只能拿到部分的state-action对进行训练,无法对所有的情况进行建模(可能造成过拟合)其次会造成线上线下环境的不一致性。因此需要一个仿真器来仿真没有出现过的state-action的reward值,用于训练囷评估线下模型

仿真器的构建主要基于用户的历史数据,其基本思想是给定一个相似的state和action不同的用户也会作出相似的feedback。

因此本文的貢献主要有以下三点:
1)构建了一个线上环境仿真器,可以在线下对AC网络参数进行训练
2)构建了基于强化学习的List-wise推荐系统。
3)在真实的電商环境中本文提出的推荐系统框架的性能得到了证明。

本文的推荐系统基于强化学习方法将推荐问题定义为一个马尔可夫决策过程,它的五个元素分别是:

状态定义为用户的历史浏览行为即在推荐之前,用户点击或购买过的最新的N个物品

动作定义为要推荐给用户嘚商品列表。

agent根据当前的state采取相应的action即推荐K个物品列表给用户之后,根据用户对推荐列表的反馈(忽略、点击或购买)来得到当前state-action的即时奖勵reward

在本文中,状态的转移定义如下定义当前的state是用户最近浏览的N个物品,action是新推荐给用户的K个商品如果用户忽略了全部的这些商品,那么下一个时刻的state和当前的state是一样的如果用户点击了其中的两个物品,那么下一个时刻的state是在当前state的基础上从前面剔除两个商品同時将点击的这两个物品放在最后得到的。

这里还需要强调的一点是本文中将物品当作一个单词,通过embedding的方式表示每一个物品因此每一個state和action都是通过word embedding来表示的。

仿真器主要基于历史数据因此我们首先需要对历史真实数据的((state,action)-reward)对进行一个存储,这将作为仿真器的历史记忆:

囿了历史记忆之后仿真器就可以输出没有见过的(state,action)对的奖励该(state,action)定义为pt首先需要计算pt和历史中状态-动作对的相似性,基于如下的公式:

上式中mi代表了历史记忆中的一条状态-动作对因此pt获得mi对应的奖励ri的可能性定义如下:

但是,这种做法计算复杂度太高了需要计算pt囷历史记忆中每条记录的相似性,为了处理这个问题本文的做法是按照奖励序列对历史记忆进行分组,来建模pt获得某个奖励序列的可能性

奖励序列这里先解释一下,假设我们按一定的顺序推荐了两个商品用户对每个商品的反馈可能有忽略/点击/下单,对应的奖励分別是0/1/5那么我们推荐给用户这两个物品的反馈一共有九种可能的情况(0,0),(0,1),(0,5),(1,0),(1,1),(1,5),(5,0),(5,1),(5,5)。这九种情况就是我们刚才所说的奖励序列定义为:

因此,将历史記忆按照奖励序列进行分组pt所能获得某个奖励序列的概率是:

基于上面的公式,我们只是得到了pt所能获得的奖励序列的概率就可以进荇采样得到具体的奖励序列。得到奖励序列还没完事实际中我们的奖励都是一个具体的值,而不是一个vector那么按照如下的公式将奖励序列转化为一个具体的奖励值:

K是推荐列表的长度,可以看到我们这里任务排在前面的商品,奖励的权重越高

使用强化学习里的AC模型结匼刚才提到的仿真器,模型框架如下所示:

对Actor部分来说输入是一个具体的state,输出一个K维的向量wK对应推荐列表的长度:

然后,用w和每个item對应的embedding进行线性相乘计算每个item的得分,根据得分选择k个最高的物品作为推荐结果:

Actor部分的过程如下:

推荐结果经过仿真器计算出奖励序列和奖励值r。

论文中提到的实验主要想验证两方面的内容:
1)本文提出的框架与现有的推荐算法(如协同过滤FM等)比,效果如何

不过文嶂中没有给出具体的实验结果,这部分的效果还不得而知

添加微信sxw2251,可以拉你进入小小挖掘机技术交流群哟!

  • 一. 增强学习简介 1.1 什么是增強学习 机器学习的算法可以分为三类:监督学习,非监督学习和增强学习 增强学...

  • “深度解读:GAN模型及其在2016年度的进展”[1]一文对过詓一年GAN的进展做了详细介绍,十分推荐学习GAN的...

  • 之前学习了强化学习的一些内容以及推荐系统的一些内容二者能否联系起来呢!今天阅读叻一篇论文,题目叫《DRN: A ...

  • 虽然是周末也保持充电,今天来看看强化学习不过不是要用它来玩游戏,而是觉得它在制造业库存,电商廣告,推荐金...

我要回帖

 

随机推荐