Gradio ile Doğal Dil İşleme, Büyük Dil Modeli Deploy Etme | Modern Yapay Zeka Teknolojileri: GAN’lar, Transformer Mimarisi ve LLM’ler

Hatice Dikmen
SabancıDx
Published in
10 min readAug 9, 2024

Generative AI vs Classical AI

Üretken yapay zeka, içerik odaklı bir yaklaşım izler, çünkü yeni veri örnekleri sentezleyebilir. Bu teknoloji, yalnızca içerik üretiminde değil, aynı zamanda muhakeme bazlı işlerde rafında döner ve matematiksel biçimlerle ifade edilir. Metin, ses ve video gibi unsurlardan ziyade, önemli metrikler, değerler ve fonksiyonlar sık sık kullanılır. Kestirim ve sınıflandırma işleri, klasik yapay zekanın en temel senaryolarındandır.

Üretken yapay zeka ve klasik yapay zeka, birbirinin yerine geçecek iki saha olmaktan ziyade, birbirini güçlendiren iki ayrı yöntem kümesidir.

Generative Adversarial Nets - Çekişmeli Üretici Ağlar GANs

Bir algoritma düşünün ki, yaptığınız bir karalamayı gerçek bir resme, ünlü bir tabloyu gerçek bir manzaraya veya yaptığınız bir tanımlamayı detaylı bir görsele dönüştürebilsin. İşte bu ve benzeri pek çok şeyi gerçekleştiren hem yetenekli hem de yaratıcı bir algoritma var: Çekişmeli Üretici Ağlar (GAN).

Çekişmeli Üretici Ağlar, 2014 yılında Ian Goodfellow ve ekibi tarafından NIPS konferansında tanıtıldı. Facebook Yapay Zeka Direktörü Yann LeCun, bu yenilikçi teknoloji hakkında çarpıcı bir açıklama yaparak önemini vurguladı.

“Derin öğrenmede ilginç gelişmeler olmakta… Bana göre bunlardan en önemlisi çekişmeli eğitim veya diğer bir deyişle GAN yani Çekişmeli Üretici Ağlardır. Önerilmekte olan bu yapı ve çeşitleri, geçtiğimiz on yılın en ilginç fikridir.”

Yann LeCun

Düşünün ki, bir program var ve sürekli olarak yeni şeyler öğreniyor. Ürettiği verilerle sizi şaşırtırken, bir yandan da gerçek ve sahte verileri ayırt etmeyi öğreniyor. İşte bu programın iki parçası var: Üretici Ağ (Generator) ve Ayırt Edici Ağ (Discriminator).

Generator: Bu ağ, rastgele bir vektör (z) alır ve bundan sahte bir görüntü üretir. Amacı, Ayırt Edici Ağ’ı kandırarak bu sahte görüntülerin gerçek olduğunu düşündürmek!

Discriminator: Bu ağ ise, bir dedektif gibi çalışır. Gelen görüntüleri dikkatlice inceler ve onların sahte mi yoksa gerçek mi olduğunu anlamaya çalışır.

Bu iki ağ, kendi başlarına keşif yaparak ve birbirlerinden öğrenerek, daha iyi hale gelirler. Bu süreçte, neyi nasıl yapacaklarına dair kuralları kendileri oluştururlar, bu yüzden buna “gözetimsiz öğrenme” denir.

Peki, GAN’ların güçlü yönleri nelerdir? İşte birkaç harika özelliği:

  • Yüksek Kalite ve Gerçekçilik: GAN’lar, inanılmaz derecede gerçekçi ve kaliteli veri örnekleri üretebilir. Yani, baktığınızda “Bu gerçekten yapay mı?” diyeceğiniz görüntüler oluşturabilirler.
  • Esneklik: Denetimli ve yarı denetimli öğrenme senaryolarında oldukça kullanışlıdırlar. Yani biraz veriyle bile harikalar yaratabilirler.
  • Sentetik Üretim: Özellikle sentetik görseller ve videolar üretmede oldukça başarılıdırlar. İster film efektleri, ister oyun grafikleri GAN’lar bu işlerde tam bir sihirbaz gibi çalışır.

Transformer Mimarisi

