TensorFlow Lattice:靈活、可控、可解釋的機器學習

  • 2020 年 8 月 24 日
  • AI

字幕組雙語原文:TensorFlow Lattice:靈活、可控、可解釋的機器學習

英語原文:TensorFlow Lattice: Flexible, controlled and interpretable ML

翻譯:雷鋒字幕組(ZeroJ)


大多數的機器學習實踐者都曾遇到過訓練數據和實際運行時用以評估模型的樣本差別很大的情況。因此,相對靈活的機器學習解決方案,如DNN和隨機森林等,僅依賴於訓練數據的模型,在訓練數據集和驗證數據集沒有覆蓋的輸入空間的表現經常出乎意料甚至是瘋狂的。這個問題在重要的政策和公平性約束條件可能被打破的案例下變得尤為嚴重。

沒有被約束的模型在只有很少的訓練樣本覆蓋的輸入空間中,可能表現得出乎意料。如圖所示,深度神經網路和梯度提升樹的預測結果和測試集的真實結果相去甚遠。 

即便通常情況下正則化能夠的到更穩妥的推斷結果,但標準的正則化工具並不能確保模型在所有的輸入空間里都表現的合理,特別是當輸入空間的維度很高時。切換到簡單、可控且行為可期的模型將以嚴重犧牲模型準確率作為代價。

TF Lattice使得在採用(高準確率)靈活模型的同時,通過一些選項,通過一些有語義意義的通識或是策略驅動的形狀限制,向學習過程注入領域知識成為可能。例如,你可以指定,模型的輸入相對於給定的輸入應該是單調遞增的。這些額外的領域知識可以幫助模型學習到訓練數據以外的知識,並且使得模型的行為對用戶來說是可期、可控的。

TensorFlow Lattice Librayy

TensorFlow Lattice 是一個類庫用來訓練有約束的、可解釋的基於柵格的模型。柵格是一個插值查詢表,可以用來近似數據中任意的輸入-輸出關係 。

上述例子是一個基於2個輸入特徵和4個參數的柵格函數,這4個參數是柵格函數在輸入空間4個頂角的函數值;其他函數值是通過這些參數得到的插值。你也可以採用更高維度的柵格或者更細粒度網格參數來的到更靈活的函數。該類庫利用Keras層對象tfl.layers.Lattice實現柵上述柵格。TensorFlow 柵格也提供了分段線性函數(tfl.layers.PWLCalibration Keras 層)來校準和規範化輸入的特徵到柵格函數可接受的輸入範圍:上述柵格例子是0到1。

針對分類的特徵,TensorFlow柵格提供了分類類型的校準,得到類似的輸出邊界,以便於輸入到柵格中。結合上述的校準器和柵格,我們將得到校準後的柵格模型。

TensorFlow Lattice層提供了許多類型的約束,可以被用來向模型的訓練過程注入領域知識:

  • 單調性:你可以指定模型輸出應該性對輸入是單調遞增或遞減的。在我們的案例里,你也許想要限制模型在預測用戶對咖啡店的喜好程度時相對距離是單調遞減的,也就是距離越遠用戶對咖啡店的喜好程度越低。


  • 凸性和凹性:你可以指定函數的形狀是凸的還是凹的。結合單調性,限制凸性和凹性能夠強制函數刻畫一些特性,如相對給定的特徵收益遞減。

  • 單峰性:你可以指定函數是單峰的或是單谷的。這可以讓你得到相對某個特性具有預期的最佳識別點的函數。

  • 成對正向印證: 這個限制表明一個輸入特徵,在語義上提高了另一個特徵更確信程度。例如,具有較高的評論次數的餐廳,將更有信心能得到較高的平均星級評分。但評論數量較大時,模型將對星級評分更加敏感(如相對評分和評論數有更大的斜率)

  • 成對優勢: 這個約束表明模型應該將某個特徵視為更為重要的特徵(相比於給定的另一個)。該特性通過確保函數在支配特徵上的斜率更大來實現。

除了形狀約束之外,TensorFlow lattice 提供了一系列正則器來控制函數在每個特徵上的靈活性和平滑性。這包括拉普拉斯正則化(更平坦的函數),海森正則化(更加線性校準的函數),褶皺正則化(更加平滑的校準函數)以及扭曲正則化(更加成對線性的柵格函數)。

