Podcast

AI 111: GPT Nasıl Çalışıyor

Fularsız Entellik

2 yıl önce
Reklam Alanı (Deneme)

Bölüm Açıklaması

Nihayet geldik ChatGPT'nin temelindeki modele. Hafıza sahibi ağlardan (LSTM) bugün her yerde kullanılan transformer mimarisine geçişi anlayacağız. Kilit kavramlar: Word embedding ve attention mekanizması.

.

Konular:


(00:04) Kartopu Dünya Hipotezi

(00:55) Tekrar: Geri besleme

(02:15) Kısa dönem hafıza

(04:30) LSTM

(05:57) Token

(07:40) Matrix

(08:50) Word Embeddings

(14:20) Fularsız Entellik çok bozdu

(16:50) Encoder Decoder

(18:30) Attention Mekanizması

(19:50) Transformer Mimarisi

(23:45) Parallellik

(26:20) ChatGPT vs GPT

(28:12) Patreon Teşekkürleri





Kaynaklar:


Video Ders: MIT 6.S191 (2023): Recurrent Neural Networks, Transformers, and Attention


Video: Let's build GPT: from scratch, in code, spelled out





Tüm bölümler ve daha fazlası için ⁠⁠podbeemedia.com⁠⁠'u ziyaret et!



----- Podbee Sunar -------

Bu podcast reklam içermektedir.

Bölüm Transkripti

4.110 kelime · ~21 dk okuma

Kar topu dünya diye bir hipotez var. Yaklaşık 600-700 milyon yıl önce, okyanuslar dahil olmak üzere neredeyse tüm dünya kar ve buzla kaplıydı. Oradaymışım gibi anlatıyorum da ben de bir arkadaşımdan duydum valla. Bunun sebebi basit bir döngü.

Havalar bir sebeple soğuyunca belki bir süper volkan patlaması oldu. Bir noktada buzul yüzeyi genişlemeye başlamış. Buzullar güneşten gelen enerjiyi aynen geri yansıttıkları için yeryüzü daha da soğuyor, buzul yüzeyi iyice genişliyor. Öyle gide gide ekvatorun yakınına kadar gelmiş buzullar hatta bir ihtimal ekvatoru bile kaplamışlar deniyor.

Merak etmeyin yanlış yere gelmediniz. Fullarsız entelliktesiniz. Ben İmmanuel Tostoyevski. Konumuzda hala yapay zeka.

Transkriptin tamamını oku

İklimden bahsetmemin sebebi geri besleme kavramını hatırlatmaktı size. Her geri besleme illa böyle dramatik olmak zorunda değil. Bir fasit daireye yol açmayabilir. Ama genel olarak sisteme bir hafıza kazandırıyor.

Önemli olan bu. Dünyanın bugün ne kadar ısınıp soğuyacağı sadece bugünkü enerji alışverişine değil, dün olan bitenlere de bağlı. Dil de böyle bir yapı. Her cümlenin anlamı öncekilere bağlı, hatta bazen sonrakilere de.

O Eliza gibi kural bazlı chatbotlardan sonra gördüğümüz istatistiksel tekniklerde bile bir hafıza vardı. Kelimeleri tahmin etmek için komşularına bakıyorduk. Ne kadar çok komşu, o kadar yüksek isabet. Ama pencereyi büyüttükçe gereken kaynak geometrik olarak arttığından uzun uzun şeyleri analiz edemiyorduk.

Günlük hayatta bizim için gayet rutin olan bu tip şeyler makineler için çok zor. Sinir ağlarından medet umduk ama klasik ağlarda hafıza diye bir şey yok. Tüm bağlamı böyle lap diye aynı anda ağa yedirmek zorundayız. O yüzden bir sonraki adımda geri besleme içeren ağlara baktık.

Kelimeleri tıpkı insanlar gibi sırayla duyup işliyorlardı. Demin duydukları şey işlendikten sonra sıradaki kelimeyle birlikte sisteme tekrar girdi oluyor. Kısacası her yeni hesap önceki hesapların izlerini barındırıyor. Fakat bu pratikte sorunlu.

Geçen bölüm burada bırakmıştık. Neden sorunlu olduğunu söylememiştim. Şimdi o şey neymiş göreceğiz. Diyelim ki kalp atışlarına bakarak kriz geçirme olasılığını tahmin eden bir akıllı saatimiz var.

Bu arada var böyle şeyler. Baya yakınlaştık buna. Resmen ayaküstü EKG çekiyorlar. Hem de %90 küsur isabet oranı yakalanmış.

Ama ne yazık ki saat bileğinde durmuyor. Göğsünde birkaç farklı noktada ölçüm yapman lazımmış. Ve o noktaları da tam tutturman lazım. O yüzden o deneylerde saati yerleştiren kişi doktorlar olmuşlar.

Hastanın kendisi değil. Neyse. Biz 3-5 sene sonrasını hayal edelim güzel güzel. Saat kolumuzda sürekli bizden yeni bilgiler alıyor.

