paint-brush
Transformers: Dikkat Çağıile@bhavdeepsethi
1,934 okumalar
1,934 okumalar

Transformers: Dikkat Çağı

ile Bhavdeep Sethi7m2024/08/26
Read on Terminal Reader

Çok uzun; Okumak

BERT ve GPT gibi birçok son teknoloji modelin temelini oluşturan, devrim niteliğindeki "Dikkat Tek İhtiyacınız Olan Şey" makalesinden Transformer modelinin basit açıklaması.
featured image - Transformers: Dikkat Çağı
Bhavdeep Sethi HackerNoon profile picture
0-item



2017'de bir grup araştırmacı (Google ve Toronto Üniversitesi'nden) doğal dil işleme (NLP) görevlerini ele almanın yeni bir yolunu tanıttı. Devrim niteliğindeki " Dikkat Tek İhtiyacınız " başlıklı makaleleri, günümüzde birçok gelişmiş AI sisteminin temeli haline gelen bir mimari olan Transformer modelini sundu. Modelin performansı, ölçeklenebilirliği ve çok yönlülüğü, yaygın bir şekilde benimsenmesine yol açarak BERT (Çift Yönlü Kodlayıcı Gösterimleri) ve GPT (Üretici Önceden Eğitilmiş Transformatörler) gibi son teknoloji modellerin omurgasını oluşturdu.


Transformer modelinden önce, dili işleyen çoğu AI modeli, Tekrarlayan Sinir Ağı (RNN) veya geliştirilmiş versiyonu Uzun Kısa Süreli Bellek Ağı (LSTM) adı verilen bir sinir ağı türüne büyük ölçüde güveniyordu. Özellikle dil modelleme ve makine çevirisi (dizi transdüksiyonu olarak da adlandırılır) gibi sorunlar. Bu modeller, kelimeleri bir dizide, soldan sağa (veya tam tersi) tek tek işliyordu. Bu yaklaşım, bir cümledeki kelimelerin genellikle önceki kelimelere bağlı olması nedeniyle mantıklı olsa da, bazı önemli dezavantajları vardı:


  • Yavaş Eğitim: RNN'ler ve LSTM'ler bir seferde bir kelime işlediğinden, bu modelleri büyük veri kümeleri üzerinde eğitmek zaman alıcıydı.
  • Uzun Cümlelerde Zorluk: Bu modeller genellikle bir cümlede birbirinden uzak olan kelimeler arasındaki ilişkileri anlamakta zorluk çekiyorlardı.
  • Sınırlı Paralellik: Kelimeler sıralı olarak işlendiğinden, aynı anda birçok işlem yapmaya dayanan (paralellik) modern bilgisayar donanımlarından yararlanmak zordu.


Ana Fikir: Mimariye Dikkat

Transformer modelinin ardındaki temel fikir "dikkat" olarak adlandırılan bir şeydir. Basitçe ifade etmek gerekirse, dikkat, bir kelimenin anlamını/bağlamını anlamaya çalışırken modelin cümlenin belirli kısımlarına odaklanmasına yardımcı olur. "Garaja park edilmiş araba mavidir" cümlesini düşünün. Mavi kelimesini düşündüğünüzde, cümlenin başlarında geçen "araba" kelimesine doğal olarak odaklanırsınız çünkü size mavinin ne olduğunu söyler. Makine çevirisi modelleri, "mavi"nin arabaya mı yoksa garaja mı atıfta bulunduğunu belirlemekte zorlanırdı. Öz-dikkatin yaptığı şey budur - modelin cümlede nerede olursa olsun ilgili kelimelere odaklanmasına yardımcı olur.


Dikkatin yeni bir kavram olmadığını ve RNN'lerle birlikte zaten kullanıldığını unutmayın. Transformer, yalnızca dikkate dayanan ilk transdüksiyon modeliydi ve bu sayede sinir ağlarına olan ihtiyacı ortadan kaldırdı. Bu, aşağıdaki avantajları sağladı:

  • Paralel İşleme: Kelimeleri birbiri ardına işleyen RNN'lerin aksine, Transformer bir cümledeki tüm kelimeleri aynı anda işleyebilir. Bu, eğitimi çok daha hızlı hale getirir.
  • Bağlamın Daha İyi Anlaşılması: Öz-dikkat mekanizması sayesinde Transformer, bir cümlede ne kadar uzakta olurlarsa olsunlar kelimeler arasındaki ilişkileri yakalayabilir. Bu, karmaşık cümleleri anlamak için çok önemlidir.
  • Ölçeklenebilirlik: Model, daha fazla katman eklenerek kolayca ölçeklendirilebilir ve bu sayede çok büyük veri kümelerini ve karmaşık görevleri ele alabilir.


Gördüğünüz gibi, yeni model sadece sinir ağlarının tüm dezavantajlarını ortadan kaldırmakla kalmıyor, aynı zamanda makine çevirisinin performansını da artırıyor!


Orijinal makalenin anlaşılması biraz zor olabileceğinden, makalede açıklanan model mimarisinin daha basit bir açıklaması aşağıda verilmiştir.

Transformatör - Model Mimarisi


Kodlayıcı ve Kod Çözücü Yığınları : Transformatör, bir kodlayıcı yığınından (solda) ve bir kod çözücü yığınından (sağda) oluşur. Kodlayıcı yığını, giriş dizisini (bir cümle gibi) sürekli gösterimler kümesine dönüştürürken, kod çözücü yığını bu gösterimleri bir çıktı dizisine (bir çeviri gibi) dönüştürür. Her yığın için, aşağıdan yukarıya doğru, modelin temel bileşenleri bir örnekle açıklanmıştır.


  1. Kodlayıcıda Giriş Cümlesi İşleme

    • Girdiler : Çevirmek istediğiniz metin. Örn. "Garaja park edilmiş araba mavidir."

    • Giriş Gömme : Sözcükleri, gömme adı verilen sabit uzunluktaki sayısal gösterimlere (vektörler) dönüştürür. Bu gömmeler, sözcüklerin anlamsal anlamını modelin anlayabileceği şekilde yakalar. Örneğimizden:

      • "The" -> [0.9, -0.4, 0.2, ...]

      • "araba" -> [0,5, 0,1, -0,7, ...]

      • "o" -> [-0.8, 0.2, 0.8, ...]

      • ve yukarıdaki cümledeki her kelime için benzer şekilde.


    • Konumsal Kodlama : Model, herhangi bir sıralamaya sahip olmayan giriş yerleştirmelerini işlediğinden, bir cümledeki kelimelerin sırasını anlamak için bir yola ihtiyaç duyar. Konumsal kodlama, dizideki her kelimenin konumu hakkındaki bu bilgiyi yerleştirmesine ekler.

      • 1. konumdaki "The" [0.9 + P1, -0.4 + P1, 0.2 + P1, ...] olarak ayarlanabilir, burada P1, ilk konum için konumsal kodlamayı temsil eder ve böylece P1 konumu için benzersiz olan yeni bir yerleştirme oluşturulur.


    • Öz-Dikkat Mekanizması : Daha önce açıklandığı gibi, bu, modelin bağlama bağlı olarak bir cümledeki farklı kelimelere odaklanmasını sağlar. Öz-dikkat mekanizması, her kelime için, geçerli kelimeyi kodlarken diğer kelimelere ne kadar odaklanılması gerektiğini temsil eden bir puan hesaplar.

      • "Araba" kelimesi için, öz dikkat, "park edilmiş", "garaj" ve "mavi" kelimelerinin bağlamını anlamada özellikle alakalı olduğunu belirleyebilir.


    • Çok başlı dikkat : Transformatör modelinin yeni bir parçası. Çok başlı dikkat, paralel çalışan ve doğrusal olarak birleştirilen birden fazla öz-dikkat katmanı/işlemidir.

      • Örneğin, bir kafa ana konuya ("araba") ve onun özelliklerine ("mavi") odaklanırken, bir başka kafa izafi cümleye ("garajda park edilmişti") odaklanabilir.

      • Çok başlı dikkat modülü, modele "mavi" renginin garaja kıyasla araba için daha alakalı olduğunu anlama yeteneği kazandırır.


    • İleri Beslemeli Sinir Ağları : Öz-dikkat katmanından sonra çıktı, her bir pozisyona ayrı ayrı ve aynı şekilde uygulanan ileri beslemeli bir sinir ağından geçirilir (tekrar ediyorum, paralel olarak çalıştırılabilir!). Bu, aralarında bir ReLU aktivasyonu bulunan iki doğrusal dönüşümden oluşur.


    • Ekle ve Norm : Kalan bağlantılar (ekle), bir katmanın girişini çıkışına eklemek için kullanılır, bu daha sonra normalleştirilir (norm). Bu, eğimlerin kaybolmasını veya patlamasını önleyerek derin ağların eğitilmesine yardımcı olur.


  2. Kod Çözücüde Çevirinin Oluşturulması

    NLP'de, dizi başlangıcı belirtecinin başlangıcını <SOS> özel karakteriyle ve dizinin sonunu <EOS> ile belirtmek yaygındır. Kod çözücü, işlenmiş girdiyi kodlayıcıdan alır ve Fransızca "La voiture qui était garée dans le garage est bleue" çevirisini üretir. Bu kısım şu şekilde çalışır:


    • Kod Çözücüye Giriş : Kod çözücü, kodlayıcıdan gelen İngilizce cümlenin kodlanmış gösterimiyle başlar. Dikkat ederseniz, kod çözücü kendi çıktısını da girdi olarak alır. Başlangıç kelimesi için bir girdisi olmayacağından, başa <SOS> belirtecini ekleriz (bu nedenle sağa kaydırılır) ve son kelimeyi kaldırırız. Bu kaydırılmış dizi, kod çözücüye beslenen şeydir.


    • Maskelenmiş Öz-Dikkat : Kod çözücüde, maskelenmiş bir öz-dikkat mekanizması, çıktı dizisindeki her bir kelimenin yalnızca kendisinden önceki kelimelere dikkat edebilmesini sağlar. Bu, modelin ileriye bakmasını önler ve çeviriyi soldan sağa doğru birer kelime olacak şekilde üretmesini sağlar.

      • Örneğin, kod çözücü “La” (Fransızcanın ilk kelimesi) kelimesini üretmek üzereyken yalnızca <SOS> ifadesinin bağlamını bilir ve “Voiture” gibi gelecekteki kelimeleri bilmez.


    • İleri Beslemeli Sinir Ağları : Kod çözücü, bu bilgiyi daha ileri işlemek için başka bir ileri beslemeli sinir ağı uygular ve çeviriyi adım adım iyileştirir.


