質問: Kerasにおけるlossとval_lossの変化について質問です。 下のURLではMNISTに対し、簡単なネットワークで学習を行って、グラフでloss・val_lossを可視化しています。 Keras で MNIST データの学習を試してみよう ![lossとval_lossの変化](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3ad3a4cc05f80ef02c096158bdbf63e1.png) このグラフの挙動について疑問に思うところがあります。 通常val_lossより学習に使ったlossの方が小さくなるように思えるのですが、学習序盤に限っては、むしろval_lossの方が小さいです。 DropOut層などがあれば検証時の方が精度が高いのはわかるのですが、そうでないネットワークでもval_lossの方が小さくなっている理由がわかりません。 自分でいろいろなネットワークを試したりもしたのですが、やはり序盤のepochのみ、val_lossとlossの逆転が見られます。(accとval_accも逆転しています) 理由がわかる方、ご教授願います。
回答: FAQに、次のように記載がありました training lossがtesting lossよりもはるかに大きいのはなぜ? Kerasモデルにはtrainingとtestingという2つのモードがあります.DropoutやL1/L2正則化のような,正則化手法はtestingの際には機能しません. さらに,training lossは訓練データの各バッチのlossの平均です.モデルは変化していくため,各epochの最初のバッチの誤差は最後のバッチの誤差よりもかなり大きくなります.一方,testing lossは各epochの最後の状態のモデルを使って計算されるため,誤差が小さくなります.