Reinforcement Learning’in Derinlemesine Analizi: Ödüllerle Dolu Öğrenme Macerası

Merhaba değerli okurlar 👋
Bu yazıyı kaleme alırken, cumartesi günü gibi görünen bir çarşamba gününde sizlere ulaşmanın gayreti içerisindeyim. Bugün, 30 Ağustos Zafer Bayramı ve ben bu anlamlı tatil gününü değerlendirmek için kendime bir amaç belirledim: Reinforcement Learning (Takviyeli Öğrenme) konusuna yoğunlaşarak geçirmeye karar verdim. Aslında içimde, okuduklarımı defalarca yeniden okuma isteği, izlediğim dizileri tekrar tekrar izleme isteği gibi bir dürtü de var. Bu durumun psikolojide bir açıklaması olduğunu öğrendim: “salt maruz kalma etkisi (mere exposure effect)”. Buna göre, insanlar sürekli olarak maruz kaldıkları, aşina oldukları şeylere karşı daha eğilimli oluyorlarmış. Sevgili okuyucular, işte bu etki maalesef ara ara beni de etkisi altına alıyor. Ancak bugün, en azından 8–9 saat kadarlık bir süre boyunca bu psikolojik eğilimi bir kenara bırakmak istiyorum. Sevdiğim ve kendimi geliştirebileceğimi hissettiğim bir konuyla ilgilenmeyi ve yeni bilgiler öğrenmeyi hedefliyorum. Bu yazı sizlere ne zaman ulaşır bilemiyorum ama umarım keyif alırsınız…
Aynı zamanda bugün beni motive eden şu cümleleri de sizle paylaşmadan edemeyeceğim;
Bir işle severek uğraşan her insan, özentiye kapılmadan, karşılaştığı güçlükleri, uyguladığı metotları ve görüşleri yazmalı. Düşünün bir kere. Çeşitli konularda, böyle binlerce monografi yazılmış olsa…
Oğuz Atay- Tutunamayanlar

Agenda
- Reinforcement Learning Nedir?
- Reinforcement Learning Popülaritesi
- Environment nedir?
- Q-Learning Terimleri (Q-Learning-State,Q-Learning Action, Q-Learning Reward, Bellman Equation, Deterministic vs Stochastic,Markov Decision Process ( MDP ))
- Biraz da makale inceleyelim! (Deep Reinforcement Learning from Human Preferences)
Reinforcement Learning Nedir?
Reinforcement Learning genellikle daha az gelişmiş bir konu olarak bilinir. Temel mantık şudur: Modelimiz aslında kendi kendini öğrenir. Supervised Learning’de model, verilere bakarak öğrenir. Verileri öğrendikten sonra kararlar alır. Ancak Reinforcement Learning’de modelimiz, Agent olarak adlandırılan bir yapı aracılığıyla kendi kendine bir çevre ortamında öğrenme gerçekleştirir.
Bu konsepti şöyle düşünebilirsiniz: Bir odada bulunuyorsunuz. Odanın belirli bir köşesinde parkenizden çıkan bir çivi bulunuyor. Bu çivinin olduğu yöne adım attığınızda ayağınıza batıyor. Bu sayede çivinin o bölgede olduğunu ve adım attığınızda ayağınıza batma ihtimalinin bulunduğunu öğrenmiş oluyorsunuz. Bu nedenle o yöne adım atmaktan kaçınırsınız. Bu bağlamda, deneyimlere dayalı bir çevre içinde kendi kendine öğrenen bir yapının varlığını düşünebiliriz. Temel amacı, deneyimlere göre nasıl hareket edeceğini keşfetmektir.
Reinforcement Learning Popülaritesi
Uzun yıllardır matematiksel denklemlerle kullanılan bir kavram olan Reinforcement Learning, popülerliğini artıran faktörler arasında yer almaktadır. Bu popülerliğin temelinde ise oyunlar bulunmaktadır. Örnek olarak Go oyunu, bu duruma örnek olarak gösterilebilir. Satranç veya dama gibi oyunlar gibi bilindik bir oyundur. Ancak dünyanın en iyi oyuncusu(Lee Sedol), Alpha Go adı verilen Reinforcement Learning algoritması tarafından mağlup edildiğinde, Reinforcement Learning kavramı popülerlik kazanmaya başladı.

Fabrikalarda belirli görevlerin yerine getirilmesinde de Reinforcement Learning algoritması kullanılmaya başlandı. Ayrıca roketlerin başarılı bir şekilde iniş yapabilmesi için, roketlerin gökyüzünden yere dengeli bir şekilde iniş yapmasının sağlanmasında da Reinforcement Learning’in etkili olduğu söylenmektedir.
Dota oyununda da Reinforcement Learning’in etkisi görülmüştür. Örneğin, OpenAI-5 takımı kurulmuş ve bu takım dünyanın en iyi dota oyuncularını yenmiştir.

Q-Learning
Reinforcement Learning, farklı algoritmaların bir araya geldiği bir alanı kapsar. Q-Learning, bu alanda öne çıkan bir algoritmadır. Q-Learning’i anlatırken, matematiksel bir Q Fonksiyonu değeri elde etmemiz gerekmektedir. Bu değeri elde etmek için tümevarım tekniğini kullanarak incelemeler yaparsak, konunun daha kolay anlaşılacağını görebiliriz.
Q-Learning’in temel amacı, bir dizi işlem yaparak maksimum değeri bulmaktır. Bu amaç doğrultusunda, bir işlem gerçekleştirildiğinde elde edilen sonucun beklenen çıktıya yakın olması hedeflenir. Bu durum, “deterministik eylem” olarak adlandırılabilir. Deterministik yaklaşımın tam zıttı ise stokastik yaklaşımdır. Bu kavramları anlamak için satranç oyununu örnek olarak ele alabiliriz. Satranç oyununda taşların hareketleri belirli kurallara tabidir. Belli bir durumda her hamle yapma seçeneği ve kurallara uyma zorunluluğumuz vardır; bu, tamamen belirlenmiş (deterministik) bir yaklaşımdır. Diğer yandan, non-deterministik yaklaşımda bir eylem sonucunda alınacak çıktının belirsiz olduğu bir durum söz konusudur. Örneğin, ileri gitmek istediğinizde sadece düz gitmek yerine sağa veya sola da gidebilirsiniz.

