GPT-2 Metin üretme modeli Game of Thrones’a alternatif sonlar üretiyor – Chintan Trivedi
Spread the love

GoT’ın 8. sezonu milyonlarca sevenini (ben dahil) aceleye getirilmiş ve tatmin etmeyen sonuyla hüsrana uğrattı. Birçok insan son sezonun tekrar yazılmasını istemekle beraber birçoğu da kendileri tatmin edici son yazdı. Geri kalanlar ise George R.R. Martin’nin kitaplarını bitirerek karakterlerin inandırıcı olmayan davranışlarına düzgün bir gelişim yazıp düzeltmesini umuyor ancak bu yıllar sürebilir. Dolayısıyla bende GRRM’nin yazım biçimini yapay zekaya öğreterek, diziye son üretmeye çalışmak istedim.

Bu makalede, anlattığım sonuca Open AI araştırmacılarının 2019 yılında geliştirdiği yazı geliştirme dili GPT-2 ile nasıl ulaşabileceğimizi açıklayacağım. Daha sonra bu modelin sezonun üç büyük kötü kahramanı Gece Kralı, Cercei Lannister ve Daenerys Targaryen için ürettiği sonuçları paylaşacağım.

Generative Pre-Trained Transformer 2(GPT-2)

GPT-2 son teknoloji yapay zeka metin üretme modelidir. GPT-2 insansı kolayca anlaşılan cümleler üretme becerisine sahiptir. Ayrıca bir konu üzerine odaklanarak uzun süreli üretim yapabilir. Bu çalışma için diğer dil modellerinden daha etkileyici olan özelliklerini iki ana başlığa indirebiliriz:

1. Veri fazlalığı: Üzerinde güdümsüz çalışılacak olan, 8 milyon internet sitesinden 40GB metin verisi oluşturuldu. Veri çok fazla konu içerdiğinden eğitilmiş bir model türü olan GPT-2 spesifik konularda ‘transfer learning’ yönteminde gayet başarılı, bizim Game of Thrones çalışmamız gibi.

2. Hesaplama fazlalığı: GPT-2 dönüştürücü tabanlı ağ mimarisinde 1.5 milyar parametre kullanıyor. Ancak, güvenlik riskleri sebebiyle 345 milyon parametre kullanan daha küçük bir versiyonunu yakın zamanda çıkardılar. Game of Thrones çalışmamız için bu versiyonun eğitilmiş bir modelini kullanacağız.

Dönüştürücü modeli

GPT-2 geleneksel olarak sıralama modellemesinde kullanılan RNN/LSTM/GRU ağları yerine dönüştürücü ağ mimarisi kullanır. Dönüştürücü, timestep ve memory gate ile oluşturulan tekrar eden üniteler yerine kodlayıcı/kodçözücü ikilisine sahip ilgi odaklı (attention based) bir sistem kullanmaktadır.

Girdi metin, kodlayıcı tarafından ikili yapılar (byte-pair) ve girdi içindeki konum belirten (ne, nerde vb) ifadeler yardımıyla işlenmektedir. Aynı kodlayıcı, konum belirten ifadeler ile ikili yapıları vektörelleştirir. Daha sonra bu vektor, görevi şifrelenmis vektörü yazı metnine çevirmek olan kod çözücü tarafından işlenir. Oluşan bu çıktı öğrenme döngüsünü tekrar besleyerek bir sonraki metnin oluşmasında yardımcı olur ve bu işlem bir cok kez devam eder. Başglangıçtaki makalede burada ifade edilen model mimarisi detayli bir şekilde açıklanmaktadır.

Genel yapısıyla ilgi odaklı (Attention Based) dönüştürücü modeli

Not etmek gerekirse, GPT-2 girdi olarak verilen cümleden sonra gelecek kelimeyi en doğru şekilde tahmin etmek uzere eğitildi. Tasarlanan model, sıradaki kelime tahminini en iyi şekilde yapabilmek için işledigi tüm kelimelerin metindeki anlamını öğrenmeye zorlandı. Metnin anlamını öğrenmeden, bir dil modeli ancak gramer olarak uygun fakat anlamsal olarak bir şey ifade etmeyen kelimeyi tahmin edebilir. GPT-2’nin verilen metni derinsel olarak anlamasından ötürü, oluşturulan bu mantıksal ağ, sıradaki en yeterli/anlamlı kelimeyi tahmin edecektir. Burada tasarlanan modelin Ilya Sutskever tarafindan yazilmis bir açıklamasını bulabilirsiniz.

