Upgrade to Pro — share decks privately, control downloads, hide ads and more …

明日使えるかもしれないLoss Functionsのアイディアと実装

明日使えるかもしれないLoss Functionsのアイディアと実装

特徴的な損失関数(Loss Functions)についてそのアイディアとPyTorchの実装を紹介。

fumihiko takahashi

June 17, 2024
Tweet

More Decks by fumihiko takahashi

Other Decks in Technology

Transcript

  1. AI 自己紹介 高橋 文彦 GO株式会社 AI技術開発部 データサイエンスグループ チームリーダー 経歴 ✔

    大手ポータルサービス運営会社 ◦ ECサイトにおける検索クエリの意図推定 ◦ SNSにおけるドメインごとの話題の抽出 ◦ 形態素解析器の開発、研究 ✔ GO株式会社 ◦ タクシーアプリにおける到着時間予測機能の開発 ◦ データビジネス事業立ち上げ ◦ ドライバーの行動認識 (『DRIVE CHART』) プライベート ✔ ボードゲーム、一蘭、2児の育児 2 コンペ歴 ✔ SIGIR 2018 workshop eCom Rakuten Data Challenge 2位 ✔ SIGSPATIAL 2021 GISCUP 6位 ✔ HuMob Challenge 2023 11位
  2. AI 4 • 損失関数は機械学習モデルの最適化の目的関数    →出力をコントロールできる • 多くのサービスではモデルをKPIで直接最適化をできない。 • 何らかの仮定を置いて評価指標を設定している。 •

    KPIと評価指標にはギャップがある。 • 損失関数もサービス要件にあった工夫の余地がある。 Loss Functions(損失関数)の開発 損失関数の幅広い種類のアイディアとその実装を眺めて オリジナルの損失関数のヒントを得る y Model x KPI ? 「明日使える」 ために
  3. AI 5 • 回帰問題や分類問題の損失関数を中心に扱う ◦ object detectionやsemantic segmentationの部分タスクなの で、それらで使われる損失関数についても触れる •

    実装はPyTorch • 網羅的な紹介ではなく特徴的なLossを紹介 ◦ 外れ値にロバスト: Self-Adjusting Smooth L1 Loss ◦ 推定が難しい事例にフォーカス: Focal Loss ◦ 正例と負例の時で非対称な損失: Asymmetric Loss ◦ 不確実性の定量化: Aleatoric Uncertainty Loss お断り
  4. AI 10 Smooth L1 Lossのハイパーパラメータβを自動調整 RetinaMask: Learning to predict masks

    improves state-of-the-art single-shot detection for free 2019, Fu(UNC) et al. paper: https://arxiv.org/abs/1901.03353v1 Self-Adjusting Smooth L1 Loss
  5. AI 11 Self-Adjusting Smooth L1 Lossの解釈 βを予測誤差の平均と分散の差に近づけていく : momentum. 更新の変化量を調整する.

    論文中だと0.9. なぜ(平均-分散)の値なのか? 平均だけだと外れ値の影響を受けるた め、分散を加味することでデータの広が りを加味して調整ができる。 外れ値に対してはL1損失を適用し、平 均に近い値に対してはL2損失を適用。
  6. AI 17 Focal Lossの実装① - Torchvision https://github.com/pytorch/vision/blob/947ae1dc71867f28021d5bc0ff3a19c249236e2a/torchvision/ops/focal_loss.py targetsの要素が0 or 1のため、

    どちらかの項が0になる `if y = 1` の代わりに、 targetsの要素が0 or 1のため、 どちらかの項が0になる 二値分類を対象に計算。多クラス分類は利用者が各クラスごとに呼び出し。
  7. AI 18 Focal Lossの実装② - focal_loss_torch パッケージ https://github.com/mathiaszinnen/focal_loss_torch/blob/0e9d9050b0c0e36fb8033c523ac8b2f0b44c00dd/focal_loss/focal_loss.py ignore_indexを導入して maskを導入

    負の対数尤度(negative log-likelihood)を計算 微小な値epsを足して 入力がゼロになることを避ける ignore_indexを導入して 無視するmaskを追加 [Batch, Classes]のshapeを [Batch x Classes] [Batch, Classes]のshapeを [Batch x Classes] y=1だけを残す 多クラス分類に対応。特定のクラスの損失計算を無視する機能を追加。
  8. AI 22 Asymmetric Lossの実装① - 著者実装 shifted probability clampを使って1以下に収める 正解,

    不正解の予測確率をyの値で使い分 ける yの要素が0 or 1のため、どちら かの項が0になる yの要素が0 or 1のため、どちら かの項が0になる https://github.com/Alibaba-MIIL/ASL/blob/37658182b1a3f7a83a79 8f53ad4fe4e31fc03632/src/loss_functions/losses.py
  9. AI 23 Asymmetric Lossの実装② - 著者実装 計算効率最適化ver https://github.com/Alibaba-MIIL/ASL/blob/37658182b1a3f7a83a79 8f53ad4fe4e31fc03632/src/loss_functions/losses.py メンバ変数を最初に確保することで

    各イテレーションごとに メモリ割り当てとGPUへのアップロードを防ぐ メモリ割り当てとGPUへのアップロードを最 小限に抑える メンバ変数を最初に確保することで 各イテレーションごとに メモリ割り当てとGPUへのアップロードを防ぐ 計算時間の比較実験 1,000回 10,000回 AsymmetricLoss 2.35 [s] 8.35 [s] AsymmetricLoss Optimized 0.85 [s] 8.58 [s]
  10. AI 25 分類問題・回帰問題において、内在的不確実性を定量化して学習で きる損失 What Uncertainties Do We Need in

    Bayesian Deep Learning for Computer Vision? NIPS 2017, Kendall(University of Cambridge) et al. paper: https://arxiv.org/abs/1703.04977 Aleatoric Uncertainty Loss
  11. AI 26 • Aleatoric Uncertainty(内在的不確実性) ◦ データそのものに起因する不確実性で、ノイズや観測誤差などが原因 ◦ データが持つ固有のものであり、どれだけデータを増やしても完全に除去す ることはできない

    • Epistemic Uncertainty(モデル不確実性) ◦ モデルのパラメータや構造に起因する不確実性で、データが不足している場 合やモデルが複雑な場合に発生 不確実性の種類 誤分類部分で 大 遠くや輪郭で 大 モンテカルロドロップアウト で計算可能
  12. AI 28 Aleatoric Uncertainty Loss の実装① - hmi88/what https://github.com/hmi88/what/blob/e3fe42ac8568bdaf28cf7fde112 a8f95368097b9/WHAT_src/loss/mse_var.py

    var_weightを導入して meanとvarのバランスを調整 Dがなく シンプルな回帰問題を前提にした 実装 平均と分散のバランスを取るweightを導入
  13. AI 29 Aleatoric Uncertainty Loss の実装の参考 - VAEのReparameterization trick torch.randn_like()

    を使ってサンプリング VAEでもReparameterization trickを使って確率分布のパラメータを学習 https://github.com/AntixK/PyTorch-VAE/blob/af3f9a5376a737828c 2b543bdc5b81ed61451d24/models/vanilla_vae.py
  14. AI 31 まとめと感想 特徴 感想 ハイパー パラメータ の数 Self-Adjusting Smooth

    L1 Loss 回帰問題。外れ値にロバスト。 ハイパーパラメータを自動調整。 ハイパラチューニングが不要な点が利点。 1 Focal Loss 分類問題。推定が難しい事例に フォーカス。 よく使われており、実装もシンプルなので使いや すい。苦手な事例にフォーカスするアイディアは 回帰問題でも応用できそう。 1-2 Asymmetric Loss 分類問題。正例と負例の時で非対称 な損失。 非対称な点についてよりも、誤ラベルを無視でき るという点が面白い。 3-4 Aleatoric Uncertainty Loss 回帰問題と分類問題。 不確実性の定量化。 不確実性を考慮して自信が高い部分だけを出 すなど後処理で出力をコントロールできる点が 魅力。 0 損失関数のチューニングを評価するには、評価のコストがかかる(オンライン評価、 定性評価など)ことが多い。そのため、ハイパーパラメータの数は少ない方がいい