あなたの陰謀を簡単に調べた結果、いくつかの結論を導き出し、試してみることができます。(これは、セットアップについてこれ以上何も知らないままです:トレーニングパラメーターとモデルハイパーパラメーター)。
損失が減少しているように見えます(検証損失を通じて最適なラインを示します)。また、曲線がまだ下に向いているため、結果を改善するためにより長い時間トレーニングできる可能性もあります。
最初に、タイトルの質問に答えてみましょう。
検証損失の変動の原因は何ですか?
私は3つの可能性を考えることができます。
- 正則化 -学習プロセスをスムーズにし、モデルの重みをより堅牢にするため。正則化を追加/増加すると、ウェイトへの大きな更新が導入されなくなります。
- バッチサイズ -比較的小さい(例:<20?)。これは、ネットワークの端で測定された平均誤差が少数のサンプルのみを使用して計算されることを意味します。たとえば
8
、バッチサイズがの場合、4/8
正しい結果を得て比較すると、損失を見ると相対的に6/8
大きな違いがあります。このような小さなバッチでエラーの平均をとると、それほど滑らかではない損失曲線になります。十分なGPUメモリ/ RAMがある場合は、バッチサイズを増やしてみてください。
- 学習率 -大きすぎる可能性があります。これは、正規化に関する最初のポイントと同様です。よりスムーズな改善を行うには、最小損失に近づくにつれて学習のペースを遅くする必要がある場合があります。これはおそらくスケジュールで実行することができます。これにより、
6
エポック後など、検証の損失が改善されないたびに、何らかの要因で減少します(たとえば、0.5を掛けます)。これにより、大きなステップを踏んで、最小値をオーバーシュートして、その周りで跳ね返ることを防ぐことができます。
あなたのタスクに固有ですが、微調整の範囲を広げるために、おそらく別のレイヤーのフリーズを解除することもお勧めします。これにより、データに基づいて、Resnet-18を学習するためのもう少し自由が与えられます。
あなたの最後の質問について:
これは私が心配する必要があることですか、それともパフォーマンス測定(精度)で最高のスコアを得るモデルを選択するだけですか?
あなたは心配するべきですか?つまり、いいえ。あなたのような検証損失曲線は完全に細かく、妥当な結果を提供できます。ただし、解決する前に、上記の手順のいくつかを試してみます。
あなたは最高のパフォーマンスのモデルを選ぶべきですか?検証の損失(検証の精度)が最も高い時点でモデルを使用することを意味している場合は、さらに注意する必要があります。上記のプロットでは、これはエポック30前後に相当する可能性がありますが、個人的には、カーブが少し変動しにくくなる、もう少しトレーニングした点を取り上げます。繰り返しますが、上記の手順のいくつかを試した後。