0
本文作者: AI研習(xí)社-譯站 | 2020-08-24 15:14 |
字幕組雙語原文:TensorFlow Lattice:靈活、可控、可解釋的機(jī)器學(xué)習(xí)
英語原文:TensorFlow Lattice: Flexible, controlled and interpretable ML
翻譯:雷鋒字幕組(ZeroJ)
大多數(shù)的機(jī)器學(xué)習(xí)實(shí)踐者都曾遇到過訓(xùn)練數(shù)據(jù)和實(shí)際運(yùn)行時用以評估模型的樣本差別很大的情況。因此,相對靈活的機(jī)器學(xué)習(xí)解決方案,如DNN和隨機(jī)森林等,僅依賴于訓(xùn)練數(shù)據(jù)的模型,在訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集沒有覆蓋的輸入空間的表現(xiàn)經(jīng)常出乎意料甚至是瘋狂的。這個問題在重要的政策和公平性約束條件可能被打破的案例下變得尤為嚴(yán)重。
沒有被約束的模型在只有很少的訓(xùn)練樣本覆蓋的輸入空間中,可能表現(xiàn)得出乎意料。如圖所示,深度神經(jīng)網(wǎng)絡(luò)和梯度提升樹的預(yù)測結(jié)果和測試集的真實(shí)結(jié)果相去甚遠(yuǎn)。
即便通常情況下正則化能夠的到更穩(wěn)妥的推斷結(jié)果,但標(biāo)準(zhǔn)的正則化工具并不能確保模型在所有的輸入空間里都表現(xiàn)的合理,特別是當(dāng)輸入空間的維度很高時。切換到簡單、可控且行為可期的模型將以嚴(yán)重犧牲模型準(zhǔn)確率作為代價。
TF Lattice使得在采用(高準(zhǔn)確率)靈活模型的同時,通過一些選項(xiàng),通過一些有語義意義的通識或是策略驅(qū)動的形狀限制,向?qū)W習(xí)過程注入領(lǐng)域知識成為可能。例如,你可以指定,模型的輸入相對于給定的輸入應(yīng)該是單調(diào)遞增的。這些額外的領(lǐng)域知識可以幫助模型學(xué)習(xí)到訓(xùn)練數(shù)據(jù)以外的知識,并且使得模型的行為對用戶來說是可期、可控的。
TensorFlow Lattice 是一個類庫用來訓(xùn)練有約束的、可解釋的基于柵格的模型。柵格是一個插值查詢表,可以用來近似數(shù)據(jù)中任意的輸入-輸出關(guān)系 。
上述例子是一個基于2個輸入特征和4個參數(shù)的柵格函數(shù),這4個參數(shù)是柵格函數(shù)在輸入空間4個頂角的函數(shù)值;其他函數(shù)值是通過這些參數(shù)得到的插值。你也可以采用更高維度的柵格或者更細(xì)粒度網(wǎng)格參數(shù)來的到更靈活的函數(shù)。該類庫利用Keras層對象tfl.layers.Lattice實(shí)現(xiàn)柵上述柵格。TensorFlow 柵格也提供了分段線性函數(shù)(tfl.layers.PWLCalibration Keras 層)來校準(zhǔn)和規(guī)范化輸入的特征到柵格函數(shù)可接受的輸入范圍:上述柵格例子是0到1。
針對分類的特征,TensorFlow柵格提供了分類類型的校準(zhǔn),得到類似的輸出邊界,以便于輸入到柵格中。結(jié)合上述的校準(zhǔn)器和柵格,我們將得到校準(zhǔn)后的柵格模型。
TensorFlow Lattice層提供了許多類型的約束,可以被用來向模型的訓(xùn)練過程注入領(lǐng)域知識:
單調(diào)性:你可以指定模型輸出應(yīng)該性對輸入是單調(diào)遞增或遞減的。在我們的案例里,你也許想要限制模型在預(yù)測用戶對咖啡店的喜好程度時相對距離是單調(diào)遞減的,也就是距離越遠(yuǎn)用戶對咖啡店的喜好程度越低。
凸性和凹性:你可以指定函數(shù)的形狀是凸的還是凹的。結(jié)合單調(diào)性,限制凸性和凹性能夠強(qiáng)制函數(shù)刻畫一些特性,如相對給定的特征收益遞減。
單峰性:你可以指定函數(shù)是單峰的或是單谷的。這可以讓你得到相對某個特性具有預(yù)期的最佳識別點(diǎn)的函數(shù)。
成對正向印證: 這個限制表明一個輸入特征,在語義上提高了另一個特征更確信程度。例如,具有較高的評論次數(shù)的餐廳,將更有信心能得到較高的平均星級評分。但評論數(shù)量較大時,模型將對星級評分更加敏感(如相對評分和評論數(shù)有更大的斜率)
成對優(yōu)勢: 這個約束表明模型應(yīng)該將某個特征視為更為重要的特征(相比于給定的另一個)。該特性通過確保函數(shù)在支配特征上的斜率更大來實(shí)現(xiàn)。
除了形狀約束之外,TensorFlow lattice 提供了一系列正則器來控制函數(shù)在每個特征上的靈活性和平滑性。這包括拉普拉斯正則化(更平坦的函數(shù)),海森正則化(更加線性校準(zhǔn)的函數(shù)),褶皺正則化(更加平滑的校準(zhǔn)函數(shù))以及扭曲正則化(更加成對線性的柵格函數(shù))。
這個案例來自我們端到端的函數(shù)形狀約束教程,該教程涉及許多包含上面提到的約束條件的估計器,開箱即用。假設(shè)我們的場景是確定用戶是否會點(diǎn)擊某個餐館搜索中得到的結(jié)果。這是一個點(diǎn)擊率預(yù)估任務(wù)(CTR),給定特征包括:
平均評分:一個數(shù)值特征,取值從1到5
評論數(shù)量:一個數(shù)值特征,取值從0到200
階梯評分: 分類特征,取值從“$”到“$$$$”,數(shù)據(jù)表示為0 to 3 缺失值為-1
我們有如下領(lǐng)域知識來限制或空值我們模型的行為:
模型的輸出相對于平均評分是單調(diào)遞增的
模型的輸出相對評論數(shù)是單調(diào)低遞增的,但邊際收益遞減
但有較高的評論數(shù)是,模型應(yīng)該確信平均評分會比較高
相比于“$” 的餐館,用戶通常傾向于“$$”的餐館
我們可以利用TensorFlow Lattice提供的Keras層來創(chuàng)建一個校準(zhǔn)的柵格模型。
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(...) |
上述柵格使得訓(xùn)練得到的模型滿足所有給定的約束,并且額外添加的正則化使得模型更加平滑:
我們也可以通過工具包提供的開箱即用的估計器來構(gòu)建上述模型。請查閱我們的形狀控制端到端colab教程,來獲得更詳細(xì)的信息,該教程還描述了上述約束條件所起到的作用和效果。TF Lattice Keras層可以和其他Keras層一起使用來創(chuàng)建部分約束或正則化的模型。例如,柵格或PWL校準(zhǔn)層可以被用在引用了其他嵌入和Keras層的深度神經(jīng)網(wǎng)絡(luò)的最后一層。請參與Tensorflow Lattice網(wǎng)站獲得更多的相關(guān)信息。那里有許多教程能夠幫助你上手,如形狀約束、集成估計器、定制化估計器、Keras層等等。同時開可以觀看我們在TF開發(fā)者大會的視頻了解更多。(https://youtu.be/ABBnNjbjv2Q)
雷鋒字幕組是一個由 AI 愛好者組成的翻譯團(tuán)隊(duì),匯聚五百多位志愿者的力量,分享最新的海外AI資訊,交流關(guān)于人工智能技術(shù)領(lǐng)域的行業(yè)變革與技術(shù)創(chuàng)新的見解。
團(tuán)隊(duì)成員有大數(shù)據(jù)專家、算法工程師、圖像處理工程師、產(chǎn)品經(jīng)理、產(chǎn)品運(yùn)營、IT咨詢?nèi)恕⒃谛熒?;志愿者們來自IBM、AVL、Adobe、阿里、百度等知名企業(yè),北大、清華、港大、中科院、南卡羅萊納大學(xué)、早稻田大學(xué)等海內(nèi)外高校研究所。
如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學(xué)習(xí)新知,分享成長。
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。