谷歌呼吸機(jī)壓力預(yù)測(cè)比賽
參考:
數(shù)據(jù)探索
特征解釋u_in和pressure
特征解釋R和C
金牌方案總結(jié)
#1方案 LSTM + PID
#2方案 Inverse of a PID
安全嗎?
數(shù)據(jù)集和任務(wù)
訓(xùn)練數(shù)據(jù)集包括600多萬(wàn)次記錄,
一共是七萬(wàn)多次呼吸過(guò)程勾怒,每次呼吸都是80次記錄棒口。
特征中,R(Resistance)智绸,C(Capacitance)兩個(gè)是和肺部相關(guān)的數(shù)值特征,分別只有3個(gè)和2個(gè)取值昵观,代表肺部的狹窄程度和肺部的可伸縮性蜂奸。而u_in 代表了控制的空氣輸入量,u_out(0或1)代表吸氣還是呼氣過(guò)程嚷节,預(yù)測(cè)的目標(biāo)是壓力聂儒。
每次呼吸的time step從0開始丹喻,間隔上有很小的區(qū)別薄货,持續(xù)兩秒多的時(shí)間。對(duì)于一次呼吸來(lái)說(shuō)(肺部特征一定)碍论,pressure取決于所有過(guò)去的u_in谅猾,而u_in取決于過(guò)去以及當(dāng)下的pressure。
值得注意的是敬矩,壓力值只存在950個(gè)離散值, 所以后續(xù)處理除了取Median or mean以外概行,還可以取最近的這950個(gè)可能的值,稍微提升模型表現(xiàn)弧岳。 另外估計(jì)某個(gè)時(shí)間點(diǎn)的壓力值時(shí)凳忙,可以使用這個(gè)點(diǎn)之后也就是未來(lái)的u_in特征。這看起來(lái)似乎不合理禽炬,原因是這里搭建的模型涧卵,是用來(lái)模擬真實(shí)場(chǎng)景,服務(wù)于研究人員設(shè)計(jì)新的呼吸機(jī)控制器腹尖。所以不一定要能夠在呼吸過(guò)程中預(yù)測(cè)出壓力柳恐。
金牌方案
首先大部分團(tuán)隊(duì)選擇作為回歸任務(wù)來(lái)處理,不過(guò)也有把他當(dāng)成分類任務(wù)(950個(gè)離散值)乐设,而取得很好的成績(jī)的。
神經(jīng)網(wǎng)絡(luò)模型全勝 ~ 高分方案中完全沒有樹模型的身影绎巨。畢竟特征比較少(NN可以自己提取特征)近尚,而數(shù)據(jù)集又足夠大认烁。其中大部分使用的是LSTM模型(4到5層)肿男,框架和平臺(tái)以Tensorflow和TPU為主。使用pytorch訓(xùn)練的時(shí)間則要更長(zhǎng)一些却嗡,而且同樣的模型舶沛,用pytorch訓(xùn)練卻達(dá)不到Tensorflow的效果,這可能是兩個(gè)框架初始化的方法不一樣窗价,于是@junkoda在pytorch中復(fù)現(xiàn)了Tensorflow的初始化方法如庭,成功縮小了差距。另外撼港,訓(xùn)練時(shí)長(zhǎng)似乎在這場(chǎng)比賽中很關(guān)鍵坪它,冠軍團(tuán)隊(duì)訓(xùn)練了整整2500個(gè)epoch。
這里順便插播一篇挺有意思的論文,描述了Grokking現(xiàn)象帝牡,簡(jiǎn)單來(lái)說(shuō)就是復(fù)雜的模型雖然可能會(huì)難以訓(xùn)練成功往毡,但是當(dāng)過(guò)擬合發(fā)生后,如果訓(xùn)練時(shí)間足夠長(zhǎng)的話靶溜,卻能夠在某個(gè)時(shí)間點(diǎn)忽然開竅开瞭,成功泛化懒震。這有點(diǎn)像雙下降現(xiàn)象, 不過(guò)雙下降是對(duì)于參數(shù)量而言的,也許兩者之間有緊密的練習(xí)嗤详。有趣的是个扰,作者說(shuō)這篇論文的起因是同事忘記關(guān)電腦度假去了。無(wú)論如何葱色,以后可以試試不使用earlystop递宅,看看會(huì)不會(huì)有奇跡發(fā)生。
另外苍狰,UnderPressure團(tuán)隊(duì)使用了Transformer办龄,把時(shí)間步長(zhǎng)當(dāng)作特征,因此也不需要位置編碼舞痰。
還有讓我覺得很驚艷的是土榴,頭幾名中大部分團(tuán)隊(duì)都用到一個(gè)技巧诀姚。
那就是他們找到了主辦方團(tuán)隊(duì)的論文响牛,比賽用的數(shù)據(jù)集其實(shí)是用結(jié)合神經(jīng)網(wǎng)絡(luò)和PID控制的呼吸機(jī)采集的。所以赫段,他們就想辦法把這個(gè)PID控制器的參數(shù)給破解了呀打,冠軍團(tuán)隊(duì)甚至連添加的噪聲都找到了,靠這個(gè)后處理方法他們完美匹配了66%的預(yù)測(cè)糯笙。
特征
特征包括以下三類以及他們的混合:
- 原始特征 :
冠軍團(tuán)隊(duì)僅使用了原始特征和LSTM就取得了很好的效果贬丛。 - 手工生成的特征
- Conv1D生成的特征。
auxiliary-loss
似乎對(duì)模型提升有很大幫助给涕,大部分高分團(tuán)隊(duì)都使用了壓力(目標(biāo)p_i)或者其差值(比如p_i - p_i-1)作為輔助損失豺憔,也有一支隊(duì)伍使用的過(guò)去壓力之和。
預(yù)處理
- Scaling: 大部分團(tuán)隊(duì)使用了Robust Scaling够庙,也有小部分只使用了 np.log1p恭应。
- 數(shù)據(jù)增廣:第三名Upstage團(tuán)隊(duì)使用了一些數(shù)據(jù)增廣方法,其中MixUp效果比較顯著耘眨。
- Pseudo-labels昼榛。
集成
KFold和StratifiedCV一般情況下沒什么區(qū)別,不過(guò)StratifiedCV總不會(huì)比Kfold差剔难,另外高分團(tuán)隊(duì)取的折數(shù)都較多胆屿,10~15+。
其他
State-of-the-art Deep Learning library for Time Series and Sequences:
https://github.com/timeseriesAI/tsai