Konu biraz matematiksel, kabaca özetleyeyim.
Öncelikle programa bir dictionary veriyorsunuz, o dictionary içerisinde sizin kelimeleriniz var. Her bir kelimenin bir unique değeri mevcut(sayısal), sonra bu kelimelerin gruplaşıp oluşturduğu cümlelerin konumlarının da cümlenin anlamını değiştireceğini göz önüne alarak her kelime için bir konum vektörü de belirliyorsunuz. Cümle içindeki bir kelimenin anlamı artık kelimenin vektörü * konumsal vektörü = anlam olacak şekilde bir mantık oturtuyorsunuz. Akademik makalelerde vektör boyutu örn: transformerlar için 512 gibi kabul edilir ama ne kadar uzun olursa ilgili kelimenin dil içinde ihtiva ettiği özellikleri o kadar iyi anlayacaktır program tabi bununla birlikte performans sorunları da baş gösterebilir (malum ai ile çalışmak donanım gücü isteyecek).
Neyse sonra program bu iki vektörün çarpımıyla oluşan matrisi alır multi-head attention gibi bir dikkat mekanizmasına sokar. (default 4 head) burada her bir kelimeyi cümlenin tamamıyla bir defa değerlendirir ve bir sürü yeni matris elde edersiniz (head sayısına göre). Sonra bu matrisleri normalize eder ve tek bir matriste birleştirirsiniz devamında da oluşan matrisi bir decoder yapısı vasıtasıyla aynı bu işlemleri hedef bir dilin dictionary değerlerini kullanarak geriye takip ettiğinizde çeviri işlemi tamamlanmış olur. (ai encoder-decoder diye araştırırsanız daha faydalı olur)
NOT: Konum vektörü önemli çok önemli, zamanla ai geriye dönük hataya göre kendini revize ettikçe ve farklı farklı datalar ile çalıştıkça benzer anlamdaki kelimeler uzay-zaman da vektörel bağlamda birbirlerine yakınlaşmaya başlar. İşte bu sayede bir konunun farklı kelimeler ile anlatılabilmesi ya da özetlenebilmesi konusunda son ai uygulamaları oldukça başarılı.
NOT 2: Google vb çeviri araçlarının bu bahsettiğim kadar yapı karmaşık olduğunu düşünmüyorum. En fazla sec2sec tarzı bir yapı kullanıyor olabilirler sonuçta muhteşem çeviriler yapmıyorlar 🙂 benim anlattığım yapı ChatGPT tarzı bir ai uygulamasının çalışma mantığı.
Kolay gelsin.