作業記録, 比較実験考察 6, Dec, 2019 Fri

 6, Dec, 2019 Fri

研究室で2時間弱
実質は1時間くらい。

- 犬
  + スケジューラ導入している途中ですでに導入済みだと気づいた。
  + データセット多様すぎるから一部のものだけで学習すると精度が出て気分がいい (犬後輩に教えてもらった)。
  + アノテーションセットを変えた時に、比較しづらかったので記録題のフォーマットを変更
<model>_rgb_<optimizer>_<Annotation set>_<frame_rate>_<batch size>_<learning_rate>_YYYYMMDD_hhmm


# Cross validation の導入

==========

- Learning rate
今の所 1e-6 くらいが一番良い。次いで 1e-7。
1e-7 は 6 に比べて loss の下りが緩やか。1e-5 は 1epoch 目から 過学習。
20epoch で 1e-6 * 1/10 をしたけど loss が平坦になった (resnet_rgb_adam_201607106fps__bs-64_lr-1e-6_20191206-2209) 。
30epoch で * 1/10 したものも同様 (resnet_rgb_adam_201607106fps__bs-64_lr-1e-6_20191206-2215)。

- Annotaion set
20160710 を 7:3 で学習と評価に利用。
batch size 64 ~ 256 で学習したものどれもが、train loss より test loss が低くなった。(?)
50epoch まで、どれも緩やかに loss が下がっている。
ただし、 10epoch でどれも precision が下がり始める。
Precision, Recall 共に 0.8 前後なのでかなり精度がいい。
データを変えた途端に精度が急上昇した。
堀田くんのいう通り、学習データを改めて見直して学習と評価セットの分布が同じくなるように仕分ける必要があることがわかる。

- Batch size
256 は9000くらいメモリを喰う。
もっと続けてみたい気もするけど コスパは比較的良くない (resnet_rgb_adam_201607106fps__bs-256_lr-1e-6_20191206-2210)。
128 ももっと続けてみたいなという感じ。
そこまで影響がないのか、32 ~ 64 でいいのかな〜。bs 16 でも良さげなのは見る気がするし (resnet_rgb_adam_201607106fps__bs-128_lr-1e-6_20191206-2209)。

/*
/* 追記 7, Dec, 2019, Sat
batch_size = [256, 128] を回した。 epoch size を 倍々 (64:50, 128:100, 256:200) にしたら同じような見た目のグラフになった。


resnet_rgb_adam_201607106fps__bs-64_lr-1e-6_20191206-2209 : 50
resnet_rgb_adam_201607106_fps_bs-128_lr-1e-6_20191207-0213 : 100
resnet_rgb_adam_201607106_fps_bs-256_lr-1e-6_20191207-0213 : 200

今の段階でバッチサイズ変えてもそこまで結果には影響ないのかな。












「データにもよる」「我流で」「たぶん」と前置きしているものの、batch size の決め方について参考になる記事があった (感謝) 。

```

ミニバッチのサイズによって学習の何が変わるか

(中略)
  • 1つのサンプルデータに対する反応度
  • 1epochの計算速度
  • メモリ使用量

  • (中略)

    私のミニバッチサイズの決め方

    (中略)
    1. 適当に32とか128とかにして、一回学習させてみる
    2. もっと学習速度あげて、他のパラメーターをとりあえず色々試したいなぁっておもったら、ミニバッチのサイズをあげる
    2. lossの揺れ幅が各epochで大きいなぁってなったら、ミニバッチのサイズを上げる
    2. 揺れ幅が小さくて、データのサイズも大きくない場合は、ミニバッチのサイズを下げる
    ```

    学習結果自体よりも過程に対して影響を与えるんだなという印象。
    また、データサイズが大きければ batch size もある程度大きい方が良いようだ。

    # batch_size を上げて実験
    # 犬のコードでは learning rate を上げるとガタガタ過学習が始まるので、 batch_size をあげるとまた 1e-6 以上の選択肢がでるのかもしれない。


    参考
    St_Hakky’s blog, ( https://www.st-hakky-blog.com/entry/2017/11/16/161805 ), 【Deep Learning】 Batch sizeをどうやって決めるかについてまとめる, 2017-11-16











    コメント