Kaggle比賽賽題案例:用深度學(xué)習(xí)模型尋找外星人
Kaggle比賽案例整理已經(jīng)成為了學(xué)姐公眾號(hào)的固定內(nèi)容了,所以大家如果打比賽找不到思路就來(lái)看看學(xué)姐整理的這些案例吧!能給你踏出比賽第一步一些方向。
賽題背景

“我們一個(gè)人在宇宙里嗎?”這是最深刻且長(zhǎng)期存在的人類(lèi)問(wèn)題之一。隨著技術(shù)的進(jìn)步,我們正在尋找新的和更強(qiáng)大的方法來(lái)尋求答案。加州大學(xué)伯克利大學(xué)使用世界上最強(qiáng)大的望遠(yuǎn)鏡對(duì)數(shù)百萬(wàn)顆恒星進(jìn)行技術(shù)掃描?,F(xiàn)在希望Kaggle社區(qū)能夠幫助解釋他們收到的信號(hào)。
加州大學(xué)伯克利分校的Breakthrough Listen 團(tuán)隊(duì)使用世界上最強(qiáng)大的望遠(yuǎn)鏡掃描數(shù)百萬(wàn)顆恒星以尋找技術(shù)跡象。
現(xiàn)在它希望Kaggle社區(qū)幫助解釋他們接收到的信號(hào)。Listen團(tuán)隊(duì)是外星智慧搜索(SETI) 的一部分,使用地球上最大的可操縱天線,即直徑100 米的綠岸望遠(yuǎn)鏡。與任何SETI搜索一樣,交流的動(dòng)機(jī)也是主要挑戰(zhàn)。
人類(lèi)已經(jīng)建造了大量的無(wú)線電設(shè)備。很難在現(xiàn)代技術(shù)的巨大檢測(cè)結(jié)果中尋找微弱的外星傳播針。當(dāng)前的方法使用兩個(gè)過(guò)濾器來(lái)搜索大海撈針。

首先,Listen團(tuán)隊(duì)將目標(biāo)恒星的掃描與天空其他區(qū)域的掃描穿插在一起。兩組掃描中出現(xiàn)的任何信號(hào)都可能不是來(lái)自目標(biāo)恒星的方向。其次,管道會(huì)丟棄不會(huì)改變其頻率的信號(hào),因?yàn)檫@意味著它們可能在望遠(yuǎn)鏡附近。
運(yùn)動(dòng)中的源應(yīng)該有一個(gè)暗示運(yùn)動(dòng)的信號(hào),類(lèi)似于路過(guò)的消防車(chē)警報(bào)器的音調(diào)變化。這兩個(gè)過(guò)濾器非常有效,但我們知道它們可以改進(jìn)。
管道無(wú)疑會(huì)錯(cuò)過(guò)有趣的信號(hào),尤其是那些具有復(fù)雜時(shí)間或頻率結(jié)構(gòu)的信號(hào),以及那些在有大量干擾的頻譜區(qū)域中的信號(hào)。在本次比賽中,利用您的數(shù)據(jù)科學(xué)技能幫助識(shí)別Breakthrough Listen 目標(biāo)掃描中的異常信號(hào)。
由于沒(méi)有確認(rèn)的用于訓(xùn)練機(jī)器學(xué)習(xí)算法的外星信號(hào)示例,該團(tuán)隊(duì)在來(lái)自望遠(yuǎn)鏡的海量數(shù)據(jù)中加入了一些模擬信號(hào)(他們稱之為“針”)。他們已經(jīng)確定了一些隱藏的針,以便您可以訓(xùn)練您的模型以找到更多。
數(shù)據(jù)由二維數(shù)組組成,因此可能存在有前景的計(jì)算機(jī)視覺(jué)方法,以及數(shù)字信號(hào)處理、異常檢測(cè)等。成功識(shí)別最多針的算法將贏得現(xiàn)金獎(jiǎng)勵(lì),但也有可能幫助回答科學(xué)中最大的問(wèn)題之一。
賽題任務(wù)
在這場(chǎng)比賽中,利用算法來(lái)識(shí)別異常的信號(hào)。數(shù)據(jù)由二維數(shù)組組成,因此計(jì)算機(jī)視覺(jué)中可能會(huì)有一些有前途的方法,可能涉及的知識(shí)包括數(shù)字信號(hào)處理,異常檢測(cè)等。
我們比賽的任務(wù)就是通過(guò)給定的頻譜圖預(yù)測(cè)對(duì)應(yīng)的標(biāo)簽:0或者1
數(shù)據(jù)分析
我們首先看下整體訓(xùn)練集中標(biāo)簽的分布:

