Transformer Modelleri ve Attention Mekanizması

Bir Başka Dünya
Published in
5 min readMar 9, 2024

--

Transformer modeli, 2017 yılında Google Brain tarafından “Attention Is All You Need” başlıklı bir makale ile tanıtılmıştır. Temel olarak, derin öğrenme tabanlı bir model olup, özellikle doğal dil işleme (NLP) görevlerinde devrim yaratmıştır. Geleneksel RNN (Recurrent Neural Network) ve LSTM (Long Short-Term Memory) gibi önceki modellere kıyasla, transformer modeller daha hızlı ve daha etkili şekilde eğitilebilirler. Bunun ana sebebi, paralel işleme kabiliyetine sahip olmaları ve “attention mekanizması”nı kullanarak verinin farklı bölümleri arasındaki bağlantıları daha iyi anlamalarıdır.

Neden Önemlidir?

Transformer modelleri, NLP alanında birçok görevde olağanüstü performans sergilemiştir. Bu modeller, metin çevirisi, metin özetleme, soru-cevap sistemleri ve daha pek çok alanda kullanılarak, önceki yöntemlere göre önemli ölçüde iyileşmeler sağlamıştır. Transformer’ın en önemli yeniliği, geleneksel RNN ve LSTM modellerinin aksine, metin içindeki uzun mesafeli bağlantıları daha etkin bir şekilde öğrenebilmesidir. Bu, dilin karmaşık yapısını ve anlamını daha iyi kavrayabilmek anlamına gelir.

Transformer Modelinin Temel Bileşenleri

Transformer modelleri, temel olarak iki ana bileşenden oluşur: Encoder ve Decoder. Her biri, birden fazla katmandan (layer) oluşan bu bileşenler, farklı ama birbiriyle ilişkili görevleri yerine getirirler.

  • Encoder: Metni alır ve her bir kelime veya token için bir temsil (representation) oluşturur. Bu temsiller, metnin anlamını ve kelimeler arasındaki ilişkileri içerir. Encoder, metnin anlamını bir dizi vektör olarak kodlar, bu da decoder tarafından kullanılabilir.
  • Attention Mekanizması: Hem encoder hem de decoder içinde bulunan, modelin metnin hangi bölümlerine “dikkat etmesi” gerektiğini belirleyen bir mekanizmadır. Bu sayede model, özellikle çeviri gibi görevlerde, metnin belirli bölümleri arasındaki bağlantıları daha etkin bir şekilde kurabilir.
  • Decoder: Encoder tarafından oluşturulan temsilleri kullanarak, hedef dili veya metni üretir. Decoder, bir çıktı üretmek için hem encoder’dan gelen bilgileri hem de kendi ürettiği önceki çıktıları kullanır.

Bu bileşenlerin her biri, “self-attention” ve “feed-forward neural networks” gibi yapıları içerir. Self-attention mekanizması, modelin bir cümle içindeki her kelimenin diğer kelimelerle olan ilişkisini değerlendirmesine olanak tanır. Bu, dilin doğasındaki karmaşık bağlamları ve anlamları daha iyi anlamasını sağlar.

Attention Mekanizması

Attention Mekanizmasının Tanımı

Attention mekanizması, bir modelin girdi verisinin belirli bölümlerine “daha fazla dikkat etmesi” gerektiğini belirlemesine olanak tanır. Bu kavram, insanların yeni bilgileri işlerken, mevcut bilgileri ve bağlamları göz önünde bulundurarak odaklanma yeteneğinden esinlenmiştir. NLP’de, bir cümle veya metin parçası işlenirken, bazı kelimelerin veya ifadelerin anlamı üzerinde daha fazla durulması gerekebilir. Attention mekanizması, bu önemli bölümlere daha fazla “dikkat etmek” ve modelin performansını artırmak için kullanılır.

Örnek cümleler ile attention mekanizmasını incelemek isteyenler için: https://www.comet.com/examples/demo-visualizing-attention-bertviz/

Attention Mekanizmasının Çeşitleri

  • Self-Attention (Kendi Üzerine Dikkat): Bir cümlenin veya metnin içindeki her bir elemanın, diğer tüm elemanlarla olan ilişkisini değerlendirir. Bu, modelin metnin iç bağlantılarını ve anlamsal ilişkilerini anlamasına yardımcı olur. Örneğin, “The animal didn’t cross the street because it was too tired,” cümlesinde “it” kelimesinin “animal” kelimesine referans verdiğini anlamak self-attention ile mümkündür.
  • Multi-Head Attention: Bu, self-attention mekanizmasının bir genişlemesidir ve modelin farklı “başlıklar” (heads) üzerinden veriyi paralel olarak işlemesine olanak tanır. Her bir “head”, verinin farklı temsillerine odaklanır, böylece model aynı anda birden fazla bağlamı ve ilişkiyi değerlendirebilir. Bu, modelin genel anlama yeteneğini artırır.
  • Cross-Attention: Genellikle encoder-decoder yapılarında kullanılır ve decoder’ın, encoder tarafından üretilen temsillere dikkat etmesini sağlar. Bu, özellikle metin çevirisi gibi görevlerde, kaynak metnin belirli bölümlerine göre hedef metin üretirken faydalıdır.

