应用Google Tensorflow的推荐系统

2018-01-04 10:59林海宁
电脑知识与技术 2018年28期
关键词:推荐系统

林海宁

摘要:TensorFlow是Google Brain 的第二代机器学习系统, 也是一个开源软件库,用于各种感知和语言理解任务的机器学习,如语音识别,Gmail、Google相册和搜索,技术将根据使用习惯及兴趣来推荐更多的内容,是机器学习重要的应用。

关键词:推荐系统;TensorFlow;TensorFlow;Seq2Seq

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)28-0195-02

在新闻网站中常看到“您可能感兴趣的内容”,购物网站常看到“您可能感兴趣的商品”,而这些网站如何知道我们兴趣与偏好呢?关键就在于推荐系統,此技术将根据使用习惯及兴趣来推荐更多的内容,是机器学习重要的应用之一。从而让商品或网页流量有效增加,或达到精准营销的目的。

推荐系统在日常的网络应用中无处不在,也是机器学习CP值最高的应用,像是购物网站、影音网站、新闻APP、社交网络、音乐网站等,有人的地方就有江湖,有江湖的地方就有推荐!根据每个人的喜好,相同喜好人群的习惯等信息进行个性化的内容分析后进行推荐。打开新闻类的APP,因为有了个性化的内容,每个人看到的新闻首页都是不一样的。

在信息时代,有着获取信息多种多样的途径和方式,人们花费时间最多的不再是去哪获取信息,而是要在众多的信息中寻找自己感兴趣的,这就是信息超载问题。为了解决这个问题,推荐系统应运而生。

TensorFlow是Google Brain 的第二代机器学习系统, 也是一个开源软件库,用于各种感知和语言理解任务的机器学习,如语音识别,Gmail、Google相册和搜索,其中许多产品曾使用过其前任软件DistBelie。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow的结构由会话(session),图(graph),节点(operation)和边(tensor)组成,它使用图(graph)来表示计算任务,图在被称之为会话(Session)的上下文(context)中执行,其状态是通过变量(Variable)来维护的,使用feed和fetch可以为任意的操作(arbitrary operation)赋值或者从其中获取数据。

本文将采用基于Tensorflow的Seq2seq+Attention模型,制作一个流行歌曲推荐的自动生成模型。加入Attention注意力分配机制,使Decoder在生成新的目标句子时,可以得到Encoder编码阶段每个字符隐藏层的信息向量,提高生成目标序列的准确度。

样本数据为该网站音乐播放客户端2017年10月份的播放超过100M的流行歌曲数据,包含歌曲专辑和流行歌手信息。对歌曲专辑和流行歌手信息的预处理工作需要非常细致,采用Encoder编码阶段处理的信息会直接影响到整个模型的效果。对歌曲专辑和流行歌手信息中的特殊字符、日期、英文、数字以及链接都要进行替换处理。

文本预处理后,就是训练样本的准备工作。Source序列就是歌曲专辑和流行歌手信息的正文内容,Target目标序列是歌曲专辑和流行歌手信息。为了保证效果,正文部分不能过长,这里设定分词后的正文不超过100个词,不足用PAD字符补齐,设定标题不超过20个词。在生成训练样本的时候,定义了create_vocabulary()方法来创建词典,data_to_id()方法把训练样本(train_data.txt)转化为对应的词ID。

训练样本的数据格式如下:

#train_jata.txt

新歌热歌 中国好声音 广场舞欧美轻音乐DJ 舞曲 80后 网络歌曲劲爆 粤语 民歌 对唱 成名曲 草原歌曲

阿兰 李春波 曹格 赵雷 孙盛希 降央卓玛 孙楠 郁可唯 By2 陈洁仪 小曾 Alan Walker 李圣杰水木年华火箭少女101段张碧晨 黑龙 郭峰 金志文 胡夏 谭维维 鹿晗

#train_titl.txt

新歌 80后 成名曲

赵雷曹格胡夏 谭维维 鹿晗

Seq2Seq是一个基于输入的sequence,预测一个未知sequence的模型。模型由Encoder编码阶段和Decoder解码阶段两部分构成。模型编码阶段Encoder的RNN每次会输入一个字符代表的向量,将输入序列编码成一个固定长度的向量;解码阶段的RNN会一个一个字符地解码,如预测为X。在训练阶段时会强制将上一步解码的输出作为下一步解码的输入,即X会作为下一步预测Y时的输入。

当编码阶段输入的序列过长时,解码阶段LSTM模型将无法针对最早的输入序列解码。Attention注意力分配机制,在解码阶段每一步解码时,都会有一个输入,对输入序列所有隐含层的信息进行加权求和,能够很好地解决这个问题。

将分词后的歌曲专辑和流行歌手信息数据拆分为训练样本和测试样本,共四个文件:train_data.txt,train_title.txt,test_data.txt,test_title.txt 。正文内容和其对应的标题需要分开存放在两个文件内,一行为一条样本。

运行脚本,训练好的模型将被保存下来,预测好的Text Summarizaion。

结论:随着互联网的迅速发展,网络中的音乐资源呈指数级增长,通过深度学习自动生成的信息往往能很直观的体现内容的主题内容,便于读者快速地浏览,准确选择自己感兴趣的内容,节约时间成本,能够给读者带来很好的体验感。智能推荐已经成为一种势不可挡的趋势,随着人工智能的发展,算法推荐必将成为内容领域的主流之一。

参考文献:

[1]黄文坚,唐源. TensorFlow实战[M].电子工业出版社,2017.

[2]顾思宇,梁博文,郑泽宇.TensorFlow:实战Google深度学习框架[M].电子工业出版社,2018.

[3]JacobBuckman.TensorFlow入门必看:Google AI实习生经验谈[M].王强,无明,译.2018.

[4]TensorFlow中文社区.

【通联编辑:王力】

猜你喜欢
推荐系统
基于用户偏好的信任网络随机游走推荐模型
基于Mahout分布式协同过滤推荐算法分析与实现
基于Baseline SVD主动学习算法的推荐系统