Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
明日使えるかもしれないLoss Functionsのアイディアと実装
Search
fumihiko takahashi
PRO
June 17, 2024
Technology
15
2.9k
明日使えるかもしれないLoss Functionsのアイディアと実装
特徴的な損失関数(Loss Functions)についてそのアイディアとPyTorchの実装を紹介。
fumihiko takahashi
PRO
June 17, 2024
Tweet
Share
More Decks by fumihiko takahashi
See All by fumihiko takahashi
時系列予測にTransformerは有効か?
ftakahashi
PRO
1
160
SIGSPATIAL2020 参加報告
ftakahashi
PRO
3
740
ドライブレコーダーの映像で Scene Text Recognitionする
ftakahashi
PRO
0
1.1k
ドライブレコーダーの Scene Text Recognitionにおける Multi-task Learning
ftakahashi
PRO
1
3.1k
JapanTaxi R&Dの取り組み事例
ftakahashi
PRO
0
69
jsai2019.pdf
ftakahashi
PRO
0
370
Attention機構を使った 配車車両未確定状態における タクシー到着時間予測
ftakahashi
PRO
1
55
Other Decks in Technology
See All in Technology
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
110
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
160
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
C++26 エラー性動作
faithandbrave
2
680
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
140
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
Storage Browser for Amazon S3
miu_crescent
1
130
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
150
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
280
なぜCodeceptJSを選んだか
goataka
0
160
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
190
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
240
Featured
See All Featured
BBQ
matthewcrist
85
9.4k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Git: the NoSQL Database
bkeepers
PRO
427
64k
Typedesign – Prime Four
hannesfritz
40
2.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Building Adaptive Systems
keathley
38
2.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Cult of Friendly URLs
andyhume
78
6.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Transcript
AI 2024.06.06 高橋 文彦 GO株式会社 明日使えるかもしれない Loss Functionsの アイディアと実装
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位
AI 3 01 はじめに
AI 4 • 損失関数は機械学習モデルの最適化の目的関数 →出力をコントロールできる • 多くのサービスではモデルをKPIで直接最適化をできない。 • 何らかの仮定を置いて評価指標を設定している。 •
KPIと評価指標にはギャップがある。 • 損失関数もサービス要件にあった工夫の余地がある。 Loss Functions(損失関数)の開発 損失関数の幅広い種類のアイディアとその実装を眺めて オリジナルの損失関数のヒントを得る y Model x KPI ? 「明日使える」 ために
AI 5 • 回帰問題や分類問題の損失関数を中心に扱う ◦ object detectionやsemantic segmentationの部分タスクなの で、それらで使われる損失関数についても触れる •
実装はPyTorch • 網羅的な紹介ではなく特徴的なLossを紹介 ◦ 外れ値にロバスト: Self-Adjusting Smooth L1 Loss ◦ 推定が難しい事例にフォーカス: Focal Loss ◦ 正例と負例の時で非対称な損失: Asymmetric Loss ◦ 不確実性の定量化: Aleatoric Uncertainty Loss お断り
AI 6 02 外れ値にロバストな損失関数
AI 7 回帰問題において、誤差が小さい場合はL2 loss, 大きい場合はL1 lossに近い挙動をすることで、外れ値で勾配爆発することを防ぐ Fast R-CNN ICCV 2015,
Ross Girshick(Microsoft Research). paper: https://arxiv.org/abs/1504.08083 Smooth L1 Loss
AI 8 Smooth L1 Loss ※ オリジナルの論文では βは提案されていない (β=1)が、βを使ってより一般化した式を掲載 誤差がβより小さい場合はL2
loss, 大きい場合はL1 lossに近い挙動
AI 9 Smooth L1 Lossの実装 - chengyangfu/retinamask https://github.com/chengyangfu/retinamask/blob/ce1eac2bb9882797dcba2a9bc72f994bec04fbdf/maskrcnn_benchmark/layers/smooth_l1_loss.py `if |x|
< β` の実装 chengyangfu/retinamask の実装。条件分岐はtorch.whereで分ける。
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
AI 11 Self-Adjusting Smooth L1 Lossの解釈 βを予測誤差の平均と分散の差に近づけていく : momentum. 更新の変化量を調整する.
論文中だと0.9. なぜ(平均-分散)の値なのか? 平均だけだと外れ値の影響を受けるた め、分散を加味することでデータの広が りを加味して調整ができる。 外れ値に対してはL1損失を適用し、平 均に近い値に対してはL2損失を適用。
AI 12 Self-Adjusting Smooth L1 Lossの実装 - 著者実装① https://github.com/chengyangfu/retinamask/blob/ce1eac2bb9882797dcba2a9bc72f994bec04fbdf/maskrcnn_benchmark/layers/adjust_smooth_l1_loss.py 平均、分散の値をメンバ変数として持っておく
register_bufferすることで 最適化の対象として 扱われない → 誤差逆伝播の計算グラフに含 まれない
AI 13 Self-Adjusting Smooth L1 Lossの実装 - 著者実装② https://github.com/chengyangfu/retinamask/blob/ce1eac2bb9882797dcba2a9bc72f994bec04fbdf/maskrcnn_benchmark/layers/adjust_smooth_l1_loss.py 平均、分散の値をメンバ変数として持っておく
平均・分散の更新 clampでmax(0, min(β^, )) を実装
AI 14 03 推定が難しい事例にフォーカスする 損失関数
AI 15 分類問題において、クラスの不均衡や難しいサンプルに対処するた めに、簡単に分類できる場合に損失を割り引く Focal Loss for Dense Object Detection
ICCV 2017, Lin(Facebook AI Research) et al. paper: https://arxiv.org/abs/1708.02002 Focal Loss
AI 16 Focal Lossの解釈 :予測確率 :割引度合いを調整するハイパーパラメータ :クラスの重みづけのハイパーパラメータ cross entropy 簡単に分類できる場合に損失を割り引く
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になる 二値分類を対象に計算。多クラス分類は利用者が各クラスごとに呼び出し。
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だけを残す 多クラス分類に対応。特定のクラスの損失計算を無視する機能を追加。
AI 19 04 正例と負例の時で非対称な損失関数
AI 20 Focal Lossの拡張。分類問題において、異なるクラスに対する誤分 類の損失を非対称にすることで不均衡を補正する損失関数。 Asymmetric Loss For Multi-Label Classification
ICCV 2021, Ridnik, Ben-Baruch(Alibaba Group)et al. paper: https://arxiv.org/abs/2009.14119 Asymmetric Loss
AI 21 正例と負例の時でfocal lossのγ(gamma)パラメータに異なる値を設定 さらに、shifted probability を導入し、大きく外した時にのみ損失をかける Asymmetric Lossの解釈 論文中では
p ≒ 1.0の時 ラベルミスの 可能性が高い
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
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]
AI 24 05 不確実性の定量化ができる損失関数
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
AI 26 • Aleatoric Uncertainty(内在的不確実性) ◦ データそのものに起因する不確実性で、ノイズや観測誤差などが原因 ◦ データが持つ固有のものであり、どれだけデータを増やしても完全に除去す ることはできない
• Epistemic Uncertainty(モデル不確実性) ◦ モデルのパラメータや構造に起因する不確実性で、データが不足している場 合やモデルが複雑な場合に発生 不確実性の種類 誤分類部分で 大 遠くや輪郭で 大 モンテカルロドロップアウト で計算可能
AI 27 Aleatoric Uncertainty Loss の解釈 モデルをマルチヘッドにして、平均値の他に分散値(対数分散)を予測 観測データ誤差が正規分布に従うと仮定して、 正規分布の尤度関数から負の対数尤度を導出。 数値安定化のためにモデル出力は対数分散を出力。
分類問題の場合は var mean encoder mean decoder var decoder :出力ピクセル数 :モンテカルロサンプリング回数
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を導入
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
AI 30 06 まとめ
AI 31 まとめと感想 特徴 感想 ハイパー パラメータ の数 Self-Adjusting Smooth
L1 Loss 回帰問題。外れ値にロバスト。 ハイパーパラメータを自動調整。 ハイパラチューニングが不要な点が利点。 1 Focal Loss 分類問題。推定が難しい事例に フォーカス。 よく使われており、実装もシンプルなので使いや すい。苦手な事例にフォーカスするアイディアは 回帰問題でも応用できそう。 1-2 Asymmetric Loss 分類問題。正例と負例の時で非対称 な損失。 非対称な点についてよりも、誤ラベルを無視でき るという点が面白い。 3-4 Aleatoric Uncertainty Loss 回帰問題と分類問題。 不確実性の定量化。 不確実性を考慮して自信が高い部分だけを出 すなど後処理で出力をコントロールできる点が 魅力。 0 損失関数のチューニングを評価するには、評価のコストがかかる(オンライン評価、 定性評価など)ことが多い。そのため、ハイパーパラメータの数は少ない方がいい