年輕人的第一塊金牌:我是如何成為 Kaggle 全網(wǎng)第一的
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
能在 Kaggle 競賽中取得金牌已經(jīng)是一項挑戰(zhàn)了,而成為 Kernel Grandmaster 甚至是可遇不可求。而近日,畢業(yè)于莫斯科國立大學(xué)的數(shù)據(jù)科學(xué)家Andrey Lukyanenko在一次競賽中達(dá)成Kaggle金牌,并在Kernel Grandmaster排名全網(wǎng)第一。本文是他的心路歷程。
參加Kaggle競賽對于任何人來說都是一項嚴(yán)峻的挑戰(zhàn)。你需要花費大量時間和精力來學(xué)習(xí)新知識、嘗試新技巧,努力獲得高分。但這些往往還是不夠,因為你的競爭對手可能擁有更多經(jīng)驗、更多空閑時間、更多硬件甚至其他莫名其妙的優(yōu)勢。

雖然剛剛在競賽中拿下第一塊金牌,但Lukyanenko已經(jīng)在Kernel上排名第一了。以前,我能在一些競賽中獲得銀牌,有時歸功于運氣,有時得益于自己做了大量工作。但盡管我花費了大量時間,還是只能在很多競賽中獲得銅牌(甚至一無所獲)。

在此次競賽中,選手們試圖預(yù)測一個分子中兩個原子之間的磁相互作用(標(biāo)量耦合常數(shù))。當(dāng)前量子力學(xué)最先進(jìn)的方法可以計算這些耦合常數(shù),并且只需要一個3D分子結(jié)構(gòu)作為輸入即可。但這些計算會耗費大量資源,所以不常使用。
因此,如果機(jī)器學(xué)習(xí)方法可以預(yù)測這些值,則能夠真正地幫助藥物化學(xué)家洞見分子結(jié)構(gòu),并且速度更快、成本也更低。

在最初的嘗試中,我也使用了LGB,但知道還有更好的方法來處理圖。這種挑戰(zhàn)令我著迷,所以決定認(rèn)真參與到競爭之中。

這次,該方法在leaderboard上取得了相當(dāng)好的得分,我也得以保持白銀段位。
此外,追蹤當(dāng)前一些最新的Kaggle Kernels和論壇觀點也非常重要。
其中真正幫到我的是論壇和Kaggle Kernels。從競賽開始直至結(jié)束,我瀏覽了所有的Kernels和論壇帖子,這其中包含很多不容錯過的有用信息。即使是一些不太流行的Kernels也會包含有趣的新功能。論壇帖子里會有其他人的一些觀點,這也有助于提高競賽分?jǐn)?shù)。
有一天,我收到了Boris的一封郵件,他是這一領(lǐng)域的專家,認(rèn)為我們的技能可以實現(xiàn)互補(bǔ)。通常來說,我喜歡在比賽中單打獨斗,但這一次,團(tuán)隊合作似乎是更好的選擇。事實證明的確如此。
幸運的是,Psilogram加入了我們的團(tuán)隊。沒過多久,他的模型就表現(xiàn)出了優(yōu)于我們模型的性能。另一名成員Bojan幫助我們進(jìn)一步改進(jìn)了結(jié)果。他們都是很棒的機(jī)器學(xué)習(xí)專家。


我們讓Christof加入我們的團(tuán)隊,他能很快構(gòu)建出一個新的神經(jīng)網(wǎng)絡(luò)。因此,我們停止訓(xùn)練LGB,因為LGB遠(yuǎn)遠(yuǎn)比不上Christof構(gòu)建的神經(jīng)網(wǎng)絡(luò)。

我看了很多關(guān)于神經(jīng)網(wǎng)絡(luò)架構(gòu)的論文,包括EAGCN、3DGNN等;
我嘗試了不同的損失函數(shù),如Huber。我甚至找到了一篇用于回歸的焦點損失函數(shù)論文,但實現(xiàn)起來并不可行;
當(dāng)然,我還嘗試了RAdam、Ranger等新的熱門優(yōu)化器,但簡單的Adam在此次競賽中更加好用。
但最后,還是Christof實現(xiàn)了架構(gòu),這給我留下了非常深刻的印象,也令我頗受啟發(fā)。

好的硬件對于訓(xùn)練這些神經(jīng)網(wǎng)絡(luò)來說非常重要。我們用到了很多硬件,但我們也經(jīng)常用kaggle kernels:你可以用P100以相同的時間在4個kaggle kernels中訓(xùn)練模型,所以即使沒有額外的硬件,我們也可以拿到金牌。

值得一提的是,我們的團(tuán)隊可以獲得比-3 Imae更好的分?jǐn)?shù)(平均所有類型的絕對值誤差對數(shù))。在這個帖子中,樓主表示達(dá)到-3是一個驚人的成就:https://www.kaggle.com/c/champs-scalar-coupling/discussion/98375#569312
事實上,我們做到了!
瀏覽Kernel和論壇,其中會提供大量有用的信息;
準(zhǔn)備好屢敗屢戰(zhàn)。當(dāng)你試圖找到一種可以提高分?jǐn)?shù)的方法時,大多數(shù)是行不通的,但不要氣餒;
不斷尋找新的想法、新的論文和核心的文章。你永遠(yuǎn)不會知道下一個神奇工具會從哪里出現(xiàn);
在團(tuán)隊內(nèi)構(gòu)建一個驗證效果的機(jī)制,從而令工作結(jié)果更加直觀;
一個強(qiáng)大的團(tuán)隊是由很多不同特長的人組成的,我們應(yīng)該涵蓋不同領(lǐng)域;
Kaggle比賽非常具有挑戰(zhàn)性,當(dāng)然在這個過程中我們也可以收獲諸多樂趣:)
我很幸運可以和這些了不起的人一同工作,感謝他們!
原文鏈接:https://towardsdatascience.com/a-story-of-my-first-gold-medal-in-one-kaggle-competition-things-done-and-lessons-learned-c269d9c233d1
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