“Transformer” kelimesi, sadece bir bilim kurgu filminden çıkmış gibi görünse de, aslında metin işleme dünyasında bir devrimi temsil ediyor. Peki, bu devrimin arkasında ne var?

Transformers, “transduction” adı verilen bir sürecin yıldızlarıdır. Peki, transduction nedir diye soracak olursanız, basitçe açıklayalım: Girdi olarak bir sekansı alıp, çıktı olarak başka bir sekans veren modellere verilen isimdir. Örneğin, yanlış yazılmış bir kelimeyi doğru haliyle düzelten bir otomatik düzeltici ya da uzun bir makaleyi kısa ve öz bir özet haline getiren bir özetleyici düşünün. Ya da belki de en sık karşılaştığımız kullanım alanı, diller arasında köprü kurarak bir cümleyi Türkçe’den İngilizce’ye çevirebilen bir çeviri aracı. İşte Transformers, tüm bu işlemleri yapabilen akıllı modellerdir.

Ancak Transformers’ı asıl özel kılan şey, bu işlemleri yaparken kullandıkları benzersiz yöntemdir. Geleneksel modeller olan RNN (Recurrent Neural Networks), LSTM (Long Short-Term Memory), ve GRU (Gated Recurrent Units) gibi modellere kıyasla Transformers, “attention” yani dikkat mekanizması ile çalışır. Dikkat mekanizması, Transformers’ın anahtarıdır ve onu diğerlerinden ayıran en büyük yeniliklerden biridir.

Bugün, Google’ın arama motorlarında ve çeviri hizmetlerinde BERT (Bidirectional Encoder Representations from Transformers) adı altında Transformers’ı kullandığını biliyor muydunuz? Bu teknoloji, Google aramalarınızı daha da hassas ve ilgili hale getiriyor. Transformers, Google Brain araştırmacıları tarafından geliştirildi ve o zamandan beri dil işleme teknolojilerinde devrim niteliğinde bir etki yarattı.

Peki, Transformers’ı bu kadar özel yapan nedir? İşte üç temel avantajı:

  1. Hız: Transformers, diğer modellere göre aynı görevi daha az işlemle tamamlar.
  2. Paralel İşleme: LSTM gibi modellerde bir adımı tamamlamadan diğerine geçemezsiniz. Ancak Transformers, birçok işlemi aynı anda yapabilme yeteneğine sahiptir.
  3. Uzun Bağlamı Hatırlama: Transformers, uzun metinlerdeki anlamı hatırlamada oldukça iyidir. LSTM ve RNN gibi modellerin aksine, daha uzun cümlelerle başa çıkabilirler.

Transformers, bu üstün özellikleri sayesinde NLP dünyasında devrim yaratmaya devam ediyor. Sıradan bir cümleyi alıp, onu anlamlı bir hale getiriyor; yanlışları düzeltiyor ve diller arasında köprü kuruyor.

Transformer teknolojisini anlamanın en kolay yolu, onun kalbinde yatan “encoder-decoder” mimarisine göz atmak. Bu yapı, aslında oldukça basit iki temel bloktan oluşuyor: encoder (kodlayıcı) ve decoder (çözücü). Yukarıdaki şemada encoder solda, decoder ise sağda yer alıyor. Gelin, bu iki bloğun neler yaptığını keşfedelim.

Encoder, adından da anlaşılacağı gibi, veriyi “kodlayan” bir yapı. Mesela bir Türkçe cümleyi alıyor ve bu cümlenin içindeki bilgileri bir tür kod haline getiriyor. Bu kod, NLP dünyasında “context vector” yani bağlam vektörü olarak biliniyor ve cümlenin bütün anlamını taşıyor. Şimdi sıra Decoder’da, Decoder bu bağlam vektörünü alıp, örneğin İngilizce’ye çeviriyor. Yani kodlanmış bilgiyi çözerek anlamlı bir çıktı haline getiriyor.

Peki, neden böyle bir “kodlama” ve “çözme” işlemine ihtiyaç var? Çünkü nöral ağlar, girdi ve çıktı verilerinin boyutlarını sabit tutmak zorundadır. Bu, özellikle değişken uzunlukta cümleler içeren dillerde büyük bir zorluk yaratır. Hiç kimse tüm cümlelerini aynı uzunlukta kurmaz, değil mi? İşte bu yüzden encoder, değişken boyuttaki girdiyi sabit boyutlu bir vektöre indirgemeyi öğrenir, decoder ise bu veriyi kullanarak istenen işlemi gerçekleştirir.