從上圖可以看出這是一個(gè)非常不平衡的數(shù)據(jù)集,其中有插"針"(TARGET=1)的頻譜圖如下:

沒(méi)有插"針"(TARGET=0)的頻譜圖如下:

其實(shí)上面兩張范例肉眼可以大概分辨得出來(lái)TARGET0和TARGET1的差別。
EfficientNet模型
我們模型使用當(dāng)前算是sota的影像分類(lèi)模型EfficientNet。
論文:
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
鏈接:
https://arxiv.org/abs/1905.11946

EfficientNets是google brain的工程師 該模型的基礎(chǔ)網(wǎng)絡(luò)架構(gòu)是通過(guò)使用神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(neural architecture search簡(jiǎn)稱NAS)設(shè)計(jì)得到。這里就要講一下NAS技術(shù):

對(duì)于NAS這個(gè)task來(lái)說(shuō),其實(shí)最直覺(jué)的方法就是我不斷的從search space當(dāng)中取出不同的neural architecture,并且實(shí)際的訓(xùn)練之后來(lái)獲得真正的performance,借著不斷的重復(fù)這個(gè)動(dòng)作,當(dāng)我窮盡整個(gè)search space時(shí),我理所當(dāng)然的就可以得到這個(gè)search space當(dāng)中最好的那個(gè)neural architecture。
而也因?yàn)檫@個(gè)簡(jiǎn)單的概念,所以最早的卷積神經(jīng)網(wǎng)絡(luò)(ConvNets)通常是在固定的資源預(yù)算下發(fā)展起來(lái)的,如果有更多的資源可用的話,則會(huì)擴(kuò)大規(guī)模以獲得更好的精度,比如可以提高網(wǎng)絡(luò)深度(depth)、網(wǎng)絡(luò)寬度(width)和輸入圖像分辨(resolution)大小。但是通過(guò)人工去調(diào)整depth, width, resolution 的放大或縮小的很困難的,在計(jì)算量受限時(shí)有放大哪個(gè)縮小哪個(gè),這些都是很難去確定的,換句話說(shuō),這樣的組合空間太大,人力無(wú)法窮舉。
基于上述背景,該論文提出了一種新的模型縮放方法,它使用一個(gè)簡(jiǎn)單而高效的復(fù)合系數(shù)來(lái)從depth, width, resolution三個(gè)維度放大網(wǎng)絡(luò),不會(huì)像傳統(tǒng)的方法那樣任意縮放網(wǎng)絡(luò)的維度,基于神經(jīng)結(jié)構(gòu)搜索技術(shù)可以獲得最優(yōu)的一組參數(shù)(復(fù)合系數(shù))。從下圖可看出,EfficientNet不僅比別的網(wǎng)絡(luò)快很多,而且精度也更高。
我使用的是efficientnet_b0,可以在timm這個(gè)套件直接import:
https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/efficientnet.py
用tensorboard畫(huà)出來(lái)大概長(zhǎng)這樣:

Baseline代碼實(shí)踐
導(dǎo)入包
數(shù)據(jù)加載
我們這里定義一個(gè)數(shù)據(jù)加載的函數(shù),以便后去方便讀取數(shù)據(jù):
下面是自定義數(shù)據(jù)集對(duì)象:
分類(lèi)模型定義
定義一個(gè)基于efficientnet的分類(lèi)器:
模型訓(xùn)練
總結(jié)
這篇文章希望能夠幫助圖像新手入門(mén)分類(lèi)模型,我們主要學(xué)習(xí)當(dāng)前sota的影像分類(lèi)模型efficientnet,和優(yōu)化器,以及交叉驗(yàn)證等等,其中完整代碼包含MixUp,完整代碼關(guān)注公眾號(hào)回復(fù)“外星人”即可獲取。

https://www.kaggle.com/c/seti-breakthrough-listen/overview