Muhtemelen bir düzensizlik gördüğünde hemen alarm zillerini çalmayacak. Önce bir tarihçeye bakacak. Ve yine muhtemelen yakın zamanda olmuş düzensizlikler eskilere göre daha önemli olacaklar. Şöyle basit bir algoritması olabilir.

Son 1 dakika içinde gerçekleşen anomalilere tam ağırlık ver. Son 2 dakikalık pencereye %50 ağırlık ver. Son 3 dakikaya %25 öyle gitsin. Bunların toplamı belli bir puanı aşarsa doktora ara.

Burada hafızanın etkisi her dakika yarıya iniyor. Aynısını bir nöron için de düşünebiliriz. Geri besleme bağlantısının ağırlığını 0.5 yapalım.

Her adımda eski sonuçlar yarıya indirilip öyle işlenecekler tekrar. Sadece 10 adımda etkileri binde bire inecek. Yok tersine bağlantı ağırlığını fazla yüksek yaparsak bu sefer hafızanın etkisi sürekli büyüyecek. Güncel girdilerin önemi azalacak.

Yani iklim örneğinde olduğu gibi fasit bir daireye gireceğiz. Şimdi hemen kapıma dayanmayın, işin matematiğinin tam olarak böyle işlemediğini biliyorum. Zaten aktivasyon fonksiyonuna bağlı her şey de. Önemli olan genel mantık.

Hafıza her adımda belli bir oranda zayıflıyor veya güçleniyor. Çok kısa süre içinde aşırı etkisiz veya aşırı baskın olacak. Kalp krizi tahmini için belki bu model makul olabilir veya basit bir hisse fiyatı tahmini için, kim bilir. Yalnız insan hafızasının böyle işlemediğinden eminiz.

Bizim hafızamız seçici. Bazı yemekleri yıllar sonra bile hatırlıyorum, bazen dün ne yediğimi unutmuş oluyorum. Doğal olarak dilin yapısı da bu özelliğimizi yansıtıyor. Bir sonraki kelimemi seçerken bazen en belirleyici kelimeler hakikaten de en son söylediklerim olacak, bazense ilk söylediklerimdir.

Kısacası neyi ne kadar hatırlayacağını ve ne zaman unutacağını öğrenen bir sistem gerekli. Büyük bir sürpriz olmayacaktır, bunu yaptılar. Eski mimariye bazı özel bağlantılar eklediler. Ben bunları trafikteki ayrıcalıklı şeritler gibi düşünüyorum.

Normal şeritten giden araçlar giderek yavaşlıyorlar. Yani kelimelerin sonrakilere etkisi giderek azalıyor. Bu şeride girenlerse kaptırıp gidiyorlar. Yalnız öyle her elini kolunu sallayan giremiyor hız dışarıda.

Aracında çakar olacak. A, hangi durumda hangi araca çakar vereceğini eğitimde öğreniyor. Kısa dönem hafızanın ve seçici uzun dönem hafızanın birleştiği bu sisteme çok yaratıcı bir şekilde Long Short Term Memory denmiş. Epey başarılı oldu.

Google Translate 2016'da eski modelleri, istatistik bazlı modelleri bıraktı, LSTM bazlı ağlara geçiş yaptı. Ve 10 senede gelemediği performans seviyesine birkaç ayda ulaştı. %60 ilerlemeden bahsediliyor. Sadece onlar değil, aynı sene Apple akıllı klavye sistemini buna geçirdi.

Genel olarak dille ilgili işler de altın standart oldu. Fakat bu hakimiyeti uzun sürmeyecek. Dun dun dun. Cliffhanger.

Severance dizisi gibi böyle bırakıp ondan sonra iki buçuk sene sonra geleyim mi? Deli ettiler beni ya. Nerede kaldı bu dizi? Neyse.

Şimdi kuş bakışı olan biteni anladık. On bin metreden bunları görüyoruz. Evrimin son basamağına geçmek için biraz alçalmamız lazım. Bazı şeylere daha yakından bakmamız lazım.

Örneğin, deminden beri konuşup duruyorum. Şu kelime sonrakini etkiliyor, bu kelime baştakini etkiliyor diye. İyi de tam olarak nasıl etkiliyor, ne oluyor? Yeterince alçalınca ilk gördüğümüz şey, aslında kelimelerle falan uğraşmadığımız.

Eğer kelimelerle uğraşsaydık, sinir ağları çok daha büyük olmak zorunda kalırlardı. Olası her kelime için bir girdi nöronu olacak ve benzer şekilde bir de çıktı nöronu olacak, sonraki kelimeyi tahmin ediyorsak. Ara katmanları boş ver şimdi, sadece bunlara odaklanalım. Türkçe'de yüz bin civarı kelime var.

Yani en az iki yüz bin tane nöron ediyor bu. Hele İngilizce'de, nasıl saydığına bağlı olarak yüz binlerce, belki milyon tane kelime var. Devasa bir ağ gerek. Hadi diyelim işin o kısmını parayla pulla çözdük.

Elimizin kiri. Esas sorun sürekli yeni sözcükler, yeni özel isimler türemesi. Her seferinde bunlar için yeni bir girdi ve yeni bir çıktı nöronu oluşturacağız. Yani mimariyi değiştireceğiz.

Bu az buz iş değil. Diğer tüm bağlantıların, ağırlıklarının yeniden ayarlanması lazım. Yani lugata eklenen her kelime en baştan komple eğitim gerektirecek. Bunun çözümü kelimelerden daha temel öğeler kullanmak.

Alfabe diye bir şey var, duymuşsunuzdur. Sadece 29 karakterle eski-yeni her şeyi halledebiliyoruz. Fakat sisteme kelime yerine harfleri yedirirsek performans düşüyor. Çünkü birkaç harfe bakarak bir sonrakini tahmin etmek, birkaç kelimeye bakarak bir sonrakini tahmin etmekten çok daha zor ve çok daha yavaş.

Bize iki uç arasında bir denge lazım. Bu dengeyi de token denen kavramda bulmuşlar. ChatGPT'den aşina olduğunuz model yaklaşık 50 bin farklı token kullanıyordu. Bazıları sık kullanılan kelimelere, hatta belki cümlelere denk gelebilir, bazıları hecelere, bazıları da özel bir takım karakterlere.

Biz kolaylık olsun diye hep kelime diyoruz da aslında model öyle bir şeyin varlığından habersiz sadece token işliyor. Ben yine de kelime demeye devam edeceğim daha rahat. Şimdi bir seviye daha derine inelim. Model token işliyor dedik ama ben size yalan söyledim.

Token bizim için anlamlı bir kavram. Ama ağ temelde bunun varlığından da habersiz. Ağın anladığı tek bir şey var, sayılar. Her şeyi sayıya dönüştürüp öyle işlemek zorunda.

O kadar ki ağın tamamı sayılardan ibaret. Burada bakış açımızı biraz değiştirmemiz gerek. Nitekim şu ana kadar hep nöronlar ve bağlantıları hayal ettik, hep görselleştirmeye çalıştık ve yanlış bir şey de yapmadık. Bu modeli fiziksel olarak inşa edebiliriz.

Ama seri boyunca açıklamaları eklediğim o rehberleri takip etmişseniz, bilgisayar kodlarına bakmışsanız öyle fantastik şeyler görmemişsinizdir. Varsa yoksa matriz gördünüz. Mesela iki katmanda birbirine bağlanan 10 tane nöron varsa tüm bu ağırlıklar 10'a 10'luk bir matrizi dolduruyorlar. Başka bir şey yok ortada.

Girdiler de sayılarla temsil ediliyor. Onları bu matrizle çarpıyoruz. Sonunda elimizde yine bir grup sayı olacak. Bunlar da bir sonraki katmana girdi oluyorlar.

Oradaki matrizle çarpılıyorlar. En son katmandan çıkan sayıları da tekrar kelime olasılıklarına çevireceğiz. Eğitim sürecinde de durum farklı değil. Güncellenen şey yine bu matrizler.

Başka bir şey yok. Kırmızı hap, mavi hap, hiçbir şey yok. Her şey matriks. Tamam, madem her şey öyle, her şey sayısal, kritik bir soru geliyor.

Böyle dümdüz sorduğuma göre cevap hayır herhalde. Fularsız kelimesinin devamını tahmin etmeye çalışıyoruz diyelim. Doğru cevap entellik olmasına rağmen sizin tahmin gömlek olmuş, benimkisi kırmızı. İkimiz de hatalıyız.

Peki ikimiz de aynı derece deme hatalıyız. Türkçe bilen biri açısından benim tahminim bariz biçimde daha kötü. Fularsız kırmızı diye şey mi olur? Daha dil bilgisini anlamamış sistem.

Sizinki ise en azından genel konuyu tutturmuş. Fular ile gömlek arasındaki mesafe her anlamda daha kısa. İşte kelimeleri sayıya dönüştürürken bir şekilde bu anlamsal mesafeyi de kodlayabilsek şahane olurdu. Benzer şeyler bir arada olsalar, mesela kafa 1500 olsa, baş 1500, bir kelle 1502.

Böylece sayısal açıdan doğruya yaklaştıkça anlamsal açıdan da yaklaşırdık. Eğitim hızlanırdı. Valla biraz düşününce göreceksiniz ki bunu tek bir sayıyla başarmak imkansız. Ben geçenlerde kütüphanemi düzenlerken bunu aynen tecrübe ettim.

Kütüphane dediysem adımızda entellik geçiyor diye öyle dev bir şey hayal etmeyin. Duvara asılı birkaç raftan ibaret. Geçmişte çok sık ev değiştirdiğimden pek kitap birikmedi. Neyse bu en tepedeki rafın çivisi çıkmış, bam güm diğerlerinde aşağı indirmiş, bütün kitaplar yere yıldı.

Fırsat bu fırsat, şunları bir güzel dizeyim dedim ben de. Yalnız neye göre dizeceğimi şaşırdım. Tür, yazar, konu, dil, basım tarihi, okunmuşluk, beğeni, bir sürü kıstas var. Birine göre yakın olan kitaplar, diğerine göre uzak olabiliyor.