GPT-2, bire bir çeviri yapan dil çeviriciler gibi olmadığından bir sonraki metni oluştururken kodlayıcıya ihtiyaç duymaz. Dolayısıyla öğrenme bir kere tamamlandığında, kodlayıcıya artık ihtiyaç kalmaz. GPT-2 kod çözücüyü kullanarak önceden öğretilmiş dönüştürücülerden sıradaki metinleri oluşturur.

Modelin Eğitimi

George R.R. Martin’nin Buz ve Ateşin Şarkısı serisinden 5 kitabın tamamından metinler aldım ve art arda sıralanmış bir veri seti halinde eğitim metnini hazırladım. Eğitilmiş 345 milyon parametreli GPT-2 modeli bu metinler üzerinde aktarma eğitimi (transfer learning) yaptı.

Şaşırtıcı bir şekilde, eğitilmiş modelin Game of Thrones karakterleri hakkında yazmakta da gayet iyi olduğunu keşfettim. Bu durum modelin 8 milyon internet sayfasıyla yapılan ilk eğitimi sebebiyle oluşmuştur. Genelleşmiş modelin kapsamını azaltarak sadece GRRM’nin stilinde yazmasına karar verdim ve bu şekilde modeli Game of Thrones veri setiyle eğitmeye devam ettim. Model 12 saatliğine Google Colab’ın K80 Gpu’su ile eğitildi.

Sonuçlar

GPT-2 modeli kullanarak hikayedeki hayal kırıklığına uğratan bazı sonlar ve süpriz gelişmelere alternatif sonuçlar üretmeyi deneyelim.

1. hayal kırıklığı: Gece Kralının saçma sonu

Girdi: Gece Kralı yavaşça üç gözlü kuzguna doğru yürür. Jon Snow’u buz ejderhası meşgul ederken, Daenerys ise ak gezenler tarafından sarılmıştır. Gece Kralı buzdan kılıcıyla Bran’ı öldürmek üzeredir…

Çıktı: Hodor onu durdurur, büyük elleriyle ulu kurtu tutmaktadır. Kuzgun “Hodor!” diye bağırdı. “Hodor! Hodor!” Kara Lordun yüzünde kaybetmiş bir ifade vardı. Kesik kolunu Bran’ın sırtından içeri geçirdi ve dönerek takla atarak savaşmaya başladı. Ak gezenler, devler, buçukluklar, korkuluk adamlar. Bran, yazla, kartalla, köpekle ve yabancıyla savaştı. Ancak Işığın Lordu kılıca karşı asla ak gezeni savunmazdı. Kuzgun Hodor’un kar beyazı bacaklarına söylendi.

GPT-2’ye göre Hodor hala yaşıyor ve Bran’ı kurtarıyor, ne şaşırtma ama! Ya da belki de Hodor ölmüş ve Bran içine girmiş! Bundan sonraki kısımda model ne diyor ben de anlamadım. Haha!

Girdi: Gece Kralı yavaşça 3 gözlü kuzguna doğru yürür. Jon Snow’u buz ejderhası meşgul ederken, Daenerys ise ak gezenler tarafından sarılmıştır. Gece Kralı buzdan kılıcıyla Bran’ı öldürmek üzeredir… Birden beklenmedik bir şeyler olur…

Çıktı: Kılıç kızıl ateşler saçıyordu. Kılıç Gece’nin gözüne çarptığında, etrafını saran yeşil cam parçalandı ve ışık söndü ve kılıç ölü bir buz gibi yanıyordu. Sonra kuzgun çığlık atmaya başladı, Ejderin sağındaki ve solundaki uzak baykuşlar ve bir şeyler savaşarak karşılık veriyordu, kapıları kırıyor ve bebek yüzlü soytarıları katlediyorlardı. Osha’nın Rickon’a silahın nasıl doldurulacağını gösterdiğini hayal ediyorum. Belki savaştan sonra hepsi uzun uzun konuşulacak adamlar olurlar.

Dizinin yazarları unutsa da, GPT-2 Azor Ahai kehanetini hatırlıyor ve Işık-getiren (Lightbringer) kılıcından bahsediyor, o kılıç Gece Kralı’nı öldürüyor! Gece Kralı’nın buzdan kılıcı kehanetin Işık-getiren kılıcı olsaydı ve sonunda Gece Kralı’nın ölümüne neden olsaydı çok şahane olmaz mıydı gerçekten?!

 

Girdi: “Theon sen iyi birisin, teşekkürler” der Bran, sonra Theon kendini affetirmiş olarak, Gece Kralı’na son bir saldırı için koşar. Tam Gece Kralı’na mızrağını saplayacakken…

