TensorFlow Lattice (TFL)

TensorFlow Lattice 是一個程式庫,實作彈性、可控制且可解譯的格狀模型。這個程式庫可讓您透過常識或政策驅動的形狀限制,將領域知識注入學習過程。這項作業是透過一組可滿足單調性、凸性和成對信任等限制的 Keras 層來完成。這個程式庫也提供易於設定的預製模型

概念

本節是 Monotonic Calibrated Interpolated Look-Up Tables (JMLR 2016) 中描述的簡化版本。

格狀

格狀是經過內插的查閱表,可以用於逼近資料中任意的輸入輸出關係。它會在您的輸入空間上重疊規則格線,並學習格線頂點中輸出的值。對於測試點 \(x\),\(f(x)\) 是從 \(x\) 周圍的格狀值線性內插而來。

上面的簡單範例是具有 2 個輸入特徵和 4 個參數的函式:\(\theta=[0, 0.2, 0.4, 1]\),這些參數是輸入空間角落的函式值;函式的其餘部分是從這些參數內插而來。

函式 \(f(x)\) 可以擷取特徵之間的非線性互動。您可以將格狀參數想像成設置在規則格線地面上的桿子高度,而產生的函式就像是緊拉在四根桿子上的布。

使用 \(D\) 個特徵和沿著每個維度的 2 個頂點,規則格狀將有 \(2^D\) 個參數。若要擬合更彈性的函式,您可以指定在特徵空間上具有更精細格線的格狀,沿著每個維度具有更多頂點。格狀迴歸函式是連續且分段無限可微分的。

校正

假設先前的範例格狀代表已學習到的使用者滿意度,這是使用以下特徵計算出的建議當地咖啡店

  • 咖啡價格,範圍為 0 到 20 美元
  • 與使用者的距離,範圍為 0 到 30 公里

我們希望模型學習使用者對當地咖啡店建議的滿意度。TensorFlow Lattice 模型可以使用分段線性函式 (搭配 tfl.layers.PWLCalibration) 來校正和正規化輸入特徵,使其達到格狀可接受的範圍:在上述範例格狀中為 0.0 到 1.0。以下顯示具有 10 個關鍵點的範例校正函式

通常最好使用特徵的分位數做為輸入關鍵點。TensorFlow Lattice 預製模型可以自動將輸入關鍵點設定為特徵分位數。

對於類別特徵,TensorFlow Lattice 提供類別校正 (搭配 tfl.layers.CategoricalCalibration),其輸出邊界與饋入格狀的邊界類似。

集成

格狀層的參數數量會隨著輸入特徵的數量呈指數成長,因此無法良好擴展到非常高的維度。為了克服此限制,TensorFlow Lattice 提供格狀集成,它會結合 (平均) 數個微型格狀,讓模型能夠隨著特徵數量線性成長。

這個程式庫提供這些集成的兩種變化版本

  • 隨機微型格狀 (RTL):每個子模型都使用特徵的隨機子集 (可重複取樣)。

  • 晶體:晶體演算法首先訓練一個預先擬合模型,用於估計成對特徵互動。然後,它會排列最終集成,讓具有更多非線性互動的特徵位於相同的格狀中。

為何選擇 TensorFlow Lattice?

您可以在這篇 TF 部落格文章中找到 TensorFlow Lattice 的簡短介紹。

可解譯性

由於每一層的參數都是該層的輸出,因此很容易分析、理解和偵錯模型的每個部分。

準確且彈性的模型

使用精細格狀,您可以透過單一格狀層取得任意複雜的函式。在實務中,使用多層校正器和格狀通常效果良好,並且可以與大小相似的 DNN 模型相媲美或勝過它們。

常識形狀限制

真實世界的訓練資料可能無法充分代表執行階段資料。彈性 ML 解決方案 (例如 DNN 或樹系) 通常在訓練資料未涵蓋的輸入空間部分中表現出乎意料,甚至是極不穩定的行為。當政策或公平性限制可能遭到違反時,這種行為尤其成問題。

即使常見形式的正規化可以產生更合理的推斷,但標準正規化器也無法保證整個輸入空間 (尤其是在高維度輸入的情況下) 的合理模型行為。切換到行為更受控制且可預測的較簡單模型,可能會嚴重犧牲模型準確性。

TF Lattice 讓您可以繼續使用彈性模型,但提供多種選項,可透過語意上有意義的常識或政策驅動的形狀限制,將領域知識注入學習過程

  • 單調性:您可以指定輸出應該僅針對輸入增加/減少。在我們的範例中,您可能會想要指定,與咖啡店的距離增加應該只會降低預測的使用者偏好。

  • 凸性/凹性:您可以指定函式形狀可以是凸形或凹形。與單調性混合使用時,這可以強制函式表示相對於給定特徵的報酬遞減。

  • 單峰性:您可以指定函式應該具有唯一的峰值或唯一的谷值。這可讓您表示相對於特徵具有最佳點的函式。

  • 成對信任:此限制適用於一對特徵,並表示一個輸入特徵在語意上反映對另一個特徵的信任。例如,較多的評論數量讓您對餐廳的平均星級評等更有信心。當評論數量較多時,模型對於星級評等的敏感度會更高 (亦即,相對於評等的斜率會更大)。

透過正規化器控制彈性

除了形狀限制之外,TensorFlow Lattice 還提供許多正規化器,可用於控制每一層函式的彈性和平滑度。

  • 拉普拉斯正規化器:格狀/校正頂點/關鍵點的輸出會朝向其各自鄰近項的值正規化。這會產生更平坦的函式。

  • 黑塞矩陣正規化器:這會懲罰 PWL 校正層的一階導數,使函式更線性

  • 皺紋正規化器:這會懲罰 PWL 校正層的二階導數,以避免曲率突然變化。它使函式更平滑。

  • 扭力正規化器:格狀的輸出將會被正規化,以防止特徵之間產生扭力。換句話說,模型將被正規化,使其趨向於特徵貢獻之間的獨立性。

與其他 Keras 層混合搭配

您可以將 TF Lattice 層與其他 Keras 層結合使用,以建構部分受限或正規化的模型。例如,格狀或 PWL 校正層可以用於更深層網路的最後一層,其中包括嵌入或其他 Keras 層。

論文

教學課程和 API 文件

對於常見的模型架構,您可以使用 Keras 預製模型。您也可以使用 TF Lattice Keras 層建立自訂模型,或與其他 Keras 層混合搭配。查看完整 API 文件以瞭解詳情。