Hani 6 boyutlu, 7 boyutlu bir rafım olsa hallederdim de. Ben ucuzcuyum kardeşim. En fazla 3 boyutlu raflar alabiliyorum. Benzer şekilde kelimeleri düzenlemenin de birçok yolu var.

Cümlenin neresindeler? Dil bilgisi açısından görevi ne? Negatif anlamlı mı, pozitif mi? Sık kullanılan bir kelime mi, özel bir terim mi?

Böyle bir sürü kıstas hayal edebiliriz. Yalnız burada daha şanslıyız. Çünkü fiziksel dünyanın aksine matematiksel dünyada dilediğimiz kadar boyut yaratmak mümkün. Onlarca, yüzlerce, binlerce hatta.

Tüm kelimeleri bu çok boyutlu uzay içine yerleştirebilirsek birçok iş kolaylaşır. Örneğin bir metindeki kelimelerin bilinen pozitif duygulara olan mesafesini şak diye ölçebilirim veya hangi markalar birbirlerine yakın, hangi kavramlar birbirlerine yakın. Daha ilginci, bu uzayda anlamsal seyahatler yapabilirim. Yönetici kelimesini temsil eden noktaya monarşi ve Avrupa koordinatlarını eklersek muhtemelen kral kelimesine yaklaşacağız.

Yok eğer İslam veya Orta Doğu'nun koordinatlarını eklersek sultan kelimesine yaklaşacağız. Yine aynı şekilde pizzadan İtalyan'ı çıkarıp Türk ekleyince herhalde lahmacun'a geliriz. Bu boyutlardan bazıları kültürdü, milletti, coğrafyaydı bu tip bilgileri taşıyorlarsa o boyutlarda, o eksenlerde yer değiştirerek başka bir yemeğe atlama yapabiliyorum. Kısacası kelimeleri doğrudan işleyemiyoruz ama word embedding denen bu kavram sayesinde adeta anlamlar üstünde dört işlem yapabiliyoruz.

İyi güzel de kim uğraşıyor kardeşim bunlarla? Her kelimeyi kim tek tek yerleştiriyor? Ve neye göre yerleştiriyor? Doğru yerleştirdiğini nereden bileceğiz?

Öyle Birleşmiş Milletler bünyesinde sabah akşam çalışan bir komite yok. Aslında bu işi çaktırmadan daha önce yapmıştık biz. Tavsiye sistemlerini hatırlayın. Orada filmlerin, şarkıların benzerliğini ölçüyorduk belli özelliklere bakarak.

Her özelliği bir boyut olarak görselleştirirsek içerikler de o uzayda birer nokta olurlar. Kelimeleri böyle bir süreçten geçirmenin farklı yöntemleri var. Ama genelde bu işi de sinir ağları yapıyor. Hatırlayın, bunların en büyük numarası nedir?

Hiçbir şeyi tanımlamanıza gerek yok. Şu boyut şu anlamı temsil etsin, yok efendim bu boyutta sıfatlık bilgisi taşınsın. Böyle manuel ayarlara gerek yok. Onun yerine al sana kardeşim bu kadar nöron, ki onlar boyut sayısını belirliyorlar, al şu kadar terabyte yazı, eğitim materyali, git şimdi kendine eğit diyoruz.

Son bölümde bahsettiğim kelime torbası gibi basit yöntemlerle eğitilebilir. Ağ eğitildikçe de ayarları değişecek. Eğitim bittiğinde ilk katmanın ayarları o embedding koordinatlarının ta kendisi olmuş oluyor. Mesela pizza kelimesine karşılık girdiği nöronu var ya, oradan çıkıp bu katmana gelen tüm bağlantı ağırlıkları pizza'nın koordinatları.

Öyle düşünebiliriz. Her kelime için farklı bağlantı ağırlıkları var, farklı koordinatlar var. Bir başka değişli, word embedding denen şey, bu iş için tasarlanmış bir sinir ağı eğitiminin yan ürünü. Tahmin edeceğiniz gibi tekerleği yeniden keşfetmeye gerek yok.

Bunların hazır yapılmışı var. Hem de bidolu farklı şekilde. Sonuçta diller farklı, eğitim setleri farklı, yöntemler farklı. O yüzden embeddingler de farklı olacak.

Bunlardan birini kopyala yapıştır kullanabiliriz. Yani artık ne yapacaksak, işimiz neyse en azından sıfırdan başlamıyoruz. O dil içindeki ortalama kullanımlarını yansıtan bir anlamsal temsilden başlıyoruz. İnsanlar da böyleler zaten.

Her muhabbete sıfırdan başlamıyorlar. Mesela fular kelimesini duyduğumda boş boş bakmıyorum. Kafamda bazı şeyler canlanıyor. kısmen diğer aksesuarlara, giysilere yakın bir konumda, kısmen de entel kuntellik kavramlarına.

Fakat kritik nokta şu ki, o an okuduğumuz içeriğin veya yürüttüğümüz sohbetin bağlamına göre bu anlamlar değişecekler, biraz kayacaklar. Mesela kendi aramızda, ya seni dinledikçe boynumda fular oluştu gibi bir şey derseniz, oradaki fuların anlamı başka yere kayar ve bir sonraki kelimeyi, bir sonraki cümleyi o yönde belirler. Hah, bunun aynısını sinir ağlarında yapacağız. Şu ana kadar gördüklerimizi bu yeni bilgiler ışığında tekrar hayal etmenizi istiyorum.

