Transformer Modeli ve Çalışma Prensipleri

Hüseyin Çayırlı
Huawei Developers - Türkiye
6 min readJan 15, 2024
Transformer Mimarisi

Giriş

Herkese merhaba! 👋

Bu yazıda, sizlere transformer modellerinin ne olduğu, nasıl çalıştığı, ne işe yaradığı ve nerelerde kullanıldığı konusunda bilgi vereceğim.

Transformer mimarisi, 2017 yılında yayınlanan “Attention Is All You Need” adlı makalede önerildi ve bu öneri, büyük bir devrim niteliği taşıdı. Özellikle günümüzde oldukça popüler olan chatbotların öncülüğünü yapan bu mimari, Doğal Dil İşleme (NLP) çalışmalarının seyrini değiştirdi. Peki, bu nasıl gerçekleşti? Hadi daha detaylı bir inceleme yapalım.

Doğal Dil işleme (NLP)

Transformerların etkilerini anlamak için önce doğal dil işlemenin ne olduğunu anlamak önemlidir. Doğal dil işleme, makine öğrenmesi yöntemleri kullanarak insan dilini anlamaya odaklanan bir alanı ifade eder. Kelimeleri tek tek anlamak yerine, tüm cümle veya paragrafın anlam bağlamını kavramaya çalışır. NLP modellerinin örnek uygulama alanları şunlardır:

  • Cümle Sınıflandırma
  • Cümledeki Kelimeleri Sınıflandırma
  • Metin İçeriği Oluşturma
  • Bir Metinden Verilen Soruya Göre Cevap Üretme
  • Dil Çevirisi

Yukarıda belirtilen görevlerin çözümü için, literatüre Transformer model mimarisi kazandırılmadan önce, LSTM veya RNN içeren Seq2Seq mimarileri önerilmiştir. Seq2Seq, bir dizi girdiyi başka bir diziye dönüştüren bir makine öğrenimi modelidir. Seq2Seq modelleri, encoder ve decoder adı verilen iki yapıdan oluşur. Encoder yapısı, girdideki bağlamı çıkarıp kodlamakla görevli olarak işlev görür. Decoder ise kod çözücü olarak işlev görür ve encoder’dan gelen bilgileri istenen çıktıya dönüştürür. Seq2Seq modellerinde, encoder ve decoder içerisinde LSTM veya RNN katmanları kullanılabilir. Ancak, özellikle uzun cümleler ve paragraflarla karşılaşıldığında, LSTM’li Seq2Seq modellerinin belirli bağlam bilgilerini kaybettiği görülmüştür. Örneğin,

“Don’t go to the beach when it is snowy”

cümlesindeki her kelimenin birbirleriyle olan bağlamını belli ölçüde anlayabiliyorken, bazı durumlarda “Don’t” kelimesine ait bilgiler kaybolabilir ve modelin çıkardığı bağlam şu şekilde değişebilir:

“Go to the beach when it is snowy.”

Bu durum, NLP modellerinin gelişiminde karşılaşılan önemli sorunlardan biriydi.

Seq2Seq Model Mimarisi

Transformer

Transformer modeli, doğal dil işleme uygulamalarında, LSTM ve RNN ile kurulmuş Seq2Seq modellerinde karşılaşılan bağlam kaybı problemine etkili bir çözüm sunabilmektedir. Bu problemi aşmak için attention mekanizmasını kullanmaktadır.

Attention Mekanizması

Attention mekanizması, bir derin öğrenme modelinin girdi verilerinin belirli ve ilgili yönlerine odaklanmasını sağlayan sinir ağı bir mimarisidir. Bu, makinelerin girdiyi daha iyi anlamalarına ve uygun çıktıyı üretmelerine yardımcı olur.

Yukarıdaki görseldeki örneğe baktığımızda; İngilizceyi Fransızcaya çeviren bir modelde, “How was your day” cümlesi modelden geçtikten sonra çıktısında “Comment se passe ta journée” cümlesini üretmesi gerektiğini her bir kelimeye ait attention haritasından anlayabilmektedir. Attention blokları, kelimelerin kendileri ve diğer kelimeler ile olan bağlamları kontrol eder ve attention haritasını çıkartır. Model, üretilen attention haritasına bakarak bağlam kaybı yaşamadan daha uygun bir çıktı sağlayabilir.

Peki, bunu nasıl yapıyor? Girdi verileri hangi aşamalardan geçiyor? Hadi beraber inceleyelim.

Encoder

Encoder Bloğu

Encoder bloğunun temel amacı, verilen girdi verisini kodlayarak almak istediğimiz çıktı için gerekli verileri sağlamaktır. Bu veriler, verilen cümledeki kelimeleri ve bağlamı içerir. Kodlamayı gerçekleştirmek için encoder bloğu, word embedding, positional encoding, multi-head attention, normalizasyon ve bir dizi linear katman kullanır. Word embedding, positional encoding ve multi-head attention aşamalarının neler olduğundan bahsedelim.

Word Embedding

Word Embedding

Word embedding, kelimelerin anlamsal benzerliklerini yansıtacak şekilde vektörlere dönüştürülmesidir. Bu sayede, kelimelerin birbiriyle olan ilişkileri ve anlamları daha iyi anlaşılabilir hale gelir ve doğal dil işleme (NLP) uygulamalarında kullanılabilir. Girdiler, word embedding katmanından geçtikten sonra anlamlı vektörlere dönüşür ve bir sonraki işlem için hazır hale gelirler. Bu süreç, kelimenin semantik özelliklerini korurken, onu matematiksel olarak işlenebilir bir forma çevirerek modelin kelime anlamını daha iyi kavramasına olanak tanır.

Positional Encoding

Positional Encoding Formülü

