team90s / kaggle-MoA

https://www.kaggle.com/c/lish-moa
2 stars 1 forks source link

【experiment】TF ResNetによる転移学習 #85

Open takapy0210 opened 4 years ago

takapy0210 commented 4 years ago

概要

参考

https://github.com/team90s/kaggle-MoA/issues/84

submitしてみるnotebook list

takapy0210 commented 3 years ago

やってみた その1

転移学習なしのCV: 0.017415179912406254 転移学習ありのCV: 0.017443502003782124

https://www.kaggle.com/takanobu0210/tf-resnet-transfer-label0-9995?scriptVersionId=46427142

Next Step

takapy0210 commented 3 years ago

Tawaraさんのこれを試してみるのは筋が良さそうなので試す https://github.com/team90s/kaggle-MoA/issues/88

takapy0210 commented 3 years ago

やってみた その2

転移学習ありのCV: 0.0162244526057720(https://www.kaggle.com/takanobu0210/tf-resnet-gauss-label0-9995-10seed?scriptVersionId=45813441) 転移学習なしのCV: 0.01631410100184313(https://www.kaggle.com/takanobu0210/tf-resnet-transfer-label0-9995?scriptVersionId=46436260

CV改善したのでsubしてみる

Next Step

takapy0210 commented 3 years ago

92 でしんちろさんがコード共有してくれたので、それを参考に #88 を実装する

コードの例

if SELECT_NONSCORE:
    sel_num = 207
    nonscore_select_col = ['sig_id']
    nonscore_select_col.extend(train_targets_nonscored.iloc[:,1:].sum().sort_values(ascending=False)[:sel_num].index.tolist())
    train_targets_nonscored = train_targets_nonscored[nonscore_select_col]
takapy0210 commented 3 years ago

バグを仕込んでいることに気づいた(pre trainのCV分割が予期せぬものになっていた)ので、バグを修正する汗

sinchir0 commented 3 years ago

お、僕のコードですかね?

takapy0210 commented 3 years ago

あ、自分のコードですwww

takapy0210 commented 3 years ago

pos sample top100のみtargetとして使用したpretrainを実施

https://www.kaggle.com/takanobu0210/tf-resnet-transfercolselect-label0-9995?scriptVersionId=46533215 今回CV:0.01623009889872894 元々CV:0.016233816023871413(全カラムをtargetとしてpretrainした結果)

若干CV改善した

Next Action

label が all 0 の行を消して実行

takapy0210 commented 3 years ago

label が all 0 の行を消してpretrainを実施

https://www.kaggle.com/takanobu0210/tf-resnet-transfersampleselect-label0-9995?scriptVersionId=46535269 今回CV:0.016313887726749406 元々CV:0.016233816023871413(全カラムをtargetとしてpretrainした結果)

若干CV悪化した pretrainのlossがもうちょい下がりそうなので、もう少しepoch増やしても良いのかもしれない(現在10でやっている)

31/31 - 0s - loss: 0.0243 - binary_crossentropy: 0.0232 - val_loss: 0.0231 - val_binary_crossentropy: 0.0219
Epoch 7/10
31/31 - 0s - loss: 0.0219 - binary_crossentropy: 0.0207 - val_loss: 0.0213 - val_binary_crossentropy: 0.0200
Epoch 8/10
31/31 - 0s - loss: 0.0205 - binary_crossentropy: 0.0193 - val_loss: 0.0204 - val_binary_crossentropy: 0.0191
Epoch 9/10
31/31 - 1s - loss: 0.0196 - binary_crossentropy: 0.0183 - val_loss: 0.0198 - val_binary_crossentropy: 0.0185
Epoch 10/10
31/31 - 0s - loss: 0.0189 - binary_crossentropy: 0.0176 - val_loss: 0.0193 - val_binary_crossentropy: 0.0179

Next Action

takapy0210 commented 3 years ago

pos sample top100のみtarget & label が all 0 の行を消して実行

https://www.kaggle.com/takanobu0210/tf-resnet-transferselectsample-col-label0-9995?scriptVersionId=46543987 今回CV:0.016234341409016754 元々CV:0.016233816023871413(全カラムをtargetとしてpretrainした結果)

若干CV悪化した

Next Action

takapy0210 commented 3 years ago

pos sample top100のみtarget & label が all 0 の行を消して実行 + 事前学習の重みは最終3層以外にロードしていたが、これを最終6層以外にしてみる

https://www.kaggle.com/takanobu0210/tf-resnet-6lfixed-transferselectsample-col?scriptVersionId=46551870 今回CV:0.016260283624924987 元々CV:0.016233816023871413(全カラムをtargetとしてpretrainした結果)

若干CV悪化

tawatawara commented 3 years ago

ちょっとお聞きしたいんですけど、

最終3層:ネットワーク図での dense_7, BN_8, dense_8
最終6層:ネットワーク図での BN_6, dense_6, BN_7, dense_7, BN_8, dense_8

という理解であってますか?そのうえで、

重みのロード \ 重みの固定 最終3層以外 最終6層以外
最終3層以外 0.01623 (https://github.com/team90s/kaggle-MoA/issues/85#issuecomment-724436974) まだ
最終6層以外 - 0.016260 (https://github.com/team90s/kaggle-MoA/issues/85#issuecomment-724626340 )

ってことでしょうか。 0.016260 の方が pretrain した重みを使う層が少ないので損している気がしますし、実際 CV もちょい悪いですね。 また、重みもあまり固定しない(または input に近い数層だけ固定する) 方が良さそうな感じがします。(多分これから試そうとされてたと思いますが。)

個人的には 画像モデルとかでよくやるみたいに 最終層(ここでの dense_8 ) 以外をロードしてかつ重みを固定しない奴の性能がどうなるかが気になります。

takapy0210 commented 3 years ago

最終3層:ネットワーク図での dense_7, BN_8, dense_8 最終6層:ネットワーク図での BN_6, dense_6, BN_7, dense_7, BN_8, dense_8

あってます!

最終層(ここでの dense_8 ) 以外をロードしてかつ重みを固定しない奴の性能がどうなるかが気になります。

たしかに、これを試すのを完全に失念してました ちょっと試してみます!

ちなみに重みはどれも固定していない状態です!

重みのロード CV memo
無し 0.016202 kernel
最終1層以外 0.016248 https://www.kaggle.com/takanobu0210/tf-resnet-1lfix-transfer-selsample-col100-ls9995?scriptVersionId=46665843
最終3層以外 0.016234 (https://github.com/team90s/kaggle-MoA/issues/85#issuecomment-724436974)
最終6層以外 0.016260 (https://github.com/team90s/kaggle-MoA/issues/85#issuecomment-724626340 )
tawatawara commented 3 years ago

あ、確かに load したあとに全ての層に対して trainable を True にしてるところありますね! 実験名から固定してると勘違いしてました笑

入力に近い層から固定していくのも余裕があったらやりたいですね。

takapy0210 commented 3 years ago

今1層以外ロードするverを実行してみているところです💪

takapy0210 commented 3 years ago

最終1層以外に重みをロードしてみる

重みのロード CV memo
無し 0.016202 kernel
最終1層以外 0.016248 https://www.kaggle.com/takanobu0210/tf-resnet-1lfix-transfer-selsample-col100-ls9995?scriptVersionId=46665843
最終3層以外 0.016234 (https://github.com/team90s/kaggle-MoA/issues/85#issuecomment-724436974)
最終6層以外 0.016260 (https://github.com/team90s/kaggle-MoA/issues/85#issuecomment-724626340 )
tawatawara commented 3 years ago

あとは固定の件と、sinchir0 さんの方の実験( https://github.com/team90s/kaggle-MoA/issues/94#issuecomment-725475266 ) で言ってたハイパラの件とかですかね? CV に関しては元よりは良くなると予想してたので意外でした。