LLM’ler ve Üretici Yapay Zekâya Giriş

Mehmet Zahit ANGİ
Huawei Developers - Türkiye
9 min readNov 14, 2023
Büyük Dil Modellerinin Boyut Karşılaştırması

Giriş

Yapay zeka teknolojileri arasında son yıllarda en dikkat çeken alan, büyük dil modelleri olmuştur. Hayatımızda bu modellerle sık sık karşılaşsak da modellerin arka planları, çalışma şekilleri hakkında bilgi sahibi olmak zaman ve çaba gerektirir. Bu yazı, büyük dil modellerine giriş niteliğinde olacak ve ilerleyen yazılarla birlikte bu modellerin çalışma prensiplerine daha derinlemesine bakacağız.

Serimizin ilk bölümünde, büyük dil modellerine (LLM) giriş yapacağız. Transformer mimarileri hakkında konuşacak ve LLM’lerde çok önemli olan “Prompt-Prompt Engineering” konularına ve Yapılandırma Parametrelerine değineceğiz. Sonraki yazılarda ise, daha da derine ilerleyerek “Pre-Training” yani “On-Egitim” yöntemlerine ve “Pre-Training” aşamasının ardından kullanılan “Ince-Ayar” (Fine-Tuning) Yöntemlerine değineceğiz.

Ardından, daha derinlere inerek “Transformer” ve “Attention” mekanizmalarını ayrıca inceleyecek ve bazı makaleleri açıklayacağız. Son olarak, bu yapıların dil alanının yanı sıra bilgisayarlı görü alanında da nasıl kullanıldığını açıklayan “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale” başlıklı makaleyi inceleyeceğiz.

Büyük Dil Modellerinin Yükselişi ve Bu Modellerden Önce Metin Oluşturma Yapıları

LLM’ler yapay zeka alanında devrim yaratarak son yıllarda büyük ilgi gören bir tür üretken(Generative) yapay zeka teknolojisidir. Bu modeller çok büyük miktardaki verilerden eğitilerek, tıpkı insan benzeri metinler üretmeleri ve dil/metin konularındaki karmaşık görevleri yüksek doğrulukla yerine getirebilme yetenekleri sayesinde son yıllarda oldukça popülerleşmiş ve bir çok alanda kullanılmaya başlanmıştır.

LLM’lerden önce metin oluşturmak için Yinelemeli Sinir Ağı dediğimiz RNN’ler kullanılıyordu. RNN’ler dili anlama ve gelecek bir sonraki kelimeyi tahmin etmeye yarayan yapay sinir ağı yapılarıdır. Ancak, RNN’ler uzun cümleler ve büyük belgelerde sınırlı kapasiteye sahiptirler. Bir cümlenin veya metnin anlamını çıkarmak için önceki kelimelerin ne anlama geldiğini bilmek gerekiyor. Özellikle birden fazla anlamı olan veya metnin bütününe göre anlam kazanan kelimeler RNN’ler için büyük sorunlar yaratıyorlar.

İşte bu noktada “Dikkat”(Attention) mekanizmalarına geliyoruz. Attention mekanizmaları bir kelime üzerinde etkili olan önceki kelimelere odaklanıyor. Bu da RNN’lerin karşılaştığı sınırlamaları aşmamıza yarıyor. Bu yüzden Attention mekanizmaları büyük dil modellerinde önemli bir rol oynar.

Transformer Mimarisi

Daha önce de bahsettiğim gibi transformer mimarisi doğal dil görevlerinde devrim yaratmış ve dil modellerini yeni bir noktaya taşımıştır. Bu mimari genellikle iki ana parçadan oluşur: kodlayıcı (encoder) ve çözücü (decoder). Bu modellerin en güçlü yönlerinden biri, cümle içindeki kelimelerin ilişkilerinin ve bağlamlarının anlaşılmasını sağlayan “self-attention” mekanizmalarıdır.

Transformer Mimarisi

Bu mimarilerde metin modele verilmeden önce kelimelerin tokenize edilmesi ve sayısal temsillere dönüştürülmesi gerekir. Bu sayede model kelimelerin kendisiyle değil sayısal temsilleriyle çalışır. Daha sonra Gömme Katmanı (Embedding Layer) bu sayısal temsilleri yüksek boyutlu vektörlerle dönüştürür ve her bir tokenin anlamını kodlar. Bu vektörler, Gömme Uzayında(Embedding Space) her kelimeninin kendisine özgü konumlara sahip olduğu bir yapı oluşturur, bu da dilin matematiksel şekilde anlaşılmasını kolaylaştırır.

Word Embedding

Ayrıca, bir kelimenin farklı konumlarda farklı anlamlara gelebileceği durumlarla başa çıkabilmek için bazı matematiksel işlemlerden yararlanılarak metindeki her kelimenin pozisyonunu temsil eden vektörler oluşturulur. Bu vektörler metin içindeki kelimelerin konumsal ilişkilerinin daha iyi anlaşılmasına yardımcı olurlar. Ayrıca daha önce bahsettiğimiz gömme katmanında oluşturulan kelime vektörleriyle bir araya gelerek her kelimenin anlamını ve pozisyonunu belirleyen bir bilgi tablosu oluşturur. Bu positional encoding bilgileri ile word embedding bilgileri birlikte self-attention katmanına iletilir.

Pozisyon Kodlama

“Attention Head”ler, çok sayıda “self-attention” içeren gruplardır, dilin farklı yönlerini paralel olarak öğrenebilir ve ilişkilerini vurgulayabilirler. Örneğin, bir attention head cümlenin anlamı için sözdizimsel yapıya daha fazla odaklanırken, diğeri kelime seçimine veya cümlenin genel anlamına daha fazla dikkat edebilir. Bu şekilde, farklı attention head’ler farklı özellikleri vurgulayarak genel anlamda cümlenin anlamını daha iyi anlamaya yardımcı olurlar. Kısacası metnin daha geniş bir kapsamda analiz edilmesini sağlarlar.Bu işlemlerden oluşan çıktılar ise bir “feed-forward neural network”e gönderilir ve her bir token için olasılık puanları hesaplanır.

Multi-Headed Self-Attention ve Feed Forward Network

“Feed-Forward” ağından sonra, “Softmax” normalizasyonu yapılarak sözlükteki her kelime için olasılık değerleri oluşturulur. Bu olasılık vektörlerinden en olası tahmin edilen tokenler belirlenir. Bu seçim süreci için çeşitli yöntemler kullanılabilir.

Çıkış Katmanının Olasılıklar Kümesi

Transformer ile Metin Üretimi

Transformer ile Metin Üretimi

Transformer mimarisinde encoder kısmı girdileri işler, embedding işlemi yaparak onları sayısal temsillere dönüştürür ve “multi-headed attention” katmanına iletir. Bu aşama, girdinin yapısını ve anlamını temsil eder. Decoder kısmı ise, encoder kısmının anlam yeteğini kullanarak ve girdinin başlangıç tokeninden başlayarak bir döngü içerisinde yeni tökenler oluşturur. Bu üretim süreci bir dizi sonu tokeni tahmin edilene kadar devam eder.

Encoder-Decoder modelleri çeviri gibi sequence-to-sequence görevlerde yaygın olarak kullanılırken, bazı modeller sadece Encoder (BERT) veya sadece Decoder’i (GPT, BARD, LLaMA) kullanır.

Prompting and Prompt Engineering

Prompt Örneği

Prompting dil modellerine istenilen metni üretmesi için bir başlangıç metni verme işlemidir.

Prompt Engineering ise belirli bir prompt’a (başlangıç metnine) cevap olarak modelin nasıl devam edeceğini, nasıl tepki vereceğini etkileyen parametlerin tasarlanması ve kullanılmasıdır. Özellikle modelimizin belirli bir konuda veya belirli bir türde metin oluşturmasını istiyorsak, prompting ve prompt engineering kullanarak modelimizin çıktısını şekillendirebiliriz.

Modellerin “in-context learning” denilen bağlamsal öğrenme yöntemiyle, prompt içine ek veriler veya örnekler ekleyerek bazı görevleri daha iyi anlamaları sağlanır. Bu yöntem zero-shot çıkarım’da yeterince iyi olan daha büyük dil modellerinde oldukça etkilidir. Ancak daha küçük dil modelleri sadece bu yöntemle (açık örnekler olmadan) istenilen çıktıları vermekte zorlanabilirler.

Zero-Shot Inference, bir modelin, öğrendiği genel dil ve bilgi yapısını kullanarak, yeni ve önceden karşılaşmadığı bir konuyla (konuya özgü bir eğitim almadığı halde) ilgili mantıklı tahminler yapabilme yeteneğidir. Örneğin, modelin eğitildiği veri setinde belirli bir konu hakkinde örnekler bulunmuyor veya model bu konuda spesifik bir eğitim almamış olabilir. Ancak, dil modeli, eğitim aşamasında edindiği genel dil bilgisi ve genel öğrenme yetenekleri sayesinde, o konuyla ilgili metin veya girişler verildiğinde mantıklı çıktılar üretebilir.

One-shot Inference ise modelin anlama yeteğini yönlendirmek için prompt içerisine tek bir örnek eklenen yöntemdir. Bu yöntem özellikle daha küçük modeller için performansı artırmaya yardımcı olur.

Dikkat etmemiz gereken nokta şudur:

Elimizde büyük bir dil modeli ve daha küçük bir dil modeli olduğunu düşünelim. Bu iki modele odaklanıldığında:

Prompt: “Yunan mitolojisindeki tanrılar kimlerdir?” sorusu sorulduğunda,

Muhtemel Zero-shot Inference Cevabı: “Zeus, Hera, Poseidon, Athena, Apollon, Artemis, Hermes ve Ares gibi tanrılar, Yunan mitolojisindeki önemli tanrılardır.”

Muhtemel One-Shot Inference Cevabı: “Zeus, Hera, Poseidon, Athena, Apollon, Artemis, Hermes ve Ares gibi tanrılar, Yunan mitolojisinde önemli rol oynayan bazı tanrılardır.”

şeklinde benzer veya aynı cevaplar elde edilebilir. Bu durumda dikkate alınması gereken önemli nokta, modellerin bu sonuca nasıl ulaştığıdır.

Büyük dil modelleri, dilin ve öğrenilen bilgilerin genel özelliklerinden yola çıkarak daha önce karşılaşmadığı bir konu hakkında cevap üretebilirken, daha küçük dil modelleri daha önce karşılaşmadığı bir konu hakkında cevap üretebilmek için bir örnek Prompt’a ihtiyaç duyar. Kısacası biri spesifik bir örnekten yola çıkarken diğeri genel dil yeteneklerini kullanarak işlem yapar.

Daha Büyük Modellerde Zero-Shot Çıkarım
Daha Küçük Modellerde Zero-Shot Çıkarım
One-Shot Çıkarım Örneği

Few-shot inference işe birden fazla örnek ekleyerek bu yöntemi daha ileriye taşır ve modelin çeşitli örneklerden öğrenmesini sağlar. Model bu örneklerden yararlanarak istenilenleri daha net şekilde anlar ve daha doğru cevaplar üretir. Modelin sınırlı sayıdaki örneklerden öğrenme ve genelleme yapma yeteneğini geliştirir.

Bu konuyla ilgili bir örneğe odaklanalım:

Prompt: “Köpeklerin hangi özelliklere sahip olduğu hakkında sınırlı sayıda örnek.”
Örnek Cevap: “Sadık, oyuncu, koruyucu ve sadık arkadaşlar olarak bilinen köpekler, genellikle insanlarla yakın ilişkiler kurarlar ve çeşitli ırklara sahiptirler.”

Bu durumda, modelin sınırlı sayıda örnekle eğitildiğini ve köpeklerle ilgili birkaç temel özelliği içeren bir prompt verildiğini düşünelim. Model, bu sınırlı örneklerden öğrenerek ve genelleme yaparak köpeklerin genel özellikleri hakkında bir çıkarımda bulunur. Bu, few-shot inference yönteminin, sınırlı sayıda örnek kullanarak modelin bir konuda daha iyi bir anlayış geliştirmesini sağladığını gösterir.

Few-Shot Çıkarım Örneği

Fine-tuning yöntemi ise genel amaçlı olarak eğitilmiş bir dil modelini, belirli görevler için daha iyi performans göstermesi amacıyla yeni verilerle özel bir eğitim sürecinden geçirerek modeli geliştirmeyi amaçlar. Bu konuya daha sonraki yazılarda detaylı bir şekilde değineceğiz.

Bu işlem, genellikle şu adımları içerir:

1. Özelleştirilmis Veri: İlk adım, belirli bir görev için özelleştirilmiş bir veri setinin hazırlanmasıdır. Örneğin: çeviri, metin oluşturma veya duygu analizi gibi görevler için spesifik veri setleri toplanabilir.

2. Fine-Tuning İşlemi: Bu adımda, genellikle önceden eğitilmiş bir genel amaçlı dil modeli (örneğin, GPT-3) kullanılır ve bu model, özelleştirme veri seti üzerinde daha spesifik bir görev için eğitilir. Model, belirli bir görevi daha iyi yerine getirecek şekilde, bu özelleştirme veri seti üzerinde tekrar eğitilir.

