tensoflow学模型-wide&deep(1)——google AI博客

人脑是一种复杂的学习机器,通过记住日常事件(“麻雀可以飞”和“鸽子可以飞”)形成规则,并将这些学习推广到适用于我们以前从未见过的事物(“有翅膀的动物可以飞”))。 也许更强大的是,记忆也允许我们进一步提炼我们的通用规则如一些特例(“企鹅不能飞”)。 当我们探索如何推进机器智能时,我们问自己这个问题 - 我们可以通过结合记忆(memorization)和泛化(generalization)的力量来教导计算机像人类一样学习吗?

这不是一个容易回答的问题,但是通过联合训练wide linear mode(用于记忆)和深度神经网络(用于泛化),可以结合两者的优势使我们更近一步。 在谷歌,我们称之为Wide & Deep Learning。 它对于稀疏输入(具有大量可能特征值的分类特征)的通用大规模回归和分类问题很有用,例如推荐系统、搜索和排序问题。
tensoflow学模型-wide&deep(1)——google AI博客_第1张图片

How Wide & Deep Learning works(wide&deep学习如何工作)

假设有一天你醒来时想到了一款名为FoodIO的新应用程序。 该应用的用户只需要大声说出他/她渴望的食物(query)。该应用程序神奇地预测用户将最喜欢的菜,并且菜肴被送到用户的前门(item)。您的关键指标是消费率 - 如果用户吃了一道菜,则得分为1; 否则得分是0(label)。

您想出了一些简单的规则来启动,比如返回与查询中的大多数字符匹配的itme,然后发布第一个版本的FoodIO。 不幸的是,你发现消费率非常低,因为匹配太粗糙而不是真正有用(人们喊“炸鸡”最终得到“鸡肉炒饭”),所以你决定添加机器学习来学习数据。

Wide model

在第二个版本中,您希望记住每个query最适合哪些item。 因此,您在TensorFlow中使用一系交叉特征转换(cross-product feature transformations)来训练线性模型,以捕获query-item特征对的共现与目标label(无论是否消耗了item)的关联。 该模型预测每个item的消费概率P(消费 | query, item) ,并且FoodIO提供具有最高预测消费率的item。 例如,模型得知特征AND(query=“炸鸡”,item =“鸡肉和华夫饼”)是一个巨大的胜利,而AND(query=“炸鸡”,item=“鸡肉炒饭”),即使字符匹配更高,却没有那么被喜爱。 换句话说,FoodIO 2.0可以很好地记住用户的喜好,并开始获得更多的牵引。
tensoflow学模型-wide&deep(1)——google AI博客_第2张图片

Deep model

不久你发现许多用户都说他们厌倦了这些推荐。 他们渴望发现类似但不同的美食,带有“惊喜”的心态。 因此,您重温TensorFlow工具包,为FoodIO 3.0训练深度前馈神经网络。 使用深层模型,您可以为每个query和item学习低维dense表示(通常称为embedding向量)。通过这种方式,FoodIO可以通过将在同一个embedding空间中相近的item与query进行匹配来进行泛化。 例如,你发现那些要求“炸鸡”的人常常也不介意吃“汉堡包”。
tensoflow学模型-wide&deep(1)——google AI博客_第3张图片

Combining Wide and Deep models(联合wide和deep模型)

但是,你发现深层神经网络有时会泛化太多并推荐不相关的菜肴。 您深入了解历史交易,并发现数据中实际上存在两种不同类型的query-item关系。
第一类查询非常有针对性。 人们大喊非常具体的item,如“含有脱脂牛奶的冰咖啡拿铁”真的就指它。 仅仅因为它在embedding空间中和“全脂牛奶热拿铁”非常接近并不意味着它是一种可接受的选择。 并且有数以百万计的这些规则,embedding的传递性实际上可能弊大于利。 另一方面,像“海鲜”或“意大利食品”这样更具探索性的查询可能会更加泛化并发现各种不同的相关item。 意识到这些之后,你有一个顿悟:为什么我要选择wide模型或者deep模型? 为什么不都用?
tensoflow学模型-wide&deep(1)——google AI博客_第4张图片
最后,您将在TensorFlow中使用Wide&Deep Learning构建FoodIO 4.0。 如上图所示,在模型的wide部分(左)和deep部分(右)都使用了诸如query =“炸鸡”和item =“鸡炒饭”之类的稀疏特征。 在训练期间,预测误差被反向传播(backpropagated)到两侧以训练模型参数。wide模型组件中的交叉特征转换可以记住所有那些稀疏的特定规则,而deep模型组件可以通过embedding泛化到相似的item。

google wide&deep相关资料:
tensorflow线性模型
tensorflow wide&deep learning
wide&deep 论文
YouTube视频讲解

原文google AI博客Wide & Deep Learning: Better Together with TensorFlow

你可能感兴趣的:(机器学习)