Gated Recurrent Unit (GRU)
Kapılı tekrarlayan birim (GRU), güncelleme ve sıfırlama kapılarının neyin hatırlanacağını belirlediği tekrarlayan bir hücredir. Denklemleri, GRU ile LSTM karşılaştırması ve kod ele alınır.
Kapılı yinelenen birim (GRU), bir diziyi her seferinde bir adım işleyen ve her adımda belleğinin ne kadarını koruyup ne kadarının üzerine yazacağına karar vermek için güncelleme kapısı ve sıfırlama kapısı olmak üzere iki öğrenilmiş kapı kullanan bir yinelenen sinir ağı (RNN) hücresidir. Kyunghyun Cho ve çalışma arkadaşları, GRU'yu 2014'te makine çevirisi için bir RNN kodlayıcı-kod çözücü makalesinde tanıttı. Kapılar, gradyanların birçok zaman adımı boyunca akmasını sağlar; böylece GRU, kaybolan gradyan sorunundan etkilenen basit bir RNN'den daha uzun erimli bağımlılıkları öğrenir. GRU, uzun kısa süreli bellek (LSTM) ağının basitleştirilmiş bir akrabasıdır; iki yerine tek bir gizli duruma, dört yerine üç ağırlık bloğuna sahiptir ve zaman serisi analizinde, konuşmada ve diğer sıralı verilerde kullanılır.
GRU Nasıl Çalışır#
Her t zaman adımında GRU, mevcut xₜ girdisini önceki gizli durumu hₜ₋₁ ile birleştirir. İki kapı, durumun her öğesi için 0 ile 1 arasında değerler üretmek üzere sigmoid fonksiyonunu kullanır:
- Sıfırlama kapısı: rₜ = σ(Wᵣxₜ + Uᵣhₜ₋₁ + bᵣ), yeni içerik önerirken önceki durumun ne kadarının kullanılacağına karar verir. 0'a yakın değerler, hücrenin geçmişini yok saymasına olanak tanır; bu, yeni bir ifadenin başlangıcı gibi sınırlarda faydalıdır.
- Güncelleme kapısı: zₜ = σ(W_z xₜ + U_z hₜ₋₁ + b_z), önceki durumun ne kadarının korunacağına karar verir. 1'e yakın değerler eski durumu neredeyse hiç değiştirmeden ileri taşır; bilgilerin uzun diziler boyunca korunma yöntemi budur.
- Aday durum: h̃ₜ = tanh(Wxₜ + U(rₜ ⊙ hₜ₋₁) + b), girdiden ve sıfırlama ölçeği uygulanmış geçmişten yeni içerik önerir; değerleri −1 ile 1 arasında tutmak için tanh kullanır.
- Yeni durum: hₜ = (1 − zₜ) ⊙ h̃ₜ + zₜ ⊙ hₜ₋₁, aday durumu eski durumla öğe öğe harmanlar.
Güncelleme kapısı 1'e yakın kaldığında yeni durum, eski durumun neredeyse aynısı olur ve gradyan bu kopyadan çok az azalarak geri geçer. Bu toplamsal yol, LSTM'deki hücre durumuyla aynı işlevi görür. Yukarıdaki denklemler, zₜ'nin eski duruma ağırlık verdiği özgün makaleyi temel alır; bazı metinlerde zₜ ile 1 − zₜ'nin rolleri değiştirilir, ancak bu aynı hücreyi tanımlar. PyTorch nn.GRU aynı harmanlamayı kullanır, ancak sıfırlama kapısını matris çarpımından sonra rₜ ⊙ (Uhₜ₋₁ + b) olarak uygular. Bu, aday durumun yaygın bir çeşididir.
PyTorch'ta GRU#
Aşağıdaki kod parçacığı, özellik vektörleri dizisi (örneğin bir videonun kare başına özellikleri) üzerinde GRU çalıştırır ve boyutunu aynı genişliğe sahip bir LSTM ile karşılaştırır:
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) ve GRU: 74,496 parameters, LSTM: 99,328 parameters çıktısını verir. GRU, kare başına 128 boyutlu bir durumun yanı sıra tüm diziyi özetleyen ve sonraki sınıflandırıcıya aktarılan son durumu döndürür; ayrıca bir LSTM'nin parametrelerinin tam olarak dörtte üçünü gerektirir.
GRU, LSTM ve Transformer Karşılaştırması#
- LSTM: Gizli durumun yanı sıra ayrı bir hücre durumu tutar ve girdi, unutma ve çıktı olmak üzere üç kapı kullanır. GRU iki durumu birleştirip çıktı kapısını kaldırır; bu nedenle her adımda daha az parametreyle daha hızlı eğitilir. Junyoung Chung ve çalışma arkadaşlarının 2014'teki deneysel karşılaştırmasında GRU'lar, çok sesli müzik ve konuşma sinyali modellemede LSTM'lerle eşleşti; uygulamada ise hiçbir yöntem bütün görevlerde tutarlı biçimde üstün değildir.
- Basit RNN: Her adımda tüm durumunu kapı kullanmadan değiştirir; bu nedenle uzun dizilerde gradyanları kaybolur veya patlar ve uzun aralıklarla ayrılmış olayları ilişkilendirmekte zorlanır.
- Transformer: Dikkat mekanizmasıyla dizinin tüm konumlarını paralel işler; GPU'larda çok daha hızlı eğitilir ve uzun erimli bağlamı daha iyi işler. Bu nedenle Transformer'lar çoğu dil görevinde yinelenen ağların yerini aldı. GRU, dizinin uzunluğundan bağımsız olarak sabit boyutlu bir durum ve adım başına sabit maliyet kullanır; bu özelliğiyle akış hâlindeki ses, sensör verileri ve küçük cihazlar için hâlâ uygundur.
Uygulamalar#
- Optik akış: ECCV 2020 en iyi makale ödülünü kazanan RAFT, akış tahminini evrişimli bir GRU ile birçok iterasyon boyunca iyileştirir. Bu GRU'da matris çarpımlarının yerini evrişimler alır; böylece durumu bir özellik haritası olur.
- Kestirimci bakım ve tahmin: GRU'lar titreşim, sıcaklık veya talep verisi akışlarını okur ve özellikle küçük bir modelin önemli olduğu gömülü donanımlarda arızaları ya da gelecekteki değerleri tahmin eder.
- Konuşma ve ses: Cihaz üzerinde çalışan ses modelleri, sesi kare kare ve küçük, sabit bir bellekle işledikleri için GRU kullanır. RNNoise gürültü bastırıcı, GRU katmanlarını sıradan bir CPU'da gerçek zamanlı çalıştırır.
- Eylem tanıma: GRU, kare başına özellik veya anahtar nokta dizisini okur ve klip için bir eylem etiketi üretir. İzleme modundaki YOLO26, kareler boyunca her kişiye kalıcı bir kimlik atar; böylece GRU'nun sınıflandırdığı, kişi başına kutu veya poz anahtar noktası dizileri elde edilir.










