Ultralytics YOLO27: Bekleme listesine katıl.
YOLO'yu lisansla
Ultralytics Sözlüğüne dön

Recurrent Neural Network (RNN)

Tekrarlayan sinir ağı (RNN), bir diziyi adım adım okur ve gizli durumu sonraki adıma taşır. Tekrarlama yapısı, eğitim, çeşitleri ve kod örneği.

Tekrarlayan sinir ağı (RNN), her seferinde bir öğeyi işlerken her adımdan gizli durumu sonraki adıma taşıyan bir sinir ağıdır. Böylece herhangi bir adımdaki çıktısı, o ana kadar okuduğu her şeye bağlı olabilir. Aynı ağırlıklar her adımda uygulanır; bu sayede tek bir ağ, bir cümleden saatler süren sensör okumalarına kadar her uzunluktaki diziyi işleyebilir. 2010'ların sonlarında Transformer'lar çoğu dil görevinde RNN'lerin yerini alana kadar RNN'ler, doğal dil işlemenin (NLP), konuşma tanımanın ve zaman serisi analizinin temel mimarisiydi. Kapılı varyantları, gerçek zamanlı akışta ve cihaz üzerinde çalışan modellerde hâlâ yaygındır. Tekrarlama, Mamba gibi durum uzayı modelleriyle (SSMs) yeniden gündeme geldi.

RNN Nasıl Çalışır?#

Jeffrey Elman'ın 1990 tarihli makalesinden sonra Elman ağı olarak da adlandırılan basit bir RNN, gizli durumunu hₜ = tanh(Wxₜ + Uhₜ₋₁ + b) şeklinde günceller ve her adımda yₜ = Vhₜ + c çıktısını üretebilir. Gizli durum, o ana kadarki diziyi özetleyen sabit boyutlu bir vektördür; tanh, geri beslenirken değerlerini −1 ile 1 arasında tutar. Her adımda ağın bir kopyası çizildiğinde döngü, katmanları aynı ağırlıkları paylaşan bir derin ileri beslemeli ağa açılır:

Aşağıdaki kod parçası, bir dizi üzerinde PyTorch'un nn.RNN yapısını çalıştırır ve aynı tekrarlamayı basit bir döngüde yineler:

import torch
from torch import nn

torch.manual_seed(0)
rnn = nn.RNN(input_size=3, hidden_size=4, batch_first=True)
x = torch.randn(1, 6, 3)  # one sequence: 6 time steps, 3 features each

# PyTorch runs the whole sequence; output holds the hidden state after every step
output, h_n = rnn(x)

# The same recurrence by hand, reusing one set of weights at every step
h = torch.zeros(1, 4)
for t in range(x.shape[1]):
    h = torch.tanh(x[:, t] @ rnn.weight_ih_l0.T + rnn.bias_ih_l0 + h @ rnn.weight_hh_l0.T + rnn.bias_hh_l0)

print(f"Output shape: {tuple(output.shape)}, final state shape: {tuple(h_n.shape)}")
print(f"Hand-written loop matches nn.RNN: {torch.allclose(h, h_n[0], atol=1e-6)}")

Output shape: (1, 6, 4), final state shape: (1, 1, 4) ve Hand-written loop matches nn.RNN: True çıktısını verir. Çıktı, her zaman adımı için 4 boyutlu bir gizli durum içerir. Döngü, yalnızca biri girdi, diğeri önceki durum için olan iki ağırlık matrisiyle son durumu yeniden üretir.

Dizi Görevleri#

Aynı tekrarlama, girdi ve çıktı uzunlukları farklı olan görevlere uyar:

  • Çoktan teke: Dizinin tamamını oku ve duygu analizi ya da bir sensör verisi penceresini etiketleme görevlerinde olduğu gibi son durumdan sınıflandır.
  • Çoktan çoğa: Bir cümlenin her sözcüğünü veya sesin her karesini etiketlemek gibi, her adımda bir çıktı üret.
  • Diziden diziye: Bir kodlayıcı RNN girdiyi okur, bir kod çözücü RNN ise farklı uzunlukta bir çıktı üretir. Bu, ilk sinirsel makine çevirisi sistemlerinin ve diğer diziden diziye modellerin tasarımıdır.
  • Tekten çoğa: İlk görüntü açıklama modellerinde bir görüntünün özellik vektöründen açıklama üretmek gibi, tek bir girdiden bir dizi oluştur.

Çift yönlü RNN'ler, diziyi geriye doğru okuyan ikinci bir RNN ekler ve her adımda iki durumu birleştirir; böylece her çıktı geçmiş ve gelecek bağlamı görür. Yığınlanmış RNN'ler, bir katmanın gizli durumlarını girdi dizisi olarak sonraki katmana aktarır.

