首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【重磅】谷歌推出 Wide Deep Learning,开源 TensorFlow API

【重磅】谷歌推出 Wide Deep Learning,开源 TensorFlow API

作者头像
新智元
发布2018-03-22 18:02:06
1.4K0
发布2018-03-22 18:02:06
举报
文章被收录于专栏:新智元新智元

【新智元导读】今天(美国加州当地时间29日),资深软件工程师 Heng-Tze Cheng 在 Google Research 发表博文,宣布谷歌研究所最新推出 Wide & Deep Learning,并将 TensorFlow API 开源,欢迎开发者使用这款最新的工具。新智元为大家提供全文翻译如下。

像行家一样学会规则,然后像艺术家一样破坏它们。

—— 毕加索

(文/Heng-Tze Cheng)人类大脑是个不断学习的精密机器,通过记忆日常事件形成规则 (“麻雀能飞”,“鸽子能飞”),并且把学到的规则推广到我们没有见过的事物 (“有翅膀的动物能飞”)。可能更强大的方面是,记忆让我们可以通过加入例外情形来精细调节规则 (“企鹅不能飞”)。在探索如何推动机器智能前进的过程中,我们问了自己这样一个问题——能不能让电脑结合记忆和推广这两种能力,从而能像人类一样学习?

这不是个容易回答的问题,但是通过联合训练一个宽广线性模型 (用于记忆) 和一个深度神经网络 (用于推广,或曰泛化),可以结合两者的能力让我们离目标更进一步。在 Google,我们称这个模型 Wide & Deep Learning。这个模型适用于一般的、输入具有稀疏性的 (分类特征可以取大量不同的值) 大规模回归和分类问题,比如推荐系统、搜索、排名等问题。

点击查看大图

今天我们开源了我们对 Wide & Deep Learning 的实现,作为 TF.Learn 应用程序接口的一部分,这样你也能自己训练模型了。你可以看看基于 TensorFlow 的线性模型和 Wide & Deep Learning 的入门指南(详见后文),以及我们的研究论文(在新智元后台回复“0630”下载)。

谷歌资深软件工程师 Heng-Tze Cheng 介绍 Wide & Deep Learning及其使用方法

“深广学习”如何工作

设想有天你一觉醒来想到一个主意,你要做一个叫 FoodIO 的 app。用户只需要说出他/她想吃什么样的食物 (请求内容),然后这个 app 就能魔法般地推测出用户最喜欢的菜品,并且把这道菜 (物品) 送到用户的门前。你的关键评价指标是消费率 —— 如果用户吃了这道菜,得分为 1;否则得分为 0 (标签)。

一开始你想了一些简单的规则,比如,返回与请求内容字数匹配最多的物品,然后你发布了这个 app。可惜,你发现消费率相当低,因为匹配太粗糙了 (用户要“炸鸡” (fried chicken),结果得到的是“鸡肉炒饭” (chicken fried rice),因此你决定添加机器学习算法来从数据中学习。

广度模型

在你 App 的第二版,你希望记住对每个请求内容匹配最好的物品。于是,你用 TensorFlow 训练了一个线性模型,通过宽广的交叉乘积特征变换来获取“请求-物品二元组”如何与目标标签 (是否被吃了) 相关的信息。这个模型对每个物品计算出消费概率 P (消费 | 请求,物品),然后你的 app 送出最高消费概率的菜品。例如,模型学到请求=“炸鸡” (fried chicken) 并且物品="鸡肉华夫饼" (chicken and waffles) 概率很高,而请求=“炸鸡” (fried chicken) 并且物品=“鸡肉炒饭” (chicken fried rice) 的概率较低,尽管后者的字符匹配数更多。换句话说,FoodIO 2.0 在记忆用户的喜好上面表现不错,于是你的 app 得到更多认同。

点击查看大图

深度模型

然后,许多用户说他们厌倦了 app 的推荐。他们想发现类似但不同的菜品,希望得到惊喜。于是你再次动用你的 TensorFlow 工具包,为 FoodIO 3.0 训练了一个深度前馈神经网络。通过深度模型,你为每个请求和物品找到了低维稠密表示 (通常称为嵌入矢量)。这样,FoodIO 能够通过在嵌入空间中对请求内容进行近邻匹配来推广。例如,你发现请求“炸鸡”的人不介意也来个“汉堡”。

点击查看大图

结合深度和广度,在 TensorFlow 上做得更好

然而,你发现深度神经网络有时候推广得过头了,会推荐一些无关的菜品。你去历史数据中看了看,发现实际上有两种“请求-物品”关系。

第一种是目标明确的。当一个人说“加冰的脱因拿铁咖啡,用脱脂牛奶”,他/她要的就是这个,不是别的。仅仅因为这个物品在嵌入空间中与“热拿铁咖啡加全脂牛奶”接近不意味着后者可以接受。在许多这样的情形嵌入的传递性 (transitivity) 带来的坏处大于好处。另一方面,像“海味”或者“意大利食物”这样的请求内容就可能允许较多的推广,允许发现许多不同的相关物品。明白这些之后,你有了个顿悟,为什么必须在广度模型和深度模型里二选一呢?为什么不都用上?

点击查看大图

最后,你用 TensorFlow 里的 Wide & Deep Learning 构造了 FoodIO 4.0。如上图所示,像“炸鸡”这样的请求和“鸡肉炒饭”这样的物品都属于稀疏特征,被用于广度 (左边) 和深度 (右边) 部分。在训练过程中,通过把预测误差回传到两边来训练模型参数。广度模块中的交叉特征变换可以记忆所有那些稀疏的特定规则,而深度模块通过嵌入进行相似物品推广。

我们很高兴分享 Wide & Deep Learning 的 TensorFlow API,这样你也能尝试你自己的想法,然后你也可以分享你的发现。作为开始,你可以看 GitHub 的源代码,以及基于 TensorFlow 的线性模型(Linear Models)和 Wide & Deep Learning 入门(Wide & Deep Learning)指南。

致谢

把 Wide & Deep Learning 从想法变成研究再到实现,是个巨大的团体努力。我们感谢这些为项目做出贡献或给我们建议的人,包括:

Heng-Tze Cheng, Mustafa Ispir, Zakaria Haque, Lichan Hong, Rohan Anil, Denis Baylor, Vihan Jain, Salem Haykal, Robson Araujo, Xiaobing Liu, Yonghui Wu, Thomas Strohmann, Tal Shaked, Jeremiah Harmsen, Greg Corrado, Glen Anderson, D. Sculley, Tushar Chandra, Ed Chi, Rajat Monga, Rob von Behren, Jarek Wilkiewicz, Christine Robson, Illia Polosukhin, Martin Wicke, Gus Katsiapis, Alexandre Passos, Olivier Chapelle, Levent Koc, Akshay Naresh Modi, Wei Chai, Hrishi Aradhye, Othar Hansson, Xinran He, Martin Zinkevich, Joe Toth, Anton Rusanov, Hemal Shah, Petros Mol, Frank Li, Yutaka Suematsu, Sameer Ahuja, Eugene Brevdo, Philip Tucker, Shanqing Cai, Kester Tong, and more.

来源:https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档