Bu mimari, dil işlemede büyük bir devrim yarattı. Çünkü farklı uzunluklardaki metinlerle çalışmak, nöral ağlar için zor bir görevdir. Tabii ki, bu sorunu çözmek için padding gibi alternatif yöntemler de var, ancak encoder-decoder mimarisi, Transformers’ın gücünü tam anlamıyla ortaya koyuyor.

Sonuç olarak, encoder-decoder mimarisi, dil işleme ve çeviri gibi alanlarda büyük bir adım atmamızı sağladı. Bu iki blok, birlikte çalışarak metinleri anlamlı bir şekilde işler ve bizlere sunduğu çıktı ile hayatımızı kolaylaştırır. Transformers’ın büyüsünü anlamak için bu mimariyi keşfetmek, dil işleme dünyasında yepyeni ufuklar açacaktır.

Larg Language Models

Büyük Dil Modelleri (LLM), doğal dili anlayabilen ve üretebilen güçlü makine öğrenme modelleridir. Devasa metin ve kod veri kümeleri üzerinde eğitilirler, bu sayede dildeki kalıpları ve ilişkileri öğrenirler. LLM’ler, dilleri çevirme, duyguyu analiz etme ve yaratıcı metin biçimleri üretme gibi pek çok farklı görev için kullanılabilir.

Peki, LLM’ler neler yapabilir? İşte bazı özel örnekler:

  • Dilleri Çevirin: LLM’ler, bir metni bir dilden diğerine çevirebilir. Örneğin, Fransızca bir haber makalesini İngilizceye çevirmek için bir LLM kullanabilirsiniz. Bu, farklı dillerdeki bilgiye erişimi çok daha kolay hale getirir.
  • Duyguyu Analiz Edin: LLM’ler, metnin duygusunu analiz etmekte oldukça başarılıdır. Örneğin, bir müşteri incelemesinin olumlu mu yoksa olumsuz mu olduğunu belirlemek için bir LLM kullanabilirsiniz. Bu, müşteri geri bildirimlerini anlamada büyük bir avantaj sağlar.
  • Yaratıcı Metinler Oluşturun: LLM’ler, şiirler, kodlar, senaryolar, müzik parçaları, e-postalar ve mektuplar gibi yaratıcı metin biçimlerini oluşturabilir. Örneğin, belirli bir konu hakkında bir şiir yazdırmak istiyorsanız, bir LLM size harika bir şiir üretebilir. Yaratıcılığınızı desteklemek ve ilham almak için mükemmel bir araçtır.

İlk olarak, büyük dil modelleri denince akla gelen en önemli birkaç modele bakalım.

Ticari Modeller:

Geliştirici firmalar tarafından ticari olarak sunulan bu modeller, kullanıcıya hizmet olarak sunulurken, modelin kritik bilgileri genellikle paylaşılmıyor. Örneğin; GPT-4 Turbo, GPT-3.5 Turbo, Claude 2.1, Command, ve Luminous bu kategoriye girer.

Açık Kaynak Modeller:

Bu modeller ise, tüm bilgilerini şeffaflıkla paylaşan ve hemen hemen her kodu açık olan modellerdir. Llama 2, Mistral ve Falcon gibi modeller bu kategoriye örnektir.

GPT: Generative Pre-trained Transformer

GPT, “Generative Pre-trained Transformer” kısaltmasıdır. İşte bu ismin ardındaki sihir:

  • Generative (Üretici): Yeni veri örnekleri sentezleme yeteneğine sahiptir.
  • Pre-trained (Ön Eğitim): Dil modelleri için en kritik ilk safhadır. Büyük bir veri seti üzerinde başlatılır. Bu veri seti, internette bulunan farklı veri kaynaklarının bir araya getirilmesiyle oluşturulur. Bu kaynaklar arasında Wikipedia, Reddit, Twitter, Google, StackOverflow, Medium gibi siteler bulunur. Bu veriler bazen veri kazıma yöntemleriyle, bazen de karşılıklı imzalanan protokollerle elde edilir.
  • Transformer: Girdi ve çıktı dizilerini dönüştürmeyi öğrenir. Bu aşamadan sonra model, belirli isteklere ve amaçlara bağlı olarak ince ayar (fine-tuning) yapılır.

