Berkeley Üniversitesinin yapay zekaya giriş kursu pazartesi günü başlıyor.
Öğrenciler kursta yapay zekanın temellerini oluşturan teorik bilgileri öğrendikten sonra, öğrendikleri yapay zeka algoritmalarını video oyunlarında kullanabilecekler.
Ön Koşullar:
- Programlama
Nesneye yönelik programlama
Öz yineleme
Python ya da Python'u çabuk öğrenebilme (ufak bir ders veriliyor)
- Veri yapıları
Listeler, kümeler, diziler, eşleme tabloları
Yığıt, kuyruk, öncelikli kuyruk
Ağaçlar ve çizitler
- Matematik
Olasılık, rastgele sayılar
Temel sonuşmaz karmaşıklığı (Büyük-O)
Sayma sistemleri(Kombinasyon permütasyon)
https://www.edx.org/courses/BerkeleyX/CS188.1x/2012_Fall/about (https://www.edx.org/courses/BerkeleyX/CS188.1x/2012_Fall/about)
Bilgilendirme için teşekkürler. Kaydoldum. Epeydir ilgimi çeken ve kendimi geliştirmek istediğim bir konuydu. Daha önce bir miktar Reinforcement Learning ile uğraşmışlığım da var.
Ben de kaydoldum, bu dönem okulda Yapay Zeka dersi de göreceğim ama biraz zorlayacak gibi duruyor.Programlama temelim çok zayıf çünkü.
Aslında bu konuda benim de deneyiyim yok.
Sadece Mat Buckland'ın oyunlarda yapay zeka kullanımı ile ilgili Programming Game AI By Example (http://www.ai-junkie.com/books/toc_pgaibe.html) kitabını hızlıca okumuştum.
Ama kodları yazdığımı söyleyemem ve o kitaptan adamakıllı istifade edebilmek için bir 6 ay 1 sene geçer diye düşünüyorum. Zaten abartmayayım ama sanırım yüzbinlerce belki milyon satır kod var. Eğer bu kitabın kaynak kodlarını sıfırdan yazan programcı varsa elini öpebilirim :D
Kitaptaki kaynak kodlardan bir örnek:
https://gist.github.com/3762946 (https://gist.github.com/3762946)
Çok harika bir kitap. Özellikle çizit kuramını anlattığı bölümü çok beğendiğimi söyleyebilirim.
Alıntı YapWARNING!
Beware! Search algorithms have the ability to create in the average human
brain terrible amounts of frustration and confusion, leading to headaches,
nausea, and sleep deprivation. Spontaneous and excessive howling is not
uncommon. Please be aware these symptoms are commonplace in the early
stages of the learning curve and are not generally cause for concern. Nor-
mal service is usually resumed within a reasonable length of time. (If
symptoms persist, however, stay clear of busy roads, razor blades, and
loaded weapons. Seek medical advice at the earliest opportunity.)
Ama gene aynı bölümde böyle bir uyarı vardı. Yani bu bölümdeki konulara çalışırken elektrik direklerine çarpmamaya dikkat edin diye uyarmışlar.
Açıkçası ben bu kursun beni de oldukça zorlayacağını tahmin ediyorum. Programlama tarafı kolay ama veri yapıları ve algoritmalar konusunda eksiklerim var.
Ama şöyle de bir şey var. Robert Sedgewick ve Kevin Wayne tarafından verilen Algoritmalar I kursuna kayıt olup eksikliklerinizi tamamlayabilirsiniz. Sedgewick bildiğiniz üzere efsane bilgisayar bilimci Donald Knuth'un doktora öğrencisi ve hızlı sıralama üzerinde fazlaca çalışmış.
https://www.coursera.org/course/algs4partI (https://www.coursera.org/course/algs4partI)
Asıl CS188 için gerekli olduğunu düşündüğüm çizit kuramı ve yol bulma algoritmalarının anlatıldığı ikinci kısmı da yakında başlayacak.
https://www.coursera.org/course/algs4partII (https://www.coursera.org/course/algs4partII)
Bir de dersler çok zevkli ve eğlenceli konular anlatılıyor. Hatta konular öyle yerlere geliyor ki insanın ağzı açık kalıyor.
Vav! Kurs başlamış. Arkaplandaki karaktere dikkat :P
Welcome to CS188x! (http://www.youtube.com/watch?v=4DIWPWoGK6w#ws)
Nasıl gidiyor arkadaşlar :)
Ben şu ana kadar kursu gayet başarılı buldum. Hocalar da güzel anlatıyor.
Çizgi karakterler de hoş olmuş. İnsan kolay kolay unutmuyor.
Hafta içi pek zaman ayıramadığım için hafta sonu biraz hızlı bir şekilde dersleri geçmek zorunda kaldım - bu iletiyi yazmakta gecikmemin sebebi de bu. Dersler gerçekten de çok hoş, hoca iyi anlatıyor. Soruların bazıları kolay ama bazıları zorluyor, ilk denemede doğru cevabı bulamadığım pek çok soru var. Özellikle admissibility ve consistency kavramlarını anlamakta zorlandım biraz. Halen kafama tam oturmuş değiller ve zaten en çok da onlarla ilgili sorularda sıkıntı yaşadım.
Admissible heuristics yani tutarlı tahmini ben şöyle anlıyorum.
Örneğin bir arama algoritması tahmin yaparken yaptığı tahminler her zaman gerçek masraftan düşük ya da eşitse buna tutarlı tahmin deniliyor.
Hatta bir karikatürde bir gösterge vardı. Hedefe yaklaştığı halde zor bulursun, hayatta başarılar falan gibi laflar ediyordu. İşte bu tutarlı bir tahmin değil.
Kısacası tahmin yaparken masrafı ya da değeri olduğundan fazla gösteren işlevler tutarlı değil.
mesaj birleştirme:: 08 Ekim 2012, 18:03:43
Aslında ben de ödevi yaparken arama algoritmaları dışındaki bölümü resmen salladım :D
Ben de hafta içi çalışmak yerine yok EPE okudum. Yok dijital kalem nasıl yapabiliriz diye Zihni Sinir projeleri düşündüm. Hiç alakası yokken derleyiciler ile ilgili bir kaç ders seyrettim. Yani 3-4 günüm aylaklıkla geçti.
Konular zevkli ama hiç kolay değil. O yüzden oturup adam gibi çalışmam lazım. Algoritmalar ve BB'ye giriş kurslarını bıraktım.
Proje süresinin bitmesine 1 hafta kaldı. Bu gün denedim ama hala yazmış değilim ::)
Ben de o dersi takip ediyorum, hakkikaten iyi anlatiyorlar. Uni de dersini görmüstüm, aklimda çok az sey kaldi. Ya çogunu unuttum, ya da zamaninda bu kadar anlamamistim. fakat bu anlatim hem görsel, hem de üzerine basabasa gösteriyorlar.
Step by step videolari mekanizmayi pekistirdi.
Admissible :
Alıntı Yapbir arama algoritması tahmin yaparken yaptığı tahminler her zaman gerçek masraftan düşük ya da eşitse buna tutarlı tahmin deniliyor.
Her nokta da h degeri o noktadan sonuca ulasan en kisa yoldan daha az olmali.
A sehirinden B sehirine kus uçusu 600km ise. admissible heuristic için h degeri A sehirinde 600 veya alti olmali.
Bu arada admissible tutarli degil de kabul edilir diye tercume ederdim.
Consistent :
noktalarin h degerine bakmak yerine noktalar arasindaki masrafa bakiyorsun ve iki nokta arasindaki h farkina bakiyorsun. bu h farki masraftan az olmali.
A'dan B'ye gitmek için 150 km otoyol yapip C'de mola verdiysen, mola verdigin yer B noktasina kus uçusu 50 km ise. Bir yerde sorun var demektir. tutarsiz bir durum.
Su projeyi indirdim, sorulari da okudum. python 'uda indirdim. Python pek bilmiyorum, bakalim nasil olacak.
Pacman'i yazan var mı.
Ben yavaş yavaş çözüme yaklaşıyor gibiyim.
(http://www.ehobi.org/resim/resim/pacman.png)
İlk yazdığımda deli gibi bir sağa bir sola gidiyordu. Yavaş yavaş akıllanmaya başladı :)
Ben bu gece kodlara bakmaya basladim.
Pythonda kendimi ifade etmekte biraz zorluk yasiyorum.
Böyle degisken tanimlanan (tanimlanmayan) dil olur mu ?
Neyse gereken belli basli fonksyonlari buldum.
problem.getStartState()
problem.isGoalState((4,4))
problem.getSuccessors((2,2))
tarzi ifadeler ne döndürüyor onu buldum.
simdi set,list, stack ve döngü kullanarak DFS yazma kaldi (daha birinci soru).
Devami yarin veya hafta sonuna kaldi.
Bu arama algoritmaları ile ilgili çok ilginç bir video buldum.
First Search Program - CS373 Unit 4 - Udacity (http://www.youtube.com/watch?v=TPIFP4E7DVo#ws)
Udacity'nin bu kursunda da Google mühendisleri robotik bir araba yaparken arka planda yapay zekanın programlamasını anlatmışlar. Kursun (http://www.udacity.com/view#Course/cs373/CourseRev/apr2012/Unit/514039/Nugget/513054) altyapısı da harika :)
Evet udacity 'nin bu kursu çok güzel. ilgimi çeken konularin dersini izliyorum sadece. Hepsi birbirinden ilginç konular, bütün konulari ile projeyi anlatiyor.
PID ve Kalman bile var, dah önce burada sözü geçmisti.
Anladigim kadari ile Udacity'de anlatilan probabilistik Particle aramasi AI de görecegiz ve pacman öyle yolunu bulacakmis.
Bu aksam 3 saat ugrastiktan sonra DFS'i hallettim. DBS, CSS ve A* iplik sökügü gibi gelir simdi.
Sonrasi çok ugrastirirmi ? bu haftasonuna projeye ilave videolari seyredip ödevi yapmam gerek.
Söyle bir class tanimladim, listeye koyuyorum, sonra fonksyonla listeden path'i en uzun ilk elemani buluyorum :
class TSearchNode:
def __init__(self,xypathhisto):
self.xy = xypathhisto[0]
self.pathhisto = xypathhisto[1]
self.gcost = xypathhisto[2]
Edx Forumundan pseudo code'u buldum tercume ettim.
mesaj birleştirme:: 11 Ekim 2012, 03:25:00
DBS'i hallettim çok ufak bir degisikle.
UCS 'de takildim simdi.
Bilgisayarda gayet güzel çalisiyor ve mantikli sonuçlar veriyor.
Stayeast : cost 1 'e esit (çok kucuk sayilar) 186 nodes expanded 646 score.
StayWest :68719482936 96 nodes score 414.
gcost = expandednodecost + successorcost ile hesapliyorum.
Sonra fringe 'de olan minimum gcost'a sahip elemani seçiyorum.
Sorun nedir ?
Simdi buldum (aradan 2 saat geçtikten sonra).
Minimum degeri aramak için ilk basta 100000000 ile karsilastiriyordum. Halbuki StayWest ajani çok daha yuksek bir deger donduruyor : 68719479864 (eskiden buldugum 68719482936 yerine) o yuzden optimali bulamiyor.
Sonunda derin öncelikli arama algoritmasını bir hafta uğraşarak da olsa yaptım :D
Ama şunu daha dün farkettim. Kağıda geçirirken derin öncelikli arama yerine enine arama BFS'nin sözde kodunu geçirmişim. Ve onun üzerinden giderek uğraşıyordum. ::)
Öncelikli kuyruğu sıralıyorum, ters çeviriyorum olmuyor. Meğerse enine aramanın sözde kodunu kullanıyormuşum :)
http://www.ehobi.org/resim/resim/pacmandfs.mp4 (http://www.ehobi.org/resim/resim/pacmandfs.mp4)
Sanırım çok zevkli ve zor olmasına rağmen bu kursu bırakacak gibiyim. Çünkü algoritma ve veri yapıları konularında eksiklerim var. Ama zırf zevk için bu projeyi bitirebilirim. Daha sonra hem geniş bir zamanda hem de algoritma ve veri yapıları dersini aldıktan sonra bu konuları çalışmak çok zevkli olur.
Aslında enine arama algoritmasını da yaptım. Ama döndürdüğü sonuç doğru değil diyor. Algoritmayı adım adım kontrol etmedim ama .. Gene de o yapbozu doğru olarak çözüyor.
Dersin forumundaki Where can I find the pseudocode for the search algorithms? konusu yardimci oldu.
(https://edxuploads.s3.amazonaws.com/13494662951343697.png)
DFS ve DBS için stack 'tan çikarma (REMOVE-FRONT) buna benzer fonksyonlar olmali :
#Fringe selection function
def DFS_GetFirstFromStack(fringe):
max = -1
Idx = -1
#maximum uzunluktaki dügüm
for i in range(len(fringe)):
if len(fringe[i].pathhisto) > max :
max = len(fringe[i].pathhisto)
Idx = i
return Idx
#Fringe selection function
def DBS_GetFirstFromStack(fringe):
min = 1000000000
Idx = -1
#minimum uzunluktaki dügüm
for i in range(len(fringe)):
if len(fringe[i].pathhisto) < min :
min = len(fringe[i].pathhisto)
Idx = i
return Idx
EXPAND-ALL:
for Successors in Expandlist:
histopath = list(CurrentNode.pathhisto)
histopath.append(Successors[1])
#Add successor in fringe
SuccNode = TSearchNode([Successors[0],histopath,Successors[2] + CurrentNode.gcost ])
#print "Adding Fringe:", SuccNode.xy, SuccNode.pathhisto, SuccNode.gcost
# xy, Dirhisto, cost
Fringe.push(SuccNode)
Alıntı yapılan: anladinmi - 12 Ekim 2012, 19:10:28
Dersin forumundaki Where can I find the pseudocode for the search algorithms? konusu yardimci oldu.
Ben de yanlışlıkla BFS'in sözde kodunu yazmışım. BFS ve DFS yakın ya :)
Alıntı yapılan: anladinmi - 12 Ekim 2012, 19:10:28
DFS ve DBS için stack 'tan çikarma (REMOVE-FRONT) buna benzer fonksyonlar olmali
Bu kodu yazanlar acemi programcılar olmalı :)
Eğer başından eleman çıkarsa o zaman yığıt olmaz herhalde. Çünkü yığıtta son giren eleman ilk çıkar.
Enine arama algoritmasını da yaptım. Derinine aramada yığıt kullanmıştım. Enine arama algoritmasında yaptığım tek değişiklik yığıt yerine kuyruk kullanmak oldu. Ancak ilk planda orta büyüklükteki labirentte 269'dan fazla düğümü işaretliyordu ve sistem kabul etmiyordu. Sonra 3. dersin 12.bölümünde bunu anlatmışlar. Sonradan alt düğümleri genişletmezden önce de kontrol etmem gerektiğini yani gezilen düğümler listesine eklemem gerektiğini farkettim.
Benim için işin en püf noktası senin yaptığın gibi düğüm isimli bir sınıf oluşturmak oldu. Her düğüm bir üstteki düğümü gösteriyor ve bu şekilde aslında DFS'in yaptığı sadece bir düğüm döndürmek. Bu düğümü kullanarak geri giderek çözümü döndürüyoruz. Aslında yukarıdaki videoda Google mühendisinin, aslında sanırım Stanford Ünv. hocanın yaptığı da buydu.
DFS algoritmasi LIFO ile gerçeklestirilebilir. Yani Fringe'in türü Stack olur, yigit. Ayni zamanda en uzun yola bacaga bakilarak yapilabilir. (LIFO ile yaparsan tersten olur aslinda, soldan baslamak yerine sagdan baslar)
DBS için ise FIFO kullanilabilir. Yani Fringe'in türü Queue olur, sira (boru). Ayni zamanda en kisa yola bacaga bakilarak yapilabilir.
UCS için ise en ucuza bakilir, yani giris zamanina göre degil de o node'a gelmek için kümülatif maliyet.
Astar için, kümülatif maliyet + heuristik degere bakilir.
Gördügün gibi bu 4 arama türü için degisen sadece Fringe'den bir sonraki elemani seçme fonksyonu (REMOVE-FRONT).
Pseudo koddan genel arama algoritmasini yazarsan, 4 algoritma için degisen sadece REMOVE-FRONT ve INSERTALL-EXPANDNODE fonksyonlari.
Genel aramayi abstract class olarak düsün, arama olmasi için 2 fonksyonu implement etmelisin.
Alıntı YapHer düğüm bir üstteki düğümü gösteriyor ve bu şekilde aslında DFS'in yaptığı sadece bir düğüm döndürmek. Bu düğümü kullanarak geri giderek çözümü döndürüyoruz.
Dügümün bi üstekini tutmanin geregi yok. getSuccessors fonksyonu sana üsteki dahil daha gezmedigin yerlerin koordinat, yön ve maliyetini veriyor, liste olarak. Bu fonksyon probleme spesifik. Q6 da problem degisince bunu sen implement etmen gerekecek.
Su satiri verince gerisini pseudo koddan bulursun :
Expandlist = problem.getSuccessors(Currentnode.xy)
Alıntı yapılan: anladinmi - 12 Ekim 2012, 22:58:09
Dügümün bi üstekini tutmanin geregi yok. getSuccessors fonksyonu sana üsteki dahil daha gezmedigin yerlerin koordinat, yön ve maliyetini veriyor, liste olarak.
Burda demek istediğim tam tersiydi. Yani üstteki derken köke yakın düğüm demek istiyorum. Böylece en derinde hedef düğümümüz olsun. Buradan tersten giderek örneğin [G f r e d S] şeklinde çözümü bir liste olarak buluyorum.
Şimdi katmana göre arama algoritmasını UFS yapmaya çalışıyordum. Burada düğüm sınıfına toplam masrafı gösteren bir üye işlev ekledim. Örneğin S->e arası masraf 9 e->r arası masraf 2 ise bu işlev toplam_masraf(r) diye çağırdığımda 11 veriyor. Veri yapısı olarak da işlev öncelikli kuyruk kullandım.
Ama bir düğümün bu kuyrukta olup olmadığını nasıl bulacağız o kısmı hala yapamadım. Sanırım Python'da bir sınıfa ait nesneler üzerinde gezebilmek için
def __iter__(self):
return self.path
aşağıdaki gibi gezilebilir olarak tanımlamak gerekiyormuş. Ama şimdilik beceremedim ::)
Bence bu iterayon olayini zaten onlar kodlarini sagliyor tarafindan verilmis. Iter vs.. kullanmaya gerek yok.
Yapilmasi gereken sadece GetSuccessors fonksyonunu çagrip dönen liste verilerini anlamak.
Dedigin gibi yazmamiz gereken arama fonksyonu sonunda yön çikis listesini döndürecek.
O listeyi her node'a sakliyoruz : tanimlamamda self.pathhisto degiskeni bu islevi görüyor, yön listesini sakliyor. Gittigimiz her yönü bi listeye append ediyoruz.
An itibari ile AStar algoritmasini bitirdim. PriorityQueueWithFunction kullandim.
Bastan kullanmayi dusunuyordum, isleri kolaylastiriyor.
Kullanmak için :
def ASTAR_PriorityFn(Node):
# Priority for A Star
return Node.fcost
Algoritmanin basinda Stack yerine :
from game import PriorityQueueWithFunction
Fringe = PriorityQueueWithFunction(ASTAR_PriorityFn)
tanimlamasi.
Sonra algoritmada heuristic ilave (TSearchNode yapisi degisecek):
SuccNode = TSearchNode([Successors[0],histopath,cost, heuristic(Successors[0],problem)])
Simdi cancanli soruya geldim Q5. TSP problemine benziyor.
Hep gecenin bi vakti çalisiyorum bu derse (geceyarisi - sabahin 3u) bazen 2 gün bazen 5 gün ara ile.
Bu hafta sonu, hem yeni ders izleyip hem projeye ilave, yeni dersin ödevini yapmaliyim. Zor olacak.
Tamamdir simdi de 5. Soru bitti, SearchAgent'teki Corner problemini degistirdim. Artik sorun 1 yerden 1 yere en kisayoldan gitmek degil, 4 farkli noktaya ugramak ve bunu en kisa döngüyü izleyerek basarmak.
Simdi problemin degiskenleri nedir onu daha iyi anladim. Dügümde problemin degiskenini saklamamiz gerek, sadece koordinatlari degil.
Yeni dügüm sinifi :
#Structure Definition of node
class TSearchNode:
def __init__(self,PbStateAndNodeValue):
self.PbState = PbStateAndNodeValue[0]
self.pathhisto = PbStateAndNodeValue[1]
self.gcost = PbStateAndNodeValue[2]
self.hcost = PbStateAndNodeValue[3]
self.fcost = self.gcost + self.hcost
Alıntı yapılan: anladinmi - 13 Ekim 2012, 01:51:09
O listeyi her node'a sakliyoruz : tanimlamamda self.pathhisto degiskeni bu islevi görüyor, yön listesini sakliyor. Gittigimiz her yönü bi listeye append ediyoruz.
Demek istediğini anladım. Her düğümde derinlik arttıkça gezilen düğümlerin listesini saklıyorsun. Derinlik arttıkça, düğüm sayısı arttıkça belki bu masraflı olabilir. Benim yaptığım ise tembel gerçekleştirme
lazy evaluation yaparak sadece gerekli olduğu zaman çözümü döndürmek. Tabi şimdilik bizim için önemli olan algoritmanın optimizasyonu değil çalışması..
Alıntı yapılan: anladinmi - 13 Ekim 2012, 01:51:09
An itibari ile AStar algoritmasini bitirdim. PriorityQueueWithFunction kullandim.
Ben de UFS'de veri yapısı olarak işlev öncelik kuyruk PriorityQueueWithFunction kullandım. Düğümün kuyrukta olup olmadığını kontrol eden kısmı yorum haline getirdim. Şans eseri çalıştı :)
Sisteme yükledim. Sistem de kabul etti. Yalnız bir şey dikkatimi çekti.
$ python pacman.py -l openMaze -p SearchAgent -a fn=bfs -z .5Diğer arama algoritmaları bu boşluklu labirenti çözerken UCS takılıyor. Senin yazdığın da takılıyor mu.
Herhalde ufak bir hata yapıyorum ::)
Yok UCS için python pacman.py -l openMaze -p SearchAgent -a fn=bfs -z .5 taklimiyor. 1 kare hariç hepsini gözden geçiriyor.
Alıntı YapD:\edx\search>python pacman.py -l openMaze -p SearchAgent -a fn=bfs -z .
5
[SearchAgent] using function bfs
[SearchAgent] using problem type PositionSearchProblem
Path found with total cost of 54 in 0.1 seconds
Search nodes expanded: 682
Bütün gece uyumadim, sabah 1 saat yattim. Q6 sorusuna takildim. 3/3 yapana kadar devam. en yakina gitme mantigi aslinda consistent degilmis, geç farkettim.
Sorulara ara verdim, CSP videolarinin ilk serisini izledim.
Fakat projeyi düsünmekten hala alikoyamiyorum.
Q7 sorusu kaldi simdi (önce Q8'i yaptim).
Su anda yenmemis yiyecek sayisini kullaniyorum. 2/5 aldim.
En yakin ve en uzak mesafeyi kullanacagim, sonra üçünün maksimumunu alacagim.
Simdi çikmam gerekiyor, aksama tekrar devam ederim. Mini contest'te katilmayi düsünmüyorum, bir fikrim var ama uzun sürer.
UFS demişim ama sorarken yanlış yazmışım ???
$ python pacman.py -l openMaze -p SearchAgent -a fn=ufs -z .5
BFS kullanınca aynen bende de 682 tane düğüm geziliyor.
Gerçekten güzel çalışıyorsun. Aslında ben de eğer kursu bırakmayı düşünmeseydim biraz kasardım. Ama kursu bırakıp tekrar elektroniğe ve EPE okumaya döneceğim. Yarına kadar uğraşacağım sonra gelsin işlemsel yükselteç :D
Bence bu dersi bos verme. EPE magazindeki bilgilerin yerini tutmaz, asagi yukari ayni konular dönüyor belli bir seviyeden sonra.
Dün gece CSP derslerini izleyip HW2 yaptiktan sonra, dedim ki su yarim kalan heuristic'i bitireyim, en uzak yem mesafesini ekleyeyim dedim.
Yaptim bilgisayaripmda gayet füzel çalisti, yükleyim de 17 'den 18 'e geçsin not dedim.
yükledikten sonra error 502 çikti karsima, ve 17 oldu kocama 0. site çökmüs (son saatte herkes yukleme yapmak istemis anlasilan).
Foruma girdim, yalniz degilmisim, birçok kisi sikayette bulundu, full time çalisiyoruz, çok az zaman veriyorsunuz vs.. vs..
1 saat sonra 24 saat daha uzatilacak diye Community TA açiklama yapti. Yani proje için bu geceye kadar vakit var ve HW2 için çarsambaya kadar uzatmislar.
Alıntı YapNow that we're approaching the Project 1 deadline, we're excited to see all the completed projects coming in! Unfortunately, there was a site-wide edX issue that prevented all code submissions for all classes for about an hour, which in turn blocked the CS188.1x autograders. Because this prevented many of you from submitting Project 1 today, we've decided to extend the deadline by 24 hours. Project 1 is now due Monday, October 15th, at 11:59pm (in your local time). As a result, we are also extending the deadline for Homework 2; Homework 2 is now due Wednesday, October 17th, at 11:59pm.
We realize that there are many reasons that submissions can get delayed, whether it's site problems or just life being unpredictable. As a result, we'll be looking into whether there are good ways of making deadlines more flexible for future projects while still maintaining the pacing of the course.
Dan, Pieter, and the CS188x Course Team
Bence dersi birakma proje ödev yapmasan bile dersi izle, çok sey kazandirir.
ufs fonksyonunu bulamadim. dfs, ucs ve Astar kaldi
D:\edx\search>python pacman.py -l openMaze -p SearchAgent -a fn=ucs -z .
5
[SearchAgent] using function ucs
[SearchAgent] using problem type PositionSearchProblem
Path found with total cost of 54 in 0.1 seconds
Search nodes expanded: 683
BFS :
Path found with total cost of 390 in 0.8 seconds
Search nodes expanded: 683
D:\edx\search>python pacman.py -l openMaze -p SearchAgent -a fn=astar -z
.5
[SearchAgent] using function astar and heuristic nullHeuristic
[SearchAgent] using problem type PositionSearchProblem
Path found with total cost of 54 in 0.1 seconds
Search nodes expanded: 682
Alıntı yapılan: anladinmi - 15 Ekim 2012, 22:32:56
Bence bu dersi bos verme. EPE magazindeki bilgilerin yerini tutmaz, asagi yukari ayni konular dönüyor belli bir seviyeden sonra.
Ben artık bıraktım bile elektroniğe geri dönüş yaptım :D
Bu kurs çok güzel bir kurs ancak ileride algoritmalar dersini aldıktan sonra almayı düşünüyorum.
Bir de EPE'de aslında elektroniği derinlemesine anlatan bölümler de var. Örneğin Teach In serisi.. Bir tane osiloskop olsa bunları denemesi çok zevkli olabilir. Hatta işlemsel yükselteçleri oldukça detaylı anlatmışlar.
Şimdilik 6.002 derslerini tekrar ediyorum. Profesör Agarwal'ın sesini tekrar duymak güzel. Hasta oluyorum bu adama harika :)
İşlemsel yükselteç konusunu tekrar etmeye başladım bile.
Bunun dışında yapmayı planladığım bir kaç proje var. Bunlar içinde kendime yavaş yavaş bir elektronik çalışma ortamı hazırlamaya karar verdim. Osiloskop, işlev üreteci, lehim istasyonu vs. de almam gerekecek. Hatta osiloskobu yapmazdan önce kendim ses kartından yapmaya mı çalışsam diye düşünüyorum.
Gerçekten bu dersler de çok zevkli ama bir ders alıyorsun sonra başka bir ders çıkıyor. Ama elektronikle ilgili şu dersleri verirlerse gözü kapalı alırım:
Dijital elektronik ve programlanabilir mantık blokları (FPGA) - 6.004
Sinyaller, sistemler ve kontroller - 6.003
Analog elektronik - 6.012 veya 6.101
Mikrodenetleyiciler - 6.115
Alıntı yapılan: anladinmi - 15 Ekim 2012, 22:32:56
D:\edx\search>python pacman.py -l openMaze -p SearchAgent -a fn=ucs -z .
5
[SearchAgent] using function ucs
[SearchAgent] using problem type PositionSearchProblem
Path found with total cost of 54 in 0.1 seconds
Search nodes expanded: 683
Zaten ben de benim yazdığım UCS'de bir eksik olduğunu farketmiştim. Ama sistem kabul etti ;)
Çünkü UCS için yol masrafı eşit olsa bile UCS, BFS (enine arama) gibi çalışması gerekiyor.
Son ders haftasi basladi.
Takip eden var mi ?
Bu hafta epey enteresan konu, makine nasil ögrenir. Monopod (hexapod'un tek bacaklisi olarak dusunun) bir robotun yürümesini ögrenmesi için gereken algoritmayi anlatiyor: Q-Learning.
Proje kisminda ise bunu ögreten kod yaziliyor.
2 Servo ve 1 pic (tercihe göre AVR, veya ARM'da olur) ile gerçek bir model yapilabilir.
Bu algoritma sayesinde, sistemin parametreleri degisse bile , örnegin : (kol uzunluluklari, servo katsayisi, yerin kayganligi ...), makine ögrenecek ve yeni çevresine adapte olup, optimal sekilde yürümeyi ögrenecek?
Dersin videolarinin asagidaki linklerden indirebilirsiniz. Son kullanma tarihlerine itibar etmeyin, indirildikçe uzuyor sanki. Yine de en kisa sürede indirin
:
Lecture 1: PirateBay (http://thepiratebay.se/torrent/7671995/BerkeleyX__CS188.1x_Artificial_Intelligence) or MediaFire (http://www.mediafire.com/?hmhwe9cn9id9g)
Lecture 2 (thanks to Sianes (https://www.edx.org/courses/BerkeleyX/CS188.1x/2012_Fall/discussion/forum/users/447318)): Download (http://www.adrive.com/public/3365p8/CS188_1x_Courseware.flv.zip)
Lecture 2 continued: Download (http://www.adrive.com/public/mPsz2f/CS188_1x_Courseware_Lecture2_continued.flv.zip) (Sorry, the last videos wasn't in the first zip.)
(Some video quizs don't want to download in the batch, I'll try to figure out why)
Lecture 3: Download (http://www.adrive.com/public/A9J8Sk/CS188_1x_Courseware-Lecture3.zip) (All theory videos and video quizs. Ignore the names, just follow the numbers)(Expires on 2012-10-19)
Lecture 3 continued: Download (http://www.adrive.com/public/7SeDXb/Lecture_3_continued.zip) (Expires on 2012-10-19)
Lecture 4 and continued: Download (http://www.adrive.com/public/3b33Mf/Lecture_4_and_continued.zip) (Expires on 2012-10-26)
Lecture 5 and continued: Download (http://www.adrive.com/public/v84pSu/Lecture_5%20and%20continued.zip) (Expires on 2012-10-27)
Lecture 6: Download (http://www.adrive.com/public/RBDSAE/Lecture_6.zip) (Expires on 2012-10-30)
Lecture 7: Download (http://www.adrive.com/public/kG5F4v/Lecture_7.zip) (Expires on 2012-10-30)
Lecture 8: Download (http://www.adrive.com/public/bZu6Rp/Lecture_8.zip) (Expires on 2012-11-08)
Lecture 9: Download (http://www.adrive.com/public/pgpywJ/Lecture_9.zip) (Expires on 2012-11-08)
Lecture 10: Download (http://www.adrive.com/public/WxUtuX/Lecture_10.zip) (Expires on 2012-11-15)
Lecture 11: Download (http://www.adrive.com/public/jVRpAU/Lecture_11.zip) (Expires on 2012-11-15)
The Whole Course edx-downloader/edx-dl (https://github.com/emadshaaban92/edx-downloader)
(You can download a specific week or the whole course in your favorite format)
(It should also work for any other course on the edx platform)
Ben takip edemiyorum ne yazık ki :o
Çünkü hem daha pratik olarak uygulamam gereken çok şey var. Hem de teorik olarak bazı temel bilgileri tekrar etmem gerekiyor.
Daha ilk kez baskı devre kazımayı deniyorum mesela ::)
Sonra lehim tabancası yok, osiloskop yok. Yakın zamanda bunlardan oluşan bir elektronik çalışma masası oluşturmayı düşünüyorum.
Çok ilginçmiş. İndirme bağlantıları için teşekkürler! :)
3-Servo Walking Robot - The Latest in Hobby Robotics (http://www.youtube.com/watch?v=DWSbFfW3lC4#ws)
Bu öğrenme algoritmalarını böyle bir robotta kullanmak çok ilginç olurdu :D