Eminim ki okurlarımızdan uzun süredir Google Translate kullananlar, 2017den sonra programın çeviri yetisinde büyük bir gelişme olduğunu gözlemlemişlerdir. Bu makalede bu gelişmenin gerekçesi olan 3 buluşu açıklayacağım. Bu buluşları açıklamadan önce, buluşların daha aktarılabilir olmasi icin çeviri programlarının çoğunluğunun kullandığı ana matematiksel formülasyonu açıklayacağım.
Ana Matematiksel Formülasyon
Google Translate gibi günümüzün en iyi performans veren çeviri programlarının ekseriyeti neural network (sinir ağları) dediğimiz matematiksel yapıları kullanmaktadır. Bu yapılar, insan beyin hücreleri arasındaki etkileşiminin insan öğrenimine yol açmasından esinlenerek yaratılmış modellerdir. Beyin hücrelerini sembolize eden köşeler (nodes), ve bu hücreler arasındaki etkileşimi sembolize eden bağlardan (weights) oluşurlar. Köşelerin her biri kendilerine verilen veriyi bir sayı formunda algılar ve program bu sayıyı köşenin bağlı olduğu diğer köşelere iletirken kullandığı bağlara verdiği sayıları da kullanarak bir hesap yapar.
Bu yapının işe yarar olmasındaki ana sebep, kullanılan bağların eğitilebilir olmasıdır. Öğrenme süreci denilen süreçte, yukarıda belirttiğim gibi yapılan bir hesabın sonucunda, bir sinir ağı, elindeki sonucu elde etmesi istenen sonuca yaklaştırmak için kullandığı bağların değerlerini değiştirir. Bu istenilen sonuca yaklaşmak için bağların değerlerinin değiştirilme süreci, adeta insan öğreniminde beyin hücrelerinin arasındaki elektrokimyasal sinyallerin kuvvetinin değişmesine benzer.
Öğrenim süreci bittikten sonra, test etme süreci başlar ve bilgisayar kullanıcısı sinir ağlarına öğrenme sürecinde görmediği verileri aktarır. Bu aktarmanın sonucunda elde edilen sonuçların yüzde kaçı istenilen sonuç ise, sinir ağının başarısı odur.
Sinir ağlarını özel yapan birçok sebepten bir tanesi de birçok farklı formattaki veriler için eğitilip test edilebilmeleridir. Köşelerinde sayı olarak sembolize edilebilecek her veri (bir pixel, herhangi bir lisandan bir sözcük, herhangi bir ülkenin popülasyonu, vs.) sinir ağları tarafından öğrenilebilir ve test edilebilirler. Google Translate gibi lisan üzerine kurulu sistemler, çeviri için kullandıkları sözcükleri veri olarak alırlar ve bu sözcükleri sinir ağlarına köşe olarak yüklemek için önce sayıya dönüştürürler. Öğrenme sürecinde sinir ağları çevrilmesi istenen lisandan cümleler ve çevrilecek dildeki çevirilerini öğrenirler ve test sürecinde çeviri kabiliyetleri gözlemlenir.
Bu genel yapı Google Translate ve onun gibi çeviri programları tarafından 2017 öncesinde zaten kullanılıyordu. Ancak 2017’de yazılan bir kâğıt ile Vaswani ve diğer bilim insanları bu sinir ağlarına ekledikleri 3 buluş ile adını “Transformer” koydukları yeni bir algoritma geliştirdiler (Vaswani et. al, 2017) ve bu algoritma (ve varyasyonları) bugün hala “Google Translate” ve çoğu iyi performans veren çeviri programları tarafından kullanılıyor. Transformerlar eski çeviri programlarına göre hem kontekst algılama hem gramatik cümle kurma hem de deyimler gibi çevirmesi zor olan çevirilerde çok daha başarılı sonuç verdiler ve vermeye devam ediyorlar.
Şimdi bu performans artışının sebebi olan 3 buluşu belirteceğim:
3 Buluş
Positional Encodings (Pozisyon Operatörleri): Pozisyon operatörleri, sinir ağına verilen sözcükleri temsil eden sayılara, bir denkleme göre eklenen sayılardır. Bu denklem sinir ağına verilen sözcüklerin cümledeki yerini ve hangi sözcüklerden önce ya da sonra geldiğini belirler.
Bu denklemin önemi hem çeviri yapılacak dilde hem de çevirinin yapıldığı dildeki sözcüklerin pozisyonunu sisteme öğretmek, dolayısıyla o sözcüğün en çok hangi konumda ve hangi sözcüklerden önce ya da sonra kullanıldığını belirlemektir.
Düşünülürse bu bir çeşit gramer indirgemesidir. Mesela “Ben eve gidiyorum” ile “Gidiyorum ben eve” cümleleri arasında anlam farkı olmasa da “eve” sözcüğü her ne kadar iki cümlede de aynı yazılıyor ve aynı anlama geliyor olsa da bir cümlede cümlenin sonunda olduğu gerçeği, sisteme cümlenin devrik bir şekilde çevrilmesi gerektiğini öğretecek, dolayısıyla daha yerinde bir çeviri yapmasını sağlayacaktır.
Self-Attention Mechanism (Öz-Dikkat Mekanizmasi): Bu mekanizma Transformerların öğrenme sürecinde, çevrilmesi istenen cümledeki her sözcük ile doğru çevrilmiş cümle arasındaki her sözcük arasındaki anlam yakınlığını hesaplar. Mesela şu fransızcada “ben bir öğrenciyim” anlamına gelen cümlenin ingilizceye çevirisini örnek alalım:
Fransızca: Je suis étudiant İngilizce: I am a student
Self-attention mekanizması, bu iki cümleyi alip, fransızca cümledeki her sözcüğün, ingilizce cümledeki her sözcüğe çevrilme ihtimalini hesaplayıp, bunları bir matris formunda tutarak, öğrenme sürecinde birbirine çevrilme ihtimali en yüksek sözcüklerin değerlerini en yüksek tutacaktır. Dolayısıyla, bu mekanizma farklı lisanlardaki sözcükler arasındaki çevrilme ihtimalini hesaplar. 2017’de öne sürüldüğünden beri bu mekanizmanın çeviri dahil olmak üzere birçok lisan ile bağlantılı görevi gerçekleştirmekte çok başarılı sonuçlar verdiğini görüyoruz.
Multi-Headed Self-Attention Mechanism (Tekrarlı Öz-Dikkat Mekanizmasi): Self-attention mekanizmasını yaratmanın ötesinde, Vaswani ve diğerleri bu mekanizmanın her veri için birkaç kez hesaplanarak, alınan farklı sonuçların birleştirilmesiyle sinir ağlarına verilecek veri elde eden multi-headed self-attention mechanism adlı bir mekanizma geliştirdiler. Bu mekanizma, self-attention mekanizmasını birkaç kez farklı ilk değerler kullanarak, birden fazla sözcük-sözcük çeviri ihtimalleri matrisleri yaratıp, bu matrisleri kullanarak yeni bir matris yaratır. Kısacası, multi-headed self-attention mekanizması, self-attention mekanizmasının birden fazla kez uygulanıp, elde edilen matrisleri kullanarak sinir ağlarına veri vermek metodudur. Self-attention mekanizmasının bu şekilde birden fazla kez uygulanması, Transformerların çeviri ve diğer lisan temelli görevlerdeki verdikleri yüksek performansın gerekçelerinden bir tanesi.
Sonuç
Google Translate ya da diğer ana çeviri programlarını kullananlar, 2017’den sonra bu programların çeviri yetisinin hızla yükseldiğini gözlemlemişlerdir. Bunun gerekçesi 2017’de Transformer adlı çeviri ve birçok lisan temelli görevi eski programlara nazaran çok daha başarılı bir şekilde gerçekleştiren bir algoritmanın yaratılmasıdır. Bu makalede, Transformerların eski algoritmalara nazaran daha başarılı olmasını sağlayan 3 buluşu tanımladım.