LSTM'ler veya Uzun Kısa Süreli Bellek Ağları uzun süredir ortalıkta. Metin oluşturma ve çeviri, hatta resim yazıları oluşturma gibi diziyle ilgili pek çok görev için uygulanmıştır.
Dezavantajları ise günümüzün güçlü GPU'larını kullanacak şekilde paralelleştirilememesiydi. Bu sınırlama, eğitim ve çıkarımların büyük ölçüde paralelleştirilmesi için GPU'lardan yararlanan dönüştürücülerin ortaya çıkmasının yolunu açtı.
Şimdi LSTM'leri yenilemeye ve paralelleştirmeye çalışırsak, bunlar yeni nesil LLM'ler oluşturmak için araçlar haline gelebilir mi?
Bu, " genişletilmiş " Uzun kısa süreli bellek anlamına gelen " XLSM - Genişletilmiş Uzun Kısa Süreli Bellek Ağları " makalesinin yanıtladığı sorunun tam olarak cevabıdır. Bunu mimaride sLSTM ve mLSTM olmak üzere iki yeni blok önererek yapıyorlar.
Öyleyse, bu yazıda önerilen önerilen sLSTM ve mLSTM bloklarını derinlemesine inceleyelim ve XLSTM mimarisini geliştirmek için bunları nasıl bir araya getirebileceğimizi görelim.
Eğer siz de benim gibi biriyseniz ve XLSTM'lerin görsel olarak anlatılmasını istiyorsanız lütfen bu makaledeki YouTube videosunu inceleyin:
Sıralı verileri ele almak için tasarlanan en eski ağlardan biri, Tekrarlayan Sinir Ağıdır.
Mimarisinde giriş olarak x ve çıkış olarak o olmak üzere tekrarlayan bağlantılar kullanır. Bunu açarsak, t-1, t ve t+1 zaman damgalarında gerçekleşen bir dizi işlem olarak görselleştirebiliriz. RNN'lerin en büyük dezavantajı, çok fazla bloğu bir araya getirdiğimizde eğimin sıfıra ulaştığı yok olan eğim problemiydi.
LSTM'ler veya Uzun kısa süreli bellek ağları, ağa hücre durumları ve geçit mekanizmaları ekleyerek kaybolan gradyanların üstesinden gelmek için önerildi.
Hücre durumları (c ), çeşitli zaman damgalarında yaşayan uzun vadeli anılardır. Gizli durumlar ( h ), bir zaman adımından diğerine aktarılan kısa süreli anılardır. Ve tabii ki girdi dizisinden z girdilerimiz var.
Üç kapının S şeklinde işlevleri vardır. Unutma kapısı, uzun süreli hafızada hangi bilginin unutulacağına karar vermek için sigmoid fonksiyonunu kullanır. Giriş kapısı ayrıca girişi işlemek için bir sigmoid fonksiyonu kullanır ve onu unutma kapısının çıkışına ekler. Bu toplama işlemi, XLSTM makalesinde ve akademik literatürde sabit hata döngüsü adı verilen süslü bir terime sahiptir. Bu ekleme işlemi, RNN'lerde bulunan kaybolan gradyanlar sorununu çözen şeydir. C_t çıkışı daha sonra çıkış kapısı tarafından işlenir; bu genellikle bir sonraki adıma aktarılan gizli durum çıkışı h_t'ye yol açan bir tanh fonksiyonudur.
Bu işlemlerle LSTM'lerin iki ana denklemi olan c_t ve h_t'yi parçalara ayırdık.
LSTM'lerin ana dezavantajlarından biri, depolama kararlarını revize edememeleridir. Bunun anlamı, dizi uzunluğu arttıkça modelin geçmiş bilgileri hafızada tutup tutmayacağına karar verebilmesi gerektiğidir.
Örneğin şu cümleyi ele alırsak, “Tom dükkana gitti. Biraz içki aldı" ve bunu "Tom havuç, soğan, muz, elma, portakal, kahve ve ekmek içeren bazı yiyecek satın almak için dükkana gitti. Ayrıca biraz içki de aldı.” Muz veya elma gibi her yeni kelime için modelin, geçmişteki “Tom” kelimesini hafızasında tutup tutmaması gerektiğini sürekli olarak gözden geçirmesi gerekiyor. Bu, LSTM'ler için büyük bir zorluktur ve unutma kapısının sigmoid işlevinden kaynaklanmaktadır.
Sigmoid fonksiyonu ve üstel fonksiyon. Sigmoid uçlara doğru düzleşir, ancak üstel yalnızca artmaya devam eder.
Yani, eğer bir unutma kapısını ele alırsak, bu, uca doğru düzleşen S şeklinde bir eğriye sahip olan bir sigmoid fonksiyonundan oluşur. Bu, girdinin daha yüksek değerlerine doğru ilerledikçe neyi unutacağımıza ve neyi hafızada tutacağımıza karar vermenin oldukça zorlaştığını gösteriyor. Ancak onun yerine üstel bir fonksiyon kullanırsak oyun değişir ve girdinin daha yüksek değerlerine çıktıkça çıktılar için daha geniş bir aralık elde ederiz. Bu da LSTM'lerin depolama kararlarını gözden geçirme konusunda daha iyi hale gelebileceğini gösteriyor.
Dolayısıyla bu yazıda önerilen çözüm sistem bloklarıdır. Hücre durumunu temsil eden klasik LSTM denklemine geri dönersek, daha önce gördüğümüz gibi, bu, unutma kapısının ve giriş kapılarının bir fonksiyonudur.
Bu kapılar da sigmoid fonksiyonlardan oluşur. Peki bu sigmoid fonksiyonları üstel fonksiyonlarla değiştirirsek ne olur? Yeni f_t ve i_t kapıları artık exp(f_t) ve exp(i_t) haline geldi ve bu, sLSTM bloğunu oluşturmak için yapılan ana değişikliktir.
Girdileri sabit bir aralıkta sıkıştıran sigmoid fonksiyonunun aksine, üstel fonksiyonlar girdi arttıkça değer olarak artma eğilimindedir ve çıktıyı doğal olarak sigmoid gibi 0 ile 1 arasında kalacak şekilde normalleştirmez. işlev.
Bu nedenle, unutma ve giriş kapılarının bir fonksiyonu olan yeni bir normalleştirici durumu tanıtmamız gerekiyor. Bunu bir normalizasyon değerinin hareketli ortalaması olarak düşünebiliriz.
Çıktıyı veya yeni gizli durumu normalleştirmek için hesaplanan normalizasyon değerlerini kullanırız.
Normalleştirme gizli durumlarla ilgilenirken, üstelin unutma ve giriş kapılarını havaya uçurmasını kontrol etmek için bir dengeleyici eklememiz gerekir. Üstellerin etkisine karşı koymak ve kararlılık sağlamak için log fonksiyonları biçiminde gelir. Dolayısıyla stabilizatör durumu, unutma kapısının ve giriş kapısı çıkışının logunun maksimumudur. Bu stabilizatör değerlerini girdiden çıkarıyoruz ve onları stabilize etmek için kapıları unutuyoruz.
LSTM'lerin ikinci dezavantajı paralelleştirmenin olmamasıdır. LSTM'ler sıralı verileri işlemek üzere tasarlanmıştır; bu, dizideki mevcut girişi işlemek için dizideki önceki girdiyi işleme çıktısına ihtiyaç duyduğu anlamına gelir. Bu özel dezavantaj paralelleşmeyi engeller ve Transformers döneminin doğuşuna yol açan suçluydu.
Bu yazıda önerilen çözüm yeni mLSTM bloklarıdır. Şimdi onlara sonra bakalım.
XLSTM'lerin bir sonraki yapı taşı, m'nin hafızayı temsil ettiği mLSTM bloğudur. Dezavantajının ne olduğunu görmek için klasik LSTM denklemine tekrar dönelim. C_t hücre durumunun bir skaler olduğunu görebiliriz. Bu, en az 12 Gig belleğe sahip günümüz GPU'larının lüksüne sahip olduğumuzda aynı anda yalnızca 1 sayıyla ilgilendiğimiz anlamına gelir.
mLSTM bloğu, hücre durumları için skalerlerin yerine matrisler sunar. Klasik LSTM denklemimize dönersek, c_t'yi bir C *_t* matrisiyle değiştirirsek, hücre durumu artık matrisleri belirtmek için büyük C *_t* olur ve hücre durumları yalnızca i_t kapısı tarafından değil aynı zamanda alınabilir. vektör olan anahtar-değer çiftlerini depolayarak. Değerleri aynı boyuttaki vektörler olan sorgular tarafından alınabilmektedir.
Transformatörün terminolojisine tanıdık gelmesi için, bu matrisi oluşturmak üzere buraya anahtar ve değer eklediler.
sLSTM ve mLSTM hakkındaki bu bilgilerle XLSTM'nin ayrıntılı mimarisine dalalım.
sLSTM söz konusu olduğunda post-up projeksiyonları kullanıyoruz. Böylece girdi ilk önce swish aktivasyon fonksiyonuyla nedensel evrişim katmanlarından geçirilir. Bu katmanlardan elde edilen çıktı daha sonra dört çapraz blok veya "başlık" içeren blok-çapraz doğrusal bir katman aracılığıyla beslenir. Bunlardan elde edilen çıktı daha sonra dört kafalı sLSTM bloğundan beslenir. Son olarak, çıktı, GeLU aktivasyonu ile kapılı bir MLP katmanı kullanılarak yukarı yansıtılır ve kapılı bir MLP işlevi kullanılarak aşağı yansıtılır.
mLSTM bloğunun ayrıntılarına geçerek ön projeksiyonları kullanıyoruz. Bu, girişin ilk önce 2 projeksiyon faktörü ile yukarı yansıtıldığı anlamına gelir. Projeksiyon çıkışlarından biri mLSTM'ye, diğeri ise çıkış kapısına gider. mLSTM bloğunun girişi nedensel evrişimden geçer ve ardından mLSTM bloğu tarafından kolaylıkla kullanılan sorguyu, anahtarı ve değeri çıkaran blok boyutu 4'ün blok diyagonal projeksiyon matrislerinden geçer.
Son olarak, genişletilmiş LSTM mimarisini oluşturmak için iki tip bloğu istifleyebiliriz. Yani koyu gri bloklar mLSTM bloklarıdır ve açık gri olanlar da sLSTM bloklarıdır.
Avantajları açısından, makale XLSTM ağlarının doğrusal bir hesaplama karmaşıklığına ve dizi uzunluğuna ilişkin sabit bir bellek karmaşıklığına sahip olduğundan bahsetmektedir.
Yazarlar, SlimPajama veri kümesini LLAMA gibi diğer transformatör tabanlı yöntemlerle ve MAMBA gibi durum uzayı tabanlı yöntemlerle karşılaştırmak için eğitim aldılar. Bu xLSTM a:b gösterimini kullandılar; burada a , mLSTM bloklarının sayısı ve b, yığındaki sLSTM bloklarının sayısıdır.
Doğruluk açısından, 0'ın rastgele ve 1'in mükemmel olduğu 0 ile 1 arasındaki doğrulukları ölçeklendirerek göreceli doğrulukları rapor ederler.
Değerlendirmeler, XLSTM'nin Parite gibi görevlerde daha iyi performans gösterdiğini, Llama ve Mamba'nın ise kötü performans gösterdiğini gösteriyor.
Sonuçlara göre, özellikle ilgi çekici olan şey, transformatörlerin veya durum uzayı modellerinin, bellek karıştırma veya durum izleme olmadan zorluk yaşama eğiliminde olduğu eşlik görevidir. Bu tür bir görevde hem sLSTM hem de mLSTM bloklarını bir arada kullandığımızda xLSTM'nin 1 doğruluğuna ulaştığını görebiliriz.
Ayrıca XLSTM'lerin sağlamlığını göstermek için bazı ablasyon çalışmaları da yaptılar. Kağıttan anlaşılması kolaydır. Üstelik bu makale daha çok XLSTM'lerin mimari yenilikleri hakkında olduğundan burada deneysel sonuçlara girmeyeceğim.
Bu makaleyi beğendiyseniz neden beni takip etmiyorsunuz?
Ayrıca lütfen bana abone olun
Bu makalenin XLSTM mimarisinin anlaşılmasını, neden onlara ihtiyacımız olduğunu ve yakın gelecekte potansiyel olarak transformatörleri nasıl geçebileceklerini basitleştirdiğini ve kolaylaştırdığını umuyoruz.
Bekleyelim ve neler saklayacaklarını görelim. Bir sonraki yazımda görüşürüz…