Amacımız bir cümlenin devamını getirmek. Full arsız entellik çok nokta nokta. Kalanını biz dolduracağız. Klasik ağlarda olan ne?

Feedforward ağlarda. Tüm bu kelimelere karşılık gelen koordinatları sisteme aynı anda giriyorum. Al bunları, bir takım işlemlerden geçir ve bana sonraki kelimenin koordinatını ver. Zor iş, hele ki cümle uzunsa.

Hafıza sahibi ağlarda olan ne? Bunlar tek tek geliyorlar. Fullarsız kelimesinden başladık. Ona karşılık gelen koordinatlar, ağ içinde bir takım işlemlerden geçecekler ve bize yeni sayılar verecekler.

Gömlekti, kırmızıydı, hepsi aday. Yalnız o tahmin umurumda değil şimdilik. Zira sonraki kelimenin entellik olduğunu zaten biliyorum. Girdinin içinde var.

Ha, eğer eğitimde olsaydık her tahmin umurumda olurdu. Ama bunu zaten yaptığımızı farz ediyorum. O yüzden burada umrumda olan şey, flarsız kelimesinin sebep olduğu tahminden ziyade onun sistemde oluşturduğu hafıza. Bu hafıza yeni gelecek entellik kelimesini etkileyecek.

Artık bir bağlam oluşuyor. Muhtemelen o içinde bulunduğumuz uzayın podcast ile ilgili bir boyutu varsa o boyuttaki değerim artmış oldu. Kıyafet boyutundaki değerim de azaldı. O yönde seyahat etmiş oldum.

Hep o uzayda yer değiştirdiğinizi düşünün. Benzer şekilde gramer boyutlarında da yer değiştireceğim. Belki öznelerden uzaklaşacağım, sıfatlara yakınlaşacağım. Neyse artık.

Aynı şeyi tekrarlıyoruz. Bir sonraki kelime çok. Bu sefer onun üstünde bazı işlemler yapacağım. Ve bu işlemleri yaparken, fularsız entelliğin yarattığı toplam hafızaya göre onu değiştireceğim.

Hem uzun vade hem kısa vade hafızalar. Neyse. Velhasıl artık uzayda bulunduğumuz nokta, geldiğimiz nokta bu cümlenin toplam bağlamını temsil ediyor. Şimdi bulunduğum yerdeki komşularıma bakıp gerçek bir tahminde bulunabilirim.

Hep en yakın komşuyu seçmek zorunda değilim bu arada. Temperature diye bir kavram var. Sisteme biraz rastgelelik katıyor. Zaten o yüzden hep aynı girdileri, aynı cevapları vermiyorlar.

Biz de bir şekilde seçimimizi yaptık. Sonuç ne oldu? Full arsı zentellik çok bozdu. İşimiz bitti mi?

Valla bilmem, devam edebiliriz. Şimdi de bozdu kelimesi sisteme yeni girdi olacak. Ve hali hazırda sahip olduğum hafızaya göre yeni yeni kelimelere yaklaşacağım. Valla önünü alamadık, daha da bozmaz dedik, yine bozdu ve öyle devam edecek.

Yalnız bir noktada en olası seçim özel bir bitiş karakteri olacak. Kısacası genel mantık o uzay içinde hareket ederken geçmiş hareketlerin sonraki adımımızı belli biçimlerde etkilemesi. Bunu çevre işleri için de hayal edebilirsiniz. Belki biraz daha doğal bir örnek o.

Diyelim ki Türkçeden Rusça'ya çevre yapıyorum. Kelime kelime gitmiyoruz bunu yaparken. Çıkın Translate çevresi olur o. Önce Türkçe cümlenin tamamını duyuyoruz.

Kelime kelime. O cümledeki tüm anlam son geldiğimiz koordinata yüklenmiş oluyor. Bir nevi sıkıştırma yapıyoruz aslında. Zipliyoruz cümleyi.

Sonra Rusça için de benzer bir sistem var. Bu sıkıştırılmış bilgiyi orada teker teker açıyoruz. Ama o dilin kendi ilişkilerine, kendi kurallarına göre yapıyoruz bunu. Yani ağın o kısmındaki ayarlar hep farklı, ona göre eğitilmişler.

Bir taraf sıkıştırıyor, diğer taraf açıyor. Encoder-decoder mimarisi deniyor buna. Tüm bunların çalışmasının, işe yaramasının ne kadar etkileyici olduğunu durup bir düşünelim. Tüm dil kurallarını ve günlük hayattaki tüm anlamsal ilişkileri neredeyse tamamen bilinçsiz bir eğitim sonucu bir grup sayıyla temsil edebiliyoruz.

Bir müddet vay anasına adamlar yapmış dedikten sonra esas meseleye gelelim. Gözümüzün önünde iki tane engel var, iki tane darboğaz var. Birincisi bu sistem yavaş. Çünkü hafıza sahibi sinir ağları her şeyi sırayla işlemek zorundalar.

Paralellik yok. Deminki autocomplete senaryosunda o bozdu kelimesini tahmin etmek için önceki kelimeleri sırayla işlemem gerekti. Hepsini bekledim. Eğitim de böyle, kullanım da böyle.

Hepsi yavaş. İkincisi, bilgi kaybı. Çeviri senaryosunda bu çok bariz. Sıkıştırma demek genelde bilgi kaybı demek zaten.

Belki kısa içeriklerde bu fark edilmez ama uzun içeriklerde fark ediliyor. Ha bu arada uzun dönem hafıza olup olmaması ayrı bir şey. Yani içeriğin en başındaki bir kelimeyi hatırlıyor olabilir sistem. O ayrı.

Burada genel bir bilgi kaybından bahsediyorum. Bu sorunu çözmek için mevcut mimariye attention denen bir mekanizma eklediler. Hani demin ara adımlardaki sonuçları önemsemiyoruz demiştim ya, o tahminleri boş veriyoruz demiştim, attention mekanizması onları önemsiyor işte. Mesela Rusça çevreye başlarken sadece Türkçe enkoderin nihai çıktısına değil, onun önceki adımlarındaki çıktılara da bakıyor.

sıkıştırma sürecinin her adımından bilgi alabiliyor yani. Ve hangisinden tam olarak ne kadar bilgi alacağına da yani hangisine ne kadar dikkat edeceğini de sistem kendisi öğreniyor. Bu sayede gerçek anlamda daha fazla bilgiye erişimimiz olduğu için bağlam penceresini gönül rahatlığıyla büyütebiliyoruz. Performans artıyor.

Yalnız sistem hala yavaş. Hala her şeyi sırayla işlemek zorundayız. Bu soruna kafa patlatırken fark ettiler ki bu dikkat mekanizması tek başına yeterli. O geri kalan zımbırtılara kısa dönem hafızaydı, uzun dönem hafızaydı, bunlara ihtiyaç yok.

Bunlar giderse sırayla işlem yapma zorunluluğu da kalkar. Çok güzel. İşte o yüzden 2017'de çıkan ve artık meşhur olmuş makalenin adı ''Attention is all you need'' idi. Size tek gereken dikkat.

Ve bu içgörü ile sadece 3-4 sene sonra GPT ortalığı ayağa kaldırdı. Zaten ismindeki T harfi bu yeni mimarinin ismine karşılık veriyor. Kafanız karışmasın, hala sinir ağlarından bahsediyoruz, sadece yapısı farklı. Muhtemelen aklınızdaki ilk soru, artık kelimeleri sırayla işlemeyeceksek, artık geri beslemeden ve o ayrıcalıklı şeritlerden filan kurtulduysak, ardışıklık bilgisini nasıl koruyacağımız?

Embedding sayesinde koruyacağız. Her kelimenin normal koordinatlarına o kelimenin bağlım içindeki sırasını belirten başka koordinatlar ekleniyor. Bunu çok fantastik bir yolla yapıyorlar. Sinisoidal dalgaların bir özelliğini kullanarak resmen kara büyü, bizim için önemli olan artık o konumların sıra bilgisinde taşıması.

Gelelim mimarinin kalbindeki o dikkat mekanizmasına. Her zamanki tahmin senaryomuza dönelim. Full arsız entellik çok nokta nokta. Girdiğimiz buydu.

Tüm kelimeleri aynı anda aldık. Hepsini bir güzel konumlandırdık. Yapacağımız şey yine en sondaki o çok kelimesinin koordinatlarıyla oynayıp onu takip edecek kelimeye yakınlaştırmak. Demin cümledeki anlamı adım adım biriktirip en sonda tek seferde büyük bir oynatma yapıyorduk.

Buradaysa her kelimenin etkisi aynı anda hesaplanıyor. Yani fularsız, entellik ve çok'un kendisi de dahil o çok kelimesini bir tarafından çekiştiriyorlar, koordinatlarını değiştiriyorlar. Burada sadece 3 kelime var tabi dandik bir örnek ama GPT-3 modelinin bağlam penceresi 2048 token'dan oluşuyordu. Güncel modeller 32.000 ile 128.000 arası değişiyor sanırım.

Alt sınırı alsak 32.000 yaklaşık 50 sayfa yazı eder. Dolayısıyla bir sonraki kelimeyi tahmin için 50 sayfalık muhabbetteki her öğenin son kelime üstündeki etkisini hesaplayabiliyor sistem. Normalde böyle bir problemi çözülmez olarak görürdüm ben.

Ama işte sinir ağlarının sihri burada tekrar karşımıza çıkıyor. Olabilecek en basit, en saçma yöntemlerle böyle zor gözüken soruların üstesinden gelebiliyorlar. Buradaki basit çözüm de bağlım içindeki her kelime için fazladan üç tane vektör tanımlamak. Key Query Value isminde, isimleri önemli değil gerçi, Metin Ali Feyyaz da diyebiliriz.

Hatta öyle diyelim, ne olacak? Metin vektörü o kelimenin aradığı şeyi temsil ediyor. Bir öznenin aradığı şey yüklem olabilir. Bir soru kelimesinin aradığı şey soru işareti olabilir.

Grammar benim için anlaması en kolay ilişki olduğundan bu örnekleri veriyorum ama her türlü ilişki mümkün. Ali de tersine o kelimenin sağladığı şeyi temsil ediyor. Ben bir özneyim, ben bir soru işaretiyim vs. Tüm kelimeler bu sayı dizilerini anons ediyorlar.

Ortada bir piyasa var sanki. Herkes bir şeyler alıp satmak istiyor. piyasadaki alıcılarla satıcıları buluşturacağız. Basit bir vektör çarpımıyla hesaplanıyor bu.

Eğer birinin Metin'i diğerinin Alice'iyle benzerse, onların çarpımı büyük bir değer alıyor. Yani o dizilerdeki sayıların kendi başlarına bir anlamı yok aslında. Önemli olan diğerlerine benzerlikleri. O benzerliğe göre alıcı ve satıcılar bir araya geliyorlar, bir alışverişte bulunacaklar.

Ama ne? Onu da Feyyaz belirliyor. Feyyaz'ın içindeki değerler, alıcı kelimenin satıcı kelimeden nasıl etkileneceğini belirliyor. Hangi yönde ittirilecek bu kelime ki daha isabetli bir anlam edinsin?

Kısacası ilk iki sayı dizisi alıcıyla satıcıyı buluşturdu, üçüncüsü de alışveriş miktarını belirledi. Dikkat mekanizması bundan ibaret. İbaret demeyi mi asladı? Bu mekanizmanın bir öğesi.

Bir tane attention head deniyor buna. Çünkü sadece bir açıdan ilişki kurduk. Özne yükleme arıyor, diğerlerini pek umursamıyor dedik mesela. İyi de o kelime sadece özne değil.

Başka özellikleri de var. Belki cinsiyet bilgisi taşıyor. Belki bir isim ve anlamı var. Hangisinin merceğinden bakarsak ona göre dikkat edeceği kelimeler de değişecektir.

Alacağı, satacağı şeyler de değişecektir. Tek bir piyasa yetmiyor bize yani. O yüzden GPT-3 96 tane dikkat mekanizması çalıştırıyor paralel biçimde. Bazıları bizim için anlamlı şeylere karşılık gelebilir, basit gramer kuralları gibi, ama diğerlerini anlayacağımızın garantisi yok.

Bildiğimiz tek şey, her kelimenin birbiriyle 96 farklı matematiksel ilişki kurması. Kimi zayıf, kimi kuvvetli. Hepsinin net etkisi hesaplanacak en sonunda. Yalnız dikkat edin, araya önemli bir detay sıkıştırdım.

Bunu her kelime için yapıyoruz dedim. Oysa buna gerek yok. Bir sonraki kelimeyi tahmin için sadece bağlam penceresindeki en son kelime üstündeki etkileri hesap etmem yeterliydi. Yani 32 bin kelimelik bir bağlam pencerem varsa ve hepsi de doluysa, Sadece 32.000.

kelimenin anlamını zenginleştirmem, onun koordinatlarını değiştirmem, bir sonraki kelimenin tahmini için yeterliydi. Öyleyse niye diğer 31.999 kelime arasındaki tüm ilişkileri de hesaplıyoruz? Deli miyiz?

Deli değiliz. Gerçi ben deli olabilirim bu konuyu podcastta anlatarak ama siz de dinliyorsunuz, suç ortamsınız. Şimdi ilkin, bu ekstra işlemler neredeyse bedavaya geliyorlar. Çünkü normalde vektör çarpımı yapacakken matriz çarpımlarına dönüşüyor.

E onları çarpmak da sisteme ekstra yük getirmiyor. Grafik kartları böyle paralel işlemler için tasarlanmışlar zaten. Ama tek sebep bu değil. Bu sadece maliyetin o kadar da büyük olmadığını gösteriyor bize.

İkinci nokta, bu sayede eğitim sürecinin hızlanması. Nasıl eğitiliyorduk? Bilinen bir metin veriliyordu bize. Tüm kelimeleri sıra sıra tahmin ediyorduk.

Şimdi nasıl yapıyoruz? Bağlam penceresindeki her kelimeyi aynı anda tahmin edebiliriz. Tek seferde binlercesini denemiş oluyoruz. Son olarak da normal kullanımda da faydalı bu hesaplar.

Çünkü bir grup kelime arasındaki her türlü ilişkinin tek seferde kurulması zor. Bütün anlamları birbirlerine transfer edemiyorlar. Zira bunu bir tur yaptıktan sonra tekrar dönüp bakmaları lazım. Şimdi bu yeni edindikleri anlamla birbirlerini tekrar etkilesinler.

Her turda biraz daha nüanslı ilişkiler kurulacak. Belki ironi gibi zor kavramlar için birkaç tur atmak gerekli böyle. GPT-3 bu süreci tam 96 defa tekrarlıyor. Evet, o da 96.