Positional Encoding, metin verilerinin word embedding katmanından çıkan kelime vektörlerini, kelimelerin sıra bilgisini içerecek şekilde sayısal vektörlere dönüştürmeyi sağlar. Bu sayede, modeller kelimelerin birbiriyle olan ilişkilerini ve anlamlarını daha iyi anlayabilir. Kelimelerin sırasına göre belirli bir formül uygulanır ve elde edilen değerler embedding katmanından çıkan vektörlerle toplanır. Böylece, girdi verileri pozisyon bilgilerini de içinde barındırır ve modelin daha iyi anlamasına katkı sağlar.

Positional Encoding

Positional encoding katmanından geçen veriler, transformer modelinin encoder bölümünde işlenmeye hazır hale gelir.

Multi-Head Attention

Multi-Head Attention Mimarisi

Positional encoding katmanından çıkan vektörler, Multi-Head Attention katmanına giriş yapar. Girdi verisi, key, query ve value olarak üç farklı kanaldan iletilir ve bu kanallarda her biri için farklı olan linear katmanlardan geçer. Key, query ve value kavramları şu şekildedir: Transformer modellerinde, query aranan bilgiyi temsil ederken, key bağlam veya referanstır. Value ise aranan içeriği ifade eder. Query ve key birlikte çarpılarak attention haritası elde edilir ve bu skorlar daha sonra value değerlerinin ağırlıklı toplamını hesaplamak için kullanılır. Bu ağırlıklı toplam, daha sonra modelin çıktısını hesaplamak için kullanılır. Daha sonrasında ise softmax, normalization ve bir diğer linear katmandan geçerek attention bloğunu oluştururlar. İşlemlerin encoderde aynı veriler üzerinden yapılmasının sebebi, verilen girdinin kendi içerisindeki bağlamı daha iyi anlaması içindir. Örneğin;

I am eating pizza and it is delicious.

cümlesindeki pizza ve it kelimelerinin aynı nesneyi temsil ettiğini anlaması sağlanır.

Positional encoding katmanından gelen veriler birden fazla (genellikle 8) bloktan geçer ve çıktıları birleştirilir. Bu yapıya bu yüzden Multi-Head Attention denir. Daha sonra birleştirilen çıktılar, belirlenen sayıda bloklara uçtan uca eklenerek tekrar bağlanır. Son katmanın çıktısı, artık encoderin çıktısı olur. Encoderin çıktısı, girdi verilerimize ait bilgileri içermektedir. Decoder, encoderin çıktısından gelen veriler sayesinde istenen çıktıyı üretebilecektir. Örneğin, İngilizce — Fransızca çevirisi yapan bir model olduğunu varsayarsak, girdi olarak gelen İngilizce cümleleri encoder bloğu kodlayarak çıktı oluşturur ve oluşturulan encoder çıktısında yer alan veriler sayesinde decoder istenen Fransızca çeviriyi çıktı olarak sunar. Peki, decoder bunu nasıl yapar? Hadi inceleyelim.

Decoder

Decoder Bloğu

Decoder bloğu, encoder bloğundan gelen verileri istenen çıktı için işler ve dönüştürmeyi gerçekleştirir. İngilizce — Fransızca çeviri yapan bir modelde, encoder İngilizce cümleyi işler ve kodladığı verileri decoder’a gönderir. Decoder bloğu, encoder çıktısındaki İngilizce cümleye ait olan verileri işleyerek istenen Fransızca çıktıyı elde etmeyi sağlar. Şimdi burada encoder bloğundan farklı olarak neler yapıldığını inceleyelim.

Decoder’de de encoderde olduğu gibi word embedding ve positional encoding katmanları bulunmaktadır. Encoder’de girdi cümlesi olduğu gibi verilirken decoderde cümleye ilk olarak sadece başlangıç tokeni verilir.Bu token, önce kendi içindeki attention bloğuna girdikten sonra çıktısı encoder çıktısı ile birlikte attention bloğuna girer. Bu kısım artık encoder’den gelen kodlanmış verilerin işlendiği yerdir. İşlenen veriler, normalizasyon, linear ve softmax gibi katmanlardan geçtikten sonra çıktısı decoder’a ikinci bir input olarak verilir. İkinci input da aynı aşamalardan geçer ve bu döngü böyle devam eder. Decoder çıktısından cümle sonu tokeni gelene kadar bu döngü devam eder. Cümle başlangıç tokeni ile cümle sonu tokeni arasındaki elde edilen tokenler modelin çıktısı olur.

Transformer modellerinin çalışma mantığı kabaca bu şekildedir. Bu modeller oldukça büyük datasetler ile eğitilebilmekte ve girdi boyutu olarak da cümleden paragraflara kadar büyütülebilmektedir. Getirdiği bu avantajla birlikte doğal dil işleme modellerinde yepyeni bir boyut kazandırmıştır. Günümüzde oldukça popülerleşen büyük dil modelleri (Large Language Models) olan ChatGPT, Bard, Bing AI, Claude, vb. birçok chatbotunun temelini transformer modeli oluşturmaktadır.

Sonuç

Bu makalemizde günümüzde oldukça popüler olan büyük dil modellerinin (LLM) temel taşı olan transformer modellerinden bahsettik. Transformer modellerin attention mekanizması ile nasıl çalıştığından ve diğer Seq2Seq modellerinden nasıl daha başarılı olduğunu anlattık. Bir sonraki yazımızda ise transformer modelinin nasıl build edildiğinden, nasıl eğitildiğinden ve Huawei Cloud ModelArts üzerinden nasıl deploy edeceğimizden bahsedeceğiz. Bir sonraki yazımızda görüşmek üzere.

Hoşçakalın 👋.

--

--