Zaman Boyunca Geri Yayılımla Eğitim#

RNN'ler, zaman boyunca geri yayılımla (BPTT) eğitilir: Ağ dizi boyunca açılır, adımlar üzerindeki kayıp toplanır ve geri yayılım açılmış hesaplama grafiğinde çalışır. T adımından t adımına ulaşan gradyan, tekrarlayan katmanın T − t kopyasından geçer ve her seferinde U ile tanh'ın türeviyle çarpılır. Bu çarpanlar çoğunlukla 1'den küçük olduğunda gradyan geometrik olarak küçülür. Yoshua Bengio, Patrice Simard ve Paolo Frasconi'nın 1994'te incelediği bu sorun, kaybolan gradyan problemidir. Çarpanlar 1'den büyük olduğunda ise gradyan geometrik olarak büyür ve patlayan gradyan sorunu ortaya çıkar. Aşağıdaki kod parçası, 50 adımlı bir dizideki her girdinin son gizli durumu ne ölçüde etkilediğini ölçer:

import torch
from torch import nn

torch.manual_seed(0)
rnn = nn.RNN(input_size=8, hidden_size=32, batch_first=True)
x = torch.randn(1, 50, 8, requires_grad=True)  # one 50-step sequence

# Backpropagate from the final hidden state to the input at every step
output, h_n = rnn(x)
h_n.sum().backward()
grad_norms = x.grad[0].norm(dim=1)

for distance in [0, 10, 20, 30, 40]:
    print(f"Input {distance:>2} steps before the end: gradient {grad_norms[-1 - distance]:.1e}")

Bitişten önce 0, 10, 20, 30 ve 40 adım için 1.6e+00, 3.4e-03, 6.2e-06, 1.2e-08 ve 1.1e-11 gradyanlarını yazdırır. Her on adımda gradyanlar yaklaşık üç büyüklük mertebesi azalır; bu nedenle eğitim, birkaç düzine adım önceki bir girdiyi kullanacak şekilde ağırlıkları zar zor ayarlayabilir. 2013'te Razvan Pascanu ve çalışma arkadaşlarının RNN'ler için incelediği gradyan kırpma, patlayan gradyanları sınırlar; kesilmiş BPTT ise belleği sınırlamak için geri yayılımı sabit bir pencereyle kısıtlar. Kaybolan gradyanlar mimari değişikliği gerektirir; LSTM ve GRU kapılarının sağladığı da budur.

  • LSTM ve GRU: Bilginin ve gradyanların birçok adımdan geçmesini sağlayan toplamsal durum güncellemesine sahip, kapılı RNN'lerdir. Uygulamada "RNN" çoğu zaman basit RNN'nin yanı sıra bunlardan birini de ifade eder.
  • Transformer: Geçmişi tek bir durumda sıkıştırmak yerine önceki tüm konumlara doğrudan dikkat eder ve tüm konumlarda paralel eğitim yapar. Dikkat maliyeti dizi uzunluğuyla artarken RNN, her yeni adımda aynı hesaplama ve bellek miktarını kullanır.
  • Evrişimli sinir ağı (CNN): Görüntülerde uzam boyunca veya 1B evrişimlerle zaman boyunca sabit boyutlu filtreler kullanarak yakındaki konumları birleştirir; alıcı alanı ise derinliğine bağlıdır.
  • Durum uzayı modelleri: Mamba gibi doğrusal yinelemeler, tarama işlemiyle paralel olarak eğitilir ve çıkarım sırasında bir RNN gibi adım adım çalışır. Sıvı sinir ağları, nöronları diferansiyel denklemleri izleyen sürekli zamanlı RNN'lerdir.

Uygulamalar#

  • Klavye tahmini: Gboard'un sonraki kelime modeli, daha hafif bir LSTM çeşidi olan, bağlı giriş-unutma kapılı bir LSTM'ydi; kullanıcıların telefonlarında federatif öğrenme ile eğitildi ve Google araştırmacıları bunu 2018'de açıkladı.
  • Talep tahmini: Amazon'un DeepAR modeli, birbiriyle ilişkili çok sayıda zaman serisi üzerinde tek bir otoregresif RNN eğitir ve gelecekteki her değer için bir olasılık dağılımı üretir.
  • Akış sesi: Uyandırma sözcüğü algılayıcıları ve gürültü bastırıcılar sesi kare kare işleyen küçük yinelemeli katmanlar kullanır; böylece telefonlarda ve kulaklıklarda bellek ve gecikme sabit kalır.
  • Nesne takibi: Bir izleyici, RNN'nin gizli durumunun üstlendiği role benzer biçimde, her nesnenin durumunu bir kareden diğerine taşır. YOLO26 izleme modunda yerleşik tüm izleyiciler, ByteTrack ve BoT-SORT'tan varsayılan TrackTrack'e kadar, bu durumu öğrenilmiş ağırlıklar yerine elle belirlenmiş sabit hız denklemlerini kullanan doğrusal bir yineleme olan Kalman filtresi ile günceller.