案例:參觀排序

這個案例來自我們端到端的函數形狀約束教程,該教程涉及許多包含上面提到的約束條件的估計器,開箱即用。假設我們的場景是確定用戶是否會點擊某個餐館搜索中得到的結果。這是一個點擊率預估任務(CTR),給定特徵包括:

  • 平均評分:一個數值特徵,取值從1到5

  • 評論數量:一個數值特徵,取值從0到200

  • 階梯評分: 分類特徵,取值從「$」到「$$$$」,數據表示為0 to 3 缺失值為-1

我們有如下領域知識來限制或空值我們模型的行為:

  • 模型的輸出相對於平均評分是單調遞增的

  • 模型的輸出相對評論數是單調低遞增的,但邊際收益遞減

  • 但有較高的評論數是,模型應該確信平均評分會比較高

  • 相比於「$」 的餐館,用戶通常傾向於「$$」的餐館

我們可以利用TensorFlow Lattice提供的Keras層來創建一個校準的柵格模型。

model = tf.keras.models.Sequential()model.add(
   tfl.layers.ParallelCombination([
       # Feature: average rating       tfl.layers.PWLCalibration(
           # Input keypoints for the piecewise linear function           input_keypoints=np.linspace(1., 5., num=20),
           # Output is monotonically increasing in this feature           monotonicity='increasing',
           # This layer is feeding into a lattice with 2 vertices           output_min=0.0,
           output_max=1.0),
       # Feature: number of reviews       tfl.layers.PWLCalibration(
           input_keypoints=np.linspace(0., 200., num=20),
           # Output is monotonically increasing in this feature           monotonicity='increasing',
           # There is diminishing returns on the number of reviews           convexity='concave',
           # Regularizers defined as a tuple ('name', l1, l2)           kernel_regularizer=('wrinkle', 0.0, 1.0),
           # This layer is feeding into a lattice with 3 vertices           output_min=0.0,
           output_max=2.0),
       # Feature: dollar rating       tfl.layers.CategoricalCalibration(
           # 4 rating categories + 1 missing category           num_buckets=5,
           default_input_value=-1,
           # Partial monotonicity: calib(0) <= calib(1)           monotonicities=[(0, 1)],
           # This layer is feeding into a lattice with 2 vertices           output_min=0.0,
           output_max=1.0),
   ]))model.add(
   tfl.layers.Lattice(
       # A 2x3x2 grid lattice       lattice_size=[2, 3, 2],
       # Output is monotonic in all inputs       monotonicities=['increasing', 'increasing', 'increasing']
       # Trust: more responsive to input 0 if input 1 increases       edgeworth_trusts=(0, 1, 'positive')))model.compile(...)

上述柵格使得訓練得到的模型滿足所有給定的約束,並且額外添加的正則化使得模型更加平滑:

我們也可以通過工具包提供的開箱即用的估計器來構建上述模型。請查閱我們的形狀控制端到端colab教程,來獲得更詳細的資訊,該教程還描述了上述約束條件所起到的作用和效果。TF Lattice Keras層可以和其他Keras層一起使用來創建部分約束或正則化的模型。例如,柵格或PWL校準層可以被用在引用了其他嵌入和Keras層的深度神經網路的最後一層。請參與Tensorflow Lattice網站獲得更多的相關資訊。那裡有許多教程能夠幫助你上手,如形狀約束、集成估計器、訂製化估計器、Keras層等等。同時開可以觀看我們在TF開發者大會的影片了解更多。(//youtu.be/ABBnNjbjv2Q)


雷鋒字幕組是一個由 AI 愛好者組成的翻譯團隊,匯聚五百多位志願者的力量,分享最新的海外AI資訊,交流關於人工智慧技術領域的行業變革與技術創新的見解。

團隊成員有大數據專家、演算法工程師、影像處理工程師、產品經理、產品運營、IT諮詢人、在校師生;志願者們來自IBM、AVL、Adobe、阿里、百度等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。

如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學習新知,分享成長。

雷鋒網雷鋒網

Tags: