谷歌发布TensorFlow Lattice:得益于先验知识,提升模型泛化能力

jopen 7年前
   <p style="text-align: center;"><a href="/misc/goto?guid=4959009358778165434" title="TensorFlow"><img alt="谷歌发布TensorFlow Lattice:得益于先验知识,提升模型泛化能力" src="https://simg.open-open.com/show/025e57d5a2753520008fdcc904712ff6.png" /></a></p>    <p>近日,谷歌科学家发布 TensorFlow Lattice,这是一套预建的 TensorFlow Estimators,易于使用,它相当于是 TensorFlow 运算符,用来构建点阵模型(lattice model)。点阵是多维插值查找表(look-up table),与几何教材背面近似于正弦函数的查找表类似。</p>    <p>雷锋网 AI 科技评论编译整理如下:</p>    <p>我们利用查找表的结构(它可以通过多个输入进行键控),来估计比较随意及灵活的关系,并满足于指定的单调关系,以便更好地泛化。也就是说,训练查找表值使得训练样例的损失最小化。另外,查找表中的相邻值被约束为在输入空间的给定方向上增长,因此模型的输出值也是在这些方向上增长。重要的是,因为是在查找表值之间进行插入,所以点阵模型很平滑,预测也是有界的,这有助于避免测试阶段出现有较大偏差的杂散预测。</p>    <p>视频地址:<a href="http://static.video.qq.com/TPout.swf?auto=1&vid=z0560xy9zaa">http://static.video.qq.com/TPout.swf?auto=1&vid=z0560xy9zaa</a></p>    <p><strong>点阵模型的作用</strong></p>    <p>设想一下,你正在设计一个向用户推荐附近咖啡店的系统,你需要让模型学习:“如果两家咖啡店是一样的,那就选择更近一点的。”</p>    <p>下图中我们展示了一个灵活的模型(粉色曲线),它可以精确地与来自东京用户的训练数据(紫色圆点)相匹配,在用户附近有很多咖啡店。</p>    <p>由于训练样例比较嘈杂,可以看到粉色曲线模型产生了过拟合,并且模型还忽略了总的趋势——越近的咖啡店越好。如果用这条粉色曲线模型排列来自德克萨斯州(蓝色)的测试样本,在德克萨斯州咖啡店的分布更加分散,你会发现模型的表现变得很奇怪,有时甚至会认为更远的咖啡店更好!</p>    <p style="text-align:center"><img alt="谷歌发布TensorFlow Lattice:得益于先验知识,提升模型泛化能力" src="https://simg.open-open.com/show/16068bee88e5d294b8ed0015100037bd.gif" /></p>    <p style="text-align:center"><img alt="谷歌发布TensorFlow Lattice:得益于先验知识,提升模型泛化能力" src="https://simg.open-open.com/show/65bbcdc6feeb19e7eaf72fe922616d3d.gif" /></p>    <p>对比起来,运用东京相同的样本训练的点阵模型能被约束为满足单调关系,最终得到一个灵活的单调函数(绿色曲线)。这个函数能与东京的训练样例精准匹配,但是也能泛化到德克萨斯州的样例上,不会出现更远的咖啡店更好的情况。</p>    <p>一般说来,输入会有每个咖啡店的咖啡质量、价格等等。灵活模型很难捕捉到这种形式的整体关系,特别是在一些特征空间中,训练数据非常稀疏和杂乱。“如果其他所有输入占的权重一样,那么更近就更好。”能捕捉到先验知识(例如输入是怎么对预测值产生影响的)的机器学习模型在实际中取得的效果更好,更易于调试并更具有解释性。</p>    <p><strong>预建 Estimators</strong></p>    <p>我们提供一系列点阵模型架构作为 TensorFlow Estimators。我们提供的最简单的 estimator 是校准线性模型(calibrated linear model),它能利用1-d 点阵,学习到每个特征的最佳1-d 转化,然后线性地将所有校准特征结合起来。如果训练数据集很小或没有复杂的非线性输入交互,模型将非常有效。</p>    <p>另外一个 estimator 是校准点阵模型(calibrated lattice model),这个模型能利用两层单一点阵模型非线性地将校准特征结合起来,能在数据集中表示复杂的非线性交互。如果有2-10 个特征,那么校准点阵模型会是很好的选择,但对于 10 个或 10 个以上的特征,我们认为利用一组校准点阵将会得到最佳结果,这时候你能利用预建的一组架构来进行训练。比起随机森林,单调点阵集合(Monotonic lattice ensembles)能增加 0.3% -- 0.5% 的准确度。另外,比起之前顶尖的单调性学习模型,这些新的 TensorFlow 点阵 estimator 能增加 0.1% -- 0.4% 的准确度。</p>    <p><strong>动手建立模型</strong></p>    <p>你或许想要用更深的点阵网络进行实验,或者利用部分单调函数(作为深度神经网络或其他 TensorFlow 架构的一部分)来进行研究。我们提供构件:TensorFlow 校准运算符、点阵插入和单调性投影(monotonicity projections)。下图是一个 9 层深度点阵网络:</p>    <p style="text-align:center"><img alt="谷歌发布TensorFlow Lattice:得益于先验知识,提升模型泛化能力" src="https://simg.open-open.com/show/d42d576bae5c25446b7a0fa6849a2740.jpg" /></p>    <p>在 TensorFlow Lattice 中,除了模型的灵活选择以及标准的 L1、L2 正则化,我们还提供新的正则化矩阵:</p>    <ul>     <li> <p>如上面描述的那样,在输入上进行单调性约束。</p> </li>     <li> <p>在点阵上进行拉普拉斯正则化,以便让学习到的函数更平滑。</p> </li>     <li> <p>对扭曲进行正则化(Torsion regularization),来抑止不必要的非线性特征交互。</p> </li>    </ul>    <p>大家可以在如下地址看到详细信息并开始进行实验:</p>    <p><a href="/misc/goto?guid=4959011290294669972" rel="nofollow">GitHub</a> 地址:<a href="/misc/goto?guid=4959011290294669972" rel="nofollow">https://github.com/tensorflow/lattice</a></p>    <p><a href="/misc/goto?guid=4959011290408458199" rel="nofollow">tutorials</a> 地址:<a href="/misc/goto?guid=4959011290408458199" rel="nofollow">https://github.com/tensorflow/lattice/blob/master/g3doc/tutorial/index.md</a></p>    <p>参考文献:</p>    <p>[1]<a href="/misc/goto?guid=4959011290503213781" rel="nofollow"> Lattice Regression</a>, Eric Garcia, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2009</p>    <p>[2] <a href="/misc/goto?guid=4959011290595971425" rel="nofollow">Optimized Regression for Efficient Function Evaluation</a>, Eric Garcia, Raman Arora, Maya R. Gupta, IEEE Transactions on Image Processing, 2012</p>    <p>[3] <a href="/misc/goto?guid=4959011290684046298" rel="nofollow">Monotonic Calibrated Interpolated Look-Up Tables</a>, Maya Gupta, Andrew Cotter, Jan Pfeifer, Konstantin Voevodski, Kevin Canini, Alexander Mangylov, Wojciech Moczydlowski, Alexander van Esbroeck, Journal of Machine Learning Research (JMLR), 2016</p>    <p>[4]<a href="/misc/goto?guid=4959011290771713650" rel="nofollow"> Fast and Flexible Monotonic Functions with Ensembles of Lattices</a>, Mahdi Milani Fard, Kevin Canini, Andrew Cotter, Jan Pfeifer, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2016</p>    <p>[5] <a href="/misc/goto?guid=4959011290868432259" rel="nofollow">Deep Lattice Networks and Partial Monotonic Functions</a>, Seungil You, David Ding, Kevin Canini, Jan Pfeifer, Maya R. Gupta, Advances in Neural Information Processing Systems (NIPS), 2017</p>    <p>via:<a href="/misc/goto?guid=4959011290962629765" rel="nofollow">Google Research Blog</a></p>    <p>来自: <a href="/misc/goto?guid=4959011291053074793" id="link_source2">雷锋网</a></p>