TensorFlow技术帖

Wide and Deep,双剑合璧

2018-11-04  本文已影响14人  王同学死磕技术

近两年,机器学习和深度学习(deep learning)在图像领域(Computer Vision),语音识别领域(Speech Recognition)以及自然语言处理领域(Nutural Language Processing)这三个领域高歌猛进,势不可挡。其他行业也希望能够借助智能算法这阵东风,加速产业智能化改革的步伐。广告行业的从业者也开始了他们对智能算法的妙用。下图是今年GDG开发者大会时某个报告的截图,此次报告的讲演人所在的公司就已经将深度学习运用到点击率预估(CTR)这个任务上来了。


Google_developer.png
推荐系统 -- Wide and Deep

而在CTR这个领域,最近有一个叫wide and deep的算法名声不小。而wide and deep 这篇论文最开始是 Google 于2016年发表,并且被Google应用于Google Play的推荐系统中。模型的架构如下图所示,最左边的线性模型和最右边的深度模型联手结盟打造出中间的wide and deep。文章指出,此模型融合了线性模型的记忆能力(memorization)和深度模型的泛化能力((generalization)。线性模型公式如下:
y = w^Tx +b
其中[x_{1},x_{2}....x_{n}]是输入给模型的特征,而这个模型需要学习的参数是[w_{1},w_{2}....w_{n}]y则指的是鸡会被卖出去的概率。强行解释一波这个比较wide的线性模型:x的集合可以理解成一支烤鸡的鸡腿的大小程度,鸡脯的丰盈程度和羽毛颜色的鲜艳程度。而w表示鸡腿的大小,鸡脯的丰盈和的羽毛颜色对烤鸡能否卖出去的重要度。地球人都知道,腿的大小和脯的丰盈是人们买鸡更关心的问题,所以对于卖烤鸡这个模型来说,腿的大小和鸡脯的丰盈所对应w 应该会比较大,羽毛颜色所对应的w会比较小。而这就是线性模型的最大的特点——记忆能力(memorization),它能记住烤鸡的哪些特征对卖出这只鸡是较为重要的。

deep_wide.jpg
而对于深度学习而言,稍微了解一下就能知道,深度学习随着层数的增加学到的特征会越来越抽象。还是以烤鸡为例,倘若用深度学习训练卖烤鸡这个模型很有可能会学习到烤鸡的口感烤鸡的香味以及肉的焦嫩感对卖烤鸡是极为重要的,而这些特征对烤肉类食品都比较重要。这么一来用深度学习模型训练出来的卖烤鸡模型似乎还能用来卖烤羊和烤鱼,岂不是一举多得。这就是深度学习的泛化能力(generalization)

总的看下来,我们发现线性模型有很强的记忆能力,能记住哪些特征对卖烤鸡来说是重要的,可它毕竟公式简单,智商不够,很难发现对于一般烤肉来说很的重要因素。而深度学习又常常会自恃懂天下反而忽视掉鸡身上的一些亮点,你不能忘记你是在卖烤鸡吧,还是得稍微了解下烤鸡的和其他烤肉不同之处。

杨过的全真剑法和小龙女的玉女剑法双剑合璧之后,结果威力大增,而wide and deep 在联手之后优势互补,同样也效力大涨。

idea is cheap ,show your code

以下如何利用是tensorflow的高级API tf.estimator 实现wide and deep架构的代码,实在是简洁明了,看着就有一种想run起来的冲动。不要压抑,自己试着玩一玩这个wide and deep 双剑合璧的推荐算法吧 。

import tensorflow as tf
estimator = tf.estimator.DNNLinearCombinedClassifier(
                     n_classes=2,
                     linear_feature_columns=feature_columns,
                     dnn_hidden_units=[4,16,32],
                     model_dir='drive/My Drive/model/click_1',
                     linear_optimizer=tf.train.ProximalAdagradOptimizer(
                                        learning_rate=0.1,
                                        l1_regularization_strength=0.001)
)
上一篇下一篇

猜你喜欢

热点阅读