Encoder:

Encoder, girdi metninin her bir kelimesini veya token’ını, hem kendi içindeki anlamını hem de metin içindeki diğer kelimelerle olan bağlamsal ilişkilerini yansıtan bir vektör dizisine dönüştürür. Bu işlem, birden fazla encoder katmanı aracılığıyla gerçekleşir; her katman, self-attention mekanizması ve ardından bir feed-forward neural network içerir. Self-attention, bir kelimenin metindeki diğer kelimelerle olan ilişkisini değerlendirerek, her bir kelimenin metin içindeki “önemini” ve bağlamını kodlamasına yardımcı olur. Encoder’ın temel görevi, metni temsil eden bu karmaşık vektörleri oluşturarak, decoder’ın işleyebileceği bir forma getirmektir.

Decoder:

Decoder, encoder’dan gelen bilgileri kullanarak, adım adım hedef metni oluşturur. Her adımda, hem önceki adımlarda ürettiği çıktılara (önceki kelimelere) hem de encoder tarafından sağlanan girdi metni temsillerine dayanarak bir sonraki kelimeyi tahmin eder. Bu işlem, birden fazla decoder katmanı içerir; her bir katman, encoder’dan gelen bilgilere dikkat etmek için kullanılan cross-attention mekanizması, self-attention mekanizması ve bir feed-forward neural network içerir. Cross-attention, decoder’ın hedef metni oluştururken girdi metniyle olan ilişkisini anlamasına olanak tanırken, self-attention decoder içindeki kelimeler arası ilişkileri yönetir.

Encoder ve decoder mimarisi, transformer modelinin güçlü ve esnek olmasının temel nedenlerinden biridir. Bu yapı, modelin hem kısa mesafeli hem de uzun mesafeli bağlamları öğrenmesine, ayrıca karmaşık dil yapılarını ve anlamları işlemesine olanak tanır.

Self-Attention’ın Tanımı ve Önemi

Self-attention, bir modelin bir cümle veya dizi içindeki her elemanın diğer tüm elemanlarla olan ilişkilerini anlamasını sağlayan bir mekanizmadır. Temelde, modelin her bir kelimenin cümle içindeki bağlamını değerlendirerek, her bir kelime için bir ağırlık hesaplamasını içerir. Bu ağırlıklar, modelin hangi kelimelerin diğer kelimelerle daha önemli ilişkilere sahip olduğunu anlamasını sağlar, böylece cümle veya metnin daha derin bir anlamını öğrenebilir.

Self-attention’ın önemi, dilin karmaşıklığı ve kelime anlamlarının bağlama bağlı değişkenliğinden kaynaklanır. Bu mekanizma sayesinde, modeller metin içerisindeki uzak ilişkileri ve bağlamları daha etkin bir şekilde öğrenebilir. Bu özellik, özellikle uzun metinlerin işlenmesi veya metin içindeki ince anlam farklılıklarının anlaşılması gereken durumlarda son derece faydalıdır.

Örnek: Bir Cümle Üzerinden Self-Attention’ın Nasıl Çalışır?

Cümle: “The cat sat on the mat.”

Bu basit cümle üzerinden self-attention mekanizmasının nasıl çalıştığını gösterelim. Her kelimenin diğer kelimelerle ilişkisini değerlendirme sürecini ele alalım:

  1. Giriş: Model, cümleyi kelime veya token dizisi olarak alır.
  2. Self-Attention Ağırlıklarının Hesaplanması: Model, her bir kelimenin cümle içindeki her diğer kelimeyle olan ilişkisini değerlendirir. Bu, örneğin “cat” ve “sat” kelimeleri arasındaki ilişki gibi, kelimeler arasındaki semantik ve sözdizimsel bağlantıları anlamak için yapılır.
  3. Ağırlıklı Kelime Temsillerinin Oluşturulması: Her kelime için, diğer kelimelerle olan ilişkilerine göre bir ağırlık hesaplanır. Bu ağırlıklar, kelimenin cümle içindeki önemini ve bağlamını yansıtır.
  4. Çıktı: Model, bu ağırlıkları kullanarak her bir kelime için bir çıktı vektörü oluşturur. Bu çıktı vektörleri, kelimelerin hem kendi anlamlarını hem de cümle içindeki bağlamlarını içeren zenginleştirilmiş temsillerdir.
BertViz kullanılarak oluşturulan bir Attention örneği.

Örneğin, “cat” kelimesi için model, “sat” ve “mat” kelimeleriyle güçlü bir ilişki belirleyebilir çünkü bu kelimeler genellikle bir arada kullanılır ve birbirleriyle mantıksal bir bağlantıya sahiptir. Böylece, model “cat” kelimesinin cümledeki rolünü ve önemini daha iyi anlar.

Self-attention mekanizması, bu şekilde her bir kelimenin cümle içindeki diğer kelimelerle olan ilişkilerini değerlendirerek, metnin daha derin anlamını öğrenme yeteneğini geliştirir.

--

--