Fine-Tuning ve RLHF

Fine tuning işleminden sonra, GPT-3.5 ve GPT-4'ü ortaya çıkaran “Reinforcement Learning from Human Feedback (RLHF)” yöntemi devreye girer. Bu iki yöntem uygulandıktan sonra elimizde gerçekten etkileyici bir dil modeli, yani bir LLM (Large Language Model) olur.

Canavarı Evcilleştirmek-Taming The Monster

Bu devasa modeller, bazen korkutucu görünebilir. Ancak doğru şekilde eğitildiğinde ve kullanıldığında, inanılmaz derecede faydalı araçlar haline gelirler. İşte bu süreci, “canavarı evcilleştirmek” olarak adlandırabiliriz.

Gradio ile Doğal Dil İşleme(NLP), Büyük Dil Modeli Deploy Etme

Bu adımda, doğal dil işleme (NLP) teknikleri kullanarak büyük dil modellerinin (LLM) Gradio ile nasıl deploy edileceğini adım adım anlatıyorum.

Named Entity Recognition (NER)

Adlandırılmış Varlık Tanıma(NER), metinlerdeki önemli isimleri bulup sınıflandırmaya odaklanan bir doğal dil işleme (NLP) tekniğidir. NER’in temel amacı, yapılandırılmamış metinlerden anlamlı ve düzenli bilgiler çıkarmaktır. Böylece, makineler bu bilgileri kullanarak metin özetleme, bilgi grafikleri oluşturma, soru cevaplama ve daha pek çok uygulama için varlıkları anlayabilir ve kategorize edebilir. Kısacası, NER, metinlerdeki gizli hazineyi bulup önümüze seren bir teknoloji diyebiliriz.

Gradio

Gradio, makine öğrenimi modelleri için süper kolay ve kullanışlı kullanıcı arayüzleri oluşturmanızı sağlayan açık kaynaklı bir Python kütüphanesidir. Geliştiriciler ve veri bilimcileri, Gradio sayesinde modellerine interaktif web tabanlı arayüzler yapabilirler. Bu sayede kullanıcılar, modellerle kolayca etkileşime girip sonuçları gerçek zamanlı olarak görebilirler.

Bu uygulama için ben google colab kullanacağım.

1. HuggingFace Hub’dan NER Modeli İndirme

İlk adım olarak, HuggingFace Hub’dan bir NER modeli indireceğiz. Bunun için Transformers kütüphanesini kullanacağız.

Bu kodlarla modelimizi indirip hazır hale getirdik. Şimdi, İngilizce ve Türkçe örnek metinlerle nasıl çalıştığını görelim.

2. Örnek Metinlerle NER İşlemi

İlk olarak İngilizce bir metin üzerinde NER işlemi yapalım:

Burada text değişkenine "I am Tim and I work at Google" cümlesini atadık ve ner_pipeline fonksiyonunu kullanarak NER işlemi gerçekleştirdik.

Türkçe metinler üzerinde de aynı işlemi yapabiliriz:

Bu kodda, text_tr değişkenine "Benim adım Hatice ve Sabancı'da çalışıyorum" cümlesini atadık ve NER işlemini yaptık.

3. NER Fonksiyonu Oluşturma

Bir fonksiyon oluşturarak bu işlemi daha kullanışlı hale getirebiliriz:

Bu fonksiyon, verdiğiniz metin üzerinde NER işlemi yapar ve sonucu döndürür.

4. Gradio ile Uygulama Oluşturma

Şimdi Gradio ile interaktif bir web arayüzü oluşturalım.

Bu kodlar, Gradio ile bir web arayüzü oluşturur ve başlatır. Kullanıcılar, bu arayüzde metinler girerek NER işlemi yapabilir ve sonuçları gerçek zamanlı olarak görebilirler.

