Amano_Masaki
@Amano_Masaki

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Resnetを用いた時、学習用と検証用でaccuracyが序盤のみ乖離する

解決したいこと

CNNの一般的なモデルであるResNet50を用いて一部転移して学習させていたところ、写真のような挙動を確認いたしました。
image.png
epoch 1~15あたりを見てほしいのですが、トレーニングデータの精度が高い一方で検証データの精度は低く、結果が乖離しています。
16以降からはコツをつかんだのかそこそこの精度まで上がってきていますが、何故このような挙動が起こりえるのでしょうか?

使用したネットワーク

base_model = ResNet50(weights='imagenet', include_top=False, input_tensor=input_tensor)

一般的に以下(これはVGG&別データ)のようになるケースが多いと思いますが、ここまで(序盤のみ)結果が乖離するのは初めてです。終盤に乖離するのは過学習かなと想像できますが、序盤に乖離する理由をしりたいです。
jpg_png.png
よろしくお願いします。

0

1Answer

個人的な意見を言うと気にしなくていいと思います。

訓練データの精度は「学習が進んでるなー」くらいの数字であって、それを評価データの精度と比較してもわかることは少ないです。
なぜなら、どんなデータにおいても常に

訓練データの精度>評価データの精度

の関係が成り立っており、どれくらい乖離しているかなどは定量的に意味があることはほぼありません。
過学習、少なくとも「訓練データの精度>評価データの精度」は必ず起きますので、悪いことではありません。

との前置きを言った上ですが、例えばこんなことが考えられます
・前半のepochでは、大きくロスを下げるために訓練データ全体に適合した学習をする必要があります。見たことある訓練データの精度はおよそ高くなりますが、学習自体は大雑把とも言えます
・後半のepochでは、十分にロスが下がっているため学習データ内の小さなミスを潰していく必要があります。データ全体をみた正確な予測ができるようになります。

この辺が評価データと噛み合ったのではないでしょうか。

1Like

Comments

  1. @Amano_Masaki

    Questioner

    ご返信ありがとうございます。
    学習用のaccurcyの向上速度と検証用のaccuracyの向上速度の違いが気になったので、質問をさせていただきました。
    評価用=検証用データに於いて、7割程度はtrainingデータをオーギュメンテーションしたものを移植して利用していたので、データに於ける差は少ないと思ったのですが、人間が思うよりも偏りがあったのかもしれません。
    後で、学習・検証に使われたデータを比べてみます。

    有難うございました。

Your answer might help someone💌