Nöral Makine Çeviri Modelini Görselleştirme (Attention Mekanizması ile Seq2seq Modeli)

Bu makale, Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention) Türkçe çevirisidir. Kaynak, aslında MIT sınıflarında kullanılan Jay Alammar (@JayAlammar) tarafından yazılmış bir blog makalesidir.

Sequence-to-sequence (kısaca seq2seq) modeller, makine çevirisi, metin özetleme ve görüntü yazısı oluşturma gibi görevlerde çok sayıda başarı elde eden derin öğrenme modelleridir. Google Translate, 2016'nın sonlarında böyle bir modeli üretimde kullanmaya başladı. Bu modeller, iki öncü makalede açıklanmıştır (Sutskever ve diğerleri, 2014, Cho ve diğerleri, 2014).

Bununla birlikte, modeli tam olarak anlamak ve uygulamak için, birbirine dayalı bir dizi kavramın çözülmesi gerektiği ortaya çıktı. Bu fikirlerin görsel olarak ifade edilirse daha tanıdık geleceğini düşündüm. Bu makalenin amacı budur. Bu makaleyi okumak için daha önce açıklanan derin öğrenmeyi anlamanız gerekir. Yukarıdaki makaleleri (ve gönderide daha sonra bağlantı verilen öne çıkan makaleler) okurken yararlı bulacağınızı umuyoruz.

Seq2seq model, bir dizi öğeyi alan (kelimeler, harfler, bir görüntünün özellikleri … vb.) ve başka bir dizi döndüren bir modeldir. Eğitimli bir model şu şekilde çalışır:

Nöral makine çevirisinde, dizi birbiri ardına işlenen bir grup kelimedir. Aynı şekilde çıktı da bir grup kelimedir:

Daha yakından bakalım

Seq2seq model, bir kodlayıcı (encoder) ve bir kod çözücüden (decoder) oluşur. Kodlayıcı, girdi dizisindeki her bir öğeyi işler ve yakalanan bilgileri “bağlam” (context) adı verilen bir vektörde derler. Kodlayıcı tüm girdi dizisini işledikten sonra , içeriği kod çözücüye gönderir ve bu da çıktı dizisinin her bir öğesini üretir.

Aynı işlem makine çevirisi için de geçerlidir.

Makine çevirisi durumunda bağlam , temelde bir sayı dizisinden oluşan bir vektördür. Kodlayıcı ve kod çözücünün her ikisi de RNN olma eğilimindedir.(RNN’lere giriş için Luis Serrano’tan A friendly introduction to Recurrent Neural Networks ‘a göz atabilirsiniz).

Model oluşturulurken, bağlam vektörünün boyutu ayarlanabilir. Temelde RNN kodlayıcıdaki gizli birimlerin sayısıdır. Yukarıdaki görsel 4 boyutlu bir vektörü gösterir, ancak gerçek uygulamalarda bağlam vektörü 256, 512 veya 1024 gibi bir boyutta olacaktır.

Tasarım nedeniyle, bir RNN her adımda bir girdi (bir kodlayıcı olması durumunda, giriş olarak bir kelime alır.) ve gizli bir durumu alır. Bununla birlikte, kelimenin bir vektör ile temsil edilmesi gerekmektedir. Bunu yapmak için , kelimeyi anlamsal bilgiye dayalı bir vektör uzayına dönüştürmek için “word embedding” adı verilen bir algoritma kullanılır. Bunlar kelimeleri, kelimelerin anlam bilgisini yakalayan vektör uzaylarına dönüştürür. (örneğin king — man + woman = queen).

Ana vektörler / tensörler tanıtıldığına göre bir RNN’nin mekaniğini özetleyip ve bu modelleri açıklamak için görselleştirelim.

RNN bir sonraki adım için, ikinci giriş vektörünü ve gizli durum # 1'i alır. Bu makalede, bir nöral makine çeviri modelinin içindeki vektörleri açıklamak için bunun gibi bir animasyon kullanacağız.

Aşağıdaki görselde, kodlayıcı veya kod çözücü için her implus, o zaman adımında RNN’nin çıktıyı üretmek için girişi işlediğini gösterir. Kodlayıcı ve kod çözücünün her ikisi de RNN olduğu için, her işlediklerinde gizli durumlarını önceki çıktıya ve yeni girdiye göre güncellerler.

Şimdi kodlayıcının gizli durumuna bakalım. Kodlayıcı tarafından işlenen son gizli durumun kod çözücüye bir “bağlam” vektörü olarak geçirildiğine dikkat edin.

Kod çözücü ayrıca her bir zaman adımı için gizli bir durum tutar, şimdilik seq2seq’in ana kısmına odaklanmak istediğimiz için bu grafikte görselleştirilmedi.

