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

Gated Recurrent Unit (GRU)

ゲート付き回帰ユニット(GRU)は、更新ゲートとリセットゲートによって記憶する情報を制御する回帰セルです。計算式、GRUとLSTMの比較、コードについて解説します。

ゲート付きリカレントユニット(GRU)は、系列を1ステップずつ処理するリカレントニューラルネットワーク(RNN)のセルです。更新ゲートとリセットゲートという2つの学習可能なゲートを使い、各ステップで記憶のどの部分を保持し、どの部分を上書きするかを決定します。Kyunghyun Cho氏らは2014年に、機械翻訳のためのRNNエンコーダー・デコーダーでGRUを提案しました。ゲートによって多数の時間ステップにわたって勾配が伝わるため、勾配消失が起きる単純なRNNよりも長距離の依存関係を学習できます。GRUは長短期記憶ネットワーク(LSTM)を簡略化したもので、隠れ状態は2つではなく1つ、重みブロックは4つではなく3つです。時系列分析、音声、その他の系列データに使用されます。

GRUの仕組み#

各時刻tで、GRUは現在の入力xₜと直前の隠れ状態hₜ₋₁を組み合わせます。2つのゲートはシグモイド関数を使い、状態の各要素について0から1までの値を出力します。

  • リセットゲート: rₜ = σ(Wᵣxₜ + Uᵣhₜ₋₁ + bᵣ)は、新しい内容を提案する際に直前の状態をどれだけ使うかを決定します。値が0に近いと、セルは過去の情報を無視できます。これは、新しいフレーズの始まりなどの境界で役立ちます。
  • 更新ゲート: zₜ = σ(W_z xₜ + U_z hₜ₋₁ + b_z)は、直前の状態をどれだけ保持するかを決定します。値が1に近いと、古い状態をほぼそのまま引き継ぎ、情報を長い範囲にわたって保持できます。
  • 候補状態: h̃ₜ = tanh(Wxₜ + U(rₜ ⊙ hₜ₋₁) + b)は、入力とリセットゲートでスケーリングした履歴から新しい内容を提案します。tanhを使い、値を−1から1の範囲に保ちます。
  • 新しい状態: hₜ = (1 − zₜ) ⊙ h̃ₜ + zₜ ⊙ hₜ₋₁は、候補状態と古い状態を要素ごとにブレンドします。

更新ゲートが1に近い値を保つと、新しい状態は古い状態のほぼコピーとなり、そのコピーを通じて勾配が逆向きに伝わり、減衰はごくわずかです。この加算経路は、LSTMのセル状態と同じ役割を果たします。上記の式は元の論文に従っており、zₜが古い状態に重みを付けます。文献によってはzₜと1 − zₜの役割を入れ替えていますが、同じセルを表します。PyTorchのnn.GRUも同じブレンドを使いますが、行列乗算の後にリセットゲートを適用し、rₜ ⊙ (Uhₜ₋₁ + b)とします。これは候補状態の広く使われる変形です。

PyTorchでのGRU#

次のコードは、特徴ベクトルの系列(動画のフレームごとの特徴量など)にGRUを適用し、同じ幅のLSTMとモデルサイズを比較します。

import torch
from torch import nn

# A sequence of 64-dim features from 5 video frames: (batch, time, features)
frames = torch.randn(1, 5, 64)

# A GRU with a 128-dim hidden state, and an LSTM of the same size for comparison
gru = nn.GRU(input_size=64, hidden_size=128, batch_first=True)
lstm = nn.LSTM(input_size=64, hidden_size=128, batch_first=True)

# outputs holds the hidden state at every step; h_n is the final state
outputs, h_n = gru(frames)
print(f"Outputs: {tuple(outputs.shape)}, final state: {tuple(h_n.shape)}")

# GRU weights cover 3 blocks (reset, update, candidate); LSTM weights cover 4
gru_params = sum(p.numel() for p in gru.parameters())
lstm_params = sum(p.numel() for p in lstm.parameters())
print(f"GRU: {gru_params:,} parameters, LSTM: {lstm_params:,} parameters")

Outputs: (1, 5, 128), final state: (1, 1, 128)とGRU: 74,496 parameters, LSTM: 99,328 parametersが出力されます。GRUはフレームごとに128次元の状態と最終状態を返します。最終状態は系列全体を要約し、後段の分類器で利用できます。また、必要なパラメーター数はLSTMのちょうど4分の3です。

GRU、LSTM、Transformerの比較#

  • LSTM: 隠れ状態に加えて独立したセル状態を保持し、入力、忘却、出力の3つのゲートを使います。GRUは2つの状態を統合し、出力ゲートを省くため、パラメーター数が少なく、1ステップあたりの学習が速くなります。Junyoung Chung氏らが2014年に行った実証比較では、多声音楽や音声信号のモデル化でGRUはLSTMと同等でした。実際には、タスクを問わず一方が常に優れているわけではありません。
  • 単純なRNN: ゲートを使わず、各ステップで状態全体を上書きします。そのため、長い系列では勾配が消失または爆発し、長い間隔で隔てられたイベントを関連付けるのが困難です。
  • Transformer: アテンションを使い、系列のすべての位置を並列に処理します。GPUでの学習がはるかに速く、長距離のコンテキストもより適切に扱えるため、ほとんどの言語タスクでリカレントネットワークに取って代わりました。GRUは系列の長さによらず状態サイズが一定で、1ステップあたりの計算コストも一定です。そのため、ストリーミング音声、センサーデータ、小型デバイスに適しています。

用途#

  • オプティカルフロー: ECCV 2020の最優秀論文賞を受賞したRAFTは、畳み込みGRUを使い、多数の反復を通じてフロー推定を改良します。畳み込みGRUは、行列乗算を畳み込みに置き換えたGRUであり、状態は特徴マップになります。
  • 予知保全と予測: GRUは振動、温度、需要のデータストリームを読み込み、故障や将来の値を予測します。小型モデルが重要となる組み込みハードウェアで使われることもよくあります。
  • 音声: デバイス上で動作する音声モデルは、少量の固定メモリで音声をフレームごとに処理できるため、GRUを使用します。ノイズ抑制器のRNNoiseは、一般的なCPU上でGRUレイヤーをリアルタイムに実行します。
  • 行動認識: GRUはフレームごとの特徴量またはキーポイントの系列を読み取り、動画クリップの行動ラベルを出力します。トラッキングモードのYOLO26は、フレームをまたいで人物ごとに一貫したIDを割り当てます。これによって得られる人物ごとのバウンディングボックス系列やポーズキーポイント系列を、GRUで分類できます。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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