博客專欄

EEPW首頁 > 博客 > 機器學習里的bias的一些處理方法和思考

機器學習里的bias的一些處理方法和思考

發(fā)布人:數(shù)據(jù)派THU 時間:2021-09-19 來源:工程師 發(fā)布文章

來源:深度學習愛好者

機器學習的bias對性能影響很大,常常會使一個線下優(yōu)秀的模型線上落不了地,或者鬧出新聞里的笑話。在機器學習競賽或數(shù)據(jù)集里,很多時候?qū)ias的處理在test上帶來的提升可能比模型提升還要多。以下寫寫我這些年遇到的一些機器學習里的bias的一些處理方法。

Santander Product Recommendation

https://www.kaggle.com/c/santander-product-recommendation/

關(guān)鍵詞:Less is More

這個數(shù)據(jù)集提供****用戶2015年1月到2016年5月的產(chǎn)品購買數(shù)據(jù),要求預測用戶2016年6月購買什么產(chǎn)品。按照通常的觀點,訓練數(shù)據(jù)都是多多益善的。但是BreakfastPirate 在 When Less is More 里提出,因為每年6月份是****的結(jié)算日,此時的用戶行為和平時不一樣的。只使用2015年6月一個月的數(shù)據(jù),效果要比使用17個月的數(shù)據(jù)效果要好。

這個例子說明當train 和test 存在bias的時候 ,只使用train里那部分和test相似的數(shù)據(jù)可能效果更好。

Freesound Audio Tagging 2019

https://www.kaggle.com/c/freesound-audio-tagging-2019

關(guān)鍵詞:warm up

訓練集是由4970個人工標注的curated音頻片段和19815個機器標注的noisy音頻片段組成,而test和人工標注的的訓練集同源,但是如果只用4970個數(shù)據(jù)顯然太少了,但深度學習的好處就是可以遷移學習,所以可以用noisy數(shù)據(jù)做warm up訓練,最后再用curated數(shù)據(jù)在warm up后的預訓練模型上繼續(xù)訓練。在lwlrap這個metric可以比只用curated訓練提升一個百分點。

這個例子說明深度學習通過warm up,遷移學習可以一定程度利用那些和test存在bias的數(shù)據(jù)

樹模型也有類似利用存在bias數(shù)據(jù)的技巧,見嫁接學習:

https://zhuanlan.zhihu.com/p/98728768

Toxic Comment Classification Challenge

https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge

關(guān)鍵詞:pseudo label

這個數(shù)據(jù)由于發(fā)生了test泄露,因此中途增加了后續(xù)標注的新test數(shù)據(jù)。由于數(shù)據(jù)的數(shù)據(jù)源和標注的人不一樣,所以舊的train數(shù)據(jù)和新的test存在bias。一個解決方法就是用train訓練的模型給新test打標簽,然后把置信度高的test加入train里訓練。AUC從0.9880 提升到了 0.9885。

無論數(shù)據(jù)是否有bias,一般pseudo label都能漲分,但在訓練集和測試機分布不完全一致的時候,將test通pseudo label過加入訓練,效果會更加顯著。

Bengali.AI Handwritten Grapheme Classification

https://www.kaggle.com/c/bengaliai-cv19/

關(guān)鍵詞:CycleGan

這個數(shù)據(jù)任務多任務分類,需要對每一個手寫字符分別對grapheme root (共168類)、vowel diacritics (共11類)、consonant diacritics (共7類)進行分類, 但是數(shù)據(jù)制作者故意在分類的時候產(chǎn)生bias,本來label應該有168×11×7共12936種組合,但是訓練集只提供其中的一部分label組合樣本,這就導致訓練的模型會認為剩下的組合不存在而預測不出來,而test里實際上是有的。在冠軍solution Cyclegan Based Zero Shot Learning 里,使用CycleGan把12936種組合對應的樣本全部生成了出來,將這些GAN生成的樣本用于訓練,就可以把原本train里unseen的數(shù)據(jù)給預測出來了。

Twitter RecSys Challenge 2020

https://recsys-twitter.com/

關(guān)鍵詞:adversarial validation

這是一個關(guān)于推特推薦的比賽, 在官方的賽后總結(jié) What Twitter learned from the Recsys 2020 Challenge 可以看到,由于train和test是按照time split的,存在一定的不同,第一名Nvidia 團隊使用adversarial validation 選擇更具通用性的特征來防止過度擬合。即通過將訓練集和測試集分別打上不同的標簽然后進行訓練,通過輸出的特征重要性篩選特征。

類似的技巧也可見于 LANL Earthquake Prediction ,這里1st place solution 使用KS統(tǒng)計篩選相似的特征提高泛化能力。

adversarial validation 不僅可用于篩選特征,也可以篩選樣本。通過分類器得到和test最相近的樣本用于訓練和驗證。當我們無法直接通過業(yè)務經(jīng)驗或者出題者的數(shù)據(jù)說明知道train里哪些樣本和test分布相似,就可以用adversarial validation.

Sberbank Russian Housing Market

https://www.kaggle.com/c/sberbank-russian-housing-market

關(guān)鍵詞: magic number

這個題用2011年8月到2015年6月的莫斯科房價數(shù)據(jù)來預測 2015年7月到2016年5月的房價,而由于眾所周知的原因,貨幣盧布在那幾年發(fā)生了通貨膨脹,導致test的房價數(shù)據(jù)要高于train的數(shù)據(jù),因此所有的方案都在模型結(jié)果后處理乘了一個放大系數(shù),在test上可以帶來顯著的提升,大家稱之為magic number。雖然這種人工后處理的方式很不機器學習。但這就是real world. 最后出題方 Sberbank 的 Data Science Lead 也在Question to admins about rules 認可了這種后處理方法。

事實上,后處理也在大量的由時間導致的bias類數(shù)據(jù)被使用。除了乘系數(shù),還有在分類里調(diào)閾值等等。

后處理或人工規(guī)則遇到外行評審

關(guān)鍵詞: outlier

因為機器學習不能完全解決bias,所以上一段提到乘系數(shù),調(diào)閾值,或者人工規(guī)則在內(nèi)行人里是被認可的,但如果遇到外行評審,他會認為你不是用機器學習,從而否定你的方案。這時候可能就要包裝自己方案,比如直接乘一個放大系數(shù)不行,那我們就可以把train里面一些label偏低的樣本作為outlier舍棄掉或降低weight,一樣能起到放大模型輸出的效果,這樣就能忽悠評審了。其他規(guī)則方法也可以用類似調(diào)整train樣本方法來把規(guī)則手法掩蓋起來。

iMet Collection 2019 - FGVC6

https://www.kaggle.com/c/imet-2019-fgvc6

關(guān)鍵詞: 把test放到train里訓練

知乎經(jīng)??吹接腥苏f某些論文就是靠把test放到train里訓練來達到SOTA的,這個也發(fā)生在kaggle競賽里。在這個數(shù)據(jù)里是對博物館的文物圖片進行分類,由于比賽的形式是提交訓練完的模型在線上做inference,所以出題者也沒想到有人能作弊,但是俄羅斯x5公司的幾個參賽者硬是通過爬蟲爬取博物館網(wǎng)站以及谷歌識圖把部分test圖片給標注了,然后把這些標注的test數(shù)據(jù)用于訓練模型,把模型交上去用于欺騙組織者。由于這只是個CVPR的workshop,沒人上心,只檢查他們的model inference結(jié)果,居然就讓他們騙了過去.

PetFinder.my Adoption Prediction

https://www.kaggle.com/c/petfinder-adoption-prediction

關(guān)鍵詞: hashed ID

后來這幫人看沒受到懲罰,變本加厲,在多模態(tài)數(shù)據(jù)競賽PetFinder.my Adoption Prediction 里又一次去爬數(shù)據(jù),可能由于這次是多模態(tài)數(shù)據(jù)而不是圖像,含有寵物貓狗的表格信息,文字,圖像,比較復雜,想把爬出的數(shù)據(jù)做成和train一樣格式丟進去訓練不方便.作弊者于是將這些數(shù)據(jù)和label進行編碼,混淆hash到一個ID字段中,并該ID字段偽裝成來自外部"cute-cats-and-dogs-from-pixabaycom" dataset,在處理數(shù)據(jù)時,對這些哈希ID進行解碼,并匹配test的樣本得到label.萬萬沒想到,這個比賽的出題公司想把獲勝方案部署上線,于是檢查代碼的時候發(fā)現(xiàn)了作弊情況.最后作弊者被永封,并丟掉了H20.ai的工作。

雖然最后這兩個例子里的數(shù)據(jù)和bias無關(guān),但是顯然這個"技巧"顯然可以解決bias,定向過擬合test。

小結(jié)

上面所有的歸納到一起就是,雖然機器模型變得越來越復雜,不能像過去那樣對LR模型那樣直接修改權(quán)重去擬合test的bias,但是對ai這個黑盒子,我們還是可以:

1.有選擇的控制黑盒子的輸入,根據(jù)test bias的分布,我們想得到什么,我們就輸入什么,畢竟現(xiàn)在的模型記憶力很強。

2.有選擇的修改黑盒子的輸出,根據(jù)test bias的分布,我們想得到什么,我們就修改什么,然后封裝起來好像就是模型輸出的一樣。

小結(jié)2

有人說,隨著ai技術(shù)的成長,數(shù)據(jù)的增加,就可以逐步解決bias,我認為ai方法只要還是基于數(shù)據(jù)訓練那一套,bias就永遠不可能消除。

從上面舉得例子我們可以看到,機器學習的bias方向完全是可以人為控制的,比方說:用虎撲步行街的語料訓練出來的模型肯定和豆瓣小組訓練出來的不一樣;復雜的模型背后可能藏著無數(shù)條規(guī)則,當滿足某種條件下就會輸出人為指定的結(jié)果,就像前面提到作弊者直接hash id指定test label一樣,不懷好意的人也可以把自己的目的藏在復雜的系統(tǒng)里。

我們平時遇到的搜索和推薦結(jié)果背后也充滿了資本的力量帶來的bias,商品搜索推薦給用戶的不一定是最適合用戶的,而是能給資本帶來最大效益的,信息搜索推薦帶來的也不一定是讀者想看到的,而是資本想讓讀者看到的,想引導讀者思考的。最典型的就是Google 真的在美國幫希拉里屏蔽不利信息嗎? 這個例子了,什么信息繭房簡直就是笑話,只有資本給你搭的繭房。

機器學習有bias不可怕,可怕的使用者心中有bias。

試想一下,有一天35歲勤勤懇懇工作的打工人被HR用AI模型裁掉了,而導致AI更容易預測大齡打工人創(chuàng)效低的原因是35歲以上當偷奸?;习淄玫慕y(tǒng)計學幾率比剛畢業(yè)的小白兔大。而更可怕的是老板和HR故意在模型訓練增加了35歲打工人的負面樣本和權(quán)重來確保達到自己的目的.然后把這個結(jié)果全部推脫給AI,而打工人只能看到輸出的結(jié)果卻看不到模型的細節(jié)。

那有人說說不允許把年齡作為輸入條件加入模型里不就行了嗎?答:并沒用。大數(shù)據(jù)時代,很多數(shù)據(jù)暗含用戶年齡信息,比如手機上安裝的app(參看2020 騰訊廣告算法大賽)。

由于AI存在種種的bias會被濫用情況,所以我認為一方面AI的使用必須透明,另一方面應該限制被隨意使用在人身上,及和人交互上。我們要警惕和反對亞馬遜利用算法自動解雇無效率的倉庫工人,上海某小學通過 AI 圖像識別學生上課開小差并對學生進行評分這種AI落地。

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: 機器學習

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