Aşagıdaki çıktılar, Gradio ile oluşturduğumuz NER uygulamasının nasıl çalıştığını ve metinlerdeki özel isimleri nasıl tespit ettiğini gösteriyor.

Girilen Metin: “My name is Tim and I live in California”

Sonuçlar:

  • Tim: PER (Person - Kişi) olarak doğru bir şekilde tanımlanmış.
  • California: LOC (Location - Yer) olarak doğru bir şekilde tanımlanmış.

Bu sonuçlar, modelin İngilizce metindeki kişileri ve yerleri doğru bir şekilde tespit edebildiğini gösteriyor.

  • Girilen Metin: “Ali İstanbul’da çalışıyor.”

Sonuçlar:

  • Ali: PER (Person - Kişi) olarak doğru bir şekilde tanımlanmış.
  • İstanbul: LOC (Location - Yer) olarak doğru bir şekilde tanımlanmış.

Bu sonuçlar, modelin Türkçe metindeki kişileri ve yerleri de doğru bir şekilde tespit edebildiğini gösteriyor.

Bu örnekler, Gradio ile oluşturduğumuz NER uygulamasının hem İngilizce hem de Türkçe metinlerde başarılı bir şekilde çalıştığını gösteriyor. Kullanıcılar, bu arayüzde metinler girerek NER işlemi yapabilir ve sonuçları anında görebilirler. Bu tür bir uygulama, metin analizi, bilgi çıkarımı ve dil işleme gibi birçok alanda oldukça kullanışlıdır.

Dil Modelleri Sözlüğü: Terimler ve Anlamları

Büyük dil modelleri hakkında konuşurken sıkça karşılaşacağınız bazı terimler var. İşte bu terimlerin ne anlama geldiğine dair kısa ve anlaşılır açıklamalar:

  • Prompt: Modelden bir yanıt alabilmek için verilen başlangıç metni.
  • Completion: Modelin, verilen prompt’a karşılık ürettiği yanıt.
  • Token: Dil modelleri için yapı taşı. Sık tekrarlanan karakter dizileridir. Yaklaşık olarak 100 token, 75 kelimeye denk gelir. Her dil ve her model için tokenization (tokenlara ayırma) işlemi farklı çalışır. Büyük dil modelleri, tokenlar arasındaki istatistiksel bağıntıları öğrenir ve bir sonraki tokenı tahmin etmeye çalışır.

“Farklı dillerin veya cümlelerin nasıl tokenize edildiğini kendiniz deneyimlemek isterseniz, buradaki linki kullanarak OpenAI’in sağladığı tokenizer’a ulaşabilirsiniz.”

  • Streaming: Modelin, yanıtını parçalar halinde, gerçek zamanlı olarak üretmesi.
  • Parameter: Modelin öğrenme sürecinde ayarlanan ve modelin davranışını belirleyen değişkenler.
  • Knowledge Cutoff: Modelin eğitildiği tarihe kadar olan bilgi birikimi. Model, bu tarihten sonra olan gelişmeleri bilmez.
  • Context Window: Modelin bir seferde işleyebileceği maksimum metin uzunluğu.
  • Multi Modality: Modelin, metin dışında görüntü, ses gibi farklı veri türlerini de işleyebilme yeteneği.
  • Hallucination: Modelin, gerçekte var olmayan veya yanlış bilgi üretmesi durumu.

Bugünkü yazımızda, yapay zekanın farklı boyutlarını ve özellikle doğal dil işleme (NLP) teknolojilerinin ne kadar güçlü ve etkileyici olabileceğini keşfettik. Generative AI ve Classical AI arasındaki farklardan başlayarak, Generative Adversarial Networks (GANs) ve Transformer mimarisinin detaylarına kadar derinlemesine bir yolculuğa çıktık. Ayrıca, büyük dil modellerinin (LLM) neler yapabileceğini ve bu modellerin nasıl eğitildiğini öğrendik. Bu teknolojilerin gelişimi, bizlere yeni fırsatlar sunmaya ve çeşitli alanlarda devrim yaratmaya devam edecek.

Çalışmalarımı yakından takip etmek ve iletişime geçmek için:

https://www.linkedin.com/in/haticedikmen/

Bir sonraki yazımda görüşmek üzere…

Teşekkürler! 🌺

--

--