Blog

RNN'lerde Bellek Sorununa Çözüm: Matris Ortogonalleştirme

Alper Kocan 01 July 2026 18 görüntülenme

Selamlar, ben Alper. Bugün biraz derin öğrenmenin (Deep Learning) mutfağına gireceğiz ve özellikle zaman serileriyle uğraşanların baş belası olan "hafıza" sorununa odaklanacağız. Eğer daha önce bir Tekrarlayan Sinir Ağı (Recurrent Neural Network - RNN) eğitmeye çalıştıysanız, modelin dizinin başındaki bilgileri çok çabuk unuttuğunu fark etmişsinizdir. İşte tam bu noktada imdadımıza lineer cebirin o soğuk ama etkili dünyasından bir kahraman yetişiyor: Matris Ortogonalleştirmesi (Matrix Orthogonalization).

Yapay Zekanın Hafıza Sorunu ve RNN'ler

RNN'ler, verileri bir dizi halinde işlemek üzere tasarlanmıştır. Bir cümleyi okurken her kelimeyi bir önceki kelimenin bağlamıyla değerlendirirler. Teoride harika görünse de, pratikte bu modellerin ciddi bir "yakın geçmişi hatırlama" ama "uzak geçmişi unutma" sorunu vardır. Bunun temel sebebi, verinin modelin içindeki katmanlardan geçerken sürekli aynı ağırlık matrisiyle (weight matrix) çarpılmasıdır.

Düşünün ki elinizde bir sayı var ve bu sayıyı sürekli 0.9 ile çarpıyorsunuz. 100 işlem sonra elinizde neredeyse sıfıra yakın bir değer kalır. Ya da tam tersi, sürekli 1.1 ile çarptığınızı düşünün; bu sefer de sayı kontrolsüzce büyür. İşte biz buna derin öğrenme literatüründe Kaybolan Gradyanlar (Vanishing Gradients) veya Patlayan Gradyanlar (Exploding Gradients) diyoruz. Model, geçmişteki önemli bir bilgiyi günümüze taşımaya çalışırken ya o bilgi sönümlenip gidiyor ya da matematiksel olarak hesaplanamayacak kadar devasa boyutlara ulaşıyor.

Matris Ortogonalleştirmesi Nedir? (Orthogonalization)

Peki, bu çarpma işlemleri sırasında değerin ne küçülmesini ne de büyümesini isteseydik ne yapardık? İşte burada Ortogonal Matrisler (Orthogonal Matrices) devreye giriyor. Teknik bir terim olarak; bir matrisin transpozu (devriği), tersine eşitse o matris ortogonaldir. Yani WᵀW = I (burada I birim matristir).

Peki bu ne anlama geliyor? Basitçe söylemek gerekirse, ortogonal bir matrisle bir vektörü çarptığınızda, o vektörün uzunluğu (normu) değişmez. Sadece yönü değişir. Bu, verinin ağ içerisinde ne kadar derine giderse gitsin, enerjisini kaybetmeden veya kontrolden çıkmadan taşınabilmesi demektir. Matris Ortogonalleştirmesi, modelin ağırlıklarını bu özelliklere sahip olacak şekilde düzenleme işlemidir.

Neden Ortogonal Matrisler Sihirlidir?

RNN'lerin eğitimindeki en büyük zorluk olan Zaman İçinde Geriye Yayılım (Backpropagation Through Time - BPTT) algoritmasında, türevler zincirleme olarak çarpılır. Eğer ağırlık matrisimizin özdeğerleri (eigenvalues) 1'den büyükse patlama, 1'den küçükse kaybolma yaşanır. Ortogonal matrislerin tüm özdeğerlerinin mutlak değeri tam olarak 1'dir.

  • Uzun Süreli Bellek: Bilgi, matris çarpımları boyunca sönümlenmediği için model dizinin en başındaki bir detayı (örneğin 50 kelime önceki özneyi) sonuna kadar taşıyabilir.
  • Hızlı Yakınsama (Convergence): Gradyanlar sağlıklı kaldığı için model çok daha hızlı öğrenir ve eğitim sırasında "kaybolma" yaşamadığı için daha kararlı bir grafik çizer.
  • Daha Derin Modeller: Ortogonalleştirme sayesinde, gradyan sorunlarından korkmadan çok daha derin veya çok daha uzun dizileri işleyebilen modeller inşa edebiliriz.

Uygulamada Nasıl Kullanılır?

Bir yazılım geliştirici olarak "Tamam Alper, teoriyi anladık da bunu kodda nasıl yapıyoruz?" dediğinizi duyar gibiyim. Modern kütüphaneler (TensorFlow, PyTorch gibi) bu işi bizim için oldukça kolaylaştırıyor. Genellikle iki ana yöntem izlenir:

Birincisi, Ortogonal Başlatma (Orthogonal Initialization). Modeli ilk kurduğunuz anda ağırlıkları rastgele değil, ortogonal olacak şekilde başlatırsınız. PyTorch'ta torch.nn.init.orthogonal_ fonksiyonu tam olarak bu işe yarar. Bu, eğitimin başında size büyük bir avantaj sağlar.

İkincisi ise Kısıtlı Optimizasyon (Constrained Optimization) veya düzenlileştirme yöntemleridir. Eğitim sırasında matrislerin ortogonal kalmasını sağlamak için kayıp fonksiyonuna (loss function) bir ceza terimi ekleyebilirsiniz. Bu terim, matrisin ortogonallikten ne kadar saptığını ölçer ve onu tekrar "dikgen" olmaya zorlar.

Sonuç: Daha Derin ve Daha Akıllı Modeller

Özetle dostlar, matris ortogonalleştirmesi sadece akademik bir fantezi değil, derin öğrenme modellerinin gerçekten "hatırlamasını" sağlayan kritik bir mühendislik dokunuşudur. Özellikle doğal dil işleme (NLP) ve karmaşık zaman serisi analizlerinde, modelinizin neden öğrenemediğini sorguluyorsanız, suçluyu gradyanlarda aramalı ve çözüm olarak ortogonalleştirmeye bir şans vermelisiniz.

Unutmayın, iyi bir model sadece çok veriye sahip olan değil, o veriyi katmanlar arasında kaybetmeden taşıyabilen modeldir. Bir sonraki teknik yazımda görüşmek üzere, kodunuz hatasız, gradyanlarınız stabil kalsın!

Yorumlar (0)
Yorum Yap