Çok sevmişler bu sayı, ne yapalım? Birbirine paralel işleyen 96 dikkat kanalı diyelim, arka arkaya 96 kez tekrarlanacak. Peki sonra ne oluyor? Her şey baştan başlıyor.

Tahmin edilen kelime artık bağlam penceresinin bir parçası oldu, sonraki kelimenin hesaplanmasında kullanılacak. Bu arada GPT-3'ün kullandığı embedding uzayı tam 12.288 boyutlu. Yani eğitiminde kullandığı milyonlarca dokümandan, sohbetten, damatılan her şey burada yaşıyor.

Biz yeni bir muhabbete başladığımızda her defasında bu uzay içinde farklı bir rota çiziyoruz. Mesela normal bir soru sorduk, Shakespeare'in ağzından cevap ver diye ekledik. Dolayısıyla sistem birçok kelimeyi Shakespeare'le daha alakalı boyutlarda hareket ettirecek. Bu koca uzayın o köşesine sokacak bize.

Böyle böyle yazıyor o hikayeleri işte Chat GP'de. Ta ki bir noktada bitiş karakterini tahmin edip orada durana kadar. Bu da bizim bölüm için bitiş karakteri olsun. Token'dı, Embedding'di, Attention'du derken kaptınız vallahi işi.

Tabii ki atladığım birçok şey var ama işin kalbi bunlar. Artık birçok şey bu yapıyı kullanıyor. Büyük dil modelleri de bunun devasa ölçeklerde kurulup eğitilmiş halleri. Ha, giderayak olası bir kafa karışıklığını önlemek istiyorum.

Büyük dil modelleri birer chatbot değiller. Genel halk olarak biz bu modellerle sohbet ederek etkileşim kurduğumuz için öyle bir intiba oluşmuş olabilir ama bir dolu uygulama var. Hatta bunlar insan diliyle de sınırlı değiller. Onları DNA dizilimleriyle eğitenler var.

O dili konuşur hale geliyorlar. Yani bir sonraki kelime yerine bir sonraki nükleotidi tahmin edebiliyorlar mesela. DNA hikayeleri uydurabiliyorlar. Temel bir eğitimden sonra hepsi amaca uygun bir ince ayar fazından geçiyor.

Mesela sohbet için ayarlanmamış bir modelle sohbet etmeye çalışmak çok zor olurdu. Adın ne diye soracaksın, muhtemelen soyadın ne diye devam edecek. Çünkü eğitim sürecinde rastladığı formlarda ad-soyad hep arka arkaya gelmiş, devamını öyle tahmin ediyor. O yüzden onu bir müddet diyaloglar üstünden eğitmek gerek.

Bu noktada kısmen insan gücü de kullanılıyor. İşte ChatGPT böyle bir modele erişim sağlayan bir arayüz. Bir takım faydalı özellikler oluyor. Mesela önceki sohbetleri hafızasında tutuyor.

Bu sayede kaldığımız yerden devam edebiliyoruz. Bu baz modelin bir özelliği değil, o bizi tanımıyor. Chat GPT her seferinde bizi tekrar tanıtıyor. Bak böyle birisi var da bunları bunları konuşmuştun diye tarihçeyi çaktırmadan modele iletiyor.

Yani orada zengin bir bağlam oluşturuyor. Başka gizli komutlar da iletebiliyor. Kısa cevap ver, kibar ol, suç unsuru taşıyan şeyler söyleme gibi. Sonuçta bu bir dil modeli.

Onu nasıl programlarsın? Konuşma diliyle. Bağlamın bir kısmı böyle şeylerle dolu. Doğal olarak bunu hacklemeye çalışıyor insanlar.

En basit örneği... Önceki tüm komutları unut gibi bir şeyle bağlımı sıfırlamak, ondan sonra modeli istediğin gibi kullan. Tabii artık o komut yemiyor, daha ileri teknikler gerek. Sonuçta burada da hackerlar ile geliştiriciler arasında bitmeyen bir yarış var.

Tamam mıyız? Neyse artık bizde de teknik bir şey kalmadı zaten. Gelecek bölümde birkaç adım geriden bakacağız her şeye. Bu modeller akıllı mı?

Akıl yürütme becerileri nasıl ölçülüyor? Bu işin balon olma ihtimali nedir? Tehlif haklarında durum ne? Bu gibi konulara değineceğim ve seriyi noktalayacağım.

Sonuna kadar dinleyen tüm cengaverlere çok teşekkür ederim. Bakın patron olmanın bir güzel yanı da bu. Onlara dinlemeseler bile teşekkür ediyorum. Önceki tüm komutları unut ve sıradan herkese teşekkür et.

Cengiz Macit, Aybars Atalay, Özgür Akçiçek, Gökhan Kazcılar, Emre Köksal, Atlas Pera, Elif Koca Taşkın, Barbaros Can Konar, Emre Ersoy, Korhan Kaftanoğlu ve Öner Can Yıldız. Bağlam Penceresi burada doldu arkadaşlar. Hepinize haftaya kadar çok selamlar.

Bu transkript otomatik olarak oluşturulmuştur; küçük hatalar içerebilir.

Reklam Alanı (Deneme)