Kod çözücüde, giriş cümlesini maskeli öz-dikkat, kodlayıcı-kod çözücü dikkati ve ileri beslemeli ağların çoklu katmanları aracılığıyla işledikten sonra, hedef cümledeki her bir konum için (bizim durumumuzda Fransızca) bir dizi sürekli gösterim (yüzer nokta vektörü) elde ederiz. Bu gösterimlerin gerçek kelimelere dönüştürülmesi gerekir. İşte son doğrusal ve softmax katmanının devreye girdiği yer burasıdır.


  • Doğrusal Katman : Bu katman, son kod çözücü katmanın çıktısını (her pozisyon için yoğun bir vektör gösterimi) hedef kelime dağarcığının büyüklüğünde bir vektöre (örneğin, Fransızca dilindeki tüm olası kelimeler) dönüştüren tam bağlı bir sinir ağı katmanıdır.
  • Softmax Katmanı : Doğrusal dönüşümden sonra, bu logitleri (ham puanları) olasılıklara dönüştürmek için bir softmax fonksiyonu uygulanır. Bu olasılıklar, hedef kelime dağarcığındaki her bir kelimenin çevirideki bir sonraki doğru kelime olma olasılığını gösterir. Bu, Fransızca kelime dağarcığından hangi kelimenin seçilmesi gerektiğini tahmin etmemizi sağlar (en yüksek olasılığa sahip hücre).


Kod çözücü esasen şunu yapar:

  • Birinci Adım: Kod çözücü <SOS> ile başlar ve ilk kelime olan “La”yı üretir.
  • İkinci Adım: <SOS> La girişiyle model bir sonraki kelimeyi, “Voiture”ı tahmin eder.
  • Üçüncü Adım: Kod çözücü <SOS> La Voiture'ı alır ve “quit” kelimesini üretir.
  • Devam Eden Süreç: Bu süreç “était”, “garée”, “dans”, “le”, “garage”, “est” ve son olarak “bleue” üreterek devam eder.
  • Sıra Sonu Simgesi: Kod çözücü, çevirinin tamamlandığını belirtmek için sonunda bir sıra sonu simgesi <EOS> üretir.


Bu adımları birleştirerek Transformer, tüm cümlenin yapısını ve anlamını önceki modellerden daha etkili bir şekilde anlayabilir. Öz-dikkat mekanizması ve paralel işleme, Transformer'ın hem kaynak hem de hedef dillerin nüanslarını ve yapısını etkili bir şekilde yakalamasını sağlayarak makine çevirisi gibi görevlerde oldukça yetenekli hale getirir.