業界 | 谷歌發佈TensorFlow 1.4與TensorFlow Lattice:利用先驗知識提升模型準確度

 2017-10-12 14:47:00.0

原標題:業界 | 谷歌發佈TensorFlow 1.4與TensorFlow Lattice:利用先驗知識提升模型準確度

選自:Google Research Blog

參與:李澤南、路雪

昨天,谷歌發佈了 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

本文爲機器之心編譯,轉載請聯繫本公衆號獲得授權。

責任編輯:

文章來源:機器之心