Gelin seq2seq modeline farklı bir açıdan bakalım. Modelleri tanımlayan statik grafikleri anlamayı kolaylaştıran yönteme “kaydırılmamış” görünüm denir . Yani, bir kod çözücüyü görüntülemek yerine,her zaman adımda bunun bir kopyasını görüntülenir. Bu şekilde her zaman adımının girdi ve çıktıları görüntülenebilir.

Şimdi “Dikkat” Edelim

Seq2seq modelinde “bağlam” vektörünün uzun cümleleri zorlaştırdığı ve darboğaz yaptığı ortaya çıktı. Bahdanau ve diğerleri, 2014 ve Luong ve diğerleri, 2015'te, makine çeviri sistemlerinin kalitesini önemli ölçüde iyileştirmek için “Attention” (Dikkat) adlı bir teknik kullanan bir çözüm önerdi. Bu mekanizma , modelin gerektiğinde girdi dizisindeki ilgili kısımlarına odaklanmasına izin verir.

Bu yüksek düzeydeki soyutlamayla ilgili attention modellerine bakmaya devam edelim. Attention mekanizmasına sahip seq2seq modeli aşağıdaki iki noktada klasik modelden farklılık göstermektedir:

İlk olarak, kodlayıcı, kod çözücüye çok fazla veri aktarır.Kodlama aşamasının son gizli durumunu geçirmek yerine, kodlayıcı tüm gizli durumları kod çözücüye geçirir:

İkinci olarak, bir attention mekanizmasına sahip bir kod çözücü, her bir zaman adımıyla ilişkili giriş dizisinin öğelerine odaklanmak için bir çıktı üretmeden önce aşağıdakileri yapar:

  1. Alınan kodlayıcının tüm gizli durumlarının kümesine bakın — her kodlayıcı gizli durumu giriş cümlesindeki belirli bir kelime ile en çok ilişkilidir.
  2. Her gizli duruma bir puan verin. (şimdilik puanlamanın nasıl yapıldığını görmezden gelin).
  3. Her bir gizli durumu softmax aracılığıyla puanla çarparak, yüksek puanın gizli durumu güçlendirilebilir ve düşük puanın gizli durumu bastırılabilir.

Puanlama işlemi, kod çözücünün her adımında gerçekleştirilir.

Şimdi aşağıda büyük resmi görselleştirelim ve attention mekanizmasının nasıl çalıştığına bakalım:

  1. Attention kod çözücü RNN, <END> belirtecinin gömülmesini ve ilk kod çözücü gizli durumunu alır.
  2. RNN, kendi girdilerini işleyerek , bir çıktı ve yeni bir gizli durum vektörü (h4) üretir. Çıktı atılır.
  3. Attention adımı: Bu zaman adımında bir “bağlam” vektörü (C4) oluşturmak için kodlayıcı gizli durumları ve h4 vektörü kullanılır.
  4. H4 ve C4 tek bir vektörde birleştirilir.
  5. Bu vektör ileri beslemeli bir sinir ağından geçirilir (seq2seq modeli içinde aynı anda bir eğiten bir ağ).
  6. İleri beslemeli sinir ağlarının çıktısı, bu zaman adımındaki çıktı kelimeyi belirtir.
  7. Her zaman adımda yukarıdakiler tekrarlanır.

Aşağıdaki görsel, her kod çözme adımında girdi cümlesinin hangi kısmına dikkat edildiğini görmenin başka bir yoludur:

Bu mekanizmaya sahip modelin, sadece çıktıdaki ilk kelimeyi girişteki ilk kelimeye hizalamak olmadığını unutmayın. Aslında yaptığı, eğitim sırasında o dil çiftindeki kelimelerin nasıl ilişkilendirileceği öğrenilir (bu örnekte Fransızca ve İngilizce). Yukarıda listelenen belgelerde bu mekanizmanın ne kadar doğru olduğuna dair bir örnek görülebilir:

Uygulama yaparak öğrenmeye hazırsanız, TenserFlow’un Neural Machine Translation (seq2seq) Tutorial ‘ ına göz atmayı unutmayın.

Umarım bu makaleyi faydalı bulursunuz. Bu görselleştirmeler, Udacity’nin Natural Language Processing Nanodegree Program’ının bir parçası olan attention mekanizmaları üzerine bir dersin girişidir. Bu derste uygulama yöntemlerini tartışarak ve Attention Is All You Need Transformer modeli gibi en son yöntemlere değinerek daha detaylı olarak anlatacağız.

Ayrıca Udacity’nin Machine Learning Nanodegree Program’ının bir parçası olarak birkaç başka ders de oluşturdum. Oluşturduğum dersler, Unsupervised Learning ile collaborative filtering kullanan film önerileri üzerine bir jupyter not defterini kapsıyor.

Sizden geri bildirim almaktan mutluluk duyarız. Lütfen @JayAlammar ile iletişime geçin.

Umarım makale çevirisini kullanışlı bulmuşsunuzdur. Makalenin orjinaline buradan erişebilirsiniz. Bu güzel makale için Jay Alammar ‘a teşekkür ederim.

Machine Learning Engineer