Kaggle競賽記錄

2021-08-04 20:48:10 字數 3155 閱讀 7395

比賽**planet:understanding the amazon from space這個比賽是乙個遙感影象識別,但是主辦方也提供了jpg,由於對遙感影象識別不熟悉,而且遙感影象資料太大不好處理,所以本次比賽使用的是jpg資料。這個比賽是乙個多標籤的分類問題,一共有17個類別,每張可以有乙個或者是幾個類別標籤,對於多標籤任務乙個簡單的處理是把問題分成17個二分類問題,但是這需要訓練17個網路,再加上調參的時間,可能耗費的時間很多,可以把這17個網路合成為乙個網路,輸出層為17,相當於共享除了最後一層的所有引數,大幅度減少了引數,但是也增加了欠擬合的風險,損失函式使用交叉熵。

剛開始使用的是vgg16,經過調參最終的結果只有0.91,考慮到中並沒有高階的語義特徵(高階語義特徵可以看做是低階特徵比如顏色,紋理,邊緣特徵的組合,人類識別影象一般都依賴高階語義特徵),分類更多的應該是依賴低階的特徵,所以我們需要在網路的前向傳播中保留下來低階特徵,而vgg是很難做到這點的,另一方面,resnet由於有恒等對映,所以可以在前向傳播中很好的保留低階特徵,並且resnet的shortcut也可以看做是梯度反向傳播的高速公路,避免了梯度消失的問題,網路更好訓練,另外resnet使用了bn,更容易訓練,並且兼有正則作用(bn在每乙個mini-batch計算時使用的是mini-batch的資料而不是full-batch資料,相當於引入了統計誤差,而方差很小的隨機誤差可以看做是增加區域性不變先驗也就是正則作用),將模型換為resnet18後結果突破0.92

由於並沒有高階語義特徵所以在資料增強中增加了random vertical flip,

random transpose 以及random rotate, 另一方面本次比賽問題本身的難度很大,因為正類和負類之間的差別並不大,模型想要正確的分類就需要更大的權值,而更大的權值往往造成過擬合,這會造成調參過程中很難找到過擬合和欠擬合的平衡點,所以我去掉了比較強的正則化random size and crop,random size and crop 首先按原的長寬比例隨機縮放到乙個區間,再在上隨機裁剪出與模型的輸入大小相符的,在resize時使用的插值方法會引入誤差,並且crop也會因為丟掉一部分的原始資訊而引入誤差

在去掉random resize and crop後模型更趨向於過擬合,所以我使用了另一種正則化技術label smoothing,label smoothing是對標籤的平滑,把原來的one-hot變成一種soft-target,one-hot的target需要模型百分之百的確定分類結果,因為只有乙個類別的標籤概率是1,其他類別的標籤概率均為0,

label smoothing把1減小並將減小的概率分攤到其他的類別標籤上,寫成公式如下: sm

ooth

ed_l

abel

=lab

el×(

1−fa

ctor

)+fa

ctor

num_

clas

ses

label smoothing有兩個作用,第一是使模型不會過於自信,因為某些分類問題類別之間的差異不大,有時候並不能百分之百的確定分類的結果(比如美短和英短),這時候如果強制模型學習太過自信的結果往往造成權值過大進而造成過擬合,第二就是限制權值的增加,下面以二分類為例說明 lo

ss=∑

ni=0

tilogyi+

(1−t

i)log(1−

yi)

∂loss∂y

=∑ni

=0ti

yi+t

i−11

−yi=

∑ni=

0ti−

yiyi

(1−y

i)①使用label smoothing後①式變為 ∂l

oss∂

y=∑n

i=0t

i−yi

yi(1

−yi)

=∑ni

=0ti

(1−f

)+f2

−yiy

i(1−

yi) ②

我們用②-①可得 ∑n

i=0f

2−ti

fyi(

1−yi

) ③

可以看出 ti

=0,③

>0

ti=1

,③<0

從①式中我們看到 ti

=0,①

<0

ti=1

,①>0

從上面的結果可以看出當∂l

oss∂

y 向負方向增長時label smoothing會給∂l

oss∂

y 增加乙個正的③式,而當∂l

oss∂

y 向正方向增長時label smoothing會給∂l

oss∂

y 增加乙個負的③式,這會使∂l

oss∂

y 更趨近於0,即減小了∣∣

∂los

s∂y∣

∣ ,這相當於限制了權值的增大,因為∂l

oss∂

w=∂l

oss∂

y∂y∂

w 我的單模型的最好結果是0.928,使用了0.1的label smoothing,0.00001的weight decay,去掉了random resizecrop使用的是pre-trained resnet18,使用adam訓練, 學習率0.0001, 訓練30個epochs,每乙個epoch計算驗證集上的f2score,選擇在驗證集上f2score最高的模型,經過檢視驗證集上17個類別的準確率,發現對於water和cultivation的識別準確率很低,考慮可能是多工之間出現矛盾或者是這兩個類別的識別本身難度較高,所以把這兩個類別的識別單令訓練兩個分類器,然後把這兩個分類器的結果合併到另外15個任務的submission中(替換掉原有的輸出)(~+0.1%),ensemble並沒有做stacking,因為要留出一折的資料做閾值平移,如果做5-fold的stacking實際上初級學習器只使用了3-fold的資料,很容易過擬合,所以我只做了10個模型的bagging和voting,具體把資料分為5份,其中1份做閾值平移其他4份為訓練集,這樣的話有5個資料集,每個資料集上訓練兩個模型,一共10個模型,最後再做多數投票得出最終結果et

est[

a]=2

etra

in[a

]

kaggle競賽入門整理

1 bike sharing demand kaggle 目的 根據日期 時間 天氣 溫度等特徵,自行車的租借量 處理 1 將日期 含年月日時分秒 提取出年,月,星期幾,以及小時 2 season,weather都是類別標記的,利用啞變數編碼 演算法模型選取 回歸問題 1 randomforestr...

kaggle 鳥聲識別競賽學習筆記

優勝解決方案思路分析 自身提公升方向 題外話是次kaggle比賽英文名叫為 cornell birdcall identification 沒有官方中文名稱,大概是鳥聲識別競賽。這是本人第一次的kaggle獎金比賽 除了只抄baseline然後啥都沒幹的比賽 也是第一次接觸音訊識別的資料分析競賽。結...

kaggle三個入門競賽教程

1.titanic 泰坦尼克之災 中文教程 邏輯回歸應用之kaggle泰坦尼克之災 英文教程 an interactive data science tutorial 2.house prices advanced regression techniques 房價 中文教程 kaggle競賽 201...