3. Performans Geliştirme: Fine-tuning süreci sonrasında, model belirli bir görev için daha spesifik bir şekilde eğitilmiş olur. Bu, modelin belirli bir görevde daha iyi performans göstermesini sağlar. Örneğin, çeviri görevi için fine-tuning yapıldığında, model çeviri işlemlerini çok daha iyi şekilde yapar.

Generative Configuration — Çıkarım Parametreleri

Çıkarım Parametreleri

Dil modellerinde, oluşturulan cevapların stilini ve yapısını etkilemek için bazı ayarlamalar yapılabilir. Bazı yapılandırma ayarları, çıktımızın özel gereksinimlerini karşılayacak şekilde düzenleme yapmamıza olanak sağlar. Bu ayarlar, dil modellerinin oluşturduğu metinlerin ne kadar yaratıcı, ne kadar çeşitli veya ne kadar tutarlı olacağını kontrol etmemize yararlar.

Bazı yapılandırma parametreleri:

  • Max New Tokens parametresi, modelin ürettiği yeni kelime sayısına sınırlama getirir. Bu parametre, metin üretimini kontrol altında tutmak ve istenmeyen uzun metinlerin oluşmasını engellemek için kullanılır.
  • Greedy Decoding, bir sonraki kelime tahmininde en yüksek olasılığa sahip olanı seçen basit bir yöntemdir. Hızlı ve basit olmasına rağmen tekrarlanan kelimeler veya dizilerle sonuçlanabilir. Uzun vadede en iyi sonucu garanti etmez, çünkü her adımda sadece en olası kelimeyi seçer.
  • Random Sampling, olasılık dağılımına bağlı olarak kelimeleri rastgele seçerek üretilen metinlerde çeşitlilik sağlar ve kelime tekrarı olasılığını azaltır. Random sampling her zaman en olası kelimeyi seçmez, daha az olası kelimeleri de rastgele olarak dahil eder, bu da metnin daha yaratıcı olmasını sağlar.
Acgözlü Yaklaşım ve Rassal Örnekleme
  • Top-k Sampling, büyük dil modellerinde metin üretimi esnasında kullanılan bir olasılık dağılımı yöntemidir. Top-k samplingde her bir kelimenin olasılığı sıralanır ve en yüksek olasılığa sahip k sayıda token arasından seçim yapılır. Her zaman en yüksek olasılığa sahip kelime seçilmez, farklı kelimelerin seçilmesi sağlanır .Bu durum rastgeleliğin artmasına yardımcı olur, üretilen metinlerde çeşitlilik sağlar ve tek tip metinlerin üretilmesini engeller.
  • Top-p Sampling, bir metin oluştururken her bir kelimenin olasılığı sıralanır ve bu olasılıklar toplamı üzerinden belirli bir eşik değeri belirlenir. Eşik değerine ulaşılana kadar kelimeler seçilir ve böylelikle bir kelimeler kümesi oluşur. Üretilecek kelime bu küme içerisinden seçilir. Bu sayede metin daha çeşitli olabilir ve kelime tekrarının önüne geçilebilir. Bu yöntem, metin üretiminde daha doğal ve çeşitli cümleler elde etmek için kullanılır.
Top-k Örnekleme ve Top-p Örnekleme
  • Temperature, metin oluştururken modelin yaratıcılığını ve tutarlılığını belirleyen bir parametredir. Daha yüksek bir değer, daha fazla rastgelelik ve çeşitlilik sağlar, ancak metinler daha dengesiz ve anlam bozukluğuna sahip olabilir. Düşük bir değer ise daha az çeşitli seçimlere yol açar, yani model daha güvenilir ve öngörülebilir metinler üretir, ancak üretilen bu metinler belirli bir kalıpta üretilmiş gibi tekrar edici ve sıkıcı olabilir. Yani, yüksek bir temperature değeri yaratıcılığı artırırken, düşük bir değer tutarlılık sağlar.
Temperature Parametresi Örneği

Sonuç

Bu yazımızda, büyük dil modellerine (LLM) giriş yaparak, bu modellerin yapay zeka ve dil işleme alanlarına getirdiği yeniliklerden ve devrimlerden bahsettik. Ardından, büyük dil modellerinde kullanılan transformer mimarisine ve “attention” mekanizmalarına değinerek, bu modellerin çalışma mantığını anlamaya çalıştık. Ayrıca, Prompt Engineering ve Yapılandırma Parametrelerine değinerek modelimizi nasıl daha iyi hale getirebileceğimizi konuştuk. Bir sonraki yazımızda daha derine inerek, büyük dil modellerinin pre-training aşamasını ele alacağız.

Gelecek yazılarımdan haberdar olmak için lütfen takipte kalın.

Referanslar

--

--