AI・機械学習
上級

LLMフォーカル損失(エルエルエムフォーカルソンシツ)

簡単なサンプルの損失を減衰させ、困難なサンプルに学習を集中させる改良型交差エントロピー損失。クラス不均衡問題に効果的。

0 回閲覧
0 いいね

LLMフォーカル損失とは

フォーカル損失(Focal Loss)は、2017年にFacebook AI Research(現Meta AI)のLin et al.が物体検出タスク(RetinaNet)のために提案した損失関数である。交差エントロピー損失に (1 - p_t)^γ という変調項を掛けることで、モデルが既に高い確信度で正解しているサンプル(簡単なサンプル)の損失寄与を自動的に抑制し、確信度の低い困難なサンプルに学習リソースを集中させる。

FL(p_t) = -α_t (1 - p_t)^γ log(p_t)

ここで γ はフォーカシングパラメータ(通常 γ=2)、α_t はクラスバランシング重みである。

LLMでの応用

クラス不均衡への対処

自然言語の語彙分布はZipf則に従い、上位1%のトークンが全出現の50%以上を占める。標準的な交差エントロピー損失では、頻出トークン(the, a, is等)の予測精度向上に学習が偏り、低頻度の専門用語や固有名詞の学習が不十分になる。フォーカル損失はこの不均衡を自動的に緩和する。

トークン分類タスクでの効果

タスク標準CE F1Focal Loss F1γ値改善幅
固有表現認識(NER)91.293.42.0+2.2
品詞タグ付け(POS)97.197.31.0+0.2
感情分析(3クラス)86.588.72.0+2.2
意図分類(50クラス)78.382.13.0+3.8
コード生成(CodeLlama)68.069.81.5+1.8

クラス数が多く不均衡が激しいタスクほどフォーカル損失の効果が大きい。

γ パラメータの影響

γ値挙動推奨用途
0標準的な交差エントロピーと同一ベースライン比較
0.5穏やかなフォーカシング軽度の不均衡
1.0中程度のフォーカシング一般的なNLPタスク
2.0強いフォーカシング(論文推奨)重度の不均衡・NER
5.0極端なフォーカシングほぼ外れ値のみに集中・過学習注意

γ=2 が最も汎用的に使われるが、LLMの事前学習ではγ=0.5〜1.0の控えめな値が安定する傾向がある。

派生と関連手法

Poly-1 Focal Loss

Google Research(2022年)が提案。フォーカル損失の多項式展開の第1項を調整することで、追加のハイパーパラメータ1つ(ε_1)で性能を改善する。ImageNetでの実験ではフォーカル損失を+0.3%上回った。

Class-Balanced Focal Loss

クラスの有効サンプル数(effective number of samples)に基づいてα_tを自動計算する手法。ロングテール分布のクラスに対して特に有効で、手動でのα調整が不要になる。

Dice Loss + Focal Loss

セグメンテーションタスクで使われるDice Lossとフォーカル損失を組み合わせた手法。トークン分類(NER等)にも転用されている。

実装上の注意点

数値安定性

(1 - p_t)^γ の計算で p_t ≈ 1 のとき浮動小数点精度の問題が生じる。PyTorch の torch.clamp で下限を設定するか、log-sum-exp トリックで安定化する必要がある。

学習率の調整

フォーカル損失は損失値の絶対値が標準CEより小さくなるため、学習率を1.5〜3倍に引き上げる必要がある場合がある。AdamWのweight decayも合わせて調整が推奨される。

FAQ

Q1: LLMの事前学習にフォーカル損失は使える?

技術的には可能だが、事前学習は膨大なデータで均等に学習するため効果が限定的。ファインチューニングやタスク特化学習で真価を発揮する。

Q2: γ の最適値はどう決める?

検証セットでグリッドサーチ(0.5, 1.0, 2.0, 3.0, 5.0)するのが標準。不均衡度が高いほどγを大きくする。

Q3: αとγの両方を調整する必要がある?

αはクラス重み、γはサンプル難易度の調整で役割が異なる。両方を使う場合は交互に最適化するのが実用的。