Çözümleri keşfet

Sporda bilgisayarlı görü

Sporda bilgisayarlı görü

Ultralytics YOLO'nun oyuncu ve top takibi, performans analitiği, antrenörlük içgörüleri ve sporcu rehabilitasyonuyla spor alanında görsel yapay zekâyı nasıl güçlendirdiğini keşfet.
Daha fazla bilgi edin
Hava görüntüleri için bilgisayarlı görü

Hava görüntüleri için bilgisayarlı görü

İHA ve hava görüntülerini Ultralytics YOLO ile tarım, su ürünleri yetiştiriciliği, koruma çalışmaları ve jeo-uzamsal analiz için gerçek zamanlı içgörülere dönüştür.
Daha fazla bilgi edin
Havacılıkta bilgisayarlı görü

Havacılıkta bilgisayarlı görü

Uçak denetimi, pistteki yabancı madde tespiti, havaalanı yer operasyonları ve kompozit malzeme kusurlarının tespiti için Ultralytics YOLO ile havacılık ve uzay sektöründe bilgisayarlı görü uygula.
Daha fazla bilgi edin
Güvenlikte bilgisayarlı görü

Güvenlikte bilgisayarlı görü

Ultralytics YOLO modelleriyle her sahayı koru. Görsel yapay zekâ; çevre izleme, tehdit tespiti, plaka tanıma ve iş yeri güvenliğini destekler.
Daha fazla bilgi edin
Robotikte bilgisayarlı görü

Robotikte bilgisayarlı görü

Ultralytics YOLO modelleriyle daha akıllı makinelere güç ver. Robotikte görsel yapay zekâ; otonom navigasyonu, algılamayı, nesne takibini ve gerçek zamanlı kontrolü destekler.
Daha fazla bilgi edin
Lojistikte bilgisayarlı görü

Lojistikte bilgisayarlı görü

Ultralytics YOLO modelleriyle lojistiği kolaylaştır. Görüntü yapay zekâsı; paket denetimini, ayrıştırmayı, araç takibini ve gerçek zamanlı depo güvenliği izlemeyi mümkün kılar.
Daha fazla bilgi edin
Perakendede bilgisayarlı görü

Perakendede bilgisayarlı görü

Ultralytics YOLO modelleriyle perakendeyi yeniden tasarla. Görüntü yapay zekâsı; envanter takibini, raf izlemeyi, kuyruk yönetimini ve daha kapsamlı müşteri analizlerini mümkün kılar.
Daha fazla bilgi edin
Sağlık hizmetlerinde bilgisayarlı görü

Sağlık hizmetlerinde bilgisayarlı görü

Ultralytics YOLO modelleriyle sağlık çözümleri geliştir. Sağlık hizmetlerinde görüntü yapay zekâsı; daha hızlı tıbbi görüntüleme, daha akıllı tanı ve hasta takibini mümkün kılar.
Daha fazla bilgi edin
Üretimde bilgisayarlı görü

Üretimde bilgisayarlı görü

Ultralytics YOLO modelleriyle üretimi optimize et. Görsel yapay zekâ; kalite kontrolünü, kusur tespitini, kişisel koruyucu donanım uyumunu ve montaj hattı otomasyonunu destekler.
Daha fazla bilgi edin
Otomotivde bilgisayarlı görü

Otomotivde bilgisayarlı görü

Ultralytics YOLO modelleriyle otomotivde bilgisayarlı görüden yararlan. Görsel yapay zekâ; daha akıllı yollar için yol güvenliğini, sürüş desteğini ve araç otomasyonunu ileri taşır.
Daha fazla bilgi edin
Tarımda bilgisayarlı görü

Tarımda bilgisayarlı görü

Ultralytics YOLO modelleriyle akıllı tarıma görüntü yapay zekâsı kazandır. Daha yüksek ve akıllı verim için mahsul izleme, hayvan takibi ve hassas tarımı destekle.
Daha fazla bilgi edin

Geleceğin yapay zekasını birlikte inşa edelim!

Makine öğreniminin geleceğine yolculuğuna başla