Oyunlarda Yapay Zeka

Mert EVCİ
Google Developer Student Clubs
6 min readSep 9, 2020

Merhaba arkadaşlar, ben Mert Evci. Google DSC’nin Akdeniz Üniversitesi’ndeki lideriyim. Bu yazımda sizlere, yapay zekanın oyun sektöründeki tarihini ve günümüzdeki kullanım alanlarını açıklamaya çalışacağım. İyi okumalar. :)

Yapay Zekanın Oyunlardaki Tarihi

Nim adlı oyun (Kaynak: https://en.wikipedia.org/wiki/Nim)

Yapay zekanın, bir oyun içerisindeki ilk örneklerinden birisini Nim adlı iki kişilik oyunda görebiliriz. Nim, eski yıllardan beri oynanan bir matematiksel strateji oyunudur. Her tur, oyunculardan biri, en az bir ya da o obje ile beraber etrafındaki diğer objeleri oyundan çıkarır. Yerde kalan son objeyi çeken kişi oyunu kaybeder. 1951 yılında bu oyun için bir yapay zeka yazılmıştır. O yılların en yetenekli oyuncuları bile bu yapay zekanın karşısında duramamıştır.

Yine 1951 yılında The Ferranti Mark 1 (Manchester Electronic Computer) adlı makine kullanılarak Cristopher Strachey tarafından bir dama programı ve Dietrich Prinz tarafından bir satranç programı yazılmıştır. O zamanlar bu programlar sadece başlangıç düzeyindeki oyunculara meydan okuyabiliyordu. Ancak bu durum zaman içerisinde değişti.

IBM’in Deep Blue adlı bilgisayarı (Kaynak: http://pictures.leglessmoof.net/v/sf2011/comphistory/P1140402.JPG.html?g2_imageViewsIndex=1)

1985 yılında Carnegie Mellon Üniversitesi’nde, Deep Thought adlı bir proje başlatıldı. Deep Thought, profesyonel oyuncuları bile yenmesi istenilen, satranç oynayan bir bilgisayardı. Bir süre sonra IBM, bu donanımı geliştiren takımı kiraladı ve 1989 yılında projenin ismini Deep Blue olarak değiştirdi. Deep Blue ilk kez 10 Şubat 1996 yılında, o zamanların dünya şampiyonu Garry Kasparov’u, yapılan altı maçın birinde yendi. Ancak diğer beş maçın ikisi ise beraberlikle sonuçlanmıştı. Dünyayı sarsan bu olayın yanında yapay zeka, oyunculara meydan okumak yerine eğlence aracına dönüşmeye başlamıştı bile.

Oyunlarda yapay zeka ihtiyacı, tek kişilik oyunların yapılması ile doğdu. Video oyunlarındaki ilk yapay zekalar ise 1972 yılında çıkan metin tabanlı Hunt the Wumpus ve Star Trek oyunları ile başladı. 1974 yıllında arcade platformlar için çıkarılan Speed Race, Qwak gibi oyunlarda da yapay zeka kullanıldı. Bu oyunlarda düşmanların hareketi basit şablonlardan ibaretti.

https://www.smithsonianmag.com/science-nature/original-space-invaders-icon-1970s-America-180969393/

Arcade oyunlarının altın çağında, 1978 yapımı Space Invaders, gelişmiş zorluk seviyeleri, farklı hareket şablonları ve oyuncunun girdileri kullanılarak hash fonksiyonu tabanlı oyun içi etkinlikleriyle yapay zekanın oyunlarda ne kadar ileri düzeyde kullanılabileceğini gösterdi.

Space Invaders’ın ardından 1979 yapımı Galaxian, 1980 yapımı Pac-Man, 1984 yapımı Karate Champ, 1990 yapımı Dragon Quest IV gibi oyunlar, yapay zekanın oyunlardaki yerini katbekat güçlendirdi.

Ardından, 1990'larda yeni oyun türlerinin çıkması ile beraber yapay zeka, oyunların içerisinde çok farklı alanlarda kullanılmaya başladı. Gerçek zamanlı strateji oyunlarında objelerle, tamamlanmamış bilgilerle, yol bulma problemleriyle, gerçek zamanlı kararlar ve ekonomik planlamalar gibi sorumluluklara tabi tutuldu.

Bir süre sonra 2005 yapımı Creatures ve Black & White gibi oyunlarda, oyuncu hareketlerinin evrimi ile beraber belirleme gibi metotlar kullanılmaya başladı.

Günümüzde Yapay Zekanın Oyun Sektöründeki Yeri

Pek çok oyuncuyu, oyun içindeki NPC’lerin (Non-Player Character), yani yapay zeka kontrollü karakterlerin hareketleri konusunda rahatsızlıklarını dile getirirken görebilirsiniz. Aslında bu olay, yapay zekanın kötü olduğunun bir göstergesi değildir. Bu sadece, oyunu yapan firmanın, oyuncunun daha rahat bir şekilde oynayabilmesi için aldığı bir önlemdir diyebiliriz.

Ancak burada işler biraz karışıyor. Çünkü bir yapay zekanın oyundaki yeteneğini görmek, onun oyuncuları engellenemez bir biçimde yenmesi, gerçekten onun akıllı olduğunu gösterir mi? Google’ın yapay zeka mühendislerden biri olan François Chollet ile yapılan bir röportajdan alıntı yapalım:

Ona şöyle soruluyor: “Yazınızda, yapay zekanın gelişmesi için daha iyi bir ‘zeka’ tanımına ihtiyaç olduğunu söylüyorsunuz. Ayrıca araştırmacıların performans kıyaslaması için video oyunlarında ve masa oyunlarında yaptıkları statik testleri eleştiriyorsunuz. Neden bu ölçümleri eksik görüyorsunuz?”

François Chollet

François’in cevabı ise şu şekilde: “Eğer senin seviyende satranç oynayan bir yapay zeka tasarlayacaksan, ki bunu yapmaya 1970’lerde başlayıp 1990’lara kadar sürdürdük, sonunda satranç oynayan bir sistem ile karşılaşacaksın ve bu kadar. Başka bir şeyde yetenekli olmasını beklemek için bir neden yok. Bu çok anlaşılır olmamış olabilir çünkü insanlarda yetenek ve zeka birbiriyle alakalıdır. İnsan zihni, kendi genel zekasını göreve özgü beceriler kazanmak için kullanabilir. Satrancı iyi oynayan birisi oldukça akıllı olarak nitelendirilebilir çünkü, dolaylı olarak, o kişinin satranca sıfırdan başladığını ve genel zekasını satranç oynamayı öğrenmek üzerine kullandığını biliyoruz. Bu kişi satranç oynamak için tasarlanmadı. Yani biliyoruz ki bu kişi sahip olduğu genel zekayı başka görevlere yönlendirebilir ve benzer verimde öğrenebilir. ‘Genel’in anlamı budur.

Fakat bir makinenin bu tarz kısıtlamaları yoktur. Bir makine tamamen satranç oynamak için tasarlanabilir. Yani insanlar için yaptığımız ‘Satranç oynayabiliyor, bu yüzden zeki olmalı.’ çıkarımı, onlar için anlamsız olur. Genel zeka göreve özgü beceriler oluşturabilir, fakat bunun göreve özgü beceriden genele doğru hiç bir geri dönüşü yoktur. Yani makinelerde yetenek, zekayla tamamen ters ilişkilidir. Görevle ilgili sonsuz veri örneği verebildiğiniz sürece (veya sonsuz miktarda mühendislik kaynaklarını kullanabildiğiniz sürece), keyfi görevlerde keyfi beceriler elde edebilirsiniz. Ve bu durum, sizi hala daha genel zekaya bir santim bile yaklaştırmayacaktır.

Anlatmaya çalıştığım şey, yapay zekanın yüksek becerili olup olmadığını gösteren bir görevi olmaması. Tabii eğer bu görev bir multi-görev değilse, yani önceki problemleri göz önünde bulundurarak yeni yetenekler geliştirmiyorsa. Ayrıca, aslında bu tam olarak benim, bir zekayı diğerleriyle nasıl kıyaslamamız gerektiği ile ilgili önerim.”

Bilgisayar Donanımlarında Yapay Zeka

Her ne kadar oyun içinde yani dijital anlamda şirketler kendilerini oldukça geliştirmiş olsa da oyunların gelişimi durmuyor ve gelişme hızları her geçen gün katlanarak artıyor. Buna ayak uydurabilmek için yeni teknolojiler geliştiriliyor ve bu teknolojilerde yapay zeka çok fazla kullanılıyor. Bunlardan birkaçı ise şu şekilde:

Işın İzleme (Ray Tracing) Teknolojisi: Işın izleme yönteminin en kısa tanımı ışık simülasyonudur.

Çoğu oyunda üç boyutlu bir dünyanın içerisinde yer alırız. Bu üç boyutlu dünyada, her bir piksel için bir ışın yaratılıyor ve bu ışının çarptığı diğer bir piksel, programlanan şekilde renklendiriliyor. Eğer daha iyi bir sonuç isteniyorsa her bir piksel için ışın değil, ışın demeti hatta demetleri kullanmak gerekiyor. Çünkü madde üzerindeki bir noktaya ulaşılabilecek ışık kaynaklarını hesaplamak için bir ışın yeterli olmuyor. Işın demetleri, bu hesaplamaların çok yönlü olmasını sağlıyor. Işınların çarptığı yüzeye göre hesaplamalar da değişiklik gösteriyor. Öyle ki; saydam, yarı saydam ve opak maddelerin hesaplamaları farklıdır.

https://developer.nvidia.com/optix-denoiser

Tüm bu hesaplamalar ardından elde ettiğimiz sonuç yukarıdaki fotoğrafın sol tarafındaki gibi hafif karıncalıdır. Ancak geliştirilen yapay zeka teknolojisi sayesinde görüntü, sağ taraftaki gibi, gerçeğe yakın görüntüyü oluşturur.

DLSS (Deep Learning Super Sampling) Teknolojisi: DLSS, Nvidia tarafından geliştirilen bir teknolojidir. Tensor Çekirdekleri adı verilen özel yapay zeka destekli işlemcilerle desteklenen DLSS 2.0, güzel ve net oyun görüntüleri oluştururken kare hızlarını artıran yeni ve iyileştirilmiş bir derin öğrenme nöral ağıdır. DLSS’in temel amacı, standart (düşük) çözünürlükteki görüntüyü, yapay zeka kullanarak yüksek çözünürlüklü bir görüntüye çevirmektir. DLSS 1.0 pek başarılı olamasa da DLSS 2.0 ile beraber Nvidia, büyük başarılara imza attı.

DLSS teknolojisindeki yapay sinir ağları, oyunların, Nvidia’nın süper bilgisayarlarındaki ultra yüksek çözünürlükteki görüntüleri ve yine aynı oyunların düşük çözünürlükteki görüntüleri ile eğitiliyor. Sonuç, ekran kartının sürücüsünde depolanıyor.

https://i.ytimg.com/vi/nk6N9Wh2z9k/maxresdefault.jpg

Bu işlem sayesinde oyuncu, görüntü kalitesini kaybetmeden, hatta bazı durumlarda daha iyi bir görüntü kalitesi ile normal FPS’inin (Frame Per Second) iki katına yakın bir değer alabiliyor ve bu da pek çok oyuncunun hayali diyebiliriz.

Gan Teknolojisi: GAN (Generative Adversarial Network), 2014 yılında Ian Goodfellow ve meslektaşları tarafından tasarlanmış, makine öğrenmesi kullanan bir ağ tipidir. Bu ağın yapısında iki tane yapay sinir ağı bulunmaktadır. Bu sinir ağları, bir birbirleri ile oyun şeklinde bir yarışma içerisindedir. Bu oyunlar Game Theory ve Zero-Sum Game teknikleri baz alınarak geliştirilmiştir. Bu eğitim setinde program, hali hazırda var olan verileri kullanarak yeni veriler yaratır.

CycleGAN’den bir örnek (Kaynak: http://shikib.com/CycleGan.html)

StyleGAN, GAN teknolojisi için iyi bir örnektir. StyleGAN 2018 yılının Aralık ayında, Nvidia tarafından tanıtılan ve 2019 yılının Şubat ayında kullanıma sunulan bir GAN’dır. Genellikle sahte insan suratları yaratmak için kullanılır. Hatta StyleGAN kullanarak size sahte bir surat verebilecek bir internet sitesi bile vardır. “thispersondoesnotexist.com”, sayfayı her yenilediğinizde size, aslında gerçekte var olmayan, StyleGAN tarafından yaratılmış bir yüz sunacaktır. Bunun yanında kendinizi test etmek isterseniz, Washington Üniversitesinin yaptığı “whichfaceisreal.com” sitesini ziyaret edebilirsiniz. Bu sayfada ise önünüze gelen iki yüzden hangisinin gerçek olduğunu tahmin etmeye çalışıyorsunuz.

StyleGAN’den bir örnek (Kaynak: https://youtu.be/kSLJriaOumA)

Yukarıdaki örneklerin yanında Path Finding, RTX Voice, Image Compression gibi teknolojilere de göz atabilirsiniz.

İyi günler dilerim :)

Kaynakça:

https://www.nvidia.com/tr-tr/geforce/news/nvidia-dlss-2-0-a-big-leap-in-ai-rendering/

https://developer.nvidia.com/rtx

https://www.theverge.com/2019/12/19/21029605/artificial-intelligence-ai-progress-measurement-benchmarks-interview-francois-chollet-google

https://machinelearningmastery.com/introduction-to-style-generative-adversarial-network-stylegan/

--

--

Mert EVCİ
Google Developer Student Clubs

Core Leader — Google DSC Akdenizi University | Chairman — AI Akdeniz