訓練2021年每個SOTA模型,他的「核武」策略意外收穫Kaggle銀牌

語言: CN / TW / HK

在 Kaggle 的世界,軟體開發者、金融模式和行為研究公司 Deep trading 的創始人 Yam Peleg 稱得上一位「大神」。目前,他在 Notebooks Grandmaster 中排名第 11,在 Discussion Grandmaster 中排名第 5。

最近,他乾的一件事在 reddit 上引發了網友熱議:他訓練了 2021 年的每一個 SOTA 模型,並在最近的一項 Kaggle 影象分類比賽中意外斬獲了一枚銀牌。這項 Kaggle 比賽名為「Pawpularity Contest」,這是一個典型的多模態迴歸問題,根據寵物圖片來預測它們的可愛程度。

圖源: https://www. kaggle.com/c/petfinder- pawpularity-score

他的思路是這樣的:訓練每個 SOTA 模型,使用 100 億引數的集合的集合(ensemble of ensembles)來「核武攻擊」(Nuke)Kaggle 比賽的排行榜。

對於這一策略(trick)的命名 ——「Nuke option」,網友表示非常喜歡,並將在其他比賽中用這一命名。

另一位網友稱讚道,「在 Kaggle 環境中完成所有事情真了不起。」

方案解讀

根據 Yam Peleg 的 Notebook 介紹,他訓練的模型包括如下:

  • EfficientNet
  • NFNet
  • ViT
  • Swin Transformer
  • Deep Orthogonal Fusion of Local and Global Features(DOLG)
  • Hybrid Swin Transformer
  • External Attention Transformer(EAT)

他將自己的方案稱為「Nuclear Protocols for Image Classification」,並表示只有用盡了其他方案才考慮使用。pipeline 如下圖所示:提出的方法是 7 個堆疊 pipeline(140 + 模型)的集合,並且每個 pipeline 都有一個在提取影象嵌入上訓練的第二階段(2nd)模型。

實現步驟

訓練這些 SOTA 模型之前,Yam Peleg 首先匯入庫:

接著安裝其他配置,完成資料填充(seeding):

配置部分截圖

然後是 TPU 配置、載入元資料、CV 的分層 K 折回歸(Stratified KFold for Regression)、增強(Augmentations)等步驟。資料 pipeline 如下所示:

  • 讀取原始檔案,然後解碼到 tf.Tensor
  • 按需求重新調整影象大小
  • 將資料型別變為 float32
  • 快取資料以提升速度
  • 使用增強來降低過擬合,並使模型更穩健
  • 將資料分割為 batch

最後依次訓練模型,並將 Notebook 提交至了 Pawpularity Contest 中,獲得了一枚銀牌。

「其他文章」