谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度

昨天,谷歌发布了 TensorFlow 1.4.0 先行版,将 tf.data 等功能加入了 API。同时发布的还有 TensorFlow Lattice,这家公司希望通过新的工具让开发者们的模型更加准确。

TensorFlow 1.4.0 先行版更新说明:https://github.com/tensorflow/tensorflow/releases/tag/v1.4.0-rc0

TensorFlow Lattice 项目链接:https://github.com/tensorflow/lattice

机器学习已经在很多领域取得了巨大成功,如自然语言处理、计算机视觉和推荐系统,它们都利用了高度灵活的模型捕捉复杂的输入/输出关系。然而,我们还面临着语义输入与全局关系之间的问题,像「如果路上堵车,开车通勤的时间就会变长,其他方式也是一样。」一些灵活的模型如 DNN 和随机森林无法学习这种关系,可能会无法泛化至不同样本分布的样本。

针对这种问题,谷歌提出了 TensorFlow Lattice,它包含一套易于使用的预制 TensorFlow 估算器,以及 TensorFlow 运算符(operator),可用于构建你的点阵模型。Lattice 是多维度内插值查找表-,类似于几何教科书中近似正弦函数的查找表-。通过查找表结构,我们可以通过键入多个输入来逼近任意灵活的关系,以满足你指定的单调函数关系来让泛化更好。这意味着,查找表中的值可以最小化训练样本的损失,但是,查找表中的相邻值被约束以沿着输入空间的给定方向增加,这让模型在这些方向上的输出也有所增加。重要的是,由于它们在查找表值之间插值,所以 Lattice 模型是平滑的,预测也是有界的,这有助于在测试时间内避免失真的过大或过小预测。

假设你正在设计一个向用户推荐临近咖啡厅的系统。你肯定需要模型学会「如果两家咖啡厅是连锁的,推荐更近的一家。」下图展示了准确地与部分东京用户(紫色)训练数据匹配的灵活模型(粉色)示例,在那个城市有很多咖啡厅。粉色灵活模型对有噪声的训练样本有些过拟合,与「更近的咖啡厅更好」的原则不符。如果你使用这个模型在德州(蓝色)找咖啡厅,你会发现它的行为有些奇怪,有些时候甚至会向你推荐更远的咖啡厅!

模型的特征空间——所有其他输入保持一致,只有距离产生变化。一个与东京训练样本(紫色)准确拟合的灵活函数(粉色)预测 10 公里外的咖啡厅要比 5 公里外同样的咖啡厅更好。如果数据分布产生变化,这个问题还会变的更加明显,正如德州数据(蓝色)所展示的那样。

单调灵活函数(绿色)在训练样本上结果准确,也可以泛化到德州样本,相比非单调灵活函数(粉色)效果更好。

相比之下,同样使用东京样本训练的 lattice 模型可以接受约束,以满足这样的单调关系,得出一个单调灵活函数(monotonic flexible function,绿色)。绿线还能够准确拟合东京的训练样本,且很好地泛化到德州数据,不优先选择较远的咖啡厅。

通常,对于每个咖啡厅你可能有很多输入,如咖啡质量、价格等。灵活模型捕捉全局关系较为困难,「如果所有输入是一样的,那么越近越好。」尤其是训练数据的部分特征空间稀疏且有噪声。能够获取先验知识(如输入对预测的影响)的机器学习模型在实践中效果较好,且易于调试、具备更强的可解释性。

预制 TensorFlow 估算器

谷歌提供了多个 lattice 模型架构,如 TensorFlow 估算器。其中最简单的估算器是校准线性模型(calibrated linear model),它学习每个特征的最优 1-d 转换(使用 1-d lattice),然后把所有校准后的特征进行线性连接。在训练数据集非常小或没有复杂的非线性输入交互的情况下,这种模型表现很好。另一种估算器是校准 Lattice 模型(calibrated lattice model)。该模型使用两层的单个 Lattice 模型将校准后的特征进行非线性连接,可以展现数据集中的复杂非线性交互。校准 Lattice 模型通常适合 2-10 个特征的情况,如果有 10 个或更多特征,我们认为使用校准 Lattice 的集合可以帮你获取最佳结果,你可以使用预制 Ensemble 架构进行训练。单调 Lattice 集合比随机森林达到 0.3% - 0.5% 的增益精度 [4],与之前使用单调性的顶尖学习模型相比,这些新型 TensorFlow Lattice 估算器达到 0.1 - 0.4% 的增益精度 [5]。