Çıktı: Gece Kralı sakince izlerken, Ejderha -ya da belki de ak gezendi- yüzüne ateş püskürttü Theon’un. Dünya sanki sadece omuz omuza yaslanmış, üç adama kalmıştı: Kızıl rahip ve mızrağı, kafasında tacı, maviler giymiş kral. Soğuk bir rüzgar Theon’un kafasından geçti ve o kardeşlerinin ona bağırmasını duyabiliyordu. “Keşke biraz daha güçlü olabilseydim” diye düşündü, “öldür onu” diye bağırmak istedi ama cesaretini kaybetmişti artık, sessiz kalmaya zorlanmış bir parçasına benzetti bunu. Sonuçta sakat elini gevşetti ve kırık mızrağının sapını atıverdi. “Zarar görmemeye çalış” dedi kendine “ve kaçabildiğin kadar kaç”.

Buna bayıldım, müthiş bir eser olduğu için değil (değil zaten) ama modelin ejderhanın aynı zamanda ak gezen olduğunu bilmesi aklımı aldı. Nasıl oldu da Viserion’un Gece Kralı tarafından kontrol edilen bir ölü ejderha olduğunu anlayabildi hayretler içindeyim! Viserion ateş püskürtür ve Theon’un mızrağını kırar. Theon ise bu durumda dizide daha önce yaptığı gibi kaçmaya karar verir. Bütün bu ayrıntıların bir araya gelmesi gerçekten raslantı olamayacak kadar fazla. Modelin karakter hakkında bu kadar fazla detay öğrenmesi hayret edilesi birşey.

2. hayal kırıklığı: Cercei Lannister kolayca, düzgünce savaşmadan ve neredeye plansız öldü.

Girdi: Ejderha Lannister ordusunu, demir donanmayı ve paralı asker birliği Altın Takımı (Golden Company) yakar. Ancak Cercei kızıl kalenin düşmeyeceğinden emindir. Ejderha kızıl kalenin kulelerini yakmak üzereyken Jamie Cersei’yi kurtarmaya gelir. Bu sırada;

Çıktı: Kalbi boğazının içinde, elleri ise boğazının üstündeydi…. “nasıl nefes alacağını bilmiyor” dedi Arya. Tyrion dedi ki “Lannisterların bıçakları var”, O dedi ki “onların kılıçları var”, Jamie kabullenerek söylendi. “Jamie Tommen’in bekaretini kurtarmak için onu öldürmedi” dedi Arya, sonra hikayenin kendi bildiği tarafını yanındaki yüzü kızarmış cocuğa, Tyrion Lannister’a anlattı. Küçük kardeşi gülümsedi. “Hayır, ben yapmadım”, Jamie Arya’ya sert bir bakış attı. “Yalan söylüyorsun. Doğru, sen o öpücük hakkında da yalan söylemiştin. Sen yalan veya sözle değil ağzınla öldürdün Tommen’i. Ama onu ikiye iyi ayırdın küçük adam. Herneyse verdiğin hediyeyi sevdiği sürece, kız kardeşin o kirli oğlanı yatağı için saklayacak.”

Hmm, tamam bu bütünüyle saçmalık. Yine de atmadım bunu çünkü o kadar aptalca ki komik geliyor insana. Herneyse hadi bir daha deneyelim.

Girdi: Ejderha Lannister ordusunu, demir donanmayı ve paralı asker birliği Altın Takımı (Golden Company) yakar. Ancak Cercei kızıl kalenin düşmeyeceğinden emindir. Ejderha kızıl kalenin kulelerini yakmak üzereyken Jamie Cersei’yi kurtarmaya gelir. Bu sırada;

Çıktı: Kehanete göre deli kral şehre saldıracaktı… Cercei “Jamie” dedi tekrardan, sesini sert ve uzaktan geliyormuş gibi yapmaya çalışıyordu. Sessizce “tatlım” diye yazdı Trotter’a, “Cercei, Casterly Rock’ın kralı olduğunu unutma. Kim olduğunu unutma, ne olduğunu unutma. Deli Kralı nasıl öldürdüğünü hatırla. Affet beni eğer seni duraksatıyorsam” Cercei cevap vermedi. “Affet beni” dedi tekrardan ateşle, “asla sahip olmadığım annemin hatrı için, asla senin sahip olmadığın annenin hatrı için, herkesin sevdiği ama bilmediği anne için.” Kılıç kınına sokulurken, kartal bir parça yağ üzerinde parıldadı. Kelimeler tavanda ışıldadı canlı ve karanlık.

Bu sefer biraz daha iyi! Ancak model bazı detayları karıştırmış, özellikle Deli Kral ile ilgili olanları. Jamie’nin Cercei’ye güç vermeye çalışmasını sevdim. Belki de biraz çılgın ateş kullanılması Cercei’nin hikayesini biraz düzeltirdi. İki deli kraliçe, ateşe ateşle karşılık vererek savaşıyor, bütün şehri yakıyorlar. Bu son, Demir Taht için savaşmanın neden kötü bir şey olduğunu göstermesi açısından iyi olurdu.

 

 

3.hayal kırıklığı: Daenerys beklenmedik bir dönüş yaptı.

Girdi: Daenerys Essos’ta hem sevildi hem korkuldu. Ama Westeros’ta, o sadece korkuyu gördü. Demir Taht için açtığı savaşı kazandığı anda, yöneteceği insanların akıllarına korku salmaktan başka birşey düşünemiyordu. Ejderhasının üstünde King’s Landing şehrine bakarken Daenerys şunu yapmaya karar verdi;

Çıktı: Yemek yemek. “Dişleri olan gıda” dedi Ser Jorah”Tadına bakmak istiyorum”, “Kavurma yemek ve bira içmek Dothrakilere yakışmaz” diyerek karşı çıktı Daenerys, eski günlerini, Khalasar’ının King’s Quarters şehrinde olduğu Uzun Mızraklar zamanını anımsıyordu. Dothrakilerin bardaklarını şaraplarla ve balık yemeğiyle ve turp çevirme ile doldurup diğer Dothrakiler ile savaşmaya gittiği zamanlardı. “Bunlar sadece fikirler, ben yiyeceğim içeceğim ve dinleniyormuş gibi yapacağım, sonra ejderhalar tekrar gelecek ve hepimizi öldürecek.”

Yemek ve içmek her zaman iyidir değil mi? Duyduğuma göre King’s Landing’te iyi bir kahveci de varmış, Dany belki orayı kullanabilir (Tabi çoktan yakmadıysa). Neyse bu kötü oldu, hadi bir daha deneyelim.

Girdi: Daenerys Essos’ta hem sevildi hem korkuldu. Ama Westeros’ta, o sadece korkuyu gördü. Demir Taht için açtığı savaşı kazandığı anda, yöneteceği insanların akıllarına korku salmaktan başka birşey düşünemiyordu. Ejderhasının üstünde King’s Landing şehrine bakarken Daenerys şunu yapmaya karar verdi;

Çıktı: Şehri savun ve kaçmaya çalışan herkese, insanlar dahil, Targaryen tarzı cezanlandırma ve dehşetler hazırla. Bazıları Daenerys’e onu bir devin öldürebileceğini söyler, ama Daenerys kafasını sallar ve “hiçbir dev, dev boyutuna gelemez sonra kimse ormanda yalnız ölmek istemez” der. Mektubundan şunları okur:

“Prens Quentyn, benim sadık hizmetçilerim, sizlerin ne kadar aptalca aptallar olduğunuzu gördüm ama asla sizin ne kadar aptalca aptal olduğunuzu görmedim. Hepimizin gözleri önünde hayatınız alındı. Daenerys ise sizi kurtarabilecek tek kişidir”

Bundan da pek birşey anlaşılmıyor. Ancak Dany’nin King’s Landing şehrinin insanlarını ona diz çöker ve kaçmaya çalışmazlarsa ancak o zaman onları kurtaracağı anlatısına takılmış gibi gözüküyor model.

Sonuç
Hikayeler için daha fazla örnek oluşturmaya çalıştım ancak hiçbiri dizinin konusu ile ilgili birşey ifade etmedi. Modelin hikayenin akışını pek kavrayamadığını söylesek bile, model dizinin karakterleri ve onların farklı özelliklerinini öğrenebildiğini göstermiş oldu. Ayrıca bu karakterler arasında bağ bile kurabildi çıktı içerisinde. Örnek olarak Daenerys ile ilgili konuda Ser Jorah çıktıda beliriverdi, Hodor ise Bran’ın hikayesinde belirdi. Daha ilginçi ise bu karakterler arasındaki ilişkileri çoğunlukla doğru tutturmasıydı, gerçekten etkileyici bir olay!

Bence bu çalışma NLP araştırmasının OpenAI’nin GPT-2 ile ne kadar ileriye gittiğini göstermiş oldu. GPT-2’nin en büyük modelinin bu çalışmada ne kadar başarılı olacağını merak ediyorum. Eğer büyük model birgün kullanıma açılırsa birgün bu çalışmaya dönerek yazıyı güncelleyebilirim.

Tatmin edici ve mantıklı bir Game of Thrones sonu isteyenler içinse kötü haberim var, yapay zekanın şu anki hali bize yardım edemiyor ne yazık ki. George R.R. Martin’in kitapları bitirmesini beklemek zorundayız artık. Çok Yaşa GRRM.

( towardsdatascience.com‘daki İngilizce orjinalinden üyemiz Zeynel Fırat Aydın tarafından değerli dostumuz bilgisayar mühendisi Ümit Ateş’in katkılarıyla çevrildi.)


Spread the love