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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
fumihiko takahashi
June 17, 2024
Technology
5k
16
Share
明日使えるかもしれないLoss Functionsのアイディアと実装
特徴的な損失関数(Loss Functions)についてそのアイディアとPyTorchの実装を紹介。
fumihiko takahashi
June 17, 2024
More Decks by fumihiko takahashi
See All by fumihiko takahashi
学習データって増やせばいいんですか?
ftakahashi
3
710
Active Learning の基礎と最近の研究
ftakahashi
0
62
単一の深層学習モデルによる不確実性の定量化の紹介 ~その予測結果正しいですか?~
ftakahashi
3
1.1k
時系列予測にTransformerは有効か?
ftakahashi
3
630
SIGSPATIAL2020 参加報告
ftakahashi
3
900
ドライブレコーダーの映像で Scene Text Recognitionする
ftakahashi
0
1.2k
ドライブレコーダーの Scene Text Recognitionにおける Multi-task Learning
ftakahashi
1
3.3k
JapanTaxi R&Dの取り組み事例
ftakahashi
0
140
jsai2019.pdf
ftakahashi
0
460
Other Decks in Technology
See All in Technology
JEDAI in Osaka 2026イントロ
taka_aki
0
260
マルチプロダクトの信頼性を効率良く保っていくために
kworkdev
PRO
0
120
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
1
330
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
400
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
16k
非エンジニア職からZOZOへ 〜登壇がキャリアに与えた影響〜
penpeen
0
500
職能の壁を取り払った先で見えた壁 -AI時代のクロスファンクショナル組織-
shimotaroo
1
110
レビューしきれない?それは「全て人力でのレビュー」だからではないでしょうか
amixedcolor
0
280
最近の技術系の話題で気になったもの色々(IoT系以外も) / IoTLT 花見予定会(たぶんBBQ) @都立潮風公園バーベキュー広場
you
PRO
1
210
Amazon S3 Filesについて
yama3133
2
180
システムは「動く」だけでは 足りない - 非機能要件・分散システム・トレードオフの基礎
nwiizo
29
9.4k
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
320
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
330
Navigating Weather and Climate Data
rabernat
0
170
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
320
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Odyssey Design
rkendrick25
PRO
2
570
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 損失関数のチューニングを評価するには、評価のコストがかかる(オンライン評価、 定性評価など)ことが多い。そのため、ハイパーパラメータの数は少ない方がいい