“Action”, bir oda içinde ileri doğru bir adım atmak gibi bir eylemi ifade eder. “Set of actions”, tanımlanmış eylemler kümesini ifade eder (örneğin, ileri gitmek, sola gitmek, sağa gitmek gibi).
Eylemlerin “discrete” olması, belli bir set içinden belirli değerleri alması anlamına gelir. “Continuous” eylemler ise belirli bir aralık içinden herhangi bir değeri alabilirler. Q-Learning’de amacımız, ödülü maksimize etmektir. Bu ödül, belirli bir amacı en iyi şekilde elde etmeye yönelik bir teşvik olarak düşünülebilir. Örneğin, odadaki bir köşeye gitmek ve bunu yaparken bir ödül kazanmak istediğinizi düşünelim. Amacınız bu ödülü elde etmektir ve bunu mümkün olan en kısa sürede gerçekleştirmeyi hedeflersiniz.

Environment nedir?
Çevre (Environment), Ajan’ın içinde bulunduğu ortamdır. Şu anda bulunduğunuz ortam, sizin çevrenizdir. Siz de kendinizi bir odayı çözmeye çalışan bir Ajan olarak düşünebilirsiniz. Odayı keşfetmek için ortamda hareket etmeniz gerekmektedir. Bunun için de çevreye bir eylem (action) iletmelisiniz. Bu, aslında odada dolaşmak anlamına gelir. Odanın içinde etkileşimde bulunarak ödülü (reward) maksimize etmek için çevrenin size bilgi sağlaması gereklidir. Örneğin, oda içinde bir tatlıyı buldunuz. Bu durumda çevre, size bir geri bildirim vermelidir. Bu nedenle, yaptığınız eylemler sonucunda çevre gözlem ve ödülü size iletmektedir.

Gözlem (Observation): Çevreden alınan bilgileri ifade eder.
Q-Learning’de belirli bir durumunuz (state) vardır. Bu durum, belirli bir durum kümesinin bir parçası olmalıdır. Yani şu an bulunduğunuz konumu temsil edebilir. Bu da belirli durumlar kümesinde yer almalıdır.
Eylem Yapmak (Take Action): Bir adım atmak gibi düşünülebilir. (Sağa gitmek, sola gitmek gibi geçişler.)
Bu adımları takip ederek, çevreden bir geri bildirim beklersiniz. Aldığınız geri bildirim, ödül alıp almadığınıza veya ceza aldığınıza dair olabilir. Ödül, genellikle olumlu bir şey olarak düşünülse de, Reinforcement ve Q-Learning’de ödül negatif de olabilir.

Q-Learning sürecini adım adım ele alırsak:
- Q-Table, iki parametreye bağlı bir değişken olduğundan, bu tabloyu oluşturabilirsiniz.
- Bir eylem (action) seçmek için bir adım atmanız gerekmektedir.
- Seçilen eylem uygulanır.
- Çevre, olumlu veya olumsuz bir ödül döndürür.
- Aldığınız ödülü, daha önce başlatılmış olan Q-Tabloyu güncellemek için kullanırsınız.
- Belirli bir süre boyunca veya modelin öğrenmeyi tamamladığına inandığınız noktaya kadar süreci sürdürebilirsiniz.
- Q-Tablo’ya göre, Ajan çevrede hareket edebilir.
Q-Learning Terimleri

Q-Learning’i daha iyi anlayabilmek için bazı terimleri bilmek gerekiyor. Bu terimleri anladıkça yukarıdaki denklem de daha anlamlı gelmeye başlayacak.
Q-Learning-State
s: Durum (state), bir Ajan’ın çevre içinde nerede olduğunu belirten bir parametredir. Örneğin, 4 birimlik bir dünya düşünün. Bu birimlerin her biri kendi içinde bir dünya olarak kabul edilebilir. Bu birimlere sırasıyla s1, s2, s3, s4 gibi isimler verelim.
S: Bu, farklı stateleri içeren bir küme anlamına gelir.
Agent’ın s1’den başladığını düşünelim. Bu durumda bir anahtar kelime devreye girer: “Current state” yani “Şu anki durum”. Eğer Agent s1 konumunda ise, “current state: s1 = S” şeklinde ifade edilebilir.
Agent’a aşağı git komutu verilirse; s3‘e gitmeli ve “current state” yani “şu anki durum” s3 olarak güncellenmelidir. Yani “current state: s3 = S” şeklinde güncellenecektir. Eğer s1’den s2’ye gitmek istiyorum ancak bu yönde bir talimat verilmediyse, o zaman “next state” yani “sonraki durum” olarak next state: s2 = S’ (S prime) olarak gösterilmelidir.

Peki V(s) =?
S benim current state yani içinde bulunduğum statedir. İçerisinde bulunan statenin değerin sayısal değerini verir.
Peki V(s2) = ?
Current state ne ise onunla eş değer bir kavramdır.
V(S’)=?
Hangi stateye gitmek istiyorsam onun sayısal değeri V(S’) olarak adlandırılır.
Q-Learning Action
- Agent, S1 konumuna girdiğinde “current state: s1 = S” olarak belirlenir.
- State S’teyken, bir eylem gerçekleştirmek gerekmektedir. Ancak bir sınırlama (kısıt) bulunmaktadır, bunu a ile A olarak belirtebiliriz. A, gerçekleştirebileceğimiz eylemlerin kümesini ifade eder. Örneğin, 9 birimlik bir karelere ayrılmış bir ızgarada neler yapabileceğinizi düşünün: Yukarı (↑), aşağı (↓), sağa (→) ve sola (←) gidebilirsiniz.
- Bu noktada bir eylemin seçilmesi gerekmektedir, bu “take action” olarak adlandırılır. Diyelim ki “take action a = ↑”.
- “Current state” yani “şu anki durum” S1 konumundaysa, bir eylem seçtikten sonra yeni bir duruma geçeceksiniz demektir. Yani S2 konumuna geçeceksiniz ve “next state: s2 = S” şeklinde ifade edebiliriz. Matematiksel olarak şu şekilde ifade edilebilir:
(s, a) → (s1, a) → (s1, ↑) → sonraki durum = S’ = s2.
- Bu şekilde S2 konumuna ulaşmış olursunuz. Bu da, “current state”i s2 olarak güncellediğiniz anlamına gelir. Yani “current state: s2 = S” olarak gösterilebilir.
- Çevrenin yeni duruma geçiş yapması gerektiğini belirtmesi gerekmektedir, böylece S2 konumu güncellenir. Bu, “current state”i s2 olarak güncellediğimiz anlamına gelir.

Q-Learning Reward
Ajan (Agent), belirli eylemler çerçevesinde çevre içinde hareket etmeyi öğrenmiştir. Ajan’ın amacı, çevreye ödülü maksimize etmeyi sağlamaktır. Bu ödül, kazanç olarak ifade edilir. Ancak bu ödül pozitif olabileceği gibi negatif de olabilir. Yani ödül, kazanç olduğu gibi ceza da olabilir. Ajan’ın ulaşmak istediği hedefi gibi düşünebilirsiniz. Örneğin; +10 puanlık bir ödülünüz varsa ve her hücreden geçerken 0.1 saniye kaybediyorsanız, her hücre farklı değerlere sahip olabilir. Ayrıca, ödülü bulamadığınız her an, ödül kaybetmeye işaret edebilir. Bu bağlamda birden fazla sütun ve her bir sütunda farklı ödül değerleri bulunan bir yapı söz konusudur.

Toplam ödül değeri, yukarıda görülen formülle hesaplanmaktadır. Bu senaryoda Ajan (Agent), yolculuğuna başladığında herhangi bir eylemi gerçekleştirmek için -0.1 ödül kazanmaktadır. Eğer Ajan, bir engelle karşılaşırsa, o eylemi gerçekleştiremez ve bir adım geriye gitmek zorunda kalır. Aşağıdaki örneğe göre formül:
R = -0.1 + -0.1 + -0.1 + 10 = 9.7, şeklinde toplam ödüle ulaşılmış olur. Bu senaryoda farklı bir yol da izlenebilirdi ancak bu örnekte bu yol tercih edildi. Önemli olan, ödülü maksimize etmektir.

İndirim Oranı (Discount Rate), normal bir ödül ile karşılaştırıldığında, normal ödülün başına bir gama koymamız gerektiği bir kavramdır. Bu gama, 0 ile 1 arasında değişen bir sayıdır. Yukarıda yaptığımız işlemde, eylemlerimize dayalı yönlendirmeler gerçekleştirdik. Ancak gerçek dünyada bu tür yönlendirmeleri uygulamak pek mümkün olmayabilir. Gerçek dünyada, “yukarı git” dediğimizde, Ajan’ın gerçekten yukarı gidememe gibi bir durumu olabilir. Çünkü gerçek dünyada çevre, deterministik değil stokastik(non deterministik) olabilir. Bu nedenle, gelecekteki ödüle ulaşamama olasılığını hesaba katmak gerekebilir. Gama, gelecekteki ödül ile mevcut ödül arasında bir denge sağlamayı amaçlar.
Genellikle literatürde, gama için kullanılan değerler 0.9, 0.99, 0.95 gibi değerlerdir.
Özetle;
Her adımda belirli bir ödülüm bulunmaktadır. Ödüller, çevrenin amacına bağlı olarak belirlenir. Her isteğimi gerçekleştiremediğim durumlar için bir indirim oranı belirlemem gerekmektedir. İleride elde edeceğim ödüle ulaşmak ve şimdiki ödülümü korumak amacıyla gelecekteki ödül azaltılır ve indirim oranı kullanılır.

Bellman Equation
Normal şartlarda, belirli bir çevre içinde eylemler ve ödüllerle etkileşimde bulunabiliyoruz. Bellman Denklemi aracılığıyla, çevre içinde bir yol oluşturabiliriz. Bu denklem, geliştirilerek Q-Learning algoritmasının oluşturulmasına imkan tanır.
Normal şartlarda, belirli bir çevre içinde eylemler ve ödüllerle etkileşimde bulunabiliyoruz. Bellman Denklemi aracılığıyla, çevre içinde bir yol oluşturabiliriz. Bu denklem, geliştirilerek Q-Learning algoritmasının oluşturulmasına imkan tanır.
V(S): Bir durumun değeri
R(a,s): R(s,a) ile eşdeğerdir. S durumunda bir eylem gerçekleştirdiğinizde, yeni geçtiğiniz durumun ödülünü ifade eder.
γ: İndirim oranı(Discount Rate)olarak adlandırılır.
V(s’): Sonraki durum olarak adlandırılır.
Denklemin içindeki “max a” ifadesi şunu ifade eder:
- Bir A kümeniz olsun. A = {↑, ↓, →, ←}
- Denklemde yer alan dört farklı değer için en yükseğini seçmen gerektiğini ifade eder.
Tüm action değerleri için hesaplama yapılırsa;
- Aşağıdaki işlemde, Ajan’ın yukarı hareket etmesine istinaden Bellman Denklemi hesaplanmıştır. Burada yukarıda olduğu gibi aşağı, sol ve sağ yönde de sonuç sıfır çıkacaktır. Ayrıca, denklemde ödülün sıfır olma nedeni, herhangi bir ödül değerinin belirtilmemiş olmasıdır. V(s2)’nin sıfır olma sebebi ise herhangi bir başlangıç değeri belirtilmemesidir. Ek olarak, gama değeri 0.9 olarak verildiği için denkleme yerleştirilmiştir.

Aşağıdaki işlemlerde de başlangıç değeri S2 olarak belirlenmiştir. Ve bu başlangıç değeri zaten sıfır olduğu için Bellman denkleminde yukarı doğru bir işlem yapıldığında V(S2) = 0 olarak hesaplanmıştır.

V(S2) değeri 0 olarak hesaplandığı için sonuca ulaşabilmek adına bir adım daha ilerlemeye karar verilmiştir. Başlangıç değeri olarak S4 seçilmiştir. Bu bağlamda Bellman denklemi çözüldüğünde, bu sefer yukarı doğru bir eylem gerçekleştirildiğinde artık bir Ödül değeri bulunmaktadır (+10). Ancak yukarı yönde ilerlendiğinde ulaşılan hücrenin değeri hala sıfırdır. Bu adımlar sonucunda yukarıda elde edilen değer 10 olmuştur. Sağ, sol ve aşağı yönlere ait değerler 0 olduğundan, içlerinden maksimum değer olan 10 hesaplanmış ve sonuç olarak V(S4) = 10 bulunmuştur.

Deterministic vs Stochastic
- Deterministik durumda, Ajan bir yere gitmek istediğinde oraya gider ve başka bir yere gitme olasılığı bulunmaz.
- Ancak Stokastik durumda böyle değildir ve bu durum non-deterministik olarak adlandırılır. Her zaman kesinlik söz konusu değildir.
- Stokastik düşünce tarzında, yukarı gitmek istediğimde yüzde 70 ihtimalle yukarı, yüzde 20 ihtimalle sağa ve yüzde 10 ihtimalle sola gidebilirim. Ancak deterministik yaklaşımda, yukarı gitmek istiyorsam yüzde 100 oranla yukarı gidebilirim.

Markov Decision Process ( MDP )
- Bellman Denklemi’ni öğrenirken, tasarımı deterministik bir çevreye göre gerçekleştirmiştik. Bu tasarımı stokastik hale getirmeyi planlıyoruz. Bu dönüşümü yapmak için Markov Karar Süreçleri’ni kullanacağız.
- Markov süreci, bize bir kural sunar. Hayal edin ki elimizde bir dünya var ve bu dünya hücrelerden oluşan bir ızgaraya sahip. Ben A noktasındayım ve B ile C’ye gitmek istiyorum. Benim A noktasına gelirken izlediğim yolun hiçbir önemi yoktur. Markov Karar Süreçleri, tam olarak bunun üzerine odaklanır.
- Yukarıdaki Bellman Denklemi’nde γV(s’) ifadesi, bu denklemin stokastik bir yaklaşım kullanıldığında yapısını bozuyor. Çünkü bu bölümü daha önce deterministik bir yaklaşımla tanımlamıştık. Bellman Denklemi’ne stokastik rastgele bir terim eklediğimizde, aşağıdaki denklem elde edilir:

Biraz da makale inceleyelim!
Yazının bu kısmında Reinforcement Learning ile ilgili OpenAI ve DeepMind ekiplerinin işbirliğinde yazılmış “Deep Reinforcement Learning from Human Preferences” makalesini inceliyor olacağız.

Teknoloji nedir?
Teknoloji nedir? Şimdi belki bu makalenin başlığıyla bu sorunun nasıl bir ilişkisi var diye düşünebilirsiniz. Acele etmeyelim, buradan bir sonuca varacağım. Sözlükte şu tanımı bulabilirsiniz: Bilimsel bilgi kullanılarak yapılan araç ve gereçlerdir. Peki, bu kategorinin sınırları nerede? Ne kadar önemli? Örneğin, bir çift makas teknoloji sayılır mı? Tanıma uysa da, çoğu insanın cevabı hayır olacaktır. Belki makas eskiden teknolojiydi, ama artık çok basit ve anlaşılır bir araç. Sanırım bir şeyin gerçekten net olduğunda ve tüm detayları anladığımızda, insanlar onu teknoloji olarak görmeyi bırakır. Bir şeyin teknoloji olabilmesi için karmaşık ve öngörülemez, hatta güvenilir olması gerektiğini düşünüyorum. Örneğin, YouTube’a sorsam, kesinlikle teknoloji derdiniz. Demek istediğim, kesin tanımların gerçekten zor olduğudur ve bu genellikle çok fazla sorun yaratmaz, çünkü dil, kesin tanımlara göre işlemez. Teknoloji gibi bir kelimeyi kullandığımızda tam olarak ne demek istediğimizi belirtmek zor olabilir. Ancak Türkiye Cumhuriyeti Anayasası’ndan alıntı yapmak gerekirse, onu gördüğünüzde anlarsınız ve çoğu kullanım için yeterince iyidir. Bunu gündeme getirmemin sebebi, bazen insanların çoğu zaman birbirine yapay zeka tanımını sormaları ve aslında bu sorunun da teknoloji nedir sorusuyla oldukça benzer olduğunu düşünüyorum.
Yapay Zeka nedir?
Yapay zekanın, makinelerin insanın bilişsel görevlerini yerine getirmesini sağlamaya çalışmakla ilgili olduğunu söyleyebilirsiniz. Ancak aritmetik bilişsel bir görevdir. Bu, hesap makinesini yapay zeka yapar mı? Ben Matematik Mühendisliği mezunuyum ve hala da bu bölümde yüksek lisans yapıyorum.Bir nevi aritmetik bilişsel görevime devam ediyorum. Bu beni de yapay zeka yapar mı 🙂 ?
Biliyorsunuz, bir listeyi sıralamak bilişsel bir görevdir. Çoğu insanın buna yapay zeka diyeceğini sanmıyorum. Sıfırlar ve çaprazlardan oluşan mükemmel bir oyun oynanmak eskiden yapay zeka olarak kabul edilirdi, ancak bugünlerde buna böyle diyeceğimizi sanmıyorum. Bana göre yapay zeka, makinelerin yapamayacağını düşündüğümüz bilişsel görevleri yerine getirmesini sağlamakla ilgilidir. Belki de bunun nedeni , makinelerin insanların bilişsel görevlerini yerine getirmesiyle ilgili olmasıdır. Makineler bir şeyi yapabildiğinde, artık bunu insanın bilişsel bir görevi olarak düşünmüyoruz. Bazı insanlar bundan şikayetçi oldu ama bence bunun tanımın bir parçası olması oldukça makul.
Yapay zeka araştırması nedir?
Bu, yapay zeka araştırmalarının amacının, bilgisayarların bizi şaşırtmaya devam edebilecekleri görev yelpazesini genişletmeye devam etmek olduğu anlamına gelir. Eskiden yapay zeka araştırmalarının tamamı, bunları yapacak programları yazabilmemiz için bir şeyleri çözmek ve resmileştirmekle ilgiliydi. Aritmetik, listeleri sıralamak ve sıfırlarla çarpıları oynamak gibi şeyler, bunların hepsi, bu işleri yapan programları yazacak kadar iyi belirtebileceğimiz sorunlar sınıfına girer. Ve uzun bir süre boyunca yapabileceğimiz tek şey buydu. Başa çıkabildiğimiz tek sorun buydu. Ancak düşündüğümüzde birçok sorun için bu yaklaşım gerçekten çok zordur. Mesela, elle yazılmış bir rakamın görüntüsünü alıp bunun hangi rakam olduğunu belirleyen bir program nasıl yazılır? Süreci resimleştirip bir program yazmayı deneyebilirsiniz. Bilgisayarla görme ve görüntü işleme teknikleri gibi eski tarz yöntemlerle tanışmak istiyorsanız, bu aslında eğlenceli bir egzersiz de olabilir. Ve bu programı yazdıktan sonra, doğru etiketlenmiş küçük rakam görüntülerinden oluşan geniş bir koleksiyon olan MNIST veri kümesini kullanarak onu test edebilirsiniz.

Göreceğiniz şey şu ki, eğer yapılması gerekenleri eksiksiz bir şekilde yaparsanız, o zaman bu işe yarayacaktır ve programınız doğru bir şekilde çalışacaktır. Ancak bu şekilde yazılmış en iyi programlar bile sandığımız kadar iyi çalışmaz. Belki de gerçekten kullanılacak kadar güvenilir değillerdir. Birisi her an kör bir kalemle gelip programınızın doğruluğunu bozabilir, bu mümkün bir şeydir. 🙂

Tabii ki, bu hala bakıldığında bu problem oldukça kolay bir problem gibi gelebilir. Peki sayıların yanı sıra harfler gibi bir şey yapmak isteseydiniz, ne olurdu? Şimdi işiniz daha da karmaşıklaştı. 0 ile O’yu, 1 ile l’yi arasındaki farkı ayırt etmeniz gerekiyor. Bu bile nispeten basit bir sorun; peki ya kedi resimlerini köpek resimlerinden ayırmak gibi bir şey yapmaya çalışıyorsanız? Daha önce gerçekleştirmiş olduğunuz bu yaklaşımlar, bunun için işe yaramayacak. Ancak yararlanabileceğimiz bir gerçek var ki, o da bir çözümü değerlendirmenin, bu sorunların çoğuna çözüm üretmekten daha kolay olmasıdır.

Bir çıktıyı değerlendirecek bir program yazmak, o çıktıyı üretecek bir program yazmaktan daha kolaydır. Dolayısıyla el yazısıyla yazılan sayıları tanımlama görevini gerçekleştiren bir program yazmak belki çok zordur. Ancak doğru şekilde etiketlenmiş bir sürü örneğiniz olduğu sürece, belirli bir programın bu görevde ne kadar iyi performans gösterdiğini değerlendiren bir program yazmak oldukça kolaydır. Veri kümesinden etiketli örnekler verdiğinizde, ne kadarının doğru olduğunu görebilirsiniz. Aynı şekilde belki Atari oyununu iyi oynayan bir program yazamazsınız, ama ne kadar iyi yaptığınızı söyleyen bir programı rahatlıkla yazabilirsiniz. Bunu yapabilmeniz için sadece elde edilen skoru okumak yeterli olacaktır.
İşte makine öğrenimi de tam burada devreye giriyor. Çözümleri değerlendirmek için bir programı alıp onu iyi çözümler oluşturmak için kullanmanın yollarını sunuyor. İhtiyacınız olan tek şey, çok sayıda etiketli örnek içeren bir veri kümesi veya puanlı bir oyun, ya da çıktıları programlı olarak değerlendirmenin başka bir yoludur. Ve bu şekilde görevi yerine getiren bir sistemi eğitebilirsiniz. Programın kendisini yazmak yerine, ödül fonksiyonunu veya kayıp fonksiyonunu yazarsınız ve eğitim süreci size ağınız için bu fonksiyona en iyi performans gösteren bir dizi parametre bulur. Bu işlem, yazdığınız kodu gerçekten görevi yerine getiren yürütülebilir bir dosyaya dönüştürmektedir. Böylece makine öğrenimi, makinelerin gerçekleştirmeye başlayabileceği görev sınıfını genişletmektedir.
Undefined Behavior nedir?
Bir programlama paradigması olarak, makine öğrenimi neredeyse tamamen tanımlanmamış bir davranıştır. Sonuç olarak, bu şekilde oluşturulan programlarda oldukça ciddi hatalar bulunma eğilimindedir. Örneğin, yazdığınız ödül işlevi ile düşündüğünüz gerçek ödül işlevi arasında bazı ince farkların olduğu ödül oyunlarını düşünün. Bir temsilci, yüksek ödül elde etmek ve yapabileceği şeyleri bulmak için bu farktan yararlanmanın yollarını bulacaktır. Yazdığınız ödül fonksiyonu buna yüksek bir ödül verir, ancak düşündüğünüz ödül fonksiyonu buna sahip olamaz. Veya ödül fonksiyonunda önemsediğiniz her şeyi belirleyemediğiniz yan etkiler sorunu ve temsilci, ödül fonksiyonunda belirtilmeyen herhangi bir şeyin sıfır değerli olduğunu varsayacaktır. Bu da onun büyük olumsuz yan etkilere yol açmasına neden olabilir. Bu spesifikasyon sorunlarından başka bir sürü olabilir. Ve genel olarak, program oluşturmanın bu yolu bir güvenlik kabusu olabilir ve aynı zamanda makinelerin yapmalarını isteyebileceğimiz tüm görevleri yapmasına da izin vermeyebilir. Pek çok görev, iyi değerlendirme fonksiyonları yazmak için çok karmaşık ve çok zayıf tanımlanmış olabilir. Örneğin, bir robotunuz varsa ve onun yumurta karıştırmasını istiyorsanız, robotun duyularından girdi alan ve robotun yumurtayı karıştırmada ne kadar iyi olduğunu döndüren fonksiyonu nasıl yazarsınız? Bu karmaşık bir problem gibi görünüyor. Simüle edilmiş bir robotun bile basit bir şekilde ters takla atmasını sağlamak gibi bir şeyi belirlemek bile aslında oldukça zor bir problemdir. Peki bu konuda ne yapabiliriz?
Ters Taklalar(Backflips)
Normal reinforcement learning (takviyeli öğrenme), bir Agent ve bir Environment’ın bulunduğu bir senaryoyu ifade eder. Agent, çevrede eylemler gerçekleştirir ve çevre bu eylemleri gözlemler ve ödüller üretir. Bu ödüller, ödül fonksiyonu tarafından hesaplanır. Agent’ın istediğiniz görevi gerçekleştirmesini sağladığınız yeri programladığınız yer olarak düşünebilirsiniz. Bazı araştırmacılar bunu ters takla (backflip) göreviyle denemişler. Ve aşağıdaki ödül fonksiyonu yazmak için birkaç saat harcamışlar.
def reward_fn(a,ob);
backroll = -ob[7]
height = ob[0]
vel_act = a[0] * ob[8] +
a[1] * ob[9] +
a[2] * ob[10]
backslide = - ob[5]
return backroll * (1.0 +
.3 * height +
.1 * vel_act +
.05 * backslide)
Temsilciyi bu ödül fonksiyonuyla eğitmenin sonucu ise şöyle gözüküyor;

Sanırım bunu temelde bir ters takla olarak adlandırabiliriz. Örneğin bir şeyin ters takla atıp atmadığını sadece ona bakarak anlamak kolaydır. Ama bunu yapan bir program yazmak gerçekten zor olabilir. Peki ya kendinizi doğrudan oraya koyarsanız? Ödül fonksiyonunun sadece bir kısmını oynarsanız? Her adımda duruma bakarsınız ve Agent’a ters takla atma konusunda ne kadar iyi olduğunu düşündüğünüze dair bir sayı verirsiniz. Araştırmacılar bu tür bir yaklaşımı denemişler ama bunun birçok sorunu çıkmış. Bunlardan en önemlisi bu sistemlerin basit şeyleri bile öğrenmek için genellikle çevreyle etkileşime girerek çok fazla zaman harcaması gerektiğidir. Yani orada oturup “Hayır bu bir ters takla değil.” diyeceksiniz. “Hayır bu da bir ters takla değil.”, “Hayır bu yine daha kötü.”. Ve bunu yüzlerce saat boyunca mı yapacaksınız? Baktığınızda kimsenin buna zamanı yok. Ne demiş Gülten Akın ? “Ah kimselerin vakti yok, durup ince şeyleri anlamaya.” Bu problemin biraz el yazısı rakamları tanımlamaya benzediğini fark etmişsinizdir. Bunu yapmak için nasıl bir program yazacağımızı çözemiyoruz ve bunu kendi başımıza yapmak çok zaman alıyor. Öyleyse neden insanların el yazısı sayılarla ilgili yaklaşımını benimsemeyelim? Neden ödül fonksiyonunu öğrenmeyelim? Bu göründüğü kadar basit olmayabilir. Ters taklalar el yazıyla yazılan rakamlardan daha zordur, bunun nedeni kısmen verilerinizi nereden alacağınızdır. Rakamlar için MNIST veri setine sahibiz, yani doğru şekilde etiketlenmiş görsellerden oluşan dev bir koleksiyona sahibiz. Bunu, insanların çok sayıda yazı yazmasını, bunları taranmasını ve ardından görüntüleri etiketlemesini sağlayarak oluşturduk. Bunu yapacak, öğrenilecek örnekler sağlayacak insanlara ihtiyacımız var. Yani gösterilere ihtiyacımız var (demonstrations). Şimdi eğer bir aracınızın bir görevi yerine getirdiğine dair iyi gösterimleriniz varsa taklit öğrenme ve takviyeli öğrenme gibi şeyler yapabilirsiniz. Ancak ters taklalarda buna sahip değiliz. Ben kendi adıma ters takla atabileceğimden bile emin değilim ki atsam da inanın bir faydası olmayacak 🙂 . Zaten baktığınızda da bir insanın ters takla atmasının kaydına ihtiyacımız da bulunmuyor. Bu noktada bir robotun ters taklalarından birine ihtiyacımız var, değil mi? Bu da fizyolojik olarak farklıdır. Ancak simüle edilen robotu geri takla atacak şekilde ayarlayabileceğimizi de sanmıyorum.
Teknik olarak ters taklayı tanımlamak zordur. Ters takla atmak zordur. Ama ters takla atıldığını gördüğümde anlarsınız değil mi?. Bu nedenle iyi bir ödül fonksiyonunu gösteriler olmadan, yalnızca insan geri bildirimlerini kullanarak insanın çok fazla zamanını gerektirmeden öğrenen bir düzene ihtiyacımız var. “Deep Reinforcement Learning from Human Preferences” makalesinin de yaptığı budur. OpenAI ve DeepMind arasındaki işbirliği ile yazılmış bir makaledir. Makale, ödül modellemesiyle çalışılan bir sistemi belgeliyor. Mesela bir saat geri bildirim verirseniz, ters takla atar. Bu, iki saatlik ödül işlevi yazmaktan çok daha iyi görünüyor.
Peki ödül modelleme nasıl çalışıyor ?

Ödül modellemede, insanın ödül fonksiyonunu yazması veya sadece ödül fonksiyonu olması yerine, ödül fonksiyonunu sinir ağı olarak uygulanan bir ödül modeliyle değiştiriyoruz. Yani Agent, aldığı ödüllerin ödül modelinden gelmesi dışında çevreyle normal şekilde iletişime giriyor. Ödül modeli, çevreden gözlemler alması ve ödüller vermesi açısından normal bir ödül fonksiyonu gibi davranır. Ancak bu ödüllere karar verme şekli, bir insanın hangi ödülü vereceğini tahmin etmeye çalışan bir sinir ağıdır.
Peki ödül modeli bir insanın hangi ödülü vereceğini nasıl öğreniyor?

Burada çalışma şu şekilde ilerliyor: Agent, environment ile etkileşime giriyor ve öğrenmeye çalışıyor. Daha sonra sistem, Agent’ın sadece bir veya iki saniye boyunca salınup durduğu iki kısa klibini çıkaracak ve bu iki klibi insana sunacak. İnsan, hangisini daha çok beğendiğine ve hangisinin daha iyi ters takla attığına karar verecektir.
Ve ödül modeli daha sonra bu geri bildirimi temel olarak standart denetimli öğrenme (supervised learning) yöntemiyle kullanır. Öyle bir ödül fonksiyonu bulmaya çalışır ki, insanın sol klibi sağ klibe tercih ettiği durumlarda, ödül fonksiyonu sol klipteki Agent’a sağ klibe göre daha fazla ödül verir. Veya bunun tersi de geçerli olabilir. Yani ödül modeli, hangi klibin daha fazla ödül alacağını ve insanın hangi klibi tercih edeceğini iyi bir şekilde tahmin etmeye çalışır. Bu da ödül modelinin insanın gerçekten istediği ödül fonksiyonuna çok benzediği anlamına gelir. Bu kısımda hoşuma giden bir şey, her şeyin eşzamanlı olarak gerçekleşmesi olabilir. Her şey aynı anda oluyor.
Özetle;
- Agent insanı beklemiyor, sürekli environmentle etkileşim halinde.
- Ödül modelinden ödüller alıyor ve gerçek zamandan çok daha hızlı bir şekilde öğrenmeye çalışıyor.
- Ödül modeli de beklemiyor, şu ana kadar aldığı tüm geribildirimler üzerine sürekli olarak eğitim alıyor. Yeni geribildirim aldığında bunu veri kümesine ekler ve eğitime devam eder. Bu, sistemin aslında kullanılan insan zamanının her saniyesi için onlarca veya yüzlerce saniye boyunca eğitim verdiği anlamına gelir. Böylece insana bir çift klip sunulur ve geribildirimde bulunulur; bunun yapılması sadece birkaç saniye sürer. Ve bu gerçekleşirken, ödül modeli de daha önce aldığı geribildirimleri daha iyi yansıtacak şekilde güncellenir. Temsilci, biraz geliştirilmiş nı ödül modelini kullanarak öğrenmek ve gelişmek için birkaç dakika öznel zaman harcar. Yani, insan bu klipler hakkında geribildirim vermeyi bitirdiğinde ve bir sonraki çiftin zamanı geldiğinde, temsilcinin kendini geliştirmek için zamanı olur. Bir sonraki klip çifti insanın değerlendirmesi için yeni ve daha iyi davranışlara sahip olur. Bu da insanın zamanını oldukça verimli kullanabildiğini anlamına geliyor. Artık bu verimliliği daha da arttırmak için klipleri rastgele seçmez. Ödül modelinin , ödülün ne olması gerektiği konusunda belirsiz olduğu klipleri seçmeye çalışır.
Cevabın ne olduğunu bildiğinden zaten eminseniz geribildirim istemenin bir anlamı yok 🙂
Belirsiz klipleri seçmek kullanıcının, Agent’ın yeni bir şey üzerinde çalıştığı ve ödül modelinin bundan ne çıkaracağını bilmediği sıradışı anlara ait klipleri görme ihtimalinin yüksek olduğu anlamına gelir. Bu , insan tarafından sağlanan bilginin değerini en üst düzeye çıkarır ve sistemin öğrenme hızını arttırır.
Peki olumsuz yanları yok mu?
Ödül sinyaliniz için bir sinir ağı kullanırsanız, ödül modeli yalnızca bir tahmin olduğundan ve sinir ağlarının rakip örneklerine karşı çok savunmasız olduğunu bildiğimizden, ödül oyunları gibi şeylere karşı savunmasız olabileceğini düşünebilirsiniz. Eğer ödül modelini güncellemeyi bırakırsanız, Agent’ın ödül modelinin yüksek puan aldığı ancak gerçek ödülün almadığı stratejileri bulmayı hızla öğreneceği doğrudur. Ancak ödül modelinin sürekli güncellenmesi aslında buna karşı oldukça iyi bir koruma sağlıyor. Kliplerin seçilme şekli de bunun bir parçasıdır.
Eğer Agent hile yapmak ve yüksek ödül almak için farklı bir strateji keşfederse, bu alışılmadık yeni davranışları içerecek ve ödül modelini belirsiz hale getirecektir. Böylece insana hızla yeni davranışın klipleri gösterilecek ve eğer bu gerçek bir ilerleme değil de ödül oyunuysa insan; “hayır, istediğim bu değil!” diyerek geri bildirimde bulunacak. Ödül modeli bu geri bildirime göre güncellenecek ve daha doğru hale gelecektir. Agent ise artık bu ödül oyun stratejisini kullanmayacaktır.
Aslında fikir oldukça güzel görünüyor olsa da bazı güvenlik avantajları da gözüküyor gibi. Ne kadar iyi çalışıyor? Bir ödül fonksiyonu programlamak kadar etkili mi? Ters taklalara (backflips) bakınca kesinlikle öyle görünüyor. Ve bu, çok fazla uzmanlık gerektiren bu ödül işlevini yazmanın, temelde hiçbir uzmanlık gerektirmeyen bir saatten kısa sürede yapılan derecelendirme kliplerine kıyasla, iki saatlik süre olduğunu belirttiğinizde özellikle etkileyicidir. Yani bu, iki saatlik uzman süresine karşılık gelen bir saatlik acemi süresidir. Hatta bunu kendileri için tanımlanmış standart ödül fonksiyonlarına sahip MuJoCo simüle edilmiş robotik görevlerinde de denediler.
MuJoCo

Burada, doğrudan ödül işlevi, verilen düzenli takviyeli öğrenme kadar başarılı olma eğiliminde değildir. Ancak nedeyse aynısını yapma eğilimindedir. Hatta bazen daha da başarılı oluyor ki , bu başarı oldukça şaşırtıcıdır.
Atari

Bu çalışmayı Atari oyunlarında da denediler. Bunlar için görev daha karmaşık olduğu için daha fazla geribildirime ihtiyaç vardı ancak yine, birçok oyun için doğru ödül işlevini sağlama konusunda neredeyse aynı şeyi yapma eğilimindeydi . Ayrıca burda eğlenceli bir uygulama detayı da var. Oyunları skoru göstermeyecek şekilde değiştirmek zorunda kaldılar, aksi takdirde yönetici sadece skoru ekrandan okumayı ve onu kullanmayı öğrenebilirdi. Burada tamamen geribildirimlere güvenmek istediler. Öyle görünüyor ki ödül modelleme, yalnızca ödül işlevi sağlamaktan daha az etkili değil. Ancak bana göre ana başlık, agentları hiçbir ödül işlevi olmayan şeyleri yapmak üzere eğitebildikleridir(Ters takla gibi.). Ayrıca Cheetah robotunun tek ayak üzerinde durmasını da sağladılar ki, bunun için bir ödül işlevi yazmaya çalıştıklarını sanmıyorum.

Ve bir Atari yarış oyunu olan Enduro’da oyununun puanı hızlı gidip onları geçmeniz için sizi ödüllendirse de, diğer arabalarla aynı seviyede kalmak için ödül modellemesini kullanarak Agent’ı eğitmeyi başardılar.

Sonuç
- Derin Öğrenme (Deep Learning): Makale, derin öğrenmenin temel kavramlarını ve tekniklerini ele almaktadır. Bu, büyük veri kümelerinden karmaşık desenleri çıkarmak için kullanılan bir makine öğrenimi yaklaşımıdır. Yapay sinir ağları gibi derin öğrenme modelleri, özellikle görsel verileri anlama, dil işleme ve benzeri alanlarda etkili olmuştur.
- Reinforcement Learning (RL): Makale, temelde bir ajanın çevresiyle etkileşim içinde öğrenme sürecini ele almaktadır. Ajan, belirli bir hedefi (örneğin, bir oyunu kazanmak) en iyi şekilde nasıl elde edeceğini öğrenmeye çalışır. Bu, genellikle ödül mekanizmasıyla gerçekleşir.
- İnsan Tercihleri (Human Preferences): Makale, insanların tercihlerinin nasıl toplandığını ve bu tercihlerin öğrenme sürecine nasıl entegre edildiğini ele almaktadır. İnsanlar, belirli durumlar veya sonuçlar arasında tercih yapabilirler. Bu tercihler, yapay zeka sistemine hedefleri ve öğrenme yoluyla izlenmesi gereken yolları belirleme konusunda rehberlik edebilir.
- Öğrenme İçin İnsan Tercihlerinin Kullanımı (Using Human Preferences for Learning): Makale, insan tercihlerinin derin öğrenme veya takviyeli öğrenme algoritmalarına nasıl entegre edilebileceğini ve bu tercihlerin ajanın davranışını yönlendirmek için nasıl kullanılabileceğini ele almaktadır.
- Uygulamalar ve Sonuçlar: Makale, bu yaklaşımın hangi alanlarda uygulandığını ve insan tercihlerine dayalı derin öğrenmenin sonuçlarını ele almaktadır. Örneğin, robot kontrolü, oyun stratejileri, öneri sistemleri gibi farklı alanlarda bu yaklaşımın nasıl kullanılabileceği tartışılabilir.
Bu tür bir makale, temelde insan tercihlerinin yapay zeka öğrenme süreçlerine nasıl entegre edilebileceğini ve derin öğrenme modelinin insan tercihlerini nasıl kullanabileceğini inceleyerek, daha etkili ve insanlarla işbirliği yapabilen yapay zeka sistemleri oluşturmayı amaçlamaktadır.
Bir sonraki yazıda görüşmek üzere…
Hoşça kalın…
Kardel
Kaynakça
- https://www.udemy.com/course/python-ile-yapay-zeka-adan-zye-reinforcement-learning/
- https://www.youtube.com/watch?v=PYylPRX6z4Q
- Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
- https://arxiv.org/pdf/1706.03741.pdf