Yolo Vision Shenzhen
Shenzhen
Şimdi katılın
Sözlük

Tekrarlayan Sinir Ağı (RNN)

Tekrarlayan Sinir Ağları'nın (RNN) bellek kullanarak sıralı verileri nasıl işlediğini keşfedin. RNN mimarileri, NLP uygulamaları ve PyTorch hakkında bilgi edinin.

Tekrarlayan Sinir Ağı (RNN), metin, genom, el yazısı veya konuşulan kelimeler gibi veri dizilerindeki kalıpları tanımak için özel olarak tasarlanmış bir tür yapay sinir ağıdır. Tüm girdilerin (ve çıktıların) birbirinden bağımsız olduğunu varsayan geleneksel ileri beslemeli ağların aksine, RNN'ler bir tür bellek barındırır. Bu iç bellek, önceki bilgileri anlayarak girdileri işlemelerine olanak tanır ve bu da onları bağlam ve zamansal sıranın kritik olduğu görevler için benzersiz bir şekilde uygun hale getirir. Bu mimari, insanların bilgileri işleme şeklini taklit eder — örneğin, bir cümleyi okumak, mevcut kelimeyi anlamak için önceki kelimeleri hatırlamayı gerektirir.

RNN'ler Nasıl Çalışır?

RNN'nin temel yeniliği, döngü yapısıdır. Standart bir ileri beslemeli ağda, bilgi yalnızca tek yönde akar: girişten çıkışa. Buna karşılık, RNN'de bilginin kalıcı olmasını sağlayan bir geri besleme döngüsü vardır. Ağ bir diziyi işlerken, ağın kısa süreli belleği görevi gören bir vektör olan "gizli durum"u korur. Her zaman adımında, RNN mevcut girişi ve önceki gizli durumu alır ve bir çıktı üretir ve bir sonraki adım için gizli durumu günceller.

Bu sıralı işleme yeteneği, Doğal Dil İşleme (NLP) ve zaman serisi analizi için çok önemlidir. Ancak, standart RNN'ler, kaybolan gradyan sorunu nedeniyle uzun dizilerle sık sık zorlanırlar. Bu sorun, dizi uzadıkça ağın önceki girdileri unutmasına neden olur. Bu sınırlama, daha uzun süreler boyunca bilgi akışını daha iyi düzenleyen mekanizmalar getiren Uzun Kısa Süreli Bellek (LSTM) ağları ve Kapılı Tekrarlayan Birimler (GRU'lar) gibi daha gelişmiş varyantların geliştirilmesine yol açmıştır.

Gerçek Dünya Uygulamaları

Tekrarlayan Sinir Ağları, makinelerin sıralı verileri anlamasını sağlayarak birçok endüstriyi dönüştürmüştür. İşte iki önemli örnek:

  1. Makine Çevirisi: Google gibi hizmetler, başlangıçta bir dilden diğerine metin dönüştürmek için büyük ölçüde RNN tabanlı mimarlara (özellikle sıra-sıra modellerine) dayanıyordu. Ağ, tüm girdi cümlesini (örneğin English) okur ve bir bağlam vektörü oluşturur, ardından bu vektörü kullanarak çevrilmiş çıktıyı (örneğin Fransızca) kelime kelime oluşturur ve gramer tutarlılığını sağlar.
  2. Tahmin Edici Yazma ve Otomatik Düzeltme: Akıllı telefonda yazarken, klavye bir sonraki olası kelimeyi önerir. Bu genellikle RNN'lerle eğitilmiş bir dil modeli tarafından desteklenir. Model, daha önce yazdığınız kelimelerin sırasını analiz ederek en olası bir sonraki kelimeyi tahmin eder ve böylece kullanıcının hızını ve doğruluğunu artırır. Benzer bir mantık konuşulan sesi metne dönüştüren konuşma tanıma sistemleri için de geçerlidir.

RNN'ler ile CNN'ler ve Dönüştürücüler

RNN'leri diğer önemli mimarilerden ayırmak faydalıdır. Convolutional Neural Network (CNN) öncelikle görüntüler gibi uzamsal veriler için tasarlanmıştır ve şekilleri ve nesneleri tanımlamak için piksel ızgaralarını işler. Örneğin, Ultralytics , gerçek zamanlı nesne algılama için güçlü bir CNN backbone kullanır. CNN, "bu görüntüde ne var?" sorusunda üstünlük sağlarken, RNN "bu videoda sonra ne olacak?" sorusunda üstünlük sağlar.

Daha yakın zamanda, Transformer mimarisi birçok karmaşık NLP görevi için RNN'lerin yerini büyük ölçüde almıştır. Transformer'lar, tüm dizileri sıralı olarak değil paralel olarak işlemek için bir dikkat mekanizması kullanır. Ancak, RNN'ler belirli düşük gecikmeli, kaynak kısıtlı akış uygulamaları için oldukça verimli olmaya devam etmekte ve basit zaman serisi tahminleri için uç cihazlara daha kolay uygulanabilmektedir.

PyTorch Örneği

Modern bilgisayar görme görevleri genellikle CNN'lere dayanırken, hibrit modeller video karelerinden çıkarılan zamansal özellikleri analiz etmek için RNN'leri kullanabilir. Aşağıda, PyTorch'u kullanan basit ve çalıştırılabilir bir örnek bulunmaktadır. PyTorch kullanılarak bir veri dizisini işleyen temel bir RNN katmanı oluşturmak için basit, çalıştırılabilir bir örnek verilmiştir. .

import torch
import torch.nn as nn

# Define a basic RNN layer
# input_size: number of features in the input (e.g., 10 features per time step)
# hidden_size: number of features in the hidden state (memory)
# batch_first: input shape will be (batch, seq, feature)
rnn = nn.RNN(input_size=10, hidden_size=20, num_layers=1, batch_first=True)

# Create a dummy input: Batch size 1, Sequence length 5, Features 10
input_seq = torch.randn(1, 5, 10)

# Forward pass through the RNN
# output contains the hidden state for every time step
# hn contains the final hidden state
output, hn = rnn(input_seq)

print(f"Output shape: {output.shape}")  # Expected: torch.Size([1, 5, 20])
print(f"Final hidden state shape: {hn.shape}")  # Expected: torch.Size([1, 1, 20])

Zorluklar ve Geleceğe Bakış

Faydalarına rağmen, RNN'ler hesaplama engelleriyle karşı karşıyadır. Sıralı işleme, paralelleştirmeyi engeller ve GPU'lardaki Transformer'lara kıyasla eğitimi yavaşlatır. Ayrıca, patlayan gradyan sorununu yönetmek, dikkatli hiperparametre ayarlaması ve gradyan kırpma gibi teknikler gerektirir.

Bununla birlikte, RNN'ler Derin Öğrenme (DL) alanında temel bir kavram olmaya devam etmektedir. Yapay Zeka (AI) alanındaki gelişmeleri anlamak için vazgeçilmez bir rol oynarlar ve IoT sensörleri için basit anormallik tespit sistemlerinde hala yaygın olarak kullanılmaktadırlar. Görüntü modellerini sekans tahmincileriyle birleştirme gibi karmaşık süreçler geliştiren geliştiriciler için veri setlerini yönetmek ve eğitim iş akışlarını yönetmek çok önemlidir. Ultralytics , bu süreci basitleştirerek, verileri yönetmek ve modelleri çeşitli ortamlarda verimli bir şekilde dağıtmak için araçlar sunar.

Ultralytics topluluğuna katılın

Yapay zekanın geleceğine katılın. Küresel yenilikçilerle bağlantı kurun, işbirliği yapın ve birlikte büyüyün

Şimdi katılın