【要約】Kerasで再学習なしの精度改善。Test Time Augmentation(TTA)を試したら見えた罠 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
エンジニアは、モデルの精度向上と計算コストの抑制という課題に直面している。再学習はコストが高いため、既存モデルの活用が求められる。
- ・再学習に伴う膨大な計算リソースの消費。
- ・学習時間の確保が困難な開発サイクル。
- ・モデル構造を変更できない制約下での精度改善の必要性。
// Approach
筆者は、再学習を必要としない手法としてTTAを採用した。推論時にデータを加工し、複数の予測結果を統合するアプローチである。
- ・推論時にflipやshiftなどの変換を適用。
- ・生成した複数のViewに対してモデルで予測を実行。
- ・各Viewの予測確率を平均して最終的な予測値とする。
- ・
predict_with_tta関数を用いてバッチ処理を実装。
// Result
実験の結果、TTAの適用方法が精度に与える影響が定量的に明らかになった。特定の変換を導入すると、精度が向上する場合と悪化する場合がある。
- ・TTAなし(Baseline): 67.01%。
- ・TTA(flipのみ, 2 views): 67.27%(+0.26ptの改善)。
- ・TTA(flip+shift, 6 views): 66.04%(-0.97ptの悪化)。
- ・学習時に未経験の変換(shift)を混ぜると、精度が低下する。
Senior Engineer Insight
> TTAは低コストな精度向上策だが、実運用では推論レイテンシとのトレードオフが最大の課題となる。View数を増やすほど計算量は線形に増加する。また、学習時のAugmentationとの整合性が欠けると、精度を損なう。本番環境への導入時は、精度向上幅と推論時間の増大を厳密に評価すべきである。