构建你自己的模型

你或许想使用更深层的 Lattice 网络进行实验,或使用局部单调函数(partial monotonic function)作为深度神经网络或其他 TensorFlow 架构的一部分。我们提供预构建模块:用于校准器的 TensorFlow 运算符、Lattice 内插和单调投影(monotonicity projection)。例如,下图展示了一个 9 层的深度 Lattice 网络 [5]。

9 层深度 lattice 网络架构 [5]、线性嵌入的交互层,以及带有校准器层的 Lattice 集合(类似神经网络中的多个 ReLU)的示例。蓝线代表单调性输入,该输入逐层保存,进而为整个模型服务。该架构和其他随机架构都可以使用 TensorFlow Lattice 构建,因为每一层都是可微的。

除了模型灵活性和标准 L1 和 L2 正则化之外,谷歌还提供使用 TensorFlow Lattice 的新型正则器:

基于输入(如上所述)的单调性约束(Monotonicity constraint)。

Lattice 上的拉普拉斯正则化,使学得的函数更加平坦。

Torsion 正则化,控制不必要的非线性特征交互。

谷歌希望 TensorFlow Lattic 能够对处理有意义的语义输入的大型社区有所帮助。同时,开发团队还在致力于研究可解释性、控制机器学习模型以满足策略目标、使从业者利用他们的先验知识,这是其中的一部分。我们很高兴能够与大家分享。查看我们的 GitHub 和教程(https://github.com/tensorflow/lattice/blob/master/g3doc/tutorial/index.md),开始使用吧。

参考文献

[1] Lattice Regression (https://papers.nips.cc/paper/3694-lattice-regression), Eric Garcia, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2009

[2] Optimized Regression for Efficient Function Evaluation (http://ieeexplore.ieee.org/document/6203580/), Eric Garcia, Raman Arora, Maya R. Gupta, IEEE Transactions on Image Processing, 2012

[3] Monotonic Calibrated Interpolated Look-Up Tables (http://jmlr.org/papers/v17/15-243.html), Maya Gupta, Andrew Cotter, Jan Pfeifer, Konstantin Voevodski, Kevin Canini, Alexander Mangylov, Wojciech Moczydlowski, Alexander van Esbroeck, Journal of Machine Learning Research (JMLR), 2016

[4] Fast and Flexible Monotonic Functions with Ensembles of Lattices (https://papers.nips.cc/paper/6377-fast-and-flexible-monotonic-functions-with-ensembles-of-lattices), Mahdi Milani Fard, Kevin Canini, Andrew Cotter, Jan Pfeifer, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2016

[5] Deep Lattice Networks and Partial Monotonic Functions (https://research.google.com/pubs/pub46327.html), Seungil You, David Ding, Kevin Canini, Jan Pfeifer, Maya R. Gupta, Advances in Neural Information Processing Systems (NIPS), 2017

原文链接:https://research.googleblog.com/2017/10/tensorflow-lattice-flexibility.html

谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、相关推荐

  1. 【TensorFlow系列】【五】利用inception v3 pb模型文件做预测

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍如何利用imagenet比赛上训练好的inception v3冻结的pb模型进行inference. 1.下载ince ...

  2. 谷歌发布TF新工具:计算速度提升2倍,减少无效参数

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一顿操作后,需要实时模糊背景的视频,看起来流畅了不少: 实时目标检测的延迟也更低了: 这是谷歌特意为移动设备和Web端开发的一系列新工具,可 ...

  3. 谷歌发布轻量级视觉架构MobileNetV2,速度快准确率高

    林鳞 编译自 Google Research Blog 量子位 出品 | 公众号 QbitAI 深度学习在移动端部署的挑战仍在. 虽然深度学习在图像分类.检测等任务上颇具优势,但提升模型精度对能耗和存 ...

  4. AI 一分钟 | 谷歌发布72量子比特处理器,或将为机器学习应用提供加速;百度已经发起对景驰撤诉,但不会对王劲撤诉

    整理 | Leo 一分钟AI 查理·芒格评人工智能商业化:我靠自己的常识已经生活得很好了,从未想过进入人工智能领域 谷歌发布72量子比特处理器,或将为机器学习应用提供加速 百度成立"智能生活 ...

  5. 谷歌发布人类动作识别数据集AVA,精确标注多人动作

    选自Google Research 机器之心编译 参与:路雪 视频人类动作识别是计算机视觉领域中的一个基础问题,但也具备较大的挑战性.现有的数据集不包含多人不同动作的复杂场景标注数据,今日谷歌发布了精 ...

  6. HTML搜狐店铺,搜狐成为IE9发布合作伙伴 展示HTML5应用

    [搜狐IT消息] 美国时间9月15日消息,记者刘晖美国旧金山报道,当地时间11点,微软正式发布了IE9 Beta版.这款微软最新的浏览器以充分发挥PC潜能,为10亿Windows用户提供完美的内容呈现 ...

  7. 重要更新 | 谷歌发布 TensorFlow 1.4,迁移Keras,支持分布式训练

    TensorFlow 1.4 版现在已公开发布 - 这是一个大更新!我们在这里非常高兴地宣布一些令人兴奋的新功能,希望大家喜欢. Keras 在 1.4 版中,Keras 已从 tf.contrib. ...

  8. 谷歌发布TensorFlow,用于测试人工智能模型的隐私保护

    本文作者:郭仁贤 2020-06-25 17:36 导语:人工智能模型会泄露训练数据集的敏感信息,从而产生隐私风险. 近日,谷歌发布了隐私保护TensorFlow工具包,可以评估各种机器学习分类器的隐 ...

  9. 谷歌发布企业版TensorFlow,或提供收费服务?

    当地时间 10 月 30 日,谷歌发布其最新企业版 TensorFlow--TensorFlow Enterprise. 谷歌云 AI 平台产品管理总监 Craig Wiley 在加州举行的 O'Re ...

最新文章

  1. “脑补”的科学依据:眼前的黑不是黑,靠得是你的大脑
  2. 模拟命令行自动输入的HTML,HTML5 命令行界面仿真和自动打字动画
  3. SAP CRM Fiori搜索没有命中情况下的调试细节
  4. Android—关于通知NotificationManager操作
  5. UVA10972 - RevolC FaeLoN(双连通分量)
  6. 微信客户端<->腾讯微信服务器<->开发者服务器
  7. configure: error: cannot guess build type; you must specify one解决方法
  8. ADO.NET实体框架Entity Framework模型-基于元数据解析
  9. 自然语言处理基础技术工具篇之NLTK
  10. IT项目经理每天每周都在干什么?附简要周报模板
  11. 社交媒体与社会网络分析,深度分析社交网络问题
  12. My Fifty-Sixth Page - 子集Ⅱ - By Nicolas
  13. 单链表基本操作的实现——前插法与后插法创建单链表
  14. host文件位置 修改ip映射地址
  15. Ms Sql Server 2000 个人绿色版 5.62
  16. 【计算理论】图灵机 ( 图灵机引入 | 公理化 | 希尔伯特纲领 | 哥德尔不完备定理 | 原始递归函数 )
  17. form 9i, 6i 运行环境配置
  18. Nmap常用命令总结
  19. v-chart柱状图点击改变颜色
  20. 简书markdown

热门文章

  1. python long_python long函数是什么?如何使用?
  2. Linux 下的动态链接库问题
  3. 安装MindStudio
  4. C++重载>>和<<输入和输出运算符)
  5. C++ new和delete(C++动态分配和释放内存)
  6. python super 参数问题
  7. mongodb 安装与卸载
  8. 经典的cnn model
  9. 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)
  10. Leetcode 54 螺旋矩阵 (每日一题 20210729)