Shopee参加記2

shopeeの上位解法の自分用まとめ

GitHub - hedwig100/kaggle-shopee: kaggleのshopeeコンペのレポジトリ

↑自分のリポジトリ

1位

Shopee - Price Match Guarantee | Kaggle

  • モデルのスコアの伸びより, embeddingsを後処理した方がスコアが伸びた.
  • eca_nfnet_f1とbertをもちいてarcfaceをつかった
  • 大きいマージンの方が良かったが大きすぎると収束しなかったため, だんだんマージンを大きくした.
  • 最後の重みそうだけ学習率を大きくすると収束するようになったし, Cvもよくなった.
  • テキスト, 画像のみでそれぞれ類似度を測るのと, テキストと画像の類似度の和で類似度を測った.
  • Iterative Neighbor Blending(類似度の重みをつけた辺をはってグラフを作り, 類似度が近いもの同士が同じグループに分けられるように グラフを作り替える. -> またテキストと画像の類似度から近いものを見つける -> を繰り返す.) が効いた.
  • cutmixが0.1くらい効いた
  • augmentationはhorizontal flipしかしていない.

  • 後処理のINBが一番重要らしい.

3位

  • いい感じのモデルを使ってembeddingをつくって近傍をつくる.
  • そのembeddingsの距離や周りの点の密度などを特徴としてcatboostでpairwiseに同じ製品かどうか判定する.
  • つまり embeddings -> catboost -> 同じかどうか判定 ということをした.
  • embeddingを作るモデルをtriplet lossでfine tuningした.

4位

  • infoldなものもvalidation setとして用いた(leakしてるけど)
  • image,bert,tfidfをつかった
  • Query Expansionをした. これも近傍をグラフみたいに探索することらしい.

  • GeM = Generalized-mean poolingのことらしい.

5位

Shopee - Price Match Guarantee | Kaggle

6位

www.kaggle.com

  • imgとtextのfeatureをつくってからlinearしたのが効いた.
  • img,text,concatの三つのembeddingsをつかった
  • 一つではなくてかならず2つ以上は同じ商品だと判定するようにした.
  • 単位が合わないものは取り除いた.
  • 学習率をfcとbert(本体)で変えた.

  • 少なくとも2つは同じものが存在するは確かにってなった.

  • ことなる学習率を使うのは重要らしい.

8位

Shopee - Price Match Guarantee | Kaggle

  •  \alphaQEとDBAというものを使った.

18位

https://www.kaggle.com/c/shopee-product-matching/discussion/237972

  • 近傍の数の分布をtrainとtestで合わせるというところがなるほどとなった.

ほかにも読んだが長いので割愛.

感想

  • Bert,nfnetあたりは入賞者はほとんど全員使っていた.
  • 学習率の調整が必要なのは初めて知った.
  • post processが大事だった.
  • グラフみたいな構造に注目するのはたしかに正しかったが, 深く考えずに全結合にするだけでは意味がなかった.
  • クラスターみたいな構造に注目するのは大事だったらしい.
  • 同じ商品だと予測したものが一つもない時に2個目を見つけるのは重要だったっぽい.
  • QEとかDBAとかそういうことはぜんぜんdiscussionでは言われてなかった気がするけどそういう知識はどこから手に入れているんだろう.