Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Leaky ReLU

Leaky ReLUは、負の入力に小さな傾き(多くの場合0.01)を適用するため、勾配が流れ続け、ReLUが不活性化する問題を回避できます。

Leaky ReLU(漏れのある正規化線形ユニット)は活性化関数の一種です。入力が正のときは入力をそのまま返し、負のときは0.01などの小さな固定傾きを掛けます。負の入力に対してゼロを出力する標準のReLUを変更し、負の値にも小さな出力を与えることで、より重要な点として誤差逆伝播中にゼロでない勾配を生み出します。Andrew Maas、Awni Hannun、Andrew Ngは2013年の音声認識音響モデルにおける整流活性化関数の研究でこの関数を説明し、傾きに0.01を使用しました。勾配の流れが重要なディープラーニングモデルで使われており、敵対的生成ネットワークの識別器、旧世代YOLOの物体検出器、区分線形活性化を使って量子化モデルを実行するニューラルプロセッシングユニットなどに採用されています。

Leaky ReLUの仕組み#

Leaky ReLUは、f(x) = xの場合にx > 0を、f(x) = αxの場合にx ≤ 0を計算します。負の傾きαは、0から1の範囲で固定するハイパーパラメーターです。導関数は正の入力に対して1、負の入力に対してαとなるため、すべての入力から、その入力を生成した重みに勾配の一部が戻ります。一般的な傾きは情報源やフレームワークによって異なります。PyTorchのnn.LeakyReLUのデフォルトは0.01、TensorFlowのtf.nn.leaky_reluは0.2、KerasのLeakyReLUレイヤーは0.3です。次のコードは、負の入力をReLUとLeaky ReLUに通し、それぞれの勾配を計算します。

import torch
from torch import nn

# Negative pre-activations, the inputs a ReLU unit turns into zeros
x = torch.tensor([-3.0, -1.0, -0.5], requires_grad=True)

for activation in (nn.ReLU(), nn.LeakyReLU(negative_slope=0.01)):
    y = activation(x)
    y.sum().backward()  # gradient that flows back toward the weights
    print(f"{activation}: output {y.detach().numpy()}, gradient {x.grad.numpy()}")
    x.grad = None

ReLU(): output [0. 0. 0.], gradient [0. 0. 0.]とLeakyReLU(negative_slope=0.01): output [-0.03 -0.01 -0.005], gradient [0.01 0.01 0.01]が出力されます。ReLUではこれらの入力から勾配が戻らないため、勾配降下法でそれらの入力を生成した重みを変更できません。一方、Leaky ReLUでは上流の勾配の1%が戻ります。

ReLUのニューロンが死ぬ問題#

学習データのすべての入力で事前活性化が負になるほど重みとバイアスが変化すると、ReLUニューロンは機能を失います。出力も勾配も常にゼロとなり、入力側の重みが更新されなくなるため、そのニューロンはニューラルネットワークから永久に失われます。学習率が高い場合や、バイアスが大きく負方向に更新された場合に、この問題が起きやすくなります。Leaky ReLUは負の側にも小さな勾配を保つため、負の領域に移動したニューロンを引き戻すことができます。

ReLUが機能を失う問題は、勾配消失問題とは異なります。勾配消失では、シグモイドやtanhなどの飽和関数を通過する際に、勾配が多くの層を経て徐々に小さくなります。

  • ReLU: 負の入力に対して厳密にゼロを出力します。これにより活性化がスパースになり計算が軽くなりますが、ニューロンが機能を失う可能性があります。Leaky ReLUは、どの入力にも勾配を与える代わりに、厳密なスパース性を失います。
  • Parametric ReLU(PReLU): 負の傾きを固定せずに学習し、通常はチャネルごとに1つの値を設定します。Kaiming Heらは傾きを0.25で初期化しました。これはPyTorchのnn.PReLUのデフォルト値でもあります。
  • SiLUとGELU: 負の入力に対してわずかにゼロを下回り、ゼロで鋭い折れ曲がりがない滑らかな曲線です。SiLUは最新のYOLOモデルでデフォルトとして使われ、GELUはTransformerでよく使われます。どちらも値ごとに指数関数の計算が必要ですが、Leaky ReLUは比較と乗算だけで済みます。

Leaky ReLUの用途#

  • DCGANの識別器: DCGANアーキテクチャでは、すべての識別器レイヤーに傾き0.2のLeaky ReLUを使用します。これにより、識別器が画像を拒否した場合でも生成器に有用な勾配が伝わります。その後の多くのGANでも、この選択が引き継がれています。
  • 初期のYOLO検出器: オリジナルのYOLOは、最終レイヤーを除くすべてのレイヤーに傾き0.1のLeaky ReLUを使っていました。YOLOv2とYOLOv3も同様です。YOLOv5では、2021年1月のv4.0リリースでSiLUに置き換えるまで使われていました。
  • グラフ注意ネットワーク: これらのグラフニューラルネットワークでは、各ノードが近傍ノードにどれだけ注意を向けるかをスコアリングする際に、傾き0.2のLeaky ReLUを適用します。
  • エッジAIアクセラレーター: 量子化モデルを実行する整数演算のニューラルプロセッシングユニットでは、区分線形活性化関数を先行する畳み込みに統合できます。AMDのXilinx DPUは、ReLUとLeaky ReLUについてこれを行いますが、シグモイド、つまりSiLUはホストCPU上で実行します。

Ultralytics YOLOのモデルYAMLファイルは、標準の畳み込みブロックすべてでデフォルトのSiLUを置き換えるactivationキーに対応しています。そのため、YOLO26をactivation: nn.LeakyReLU(0.1015625)で学習させ、DPUの固定傾きである26/256に合わせられます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう