Transformers Mimarsinin Temelleri Input Embedding & Positional Encoding
Son zamanlarda Transformer mimarisinin teorisi matematisel ifadeleri hakkında araştırma yaptığımda Türkçe olarak kaynak sayısının çok az…
Transformers Mimarisinin Temelleri Input Embedding & Positional Encoding Katmanları
Son zamanlarda Transformers mimarisinin teorisi matematisel ifadeleri hakkında araştırma yaptığımda Türkçe olarak kaynak sayısının çok az olduğunu fark ettim ya da ben bulamadım. Bu nedenle Türkçe kaynak olması bakımından Transformers mimarisinin her bölümünü tek tek ele alacak bir yazı serisi yayınlamaya karar verdim.
Bu yazıda, Transformers mimarisinin Input Embedding ve Positional Encoding bölümünü ilk olarak ele almaya çalışacağım.
Yazıma başlamadan önce belirmeliyim ki bazı teknik terimleri İngilizce olduğu hali ile kullanacağım.

Vanilla Transformer Mimarisi
Adım adım mimariyi anlamaya çalışalı. Input Embedding kavramına geçmeden önce Input nedir bunu anlamaya çalışalım. Aslında basitçe Input modele verdiğimiz girdi metinleri tabi farklı veri tipleri ile de eğitim yapmak mümkün ama biz örneklerimizi metin verisi üzerinden vereceğiz.

Yukarıda modelimize girdi olacak örnek bir cümleyi görüyoruz. Modelimiz metinleri olduğu hali ile anlayamaz bu metinleri sayısal temsillere dönüştürüp modelimizi bu şekilde beslememiz gerekiyor. Bu yüzden önce cümleleri tokenize ediyoruz yani cümleleri kelime kelime ya da daha ufak parçalara ayırıyoruz (Çoğu zaman kelime kelime yerine daha farklı şekillerde tokenize işlemleri yapılır) Yukarıda örnek metin kelime kelime tokenize edilmiştir. Tokenize işlemi sonrasında bu kelimeleri sayısal temsillere dönüştürmemiz gerek. Kelimeleri sayılara eşleriz ve bu sayılar, kelime dağarcığımızdaki konumları temsil eder. Eğitim setimizde geçen tüm olası kelimelerden oluşan bir kelime dağarcığımız olduğunu hayal edin; her kelime bu kelime dağarcığında bir konuma sahip olacaktır. Örneğin “cat” kelimesi 3578. konumu işgal edebilir.

Yukarıda tokenize işlemi sonrası her kelime dağarcıktaki konumuna göre bir sayı ile temsil edilir. Bu sayılar yani InputIDs 512 boyutlu bir vektöre eşlenir. (Bu vektor boyutu model mimarisine göre değişmektedir)

Bu 512 boyutlu vektöre embeddings denir. Aynı kelime her zaman aynı InputID ve embedding ile eşlenir. Ancak, embedding sayıları sabit değildir; bunlar modelimizi için birer parametredir. Modelimiz, bu sayıları anlamı temsil edecek şekilde değiştirmeyi öğrenir. Sonuç olarak InputIDs değerleri değişmez sabittir çünkü kelime dağarcığı sabittir ancak embedding eğitim süreci boyunca loss fonksiyonunun ihtiyacına göre değişecektir.
Not: Görsellerdeki Embedding vektörlerine rasgele sayılar atanmıştır.
Biraz kafa karıştırıcı gelmiş olabilir ama genel mantığı anladınız. Girdi metinleri parçalara ayrılır, konumlarına göre sayı atanır ve bu sayılar 512 boyutlu başka bir vektöre dönüştürülür. Bu dönüştürlen 512 boyutlu vektörler modelimize girdi olarak verilir ve hesaplamalar bu matris üzerinden gerçekleştirilir. Yani metinler sayısal temsillere dönüştürülmüş olur.
Metin verisi dediğimizde aklınıza şu soru geliyor olabilir. Input metin ise model farklı boyuttaki metinler üzerinde nasıl işlemler yapabiliyor 🤔
Değişken Uzunluktaki Cümleler Padding
Cümleler değişken uzunlıkta olduğundan modelimizi besleyebilmek için maksimum bir uzunluk belirlememiz gerekiyor ve bu maksimum uzunluktan kısa olan kelimeleri maksimum uzunluğa getirecek şekilde kelime eklememiz gerekiyor bu işleme padding deniyor.

Modelimizin maksimum girdi uzunluğunu 9 olarak belirlediğimizi düşünelim 9 kelimeden kısa olan girdilere <PAD> token ekleyerek boyutlarını 9 kelime olacak şekilde ayarlıyoruz. Böylelikle değişken uzunluktaki metinler belirlediğimiz maksimum uzunluğa ulaşacak şekilde padding uygulanarak modelimize girdi olarak verilebiliyor.

Sonuç olarak Transformer modelimizin girdisi 6x512 boyutlu yukarıda gördüğümüz matris olmuş olur.
6 modelimizin girdi olarak alacağı maksimum kelime sayısı ve 512 embedding boyutudur.
Positional Encoding

Vanilla Transformer Mimarisi
Inputs ve Input Embedding kavramlarını ele aldık. Şimdi Positional Encoding kavramını anlamaya çalışalım.
Embeddinglerden oluşan bir kelime matrisi oluşturduk, ancak bu embeddingler belirli bir kelimenin cümle içindeki konumu hakkında herhangi bir bilgi taşımaz. İşte bu noktada devreye positional encoding girer.
Modelin, birbirine yakın kelimeleri “yakın” ve birbirinden uzak kelimeleri “uzak” olarak değerlendirmesini istiyoruz. Modelin, bizim gözlerimizle algıladığımız bu bilgiyi görmesini sağlamamız gerekiyor. Örneğin, “what is positional encoding” cümlesine baktığımızda, “what” kelimesinin “is” kelimesine göre “encoding” kelimesinden daha uzak olduğunu anlıyoruz. Çünkü gözlerimizle bu özel konum bilgisini algılayabiliyoruz. Ancak model bunu doğrudan göremez, bu yüzden cümle içindeki kelimelerin nasıl konumlandığına dair modele ek bilgiler sağlamamız gerekir.
Positional Encoding Nasıl Hesaplanır?
Neden positional encoding katmanına ihtiyacımız var biraz anlamış olduk şimdi nasıl positional encoding hesaplanır ve girdi embedding matirisimize eklenir onu anlamaya çalışalım.


Positional Encoding hesaplaması yukarıdaki formüllere göre yapılır.
pos = kelimenin bulunduğu konum örneğin girdi metinindeki “cat” kelimesi cümlede 3. positionda bulunmaktadır. (Pos indisi 0'dan başlıyor)
i = 512 boyutlu embedding vektör indis bilgisi
d_model = embedding vektörü boyutu bizim örneğimiz için 512 olacak bu değer.
2i ve 2i+1 kavramları tek i değerleri için cos çift i değerleri için sin formülü ile hesaplama yapılmasını sağlıyor. İleride neden sin ve cos olacak şekilde iki formül kullanıyoruz açıklayacağım şimdilik tek embedding index değerleri için cos ve çiftler için sin kullanıldığını aklımızda tutalım.

Yukarıdak görüleceği üzere her kelime embedding değeri için positional encoding değeri hesaplanır.

Daha sonra oluşturulan embedding matrisi ile positonal encoding matrisi toplanarak kelimelerin posizyon bilgisi eklenmiş embedding matrisimiz oluşmuş olur. Matris toplaması yaptığımız için boyut değişmez başlangıçtaki boyutumuzu korumuş oluruz. Bu oluşan matrisi mimarinin diğer adımlarına aktarabiliriz.
Positional encoding matrisi bir defa oluşturulur. Traning ve Inference için aynı matris kullanılır çünkü posizyon bilgisi sabit bir değer ve embedding değişince değişmeyen bir matris o yüzden farklı embedding matrislerine aynı position encoding matrisi eklenir. Modeli her yeni veri ile beslediğimizde tekrar hesaplamamıza gerek yoktur.
Neden Trigonemetrik Fonksiyonlar?
Sine ve kosinüs fonksiyonları, konum bilgisini kodlamak için sürekli ve türevlenebilir bir yöntem sağladıkları için kullanılır. Periyodik doğaları, modelin farklı konumlar arasında etkili bir şekilde öğrenmesini ve genelleme yapmasını sağlar, ve boyutlar arasında alternatif kullanımları, her konum için benzersiz kodlamaların korunmasına yardımcı olur.

Yukarıda maksimum girdi boyutu 100 ve embedding boyutu 512 olan positional encodding matrisi görselleştirmesini görüyoruz. Sin ve cos fonksiyonları bir pattern yaratmış farklı posizyonlarda insan olarak biz bunu fark edebiliyoruz ve modelin de bunu anlamasını umuyoruz.
Sonuç
Bu yazımda Transformer modellerinin nasıl çalıştığını anlamak için Input Embedding ve Positional Encoding kavramlarını açıklamaya çalıştım. Umarım sizler için de faydalı olmuştur. Bir sonraki yazıda Positional Encoding bilgisi olan matrisimiz ile Multi-Head Attention mekanizmasının nasıl hesaplandığını ele alacağız.
Kaynaklar
- Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. A., Kaiser, Ł., & Polosukhin, I. (2017). Attention is all you need. arXiv. https://doi.org/10.48550/arXiv.1706.03762
- Jamil, U. “ Attention is all you need (Transformer) — Model explanation (including math), Inference and Training.” YouTube, uploaded by Umar Jamil, 28 May. 2023, https://www.youtube.com/watch?v=bCz4OMemCcA&t=1216s.
- GeeksforGeeks. (2024, May 15). Positional encoding in transformers. GeeksforGeeks. https://www.geeksforgeeks.org/positional-encoding-in-transformers/
- Saeed, M. (2023, January 6). A gentle introduction to positional encoding in transformer models – part 1. Machine Learning Mastery. https://machinelearningmastery.com/a-gentle-introduction-to-positional-encoding-in-transformer-models-part-1/
- Sammani, F. (2021). The Complete Neural Networks Bootcamp: Theory, Applications. Udemy. https://www.udemy.com/course/the-complete-neural-networks-bootcamp-theory-applications/
- Oluşturmuş olduğum görsellerin Manim Kodları, https://github.com/KaganHanCatan/Embedding-PositionalEncoding-Manim-Components
메타데이터
- post_id
- 5833dbca70f7
- slug
- transformers-mimarsinin-teorisi-input-embedding-positional-encoding-5833dbca70f7
- url
- https://medium.com/@kagan.catan/transformers-mimarsinin-teorisi-input-embedding-positional-encoding-5833dbca70f7
- canonical_url
- https://medium.com/@kagan.catan/transformers-mimarsinin-teorisi-input-embedding-positional-encoding-5833dbca70f7
- author_url
- https://medium.com/@kagan.catan
- status
- ok
- fetched_at
- 2026-07-18 16:02:55