Bu makale, AI Araştırma Enstitüsü tarafından derlenen, orijinal başlığı olan teknik bir blogdur:
Unity ml-agent kullanarak Derin Güçlendirmeli Öğrenme
Yazar | João Ramos
Tercüme | Gece Boyunca Düzenleme | Wang Liyu
Orijinal bağlantı:
https://towardsdatascience.com/deep-reinforcement-learning-using-unity-ml-agents-8af8d407dd5a
Herkese merhaba !
Son zamanlarda, iki meslektaşım Pedro Quintas ve Pedro Caldera, Unity'nin ml-ajanlarını kullanarak bazı deneyler yaptılar. Bunun harika bir an olduğunu düşünüyorum. Topluluk sonuçlarımızı paylaşır ve pekiştirmeli öğrenme bilginizi nasıl genişleteceğinizi gösterir.
Unity ml-ajanlarının ne olduğunu bilmiyorsanız, size kısa bir giriş yapmama izin verin. Unity ml-agent'lar "aracıları eğitmek için oyunları ve simülasyon ortamlarını kullanan açık kaynaklı bir Unity eklentisidir." Bence bu, derin öğrenmeyi ve pekiştirmeli öğrenmeyi öğrenmeye başlamak için iyi bir çerçeve çünkü terminalde sadece rakamları ve harfleri görmek yerine neler olduğunu görebilir.
Küçük projemizi göstermeye başlamadan önce, çerçevenin oluşturduğu bazı sahneleri göstermeme izin verin.
Artık bu aracın işlevini ve görünümünü anladığınıza göre, bu projeyi tartışalım!
Unity ml-agent'lar tarafından oluşturulan bir ajan kullandık. Temelde bir örümcek ama sadece dört bacağı var. Sonra bu küçük "örümceğin" hareket etmesi için bir mobil platform oluşturduk.
Bu sadece Unity'nin inşası, hadi pekiştirmeli öğrenmeden bahsedelim! Başlangıçta, her zaman olduğu gibi, aracı sadece platformdaki konumunu ve yönünü bilir. Amacımız iki örümceğin birbirleriyle savaşmasını sağlamak olduğu için (onlara ne yapacaklarını söylemeden), onlara öğretmeye çalışmalıdır. Şu anda, pekiştirmeli öğrenme devreye giriyor. Bu makaleyi okurken pekiştirmeli öğrenmenin arkasındaki temel teoriyi bildiğinizi varsayıyorum. Acemiyseniz, işte bir başlangıç kılavuzu:
https://skymind.ai/wiki/deep-reinforcement-learning
Yani, herhangi bir sıradan "aptal ajan" gibi, onu da "öğretmeliyiz". Temsilcilerimize iyi davranışları olduğunda iyi, kötü davranışları olduğunda kötü ödüller vererek öğretiriz. Denemeler ve yanılmalardan sonra, ajanlar nihayet ayakta durmayı ve yürümeyi öğrendi! Temel olarak, vücutları yere her dokunduğunda onlara kötü ödüller veriyoruz. Çünkü vücutları yerde ise dört bacağı yerde değil veya bacakları yeterince kuvvet üretmiyor demektir. (Ayağa kalkmalılar). Kötü ödüller vererek onlara bu davranışların kötü olduğunu ve onlardan kaçınmaları gerektiğini söylüyoruz.
Şimdiye kadar neler yaptığımızı özetleyelim:
-Ml-agent kullanarak bir Unity ortamı oluşturduk.
- Örümceğimize ayağa kalkmayı, ayaklarını dengelemeyi öğretiyoruz.
Bir sonraki adım onlara dövüşmeyi öğretmek! Örümceğin davranışını değiştirip savaşabilmeleri için ödüllerini değiştirmeliyiz. Bu nedenle örümceklerden biri platformdan ayrılırsa veya yerdeki ceset tarafından dokunulursa çok kötü bir ödül alacaktır.
Ayrıca, yapmalarını istediğimiz şeyi yaparlarsa ve biz onlara iyi bir ödül vermezsek, o davranışları tekrarlamaya devam etmezler. Yani bir örümcek başka bir örümceğe baktığı zaman onlara iyi bir ödül veriyoruz ve örümcek diğer örümceğin yönünde hareket ettiğinde onlara daha iyi bir ödül veriyoruz. Bu, iki örümceğin diğer örümceğin yönünde hareket etmesine neden olur ve bir noktada bir örümcek diğer örümceği platformdan atar. (Bu, amacımı kanıtlamak için sadece basit bir örnek)
Ayrıca, kazanmak için yumruklarıyla yerde birbirlerini dövmeyi öğrendiler. Böylece aynı anda "güreşmeye" başladılar. Bu çok ilginç bir gözlem.
Ek olarak, daha zor bir ortam oluşturmak için temsilcimizi mobil bir platformda da test ettik:
Sonuçlarımı çoğaltmak isterseniz, işte gözlemlenebilir vektörüm ve ödül işlevim hakkında daha fazla bilgi:
Temsilcinin kendisi hakkındaki bilgileri:
- temsilcinin eklemleri hakkındaki bilgileri
Ajanın platformdaki yukarı ve ileri vektörleri
Aracının platformdaki konumu
Rakip hakkında bilgiler:
-Rakibin vücudunun yukarı ve ileri vektörleri
-Rakibin platformdaki konumu
Temsilci ayağa kalkamadığı için cezalandırılmalı ve rakibe düştüğü için ödüllendirilmelidir.Bu, menajerin temel amacıdır.
Temsilci platformdan düşerse cezalandırılmalı, ancak ödüllendirilmemelidir. Ajanların öğrendiği dövüş yönteminin, rakibi biraz daha erken düşürmek için platformu belirli bir şekilde yenmeyi içermediğini umuyoruz.
Temsilciler rakiplerini ittikleri için ödüllendirilmeli ve geri çekildikleri veya kendilerini itilmelerine izin verdikleri için cezalandırılmalıdır. Bu, olumlu bir dövüş stilini ödüllendirir ve kaçış dahil olmak üzere daha fazla kaçış stilini cezalandırır.
Önceki puanlara dayanarak aşağıdaki ödülleri oluşturduk:
Temsilci sahadaysa: -1.0 puan
Rakip yerdeyse: 1.0 puan.
Temsilci platformda değilse: -1.0 puan
0,003 * (Normalleştirilmiş hız * (Rakip pozisyonu-Temsilci pozisyonu)) + 0,001 * (Normalleştirilmiş ileri vektör * (Rakip pozisyonu-Temsilci pozisyonu))
Son olarak, bir adım daha ileri giderek insansı robotları aracı olarak kullanmaya çalışıyoruz. Zorluk katlanarak artıyor çünkü örümceklerin 8 eklemi ve insansı robotların 12 eklemi var. Bu, toplam olası birleşik eylem sayısını artırır. Sonuçta harika sonuçlar alamadık ama bu ilginç görünüyor:
Kısacası, Unity ml-agent'lar bazı ilginç şeyleri çok kolay bir şekilde oluşturmanıza izin verir. Bu konuyu öğrenmeye başlamanın iyi bir yolu olduğunu düşünüyorum. Lütfen sorularınızı ve sonuçlarınızı benimle paylaşmaktan çekinmeyin! Lei Feng Wang Lei Feng Wang Lei Feng Wang
Bu doğrultuda bir sonraki proje olarak drone simülasyonu ve otonom sürüş için bir ortam yaratmak istiyorum. Herhangi bir fikriniz varsa, lütfen benimle iletişime geçin!
Teşekkür ederim!
Bu makalenin ilgili bağlantılarını ve referanslarını görüntülemeye devam etmek ister misiniz?
Erişmek için [Derin takviye öğrenimi için Unity ml-aracısını kullan] 'a tıklayın!
Bugünün kurs önerisi: Takviye öğrenmenin derinlemesine anlaşılması
Önemli Noktalar
Takviye öğrenme sistemini, algoritma ilkelerini + matematiksel türetmeyi + gerçek kod örneklerini sistematik olarak açıklayın
En iyi konferans makalesinin yazarı, zenginleştirilmiş proje deneyimini açıkladı
Size öğrenmeyi nasıl güçlendireceğinizi öğretin
Her Çarşamba düzenli olarak güncellenen yaklaşık 30 ders saati olmak üzere toplam 10 bölüm
Kurs bağlantısı: https://ai.yanxishe.com/page/domesticCourse/73