https://analyticsindiamag.com/sequence-to-sequence-modeling-using-lstm-for-language-translation/seq2seq

RNN kullanarak text summarization, machine translation, chatbot gibi uygulamalar yapmak istediğimizi düşünelim.

Nlp Seq2Seq uygulamalarından birisi Google Translate’dir.

Bu uygulamalardaki ortak nokta nedir diye düşünürsek, bir metnin sisteme girildiği, çıktı olarak yine bir metin döndürüldüğünü görürürüz. Girdi ve çıktı metinlerinin büyüklüğü birbiriyle aynı olabileceği gibi farklı kelime sayılarına da sahip olabilir. Örneğin metin özetlemede görece büyük metin verip bu metinle alakalı daha küçük bir metin almayı bekleriz. Bu durumda sisteme gelen girdi bir sekans (sequence/dizi) çıktıda bir sekansdır. Bu tür modellere ise kısaca seq2seq modeller diyebiliriz.

Source : https://towardsdatascience.com/understanding-encoder-decoder-sequence-to-sequence-model-679e04af4346

Seq2Seq mimariyi birbirine bağlanan iki RNN sisteminden oluşur. İlk RNN sistemi girdiyi alır bu RNN sistemine Encoder denir. İkinci RNN sistemi çıktı üretir bu sisteme ise Decoder denir. Alınan girdi metin olmak zorunda değildir. Ses, resim ve video gibi girdilerde sisteme verilebilir.

Encoder

Encoder standart RNN gibi çalışır fakat çıktı olarak bir tahmini değerler üretmez. Sadece son durumu tutar. Girdi olarak verilen sekansdan bir özet vektörü oluşur. Bu vektörde zaman bilgileri tutulmaz vektör için giriş sekansı olan metnin bir gösterimidir diyebiliriz. Encoder’ın amacı sekans bilgisini alıp daha küçük boyutlarda ve sekansı temsil eden bir düşünce vektörü oluşturmaktır. Encoder vektörü(context vector) için, Encoder ve Decoder arasında yer alan, giriş sekansının daha küçük bir gösterimini decoder’e ileten bir vektördür diyebiliriz. Decoder’a daha doğru tahminler yapabilmesi için yardımcı olur.

Decoder

Decoder’in nasıl çalıştığından bahsedecek olursak, Decoder’de Encoder gibi bir RNN sistemidir. Fakat bu sistem içindeki RNN’lerin kendi Weight ve Bias değerleri vardır. Encoderden aldığı vektörle aynı büyüklüğe sahip olmalıdır. Çünkü Encoder’den gelen durum bilgileri Decoder’in başlangıç durumunu oluşturacak.

Decoder’e başlangıç token’ı olarak herhangi bir kelime veriliyor. Bu kelime sequence içinde bulunmayan benzersiz bir kelime olmasına dikkat edilmelidir. Genelde <SOS> token’ı kullanılıyor başlangıç token’ı olarak fakat bu isteğe bağlı bir seçimdir. Başlangıç token’i ve encoder’dan gelen düşünce vektörünü kullanarak ilk çıkış tahmin ediliyor. Bu şekilde ardaşık olarak değerler aktarılıyor ve her adımda bir kelime tahmin ediliyor. Temel RNN sistemlerde LSTM ve GRU‘da da olduğu giriş için bir sequence veriliyor fakat Seq2Seq modellerde sadece başlangıç token’ı veriliyor. Diğer RNN üniteleri bir önceki RNN çıkışından besleniyor.

Seq2Seq iki kısım RNN den oluşmasına rağmen uçtan uca çalışan bir modeldir. Yani ileri yayılım sonucunda oluşan Loss değerleri hesaplandıktan sonra geri yayılım için decoder’dan başlayıp ilerlenerek encoder’da oluşan weight ve bias değerlerinin güncellenmesi gerekir.

Bu makalede güncel nlp projelerinde sıklıkla kullanılan seq2seq mimarisini tanımış olduk. Uygulama aşamasına geldiğimizde seq2seq modellemeyi nlp problemimizi çözmekte nasıl kullanabileceğimizi anlamış olacağız. Sonraki yazılarda görüşmek üzere.

Murat 🙂

By mgm

One thought on “Sequence to Sequence (Seq2Seq) Model Nedir?”

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir