Emacs Artificial General Intelligence AI: Artificial Intelligence lab Algorithmic Game Theory: Prediction Markets (po polsku) Systemy Inteligentnych Agentów
|
SI.SI HistoryHide minor edits - Show changes to output June 16, 2009, at 01:45 PM
by - DBp lookup
Changed line 200 from:
## Przeszukiwanie internetowych baz RDFowych: [[http://watson.kmi.open.ac.uk/Overview.html | watson]], [[http://swoogle.umbc.edu/ | Swoogle]], [[http://ec2.monrai.com:8890/facets/ | razorbase]] to:
## Przeszukiwanie internetowych baz RDFowych: [[http://watson.kmi.open.ac.uk/Overview.html | watson]], [[http://swoogle.umbc.edu/ | Swoogle]], [[http://ec2.monrai.com:8890/facets/ | razorbase]], [[http://lookup.dbpedia.org/ | DBpedia URI Lookup]] June 10, 2009, at 04:22 AM
by - transl
Changed lines 107-111 from:
## '''General Game Playing'''. ** [[http://en.wikipedia.org/wiki/Alpha-beta_pruning#Heuristic_improvements | Alfa-beta: to:
## '''General Game Playing'''. (:if userlang pl:)To zadanie nie jest przypisane konkretnemu zestawowi zadań, bo obejmuje szerszy zakres materiału z wykładu. Można je oddać w terminie dowolnego zestawu zadań.(:if userlang en:)This exercise is not assigned to a particular deadline. You can submit it as from the later set.(:if:) ### (:if userlang pl:)Wersja podstawowa wariant(:if userlang en:)Basic version, option(:if:) ''(a)'': (:if userlang pl:)Uruchom system GGP: serwer gier i klientów (wykorzystaj dostępnego gotowego gracza).(:if userlang en:)Run the GGP system: the game server and clients, or connect a player to a running server (compile an existing player).(:if:) ### (:if userlang pl:)Wersja podstawowa wariant(:if userlang en:)Basic version, option(:if:) ''(b)'': (:if userlang pl:)Sformalizuj być może uproszczoną wersję jednej ze swoich ulubionych gier komputerowych (!) w(:if userlang en:)Formalize one of your favorite computer games, perhaps in a simplified version, in(:if:) ''Game Description Language''. # (:if userlang pl:)Pracownia z gier 2: udoskonalenia i heurystyki(:if userlang en:)Lab on games 2: refinements and heuristics(:if:) ** [[http://en.wikipedia.org/wiki/Alpha-beta_pruning#Heuristic_improvements | (:if userlang pl:)Alfa-beta: udoskonalenia(:if userlang en:)Alpha-beta pruning -- Heuristic improvements(:if:)]] Changed line 113 from:
** [[http://en.wikipedia.org/wiki/Transposition_table | Transposition table]] to:
** [[http://en.wikipedia.org/wiki/Transposition_table | Transposition table]] (:if userlang pl:)albo tzw.(:if userlang en:)or the so-called(:if:) [[http://www.cs.ualberta.ca/~sutton/book/ebook/node68.html | afterstates]] Changed line 115 from:
** [[http://en.wikipedia.org/wiki/Expectiminimax | to:
** [[http://en.wikipedia.org/wiki/Expectiminimax | (:if userlang pl:)Gry losowe(:if userlang en:)Random games(:if:) -- expecti(mini)max]] Changed lines 120-123 from:
# ### Rozszerzenie 1: automatycznie twórz i wykorzystuj ''reguły asocjacyjne''. Inaczej niż w "Data Mining", używaj jedynie niezawodnych reguł asocjacyjnych to:
# (:if userlang pl:)Ostatnia grupa projektów: planowanie w przestrzeni planów, systemy regułowe, systemy eksperckie, agent, uczenie ze wzmocnieniem, zbiory danych ustrukturowanych: "relational learning".(:if userlang en:)The last set of projects: plan-space planning, rule engines / production systems, expert systems, agents, reinforcement learning, structured data sets: "relational learning".(:if:) ## (:if userlang pl:)'''Uczący się system ekspercki'''. Być może znasz [[http://pl.wikipedia.org/wiki/20_pyta%C5%84 | grę w 20 pytań]], być może implementowałeś nawet kiedyś w BASICu program grający w nią, zgadujący słowo pomyślane przez gracza, i rozbudowujący drzewo decyzji poprzez zadawanie graczowi, po jego wygranej, pytania: jak zapytałbyś, żeby odróżnić twój przedmiot X od mojego zgadnięcia Y? Napisz system ekspercki będący udoskonaleniem tej gry. Taki system może mieć wiele zastosowań, np. w diagnostyce.(:if userlang en:)'''Learning expert system'''. Perhaps you know the [[http://en.wikipedia.org/wiki/Twenty_questions | Twenty questions]] quiz. Perhaps you have even implemented it in the old times, a program guessing a word and building a decision tree, grown by asking the player "How would you ask to distinguish my answer from the thing you thought about?" Write an expert system being an improved version of such game. The system can have many uses, like in diagnostics.(:if:) ### (:if userlang pl:)Wersja podstawowa: zaprogramuj grę w 20 pytań, uczącą się jak wyżej. Wykorzystaj odpowiednie formularze z komentarzami tak, aby małym kosztem uzyskać od użytkownika poprawne językowo słowa-przedmioty do zgadywania oraz pytania o cechy rozważanego przedmiotu, z odpowiedziami "tak/nie".(:if userlang en:)Basic version: write a Twenty questions game-inspired program that learns as above. Use forms with comments so as to acquire from the user well formed words-things to guess and "yes/no" questions about features of the considered thing.(:if:) (:if userlang pl:)Zamiast budować drzewo decyzji, dla każdego znanego przedmiotu i każdego posiadanego pytania pamiętaj odpowiedź: tak / nie / nieznana (gdy pytanie nie było jeszcze dla tego przedmiotu zadane). Zgadując przedmiot, wystartuj od zbioru wszystkich znanych przedmiotów. Wybieraj pytania tak, by szybko zawęzić aktualnie rozpatrywany zbiór przedmiotów (np. po zawężeniu do aktualnego zbioru, pytanie ma tyle samo odpowiedzi "tak" co odpowiedzi "nie").(:if userlang en:)Instead of building the decision tree, for each known thing and each known question remember the answer: yes / no / unknown (when the question was not yet asked for that thing). When guessing the object, start from the set of all known objects. Select questions to quickly narrow the current set of objects considered (e.g. when restricted to the considered set, the question has as many "yes" as "no" answers).(:if:) (:if userlang pl:)Odrzucaj z rozpatrywanego zbioru przedmioty, dla których odpowiedź jest inna niż udzielona przez gracza (zachowuj przedmioty z odpowiedzią "nieznana"). Zapamiętuj pytania systemu i odpowiedzi użytkownika, by na końcu gdy wiadomo już, o jaki przedmiot chodziło, uaktualnić odpowiedzi pytań z "nieznana" na odpowiednio "tak" lub "nie", a również wykryć konflikty jeśli odpowiedź się nie zgadza (to oznacza, że gracz wygrał, ale być może oszukiwał) i poinformować o tym.(:if userlang en:)Discard the objects that disagree with the answer, but keep the objects with answer "unknown". Record the questions of the system and the answers of the user, in order to update the answers from "unknown", and also detect conflicts in knowledge (which means, that the player won, but perhaps by cheating).(:if:) ### (:if userlang pl:)Rozszerzenie 1: automatycznie twórz i wykorzystuj ''reguły asocjacyjne''. Inaczej niż w "Data Mining", używaj jedynie niezawodnych reguł asocjacyjnych: wyrzucaj reguły, dla których chociażby jeden znany przedmiot jest kontrprzykładem. Reguła asocjacyjna mówi, że jeśli odpowiedzi na pewien zestaw (jednego, dwóch, trzech, czterech) pytań są takie-a-takie, to odpowiedź na pewne inne pytanie będzie taka-a-taka. Do tworzenia reguł zaadoptuj jeden ze znanych algorytmów(:if userlang en:)Extension 1: create and use ''association rules''. Initially use only infallible rules: discard rules with at least one counterexample. An association rule says that when answers a set of (one, two, three, four, ...) questions are as given, then an answer to yet another question will be as given. You can use one of the known algorithms for(:if:) ([[http://en.wikipedia.org/wiki/Association_rule_learning | Association rule learning]]). (:if userlang pl:)W czasie zadawania pytań, gdy tylko pewna reguła "odpala" (odpowiedzi na odpowiednie pytania pokrywają się z jej przesłankami), sprawdź pytanie z jej wniosku: jeśli było już zadane, to w przypadku gdy reguła jest niepoprawna wykasuj ją, a jeśli nie było jeszcze zadane, to odłóż je na bok (tak jakby było już zadane). Powróć do pytań "rozstrzygniętych" przez reguły asocjacyjne dopiero, gdy pozostałe pytania nie rozstrzygną problemu -- pamiętaj, żeby wykasować reguły, które okażą się błędne.(:if userlang en:)During the inquiry, as soon as a rule "fires" (its premises agree with the questions asked so far), test the question from its conclusion: if it was answered already differently, remove the association rule, if it was not answered, [...] (:if:) Added lines 181-182:
### [[http://jena.sourceforge.net/ARQ/Tutorial/ | SPARQL Tutorial]] przy [[http://jena.sourceforge.net/ | Java Semantic Web framework ''Jena'']] ### Innym enginem Javy do pracy z RDFami jest [[http://www.openrdf.org/ | Sesame]] Deleted lines 186-187:
### Innym enginem Javy do pracy z RDFami jest [[http://www.openrdf.org/ | Sesame]] Changed line 189 from:
#### [[http://linkeddata.org/ |''LinkedData''] pozwala dobrać się do pojęcia poprzez http, np. [[http://dbpedia.org/resource/Busan]], [[http://dbpedia.org/resource/The_Lord_of_the_Rings]] (zwraca jako RDFy "/resource/" lub jako html dla przeglądarki "/page/") to:
#### [[http://linkeddata.org/ |''LinkedData'']] pozwala dobrać się do pojęcia poprzez http, np. [[http://dbpedia.org/resource/Busan]], [[http://dbpedia.org/resource/The_Lord_of_the_Rings]] (zwraca jako RDFy "/resource/" lub jako html dla przeglądarki "/page/") Changed line 179 from:
## [[http://www.w3.org/TR/rdf-primer/ | RDF]] ([[Primer]], [[http://www.w3.org/TR/rdf-concepts/ | Concepts]], [[http://www.w3.org/TR/rdf-syntax-grammar/ | Syntax]], [[http://www.w3.org/TR/rdf-mt/ | Semantics]], [[http://www.w3.org/TR/rdf-schema/ | Vocabulary]], and [[http://www.w3.org/TR/rdf-testcases/ | Test Cases]]) i [[http://www.w3.org/TR/rdf-sparql-query/ | SPARQL]] to:
## [[http://www.w3.org/TR/rdf-primer/ | RDF]] ([[http://www.w3.org/TR/rdf-primer/ | Primer]], [[http://www.w3.org/TR/rdf-concepts/ | Concepts]], [[http://www.w3.org/TR/rdf-syntax-grammar/ | Syntax]], [[http://www.w3.org/TR/rdf-mt/ | Semantics]], [[http://www.w3.org/TR/rdf-schema/ | Vocabulary]], and [[http://www.w3.org/TR/rdf-testcases/ | Test Cases]]) i [[http://www.w3.org/TR/rdf-sparql-query/ | SPARQL]] Changed lines 5-6 from:
to:
** [[#DBpedia | Systemy bogate w wiedzę 2: RDF i DBpedia]] Changed line 178 from:
# Pracownia systemy bogate w wiedzę 2: ''RDF'', ''SPARQL'', ''OWL'', '''DBpedia''', '''Freebase''' to:
# [[#DBpedia]] Pracownia systemy bogate w wiedzę 2: ''RDF'', ''SPARQL'', ''OWL'', '''DBpedia''', '''Freebase''' Changed lines 201-203 from:
## [[http://www.freebase.com/ | Freebase]] to:
## [[http://www.freebase.com/ | Freebase]] (from [[http://www.metaweb.com/ | Metaweb]]) *** ''Freebase'' jest rozszerzana przez zarejestrowanych użytkowników jak Wikipedia, ale użytkownicy nie mogą modyfikować istniejących fragmentów (żeby nie zepsuć aplikacji -- kompatybilność), co pogarsza jakość i zwiększa redundancję. *** Kiepska (nieprzemyślana) obsługa negacji i braku wiedzy. Added lines 206-215:
**** Patrz od strony 31. **** Metaweb używa reprezentacji grafowej podobnej do RDF (ale swojej własnej przestrzeni nazw), z tym że po prawej stronie strzałki jest węzeł '''i/lub''' wartość, zamiast węzła lub wartości tak jak w RDF (czyli mamy czwórki a nie trójki). **** MQL pozwala nie tylko czytać, ale też wstawiać do bazy (jak SQL). **** MQL używa JSON. **** Pola bez wartości w zapytaniu to odpowiedniki zmiennych wzorca. **** Mocno bazuje na metaforze obiektu (hmm... JavaScrit?), pole @@"id":null@@ przechwytuje identyfikator obiektu ("subject" czyli pierwszy element trójki/czwórki). ***** Obiekt może mieć wiele identyfikatorów. **** Są "dzikie karty" dla atrybutów, oraz operator inwersji biorący wartość i zwracający atrybut obiektu o tej wartości. **** Inne więzy niż równość na atrybucie: @@"date_of_birth<" : "2000"@@ (od strony 78) **** Wiele konstrukcji, ale nie mogę znaleźć zmiennych! June 09, 2009, at 03:00 AM
by - Freebase
Added line 176:
## [[http://texai.org/papers/bootstrap-dialog-a-conversational-english-parsing-and-generation-system.pdf | The Texai English Bootstrap Dialog System]] Changed lines 178-183 from:
## [[http://www.w3.org/TR/ to:
## [[http://www.w3.org/TR/rdf-primer/ | RDF]] ([[Primer]], [[http://www.w3.org/TR/rdf-concepts/ | Concepts]], [[http://www.w3.org/TR/rdf-syntax-grammar/ | Syntax]], [[http://www.w3.org/TR/rdf-mt/ | Semantics]], [[http://www.w3.org/TR/rdf-schema/ | Vocabulary]], and [[http://www.w3.org/TR/rdf-testcases/ | Test Cases]]) i [[http://www.w3.org/TR/rdf-sparql-query/ | SPARQL]] *** RDF dostarcza struktury danych i narzędzi do przechowywania wiedzy, ale również zrębu ontologii do jej ustrukturowania ## [[http://www.w3.org/TR/owl2-new-features/ | OWL2]], [[http://www.w3.org/TR/owl-features/ | OWL Features]], [[http://www.w3.org/TR/owl-guide/ | OWL Guide]], [[http://www.w3.org/TR/owl-ref/ | OWL Reference]] *** Dopiero OWL [[http://www.w3.org/TR/owl-features/#s2 | dostarcza trochę semantyki]] dla wiedzy: zrąb ontologii zależności pomiędzy relacjami oraz narzędzia do wnioskowania. *** OWL wprowadza ograniczenia na wyrażalność, by umożliwić szybkie wnioskowania (logiki deskryptywne). OWL 2 jest bardziej ekspresywny niż OWL-DL. OWL Full to wariant bardziej zgodny z RDF Schema, "nieznacznie" wykraczając poza logiki deskryptywne. *** [[http://en.wikipedia.org/wiki/Description_logic#Description_Logic_Reasoners | Solvery dla DL]], [[http://bossam.wordpress.com/ | Bossam: rule engine dla OWL]] Added line 189:
***** ([[http://esw.w3.org/topic/TaskForces/CommunityProjects/LinkingOpenData/DataSets | SWEO Community Project: Linking Open Data / Data sets]]) Changed lines 196-198 from:
### [[http://wiki.dbpedia.org/Publications?v=s9q | Publikacje]] to:
### [[http://wiki.dbpedia.org/Publications?v=s9q | Publikacje]], wczesne blogi: **** [[http://www.mkbergman.com/?p=354 | Did You Blink? The Structured Web Just Arrived]] **** [[http://dezinformacja.org/tarpit/archiwum/dbpedia_niedowiarkom | DBpedia - niedowiarkom gwóźdź do trumny]] ## Przeszukiwanie internetowych baz RDFowych: [[http://watson.kmi.open.ac.uk/Overview.html | watson]], [[http://swoogle.umbc.edu/ | Swoogle]], [[http://ec2.monrai.com:8890/facets/ | razorbase]] ## [[http://www.freebase.com/ | Freebase]] ### [[http://www.freebase.com/view/en/using_the_query_editor | Using the Query Editor]] **** [[http://download.freebase.com/MQLReferenceGuide.pdf | Metaweb Query Language Reference Guide]] ### [[http://www.freebase.com/app/queryeditor | Query Editor]] ### [[http://rdf.freebase.com/ | Freebase RDF]] (Linked Data) ### [[http://sets.narphorium.user.dev.freebaseapps.com/ | Przykładowa aplikacja: Sets]] ([[http://acre.freebase.com/#app=/user/narphorium/sets&file=index | jej kod źródłowy]]) ### [[http://download.freebase.com/datadumps/ | Download: Freebase Data Dumps]] June 09, 2009, at 12:51 AM
by - DBpedia
Changed line 168 from:
# Pracownia systemy bogate w wiedzę 1 to:
# Pracownia systemy bogate w wiedzę 1: wnioskowanie, '''Cyc''', '''OpenCyc''', '''Texai''' Deleted line 171:
Added lines 176-191:
# Pracownia systemy bogate w wiedzę 2: ''RDF'', ''SPARQL'', ''OWL'', '''DBpedia''', '''Freebase''' ## [[http://www.w3.org/TR/REC-rdf-syntax/ | RDF]] i [[http://www.w3.org/TR/rdf-sparql-query/ | SPARQL]] ### [[http://jena.sourceforge.net/ARQ/Tutorial/ | SPARQL Tutorial]] przy [[http://jena.sourceforge.net/ | Java Semantic Web framework ''Jena'']] ### Innym enginem Javy do pracy z RDFami jest [[http://www.openrdf.org/ | Sesame]] ## [[http://en.wikipedia.org/wiki/DBpedia | DBpedia]], [[http://wiki.dbpedia.org/About | DBpedia Project website]] to po pierwsze: Wikipedia przerobiona automatycznie na bazę RDFową, ma m.in. wstępy do wszystkich artykułów w kilku językach w tym po polsku, kategorie oraz [[http://en.wikipedia.org/wiki/MOS:INFOBOX | infoboxy]]; po drugie: ma ambicję agregata ontologii dla LinkedData (ontologia samej DBpedia jest płytka, "organizuje infoboxy") ### [[http://wiki.dbpedia.org/OnlineAccess?v=tf8 | Dostęp do DBpedii]] #### [[http://linkeddata.org/ |''LinkedData''] pozwala dobrać się do pojęcia poprzez http, np. [[http://dbpedia.org/resource/Busan]], [[http://dbpedia.org/resource/The_Lord_of_the_Rings]] (zwraca jako RDFy "/resource/" lub jako html dla przeglądarki "/page/") #### [[http://dbpedia.org/sparql | końcówka SPARQL]], np. [[http://tinyurl.com/n9qart | People who were born in Berlin before 1900]] ***** SPARQL jest poszerzony o "text search", przydatne m.in. do abstraktów (wstępów artykułów) #### [[http://wiki.dbpedia.org/Downloads32 | Download]] ### [[http://wiki.dbpedia.org/Interlinking?v=6j5 | Integracja z innymi źródłami]]: zwróć uwagę na "owl:sameAs" oraz "dbpprop:wordnet_type", np. [[http://dbpedia.org/page/Air_France]] **** [[http://wiki.dbpedia.org/OpenCyc?v=uy6 | Integracja z (Open)Cyc]] **** "owl:sameAs"="is owl:sameAs of" (równość jest symetryczna), ale DBpedia i Freebase nie przeprowadzają wnioskowania; proste wnioskowania można zakodować jako kwerendy SPARQL ### [[http://wiki.dbpedia.org/Publications?v=s9q | Publikacje]] **** [[http://www.mkbergman.com/?p=354 | Did You Blink? The Structured Web Just Arrived]] (wczesny blog o DBpedii) Changed line 83 from:
### (:if userlang pl:)Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie (wariant ''a'') lub więzami (wariant ''b''), a następnie algorytmem A*. W jaki sposób przekształciłeś algorytm rozwiązywania problemu w heurystykę?(:if userlang en:)Extension 2: ''first'' solve the puzzle algorithmically (that is, by devising a puzzle-specific solution algorithm) case ''a'', or with constraints (case ''b''), and only then solve it using A*. How have you transformed the algorithm into the heuristic?(:if:) to:
### (:if userlang pl:)Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie (tzn. tak jak na pracowni z Programowania) (wariant ''a'') lub więzami (wariant ''b''), a następnie algorytmem A*. W jaki sposób przekształciłeś algorytm rozwiązywania problemu w heurystykę?(:if userlang en:)Extension 2: ''first'' solve the puzzle algorithmically (that is, by devising a puzzle-specific solution algorithm) case ''a'', or with constraints (case ''b''), and only then solve it using A*. How have you transformed the algorithm into the heuristic?(:if:) Changed lines 4-5 from:
** [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp to:
** [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp | odp]]) Changed line 166 from:
## [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp to:
## [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp | odp]]) Changed lines 4-5 from:
** [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp | odp]]) to:
** [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp.zip | odp]]) Changed line 166 from:
## [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp | odp]]) to:
## [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp.zip | odp]]) June 03, 2009, at 09:46 AM
by - SOAR
Changed lines 4-6 from:
** ** [[http://aigamedev.com/open/article/clearance-based-pathfinding/ | Clearance-based Pathfinding and Hierarchical Annotated A* Search]] (AIGameDev to:
** [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp | odp]]) Added line 166:
## [[Attach:Soar.pdf | Omówienie systemu Soar]] ([[Attach:Soar.odp | odp]]) June 02, 2009, at 04:22 AM
by - OpenCyc lab
Changed lines 173-176 from:
## [[http:// to:
## [[http://videolectures.net/psm08_witbrock_lrk/ | Learning to Reason Knowledge Acquisition in Cyc]] (świetna prezentacja!) *** [[http://videolectures.net/iswc08_witbrock_fsc/ | Free Semantic Content: Using OpenCyc in Semantic Web Applications]] (słabsza, ale więcej o Semantic Web) ## Indukcja, abdukcja. ## Parsowanie i generowanie języka naturalnego. May 26, 2009, at 08:05 AM
by - CcTut
Changed line 171 from:
## [[http://agi-09.org/slides/friday/1_reed_opencyctutorial.ppt | Foundations of Knowledge Representation in Cyc]] (Stephen Reed) to:
## [[http://agi-09.org/slides/friday/1_reed_opencyctutorial.ppt | Foundations of Knowledge Representation in Cyc]] (Stephen Reed) [[Attach:OpenCycTut.pdf]] May 26, 2009, at 07:54 AM
by - Cyc
Deleted line 165:
Added lines 168-173:
# Pracownia systemy bogate w wiedzę 1 ('''Cyc''', '''RDF''', '''OWL''', '''Texai''') ## [[http://www.opencyc.com/doc/tut/index_html?expand_all=1 | Cyc 101 Tutorial]] ### [[http://www.opencyc.com/cyc/doc/tut/DnLoad/opencyc.zip | all PPT slides]] ## [[http://agi-09.org/slides/friday/1_reed_opencyctutorial.ppt | Foundations of Knowledge Representation in Cyc]] (Stephen Reed) # Pracownia systemy bogate w wiedzę 2 ('''Cyc''', '''RDF''', '''OWL''', '''Texai''') ## [[http://en.wikipedia.org/wiki/Web_Ontology_Language]] May 21, 2009, at 02:57 PM
by - hierarch Astar
Changed lines 5-6 from:
to:
** [[http://aigamedev.com/open/article/clearance-based-pathfinding/ | Clearance-based Pathfinding and Hierarchical Annotated A* Search]] (AIGameDev) Added line 66:
** [[http://aigamedev.com/open/article/clearance-based-pathfinding/ | Clearance-based Pathfinding and Hierarchical Annotated A* Search]] (AIGameDev) May 19, 2009, at 01:47 PM
by - Akinator
Changed lines 4-5 from:
** (:if userlang pl:) to:
** (:if userlang pl:)link Akinator do "20 pytań"(:if userlang en:)Akinator link under "20 questions"(:if:) Added line 124:
*** [[http://en.akinator.com/ | Akinator]] zgaduje słynne postacie. May 14, 2009, at 12:54 AM
by - set 3
Changed lines 71-84 from:
# ### Wersja podstawowa: mamy sytuacj **** Alternatywnie, agent dysponuje pe ### Rozszerzenie 3: uwzględnij możliwość występowania na arenie "okazji": komórek osiągalnych, które nie były osiągalne na mapie. Sugerowane algorytmy: "Lifelong Planning A*", "D* Lite". **** Alternatywnie, agent dysponuje pełną informacją o arenie ## '''Konstrukcja heurystyk''': rozwiąż (napisz rozwiązywaczkę) przy pomocy algorytmu A* jedną z [[http ### Wersja podstawowa: [[http ### Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie (wariant ''a'') lub więzami ## '''Sokoban''': rozwi to:
# (:if userlang pl:)Projekt z przeszukiwania heurystycznego i gier: warianty(:if userlang en:)Project on heuristic search and games: the set of exercises(:if:) ## (:if userlang pl:)'''Znajdowanie ścieżki w dynamicznym środowisku''': zaprogramuj agenta przechodzącego z punktu startowego do punktu docelowego w sytuacji, gdy mapa którą dysponuje nie odpowiada dokładnie rzeczywistości, albo rzeczywistość jest zmienna.(:if userlang en:)'''Finding a path in a dynamical environment''': code an agent to go from a source to a goal in case, where the map at its disposal is not exactly the reality, or if the reality changes over time.(:if:) ### (:if userlang pl:)Wersja podstawowa: mamy sytuację podobną do rozpatrywanej na pracowni: szukamy ścieżki na dwuwymiarowej arenie. Jednak mamy do dyspozycji dwie mapy: ''mapę'', która jest w pełni dostępna algorytmowi, oraz ''arenę'', którą będziemy udostępniać algorytmowi tylko dla komórek sąsiadujących z zajmowaną przez agenta (możesz udostępnić bezpośrednio sąsiadujące bądź sąsiadujące w ustalonym promieniu); algorytm oczywiście powinien zapamiętywać potrzebną informację. Załóżmy wstępnie, że mapa nie ma fałszywych przeszkód. Zaprowadź agenta do celu minimalizując, w kolejności istotności: ilość rzeczywiście podjętych przez agenta kroków, złożoność obliczeń wykonywanych podczas ruchu agenta, złożoność obliczeń wstępnych. Sugerowane algorytmy: "Adaptive A*", "Real-Time Adaptive A*", "Prioritorized Learning Real-Time A*".(:if userlang en:)Basic version: we have a case similar to the one dealt with in the lab: searching for a path on a two-dimensional arena. But we are working with two maps: a ''map'' fully available to the algorithm and an ''arena'', which will be made available to the algorithm only for the cells neighboring with the agent (immediately, or within some radius); the algorithm should memorize the required information. Minimise, from more to less important: the amount of agent steps taken, the amount of computation per step, the amount of computation before the first step. Suggested algorithms: "Adaptive A*", "Real-Time Adaptive A*", "Proritorized Learning Real-Time A*".(:if:) **** (:if userlang pl:)Alternatywnie, agent dysponuje pełną informacją o arenie, ale na arenie pojawiają się nowe przeszkody w przypadkowych miejscach i momentach.(:if userlang en:)Looking at it differently, the agent has access to complete information about the arena, but there are new obstacles popping up on the arena.(:if:) ### (:if userlang pl:)Rozszerzenie 1: jeśli w wersji podstawowej udostępniałeś algorytmowi jedynie komórki areny bezpośrednio sąsiadujące z agentem, to teraz rozszerz "pole widzenia" do większego promienia. Wariant ''(1a)'': wprowadź "zawodność obserwacji": specjalne komórki, które z sąsiedztwa wyglądają na osiągalne, ale akcja wkroczenia na nie okazuje się niewykonalna. Wariant ''(1b)'': wprowadź zmienny cel: na arenie cel może okazać się w innym miejscu, niż był na mapie (agent musi zaobserwować komórkę fałszywego celu, żeby się przekonać) -- jednak zwykle niedaleko od celu z mapy.(:if userlang en:)Extension 1: if in the basic version you made available to the agent only the cells directly neighboring the agent, now introduce a broader scope of vision. Case ''(1a)'': introduce failing observations: special cells that look like passable, but when entered turn out to be obstacles. Case ''(1b)'': introduce variable goal: in the arena the goal can turn out to be in a different place than on the map (the agent must observe the false target to realise that), but not far from the map's target.(:if:) #### (:if userlang pl:)Rozszerzenie 2: wolno przemieszczający się cel: po zbliżeniu się agenta do celu, ten zaczyna uciekać.(:if userlang en:)Extension 2: slowly moving target: when the agent approaches the target, the targets starts to move away.(:if:) ### (:if userlang pl:)Rozszerzenie 3: uwzględnij możliwość występowania na arenie "okazji": komórek osiągalnych, które nie były osiągalne na mapie. Sugerowane algorytmy: "Lifelong Planning A*", "D* Lite".(:if userlang en:)Extension 3: consider "opportunities", cells that are obstacles on the map but are passable on the arena. Suggested algorithms: "Lifelong Planning A*", "D*", "D* Lite".(:if:) **** (:if userlang pl:)Alternatywnie, agent dysponuje pełną informacją o arenie, ale arena może się w każdej chwili "nieznacznie" zmienić.(:if userlang en:)In case the agent has full knowledge of the arena, the arena can change with time.(:if:) ## (:if userlang pl:)'''Konstrukcja heurystyk''': rozwiąż (napisz rozwiązywaczkę) przy pomocy algorytmu A* jedną z [[http://www.ii.uni.wroc.pl/~prych/SI/puzzle/ | łamigłówek z budapesztańskich mistrzostw]].(:if userlang en:)'''Heuristics Design''': solve (write a solver) using the A* algorithm one of [[http://www.ii.uni.wroc.pl/~prych/SI/puzzle/ | puzzles from the Budapest Competition]].(:if:) ### (:if userlang pl:)Wersja podstawowa: [[http://www.ii.uni.wroc.pl/~prych/SI/wstepne.html | Paweł Rychlikowski sugeruje ''Hiroimono'' lub ''Divide into Squares'']].(:if userlang en:)Basic version: select one that you like, e.g. ''Hiroimono'' or ''Divide into Squares''(:if:) ### (:if userlang pl:)Rozszerzenie 1: rozwiąż inną spośród łamigłówek. Porównaj opracowane przez ciebie heurystyki: jakie idee mają wspólne, a co jest w nich specyficzne dla zadania?(:if userlang en:)Solve another puzzle. Compare the heuristics you have built,: what ideas they share, and what is puzzle-specific?(:if:) ### (:if userlang pl:)Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie (wariant ''a'') lub więzami (wariant ''b''), a następnie algorytmem A*. W jaki sposób przekształciłeś algorytm rozwiązywania problemu w heurystykę?(:if userlang en:)Extension 2: ''first'' solve the puzzle algorithmically (that is, by devising a puzzle-specific solution algorithm) case ''a'', or with constraints (case ''b''), and only then solve it using A*. How have you transformed the algorithm into the heuristic?(:if:) ## (:if userlang pl:)'''Sokoban''': rozwiąż (napisz rozwiązywaczkę) przy pomocy algorytmu A* grę logiczną Sokoban.(:if userlang en:)'''Sokoban''': solve (write a a solver) using the A* algorithm, the puzzles of Sokoban.(:if:) ### (:if userlang pl:)Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniera (w szczególności, dokładne położenie magazyniera jest nieistotne, istotne są pozycje osiągalne przez magazyniera). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać zbiór akcji-taktyk: konfiguracja wynikowa (dla poziomu strategicznego), faktyczne ruchy magazyniera do wykonania (dla systemu gry).(:if userlang en:)Extension 1 -- '''strategy vs. tactic''': divide the solver into two layers. On the strategic layer, use A* to search in the space of tactically important states, where a single action requires several steps of barrel pushing. On the tactical level, implement a mechanism to find important states reachable from a given state, where the path is a single "abstract" action of the strategic level. The tactic layer should be able to play the game from the abstract-action path found by the strategic layer (e.g. remember the pushes associated with each abstract action).(:if:) (:if userlang pl:)Przykład: @@#@@ to ściana, @@*@@ to skrzynia, tylko krańcowe pozycje są istotne:(:if userlang en:)Example: @@#@@ is a wall, @@*@@ is a barrel, only the end positions are important:(:if:)[@ Changed lines 89-90 from:
### to:
### (:if userlang pl:)Rozszerzenie 2: wykorzystaj programowanie więzów w implementacji pozmiomu taktycznego.(:if userlang en:)Extension 2: use constraint solving/programming to in coding the tactic level.(:if:) ### (:if userlang pl:)Rozszerzenie 3: Nie proponuj poziomowi strategicznemu martwych konfiguracji w rodzaju zablokowanych skrzyń:(:if userlang en:)Do not propose to the strategic level dead configurations, like with blocked barrels:(:if:)[@ Changed lines 92-94 from:
### #@] to:
### #@] (:if userlang pl:)Wykrywaj martwe konfiguracje ogólnym mechanizmem a nie przez ręczne zakodowanie szczególnych przypadków: np. przy pomocy więzów, albo algorytmu A* odpalonego na istotnym dla danej skrzyni fragmencie konfiguracji, żeby sprawdzić czy da się ją ruszyć.(:if userlang en:)Discover the dead configuration using a general mechanism rather than by hand-coding concrete cases: for example, by using constraint solving, or with a local A* search -- limited to pushing a barrel around.(:if:) *** (:if userlang pl:)Trochę literatury:(:if userlang en:)Some links:(:if:) **** [[http://www.cs.ualberta.ca/~games/Sokoban/ | Sokoban Solver Rolling Stone]], (:if userlang pl:)bardzo ciekawa strona, w szczególności(:if userlang en:)a very interesting page, especially(:if:) Changed line 96 from:
***** [[http://www.cs.ualberta.ca/~games/Sokoban/TALK/title.html | Pushing the Limits: New Developments in Single-Agent Search]] Andreas Junghanns, Jonathan Schaeffer (prezentacja) to:
***** [[http://www.cs.ualberta.ca/~games/Sokoban/TALK/title.html | Pushing the Limits: New Developments in Single-Agent Search]] Andreas Junghanns, Jonathan Schaeffer ((:if userlang pl:)prezentacja(:if userlang en:)slides(:if:)) Changed lines 98-104 from:
**** ## '''Gry z limitem czasowym''' ### Wersja podstawowa wariant '' ### Rozszerzenie 2: zaproponuj / zaprogramuj (np.) modyfikację algorytmu alfa-beta odcięć tak, aby dzia& to:
**** (:if userlang pl:)Ta metoda nas nie interesuje, ale praca jest ciekawa:(:if userlang en:)This method is not useful for us, but the work is interesting(:if:) [[http://www.idsia.ch/~tom/publications/masterthesis.pdf | Evolving a compact, concept-based Sokoban solver]] (Tom Schaul) ## (:if userlang pl:)'''Gry z limitem czasowym'''. '''Gry w czasie rzeczywistym'''.(:if userlang en:)'''Time-delimited Games'''. '''Real-Time Games'''.(:if:) ### (:if userlang pl:)Wersja podstawowa wariant ''(a)'': zaimplementuj lub zmodyfikuj istniejący program-grę dwuosobową, tak aby pozwalał na grę dwóch różnych algorytmów przeciw sobie (może to być ten sam algorytm ale z różnymi parametrami).(:if userlang en:)Basic version ''(a)'': implement a two-player game letting two different algorithms / sets of parameters play against each other.(:if:) ### (:if userlang pl:)Wersja podstawowa wariant ''(b)'': zaprogramuj modyfikację algorytmu alfa-beta odcięć tak, aby przerywał obliczenia w momencie wyczerpania się czasu zegarowego przeznaczonego na ruch, zwracając najlepszy ruch wedle dokonanych obliczeń. Wykorzystaj np. iteracyjne pogłębianie.(:if userlang en:)Basic version ''(b)'': implement an alpha-beta pruning algorithm so that it stops computation and returns the best move found so far, when it rounds out of "wallclock" time.(:if:) ### (:if userlang pl:)Rozszerzenie 2: zaproponuj / zaprogramuj (np.) modyfikację algorytmu alfa-beta odcięć tak, aby działał w ramach czasu zegarowego przeznaczonego mu na całą grę. Jeśli suma czasów zużytych na podjęcie ruchów przez gracza przekroczy ten czas, gracz przegrywa. Możesz dla uproszczenia uznać, że algorytm myśli tylko w czasie podejmowania przez siebie ruchu. Algorytm ma do dyspozycji czasy wykorzystane przez przeciwnika, grającego z tym samym limitem. Możliwie rozsądnie wyznacz ilość obliczeń/czasy na poszczególne ruchy (możesz eksperymentować).(:if userlang en:)Extension 2: propose / code a modification of -- e.g. -- alpha-beta pruning so that it worked in the limits of clock time on the entire game. If the sum of times spent on selecting a move by a given player exceeds this time, that player loses. You can simplify assuming, that a player "thinks" only during its move (when you do not want to use multithreading). The algorithm can see the times spent by the other player, playing with the same limit. Decide reasonably what portion of the time left to spend on the next move (try experimenting).(:if:) ### (:if userlang pl:)Rozszerzenie 3: zmodyfikuj wariant ''(a)'', zaprogramuj współbieżne/równoległe asynchroniczne działanie algorytmów. Tzn. każdy gracz może wykonać kilka ruchów pod rząd, jeśli drugi gracz nie zdąży wykonać ruchu w międzyczasie. Reguły twojej gry muszą dać się jakoś zinterpretować w takiej sytuacji. Gdy gracze doprowadzą do jakiegoś rodzaju stagnacji, to mogą postulować remis.(:if userlang en:)Extension 3: code concurrent asynchronic players: each algorithm can make several moves in a row if the other player still computes its move. The rules of the game need to be interpretable in this case. If the games somehow stagnates, the players can propose a draw.(:if:) ### (:if userlang pl:)Rozszerzenie 4: zaproponuj / zaprogramuj rozsądny sposób dysponowania czasem w sytuacji z rozrzerzenia 3, np. przetestuj różne strategie.(:if userlang en:)Extension 4: propose / code a reasonable way to administer the time to compute a move in the context of extension 3, e.g. experiment with different strategies.(:if:) May 05, 2009, at 06:57 AM
by - RL Soar
Added lines 164-165:
# Pracownia '''Soar''' 2, uczenie ze wzmocnieniem ## [[Attach:AGI/RL.pdf]] April 28, 2009, at 04:35 PM
by - alchemy slides
Changed lines 61-65 from:
# ** ** [[Attach # Pracownia z więzów i z gier to:
# (:if userlang pl:)Pracownia z przeszukiwania w przestrzeni stanów(:if userlang en:)Lab on statespace search(:if:) ** [[http://donyc.pop.e-wro.pl/astar/ | (:if userlang pl:)Przeszukiwanie labiryntów algorytmem(:if userlang en:)Pathfining using(:if:) A*]] ** [[http://en.wikipedia.org/wiki/D*_search_algorithm | (:if userlang pl:)algorytm przeszukiwania(:if userlang en:)dynamic search --(:if:) D*]] ** [[Attach:SearchDynamic.pdf | (:if userlang pl:)Przeszukiwanie A* w dynamicznym środowisku(:if userlang en:)The A* search in a dynamical environment(:if:)]] # (:if userlang pl:)Pracownia z więzów i z gier(:if userlang en:)Lab on constraints and on games(:if:) Changed lines 69-70 from:
** [[http://donyc.pop.e-wro.pl/checkers/ | ** [[http to:
** [[http://donyc.pop.e-wro.pl/checkers/ | (:if userlang pl:)aplet z warcabami(:if userlang en:)the checkers applet(:if:)]] ** [[http://sourceforge.net/projects/minigosix/ | Mini Gosix (autor: Tautrimas Pajarskas)]] (:if userlang pl:)(gra planszowa Gosix stworzona przez: Pierre Canuel)(:if userlang en:)(the Gosix board game created by Pierry Canuel)(:if:) Added line 157:
*** Literatura: [[http://www.cs.washington.edu/homes/pedrod/803/ | 10-803: Markov Logic Networks]] (Machine Learning Department, Carnegie Mellon University) April 27, 2009, at 01:57 PM
by - Sokoban
Changed lines 4-5 from:
** (:if userlang pl:) to:
** (:if userlang pl:)linki dot. rozwiązywania Sokobana(:if userlang en:)Sokoban solving links(:if:) Changed lines 93-98 from:
*** Trochę literatury to:
*** Trochę literatury: **** [[http://www.cs.ualberta.ca/~games/Sokoban/ | Sokoban Solver Rolling Stone]], bardzo ciekawa strona, w szczególności ***** [[http://www.cs.ualberta.ca/~games/Sokoban/program.html | Our Program - Rolling Stone]] ***** [[http://www.cs.ualberta.ca/~games/Sokoban/TALK/title.html | Pushing the Limits: New Developments in Single-Agent Search]] Andreas Junghanns, Jonathan Schaeffer (prezentacja) **** [[http://www.sokobano.de/wiki/index.php?title=Solver | Sokoban Wiki: Simple solver]], [[http://www.sokobano.de/wiki/index.php?title=Solver_Statistics | Solver Statistics]] **** Ta metoda nas nie interesuje, ale praca jest ciekawa: [[http://www.idsia.ch/~tom/publications/masterthesis.pdf | Evolving a compact, concept-based Sokoban solver]] (Tom Schaul) Changed lines 157-160 from:
# ## Zaplanuj system ekspercki i stw ### Rozszerzenie: podepnij ## Zaimplementuj system ekspercki wykorzystujący ontologię / bazę wiedzy OpenCyc, lub jej uproszczenie do reprezentacji RDF w systemie Texai. to:
# Pracownia '''Soar''' ## [[http://sitemaker.umich.edu/soar/home | Soar Home]] *** [[http://sourceforge.net/project/showfiles.php?group_id=65490&package_id=101448 | Soar Suite 9.0]], [[http://sourceforge.net/project/showfiles.php?group_id=65490&package_id=289690 | Soar Suite 9.1 Beta]] # Pracownia '''CLIPS''' ## [[http://clipsrules.sourceforge.net/ | CLIPS Home]] # Jeszcze jedna grupa projektów: systemy bogate w wiedzę. (koniec maja) Deleted line 119:
April 23, 2009, at 12:23 AM
by - system ekspercki 2
Added line 119:
## '''System ekspercki w zmiennym środowisku'''. Zaprogramuj w Soar (lub być może w CLIPS) system ekspercki uwzględniający, że obserwacja może wpływać na badany obiekt (może być de facto interwencją), oraz że badany obiekt jest procesem -- zmienia się w czasie, z czasem ujawnia dodatkowe informacje. Changed line 129 from:
## '''CLIPS'''. to:
## '''CLIPS''' i Sokoban. Changed line 120 from:
## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach: to:
## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach:ProgFun/)funind.ml]]. Changed line 117 from:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(X \wedge Y)}{#X to:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(!X \wedge !Y)}{#(!X \wedge ?Y)}$} dla reguły {$X \Rightarrow Y$}, gdzie {$#!X$} zlicza, ile razy {$X$} jest prawdziwe, a {$#?Y$} zlicza, ile razy {$Y$} jest znane) jak i jakość tego oszacowania (jak często {$X$} jest znane oraz jak często {$Y$} jest znane gdy {$X$} jest prawdziwe). Changed line 117 from:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(X \wedge Y)}{#X}$} dla reguły {$X \ to:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(X \wedge Y)}{#X}$} dla reguły {$X \Rightarrow Y$}, gdzie {$#X$} zlicza, ile razy {$X$} jest prawdziwe) jak i jakość tego oszacowania (jak często {$X$} jest znane oraz jak często {$Y$} jest znane gdy {$X$} jest prawdziwe). Changed line 117 from:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(X to:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(X \wedge Y)}{#X}$} dla reguły {$X \Longrightarrow Y$}, gdzie {$#X$} zlicza, ile razy {$X$} jest prawdziwe) jak i jakość tego oszacowania (jak często {$X$} jest znane oraz jak często {$Y$} jest znane gdy {$X$} jest prawdziwe). Changed line 117 from:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\ to:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\frac{#(X&Y)}{#X}$} dla reguły {$X \arrow Y$}, gdzie {$#X$} zlicza, ile razy {$X$} jest prawdziwe) jak i jakość tego oszacowania (jak często {$X$} jest znane oraz jak często {$Y$} jest znane gdy {$X$} jest prawdziwe). Changed line 117 from:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ( to:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ({$\fact{#(X&Y)}{#X}$} dla reguły {$X \Arrow Y$}, gdzie {$#X$} zlicza, ile razy {$X$} jest prawdziwe) jak i jakość tego oszacowania (jak często {$X$} jest znane oraz jak często {$Y$} jest znane gdy {$X$} jest prawdziwe). April 22, 2009, at 11:14 PM
by - House MD
Changed lines 117-119 from:
### Rozszerzenie 2: to:
### Rozszerzenie 2: wykorzystaj również zawodne reguły asocjacyjne, uwzględnij zarówno oszacowanie prawdopodobieństwa reguły ([$\fact{#(X&Y)}{#X}$] dla reguły [$X \Arrow Y$], gdzie [$#X$] zlicza, ile razy [$X$] jest prawdziwe) jak i jakość tego oszacowania (jak często [$X$] jest znane oraz jak często [$Y$] jest znane gdy [$X$] jest prawdziwe). ### Rozszerzenie 3: zbuduj odpowiednio dużą bazę wiedzy dla jakiejś praktycznej dziedziny zastosowania systemu eksperckiego, wykorzystując "human computation": zbuduj system, w którym wielu użytkowników może grać w twoją grę (i być wykorzystywać ją do rzeczywistej diagnostyki), działając na wspólnej bazie wiedzy. Możesz np. zaprogramować serwer http i odpowiedniego klienta. *** Sugestia: możesz zapoznać się z serialem ''House M.D''. Changed lines 4-5 from:
** (:if userlang pl:)kolejny zestaw zadań-projektów(:if userlang to:
** (:if userlang pl:)kolejny zestaw zadań-projektów(:if userlang en:)another set of exercises-projects (:if:) Changed line 127 from:
*** Schemat projektu: zrealizuj projekt '''Sokoban''' z drugiej listy w języku CLIPS lub to:
*** Schemat projektu: zrealizuj projekt '''Sokoban''' z drugiej listy w języku CLIPS lub Soar. April 17, 2009, at 01:41 PM
by - CLIPS
Added lines 126-127:
## '''CLIPS'''. *** Schemat projektu: zrealizuj projekt '''Sokoban''' z drugiej listy w języku CLIPS lub w systemie Soar. April 16, 2009, at 03:49 PM
by - OpenCyc
Changed lines 149-151 from:
## Zaimplementuj system ekspercki wykorzystujący ontologię / bazę wiedzy OpenCyc, lub jej uproszczenie do reprezentacji RDF w systemie Texai. to:
## Zaplanuj system ekspercki i stwórz w Protege ontologię (szkielet bazy wiedzy) dla tego systemu. ### Rozszerzenie: podepnij CLIPS lub inny system wnioskujący do bazy wiedzy stworzonej w Protege i zademonstruj przykład-"prototyp" zastosowania twojego systemu eksperckiego (wykorzystujący wnioskowanie na bazie wiedzy). ## Zaimplementuj system ekspercki wykorzystujący ontologię / bazę wiedzy OpenCyc, lub jej uproszczenie do reprezentacji RDF w systemie Texai. April 16, 2009, at 03:25 PM
by - OpenCyc
Changed lines 3-8 from:
(:if userlang pl:) ** (:if userlang pl:) ** [[http://en.wikipedia.org/wiki/D*_search_algorithm | (:if userlang pl:) algorytm przeszukiwania D* (:if userlang en:) search algorithm D* (:if:) ]] (:if userlang pl:) (proste wprowadzenie do tematu z trzeciej pracowni) (:if userlang en:) (simple introduction to the theme of the third lab) (:if:) ** [[http://www.youtube.com/watch?v=s9G7DRTuB5s | ''Case Based Reasoning'' for Game AI]] (Tech Talk) to:
(:if userlang pl:)Ciekawe nowości na stronie: (:if userlang en:)Interesting news on the page: (:if:) ** (:if userlang pl:)kolejny zestaw zadań-projektów(:if userlang pl:)another set of exercises-projects (:if:) Changed line 118 from:
## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach: to:
## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach:FunProg/)funind.ml]]. Changed lines 138-139 from:
## '''Reinforcement Learning''' ### Wersja podstawowa wariant ''(a)'' to:
## '''Reinforcement Learning''' oraz zastosowanie systemów reguł produkcji do programowania agentów: Soar. ### Wersja podstawowa: Zapoznaj się z tutorialem RL w systemie Soar. Rozszerz agenta ''Eaters'' lub ''SoarTanks'' tak, aby wykorzystywał uczenie ze wzmocnieniem. Changed lines 141-142 from:
## **** Rozszerzenie to:
## '''Reinforcement Learning''' oraz zastosowanie systemów reguł produkcji do programowania agentów: RL-Competition i CLIPS. ### Wersja podstawowa: Zapoznaj się z dziedzinami [[http://2009.rl-competition.org/index.php | Reinforcement Learning Competition 2009]], zainstaluj oprogramowanie ([[Attach:RL-competition-2009.tar.gz | kopia lokalna]]). Wybierz jednego z dostępnych agentów i zapoznaj się z jego kodem źródłowym: C++ ''helicopter''; Java ''mario'', ''octopus'', ''tetris''; Python ''acrobot''; Matlab ''tetris''; (jest też dostępny interfejs dla Lispu ale nie ma dużego przykładowego agenta). Uruchom tego agenta i zademonstruj jego działanie. **** Rozszerzenie 1: Zastosuj dla tego agenta uczenie ze wzmocnieniem (zaimplementuj wybrany algorytm). Zademonstruj, że agent rzeczywiście z czasem (dzięki uczeniu ze wzmocnieniem) zdobywa coraz więcej punktów. **** Rozszerzenie 2: zanurz CLIPS i oprogramuj w nim inteligentne zachowanie twojego agenta (może nie mieć związku z uczeniem ze wzmocnieniem). Added lines 148-149:
# Jeszcze jedna grupa projektów: systemy bogate w wiedzę. ## Zaimplementuj system ekspercki wykorzystujący ontologię / bazę wiedzy OpenCyc, lub jej uproszczenie do reprezentacji RDF w systemie Texai. Changed line 121 from:
## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach: to:
## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach:ProgFun/)funind.ml]]. April 15, 2009, at 01:48 AM
by - sokoban
Added line 96:
*** Trochę literatury (ale inna metoda): [[http://www.idsia.ch/~tom/publications/masterthesis.pdf | Evolving a compact, concept-based Sokoban solver]] (Tom Schaul) Changed line 87 from:
### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków to:
### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniera (w szczególności, dokładne położenie magazyniera jest nieistotne, istotne są pozycje osiągalne przez magazyniera). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać zbiór akcji-taktyk: konfiguracja wynikowa (dla poziomu strategicznego), faktyczne ruchy magazyniera do wykonania (dla systemu gry). Przykład: @@#@@ to ściana, @@*@@ to skrzynia, tylko krańcowe pozycje są istotne:[@ April 14, 2009, at 10:47 PM
by - RL
Changed lines 140-144 from:
## '''Reinforcement Learning'''. to:
## '''Reinforcement Learning'''. ### Wersja podstawowa wariant ''(a)'': Zapoznaj się z tutorialem RL w systemie Soar. Rozszerz agenta ''Eaters'' lub ''SoarTanks'' tak, aby wykorzystywał uczenie ze wzmocnieniem. **** Rozszerzenie: Zademonstruj, że agent rzeczywiście z czasem (dzięki uczeniu ze wzmocnieniem) zdobywa coraz więcej punktów. ### Wersja podstawowa wariant ''(b)'': Zapoznaj się z dziedzinami [[http://2009.rl-competition.org/index.php | Reinforcement Learning Competition 2009]], zainstaluj oprogramowanie ([[Attach:RL-competition-2009.tar.gz | kopia lokalna]]). Wybierz jednego z dostępnych agentów i zapoznaj się z jego kodem źródłowym: C++ ''helicopter''; Java ''mario'', ''octopus'', ''tetris''; Python ''acrobot''; Matlab ''tetris''; (jest też dostępny interfejs dla Lispu ale nie ma dużego przykładowego agenta). Uruchom tego agenta i zademonstruj jego działanie. **** Rozszerzenie: Zastosuj dla tego agenta uczenie ze wzmocnieniem (zaimplementuj wybrany algorytm). Zademonstruj, że agent rzeczywiście z czasem (dzięki uczeniu ze wzmocnieniem) zdobywa coraz więcej punktów. April 14, 2009, at 09:28 PM
by - Alchemy
Changed lines 136-137 from:
## '''A* real-time beam search'''. to:
## '''A* real-time beam search'''. Zaprogramuj algorytm A* z ograniczeniem na rozmiar frontu przeszukiwania (ang. "search fringe"), ale nie poprzez wyrzucanie stanów które się nie mieszczą i dalsze przeszukiwanie, a poprzez podjęcie decyzji co do kroku do podjęcia optymalnie względem posiadanej informacji (tzn. podjęcie akcji na ścieżce do najlepszego według A* stanu) i odrzucenie stanów których ocena była oparta na wybraniu innej ścieżki. ### Wersja podstawowa: Zaprogramuj algorytm kontrolujący agenta na bazie A* z następującą "pętlą główną": przeszukujący aż do wypełnienia bufora "frontu przeszukiwania", a następnie podejmujący akcje tak długo aż zwolni się miejsce we "froncie przeszukiwania". ### Rozszerzenie 1: Zaprogramuj ten algorytm w systemie Soar w zgodzie z jego "filozofią". ### Rozszerzenie 2: Zaprogramuj sytuację testową, w której opłaca się mniej planować wprzód przed rozpoczęciem działania i pomiędzy akcjami: np. współzawodnictwo agentów w "czasie rzeczywistym", zmienne środowisko. Porównaj algorytm z tego zadania z algorytmem który po prostu wykonuje ustaloną ilość kroków algorytmu A* pomiędzy akcjami. ## '''Reinforcement Learning'''. Zapoznaj się z tutorialem RL w systemie Soar i zaprogramuj w nim agenta wykorzystującego uczenie ze wzmocnieniem. Changed lines 142-143 from:
## ''' to:
## '''Statistical Relational Learning'''. System [[Alchemy -> http://alchemy.cs.washington.edu/]]. Modele graficzne którymi zajmowaliśmy się na pierwszej liście zadań wyrażały jedynie własności obiektów i zależności pomiędzy własnościami pojedynczego obiektu. W języku logiki byłyby to predykaty jednoargumentowe oraz formuły z jedną zmienną: da się je wyrazić w rachunku zdań. ''Alchemy'' pozwala wyrażać formuły pierwszego rzędu, relacje wiążące wiele obiektów i zależności pomiędzy tymi relacjami. *** Schemat projektu: zrealizuj w ''Alchemy'' wybrany projekt z pierwszej listy zadań, ale z naciskiem na możliwości ''Alchemy'' których nie dają zwykłe sieci przekonań (sieci bayesowskie). Możesz np. wykorzystać skomplikowaną bazę danych z wieloma tabelami. April 14, 2009, at 02:32 PM
by - nowe zadania
Added lines 115-139:
# Ostatnia grupa projektów: planowanie w przestrzeni planów, systemy regułowe, systemy eksperckie, agent, uczenie ze wzmocnieniem, zbiory danych ustrukturowanych: "relational learning". ## '''Uczący się system ekspercki'''. Być może znasz [[http://pl.wikipedia.org/wiki/20_pyta%C5%84 | grę w 20 pytań]], być może implementowałeś nawet kiedyś w BASICu program grający w nią, zgadujący słowo pomyślane przez gracza, i rozbudowujący drzewo decyzji poprzez zadawanie graczowi, po jego wygranej, pytania: jak zapytałbyś, żeby odróżnić twój przedmiot X od mojego zgadnięcia Y? Napisz system ekspercki będący udoskonaleniem tej gry. Taki system może mieć wiele zastosowań, np. w diagnostyce. ### Wersja podstawowa: zaprogramuj grę w 20 pytań, uczącą się jak wyżej. Wykorzystaj odpowiednie formularze z komentarzami tak, aby małym kosztem uzyskać od użytkownika poprawne językowo słowa-przedmioty do zgadywania oraz pytania o cechy rozważanego przedmiotu, z odpowiedziami "tak/nie". Zamiast budować drzewo decyzji, dla każdego znanego przedmiotu i każdego posiadanego pytania pamiętaj odpowiedź: tak / nie / nieznana (gdy pytanie nie było jeszcze dla tego przedmiotu zadane). Zgadując przedmiot, wystartuj od zbioru wszystkich znanych przedmiotów. Wybieraj pytania tak, by szybko zawęzić aktualnie rozpatrywany zbiór przedmiotów (np. po zawężeniu do aktualnego zbioru, pytanie ma tyle samo odpowiedzi "tak" co odpowiedzi "nie"). Odrzucaj z rozpatrywanego zbioru przedmioty, dla których odpowiedź jest inna niż udzielona przez gracza (zachowuj przedmioty z odpowiedzią "nieznana"). Zapamiętuj pytania systemu i odpowiedzi użytkownika, by na końcu gdy wiadomo już, o jaki przedmiot chodziło, uaktualnić odpowiedzi pytań z "nieznana" na odpowiednio "tak" lub "nie", a również wykryć konflikty jeśli odpowiedź się nie zgadza (to oznacza, że gracz wygrał, ale być może oszukiwał) i poinformować o tym. ### Rozszerzenie 1: automatycznie twórz i wykorzystuj ''reguły asocjacyjne''. Inaczej niż w "Data Mining", używaj jedynie niezawodnych reguł asocjacyjnych: wyrzucaj reguły, dla których chociażby jeden znany przedmiot jest kontrprzykładem. Reguła asocjacyjna mówi, że jeśli odpowiedzi na pewien zestaw (dwóch, trzech, czterech) pytań są takie-a-takie, to odpowiedź na pewne inne pytanie będzie taka-a-taka. Do tworzenia reguł zaadoptuj jeden ze znanych algorytmów ([[http://en.wikipedia.org/wiki/Association_rule_learning | Association rule learning]]). W czasie zadawania pytań, gdy tylko pewna reguła "odpala" (odpowiedzi na odpowiednie pytania pokrywają się z jej przesłankami), sprawdź pytanie z jej wniosku: jeśli było już zadane, to w przypadku gdy reguła jest niepoprawna wykasuj ją, a jeśli nie było jeszcze zadane, to odłóż je na bok (tak jakby było już zadane). Powróć do pytań "rozstrzygniętych" przez reguły asocjacyjne dopiero, gdy pozostałe pytania nie rozstrzygną problemu -- pamiętaj, żeby wykasować reguły, które okażą się błędne. ### Rozszerzenie 2: zbuduj odpowiednio dużą bazę wiedzy dla jakiejś praktycznej dziedziny zastosowania systemu eksperckiego, wykorzystując "human computation": zbuduj system, w którym wielu użytkowników może grać w twoją grę (i być wykorzystywać ją do rzeczywistej diagnostyki), działając na wspólnej bazie wiedzy. Możesz np. zaprogramować serwer http i odpowiedniego klienta. ## '''Programowanie indukcyjne'''. Typy algebraiczne (czyli warianty, sumy rozłączne produktów typów algebraicznych) dają bardzo wygodny sposób reprezentacji danych strukturalnych. Podejmiemy ambitne zadanie z maszynowego uczenia się: indukcję funkcji, czyli będziemy konstruować jak najoszczędniejszą funkcję, która dla zadanych danych wejściowych wygeneruje zadane dane wyjściowe. Zapoznaj się z artykułem Markusa Mottla [[Using Algebraic Datatypes as Uniform Representation for Structured Data -> http://ocaml.info/oefai/papers/algebraic_dts/index.html]], w szczególności z rozdziałem [[Generalizing Decision Tree Learning to Algebraic Datatypes -> http://ocaml.info/oefai/papers/algebraic_dts/algebraic_dts003.html]] i dokończ moją prototypową implementację [[(Attach:FunProg/)funind.ml]]. ### Wersja podstawowa: **** Napisz test-zastosowanie (odpowiednik akapitu [@(* *** example *** *)@] z pliku źródłowego). **** Wprowadź obsługę sytuacji, gdy dane nie opisują funkcji (tzn. gdy tym samym argumentom przypisane są różne wyniki -- obecnie program wysypuje się wtedy). **** Dopisz obsługę gałęzi domyślnych " _ -> ". Patrz: paragraf 3.3 artykułu. **** Dopisz normalizację "lewej strony" (patrz paragraf 3.1.2 artykułu). ### Rozszerzenie 1: Rozszerz algorytm o obsługę zmiennych liczbowych (zapoznaj się z odpowiednimi mechanizmami budowy drzew decyzyjnych). ### Rozszerzenie 2: Możesz zmierzyć się z problemem indukcji funkcji rekurencyjnych. ## '''Agent 001'''. Zapoznaj się z tutorialem 2 (i być może również 3) do systemu Soar. ### Wersja podstawowa: zaprogramuj rozszerzenia programu "Eaters" zaproponowane na końcu tutoriala 2: punkty 1, 2, prosty mechanizm dla punktu 3. ### Rozszerzenie 1: zaprogramuj bardziej zaawansowany mechanizm dla punktu 3, punkt 4. ## '''Agent 002'''. Zapoznaj się z tutorialami 2 i 3 do systemu Soar. ### Wersja podstawowa: zaprogramuj rozszerzenia programu "SoarTanks" zaproponowane na końcu tutoriala 3: punkty 1, 2, któryś spośród punktów 3-5. ### Rozszerzenie 1: zaprogramuj punkty 1-5 (czyli o dwa więcej niż w wersji podstawowej). ### Rozszerzenie 2: zaprogramuj dodatkowo punkty 6 i 7. ### Rozszerzenie 3: zaprogramuj dodatkowo punkt 8. ## '''A* real-time beam search'''. ## '''Reinforcement Learning'''. Zapoznaj się z tutorialem RL w systemie Soar. ## '''Planowanie w przestrzeni planów'''. ## '''Relational Statistical Learning'''. System [[Alchemy -> http://alchemy.cs.washington.edu/]] Changed line 58 from:
## (:if userlang pl:)'''Teoriodecyzyjne heurystyki w przeszukiwaniu i grach'''. Skonstruuj sieć przekonań z węzłem/węzłami decyzyjnymi oraz węzłem wartości/nagrody/użyteczności/kosztu; patrz [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. Dziedziną modelu ma być problem przeszukiwania (gra jedno-osobowa) lub gra dwuosobowa.(:if userlang en:)'''Decisiontheoretic heuristics in search and in games'''. Build a belief network with a decision node/nodes and a value/reward/utility/cost node; see[[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. The domain of the model should be a search problem (one-person game) or a two-person game.(:if:) to:
## (:if userlang pl:)'''Teoriodecyzyjne heurystyki w przeszukiwaniu i grach'''. Skonstruuj sieć przekonań z węzłem/węzłami decyzyjnymi oraz węzłem wartości/nagrody/użyteczności/kosztu; patrz [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. Dziedziną modelu ma być problem przeszukiwania (gra jedno-osobowa) lub gra dwuosobowa.(:if userlang en:)'''Decisiontheoretic heuristics in search and in games'''. Build a belief network with a decision node/nodes and a value/reward/utility/cost node; see [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. The domain of the model should be a search problem (one-person game) or a two-person game.(:if:) Changed line 55 from:
**** (:if userlang pl:)Jeśli model wspiera podejmowanie decyzji, to użytkownik może później ocenić podjętą decyzję.(:if userlang en:)If the model supports decision making, then the user can valuate the decision made.(:if: to:
**** (:if userlang pl:)Jeśli model wspiera podejmowanie decyzji, to użytkownik może później ocenić podjętą decyzję.(:if userlang en:)If the model supports decision making, then the user can valuate the decision made.(:if:) April 09, 2009, at 06:10 PM
by - BN translated
Changed line 32 from:
## (:if userlang pl:)Za wersję podstawową można dostać maksymalnie 15 punktów (za ładny raport z dołączonymi -- tzn. wysłanymi mailem lub wskazanymi url-em -- źródłami w postaci wykorzystanych programów / skryptów dla przeprowadzonych eksperymentów / danych).(:if userlang en:)For the basic version you can get at most 15 points (for a nice to:
## (:if userlang pl:)Za wersję podstawową można dostać maksymalnie 15 punktów (za ładny raport z dołączonymi -- tzn. wysłanymi mailem lub wskazanymi url-em -- źródłami w postaci wykorzystanych programów / skryptów dla przeprowadzonych eksperymentów / danych).(:if userlang en:)For the basic version you can get at most 15 points (for a nice report with attached sources: programs, experiment scripts, datasets etc. -- sent by mail or pointed by url). (:if:) Changed lines 47-63 from:
### ### Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant '' ### Rozszerzenie 2: zaplanuj (i może też zaprogramuj) mechanizm gromadzenia danych w trakcie użytkowania modelu **** Jeśli model służy do predykcji, to użytkownik może powiedzieć później, co stało się naprawdę. **** Jeśli model wspiera podejmowanie decyzji, to użytkownik może później ocenić podjętą decyzję. **** Jeśli dane ### Wersja podstawowa ### Rozszerzenie 1: zamiast konstruowa ### Rozszerzenie 2: zaproponuj / zaprogramuj mechanizm uaktualniania modelu w czasie rozgrywki lub po kilku rozgrywkach. ### Rozszerzenie 3: zaproponuj / zaprogramuj strategię przeszukiwania / strategię rozgrywki, która nie kieruje się chęcią maksymalizacji nagrody, ale chęcią jak najsprawniejszego poprawienia jakości modelu #### Rozszerzenie 4: zaproponuj, wykorzystując teorię bayesowskiego uczenia ze wzmocnieniem, mechanizm optymalnego wyboru ruchu, uwzględniający, że poprawienie jakości modelu poprawi skutecznoś to:
### (:if userlang pl:)Rozszerzenie 1: samodzielnie zgromadź dane. Możesz np. podpiąć się do jakiejś aplikacji i przeprowadzić logowanie jej zmiennych. Możesz skonstruować model deterministyczny jakiegoś zjawiska (tylko zmienne wejściowe będą losowane), ale część zmiennych wejściowych pozostawić ukrytych przed modelowaniem statystycznym (co spowoduje, że część z pozostałych zależności nabierze charakteru losowego).(:if userlang en:)Extension 1: collect the data yourself. You can acquire it from some application by logging its data. You can build a deterministic model for some process (only the input variables will be random) but leave out some input variables from statistical modelling (which will introduce additional stochastic dependencies).(:if:) ### (:if userlang pl:)Rozszerzenie 2: wyraź posiadaną wiedzę o zagadnieniu w postaci więzów (twardych, a może również miękkich), lub w postaci początkowej sieci przekonań. Porównaj sieć znalezioną z uwzględnieniem twojej wiedzy, z siecią którą (to samo lub inne) narzędzie odnalazło przy braku wiedzy startowej (z w pewnym sensie "jednostajnym" rozkładem a priori na struktury sieci).(:if userlang en:)Extension 2: express the knowledge about the problem as constraints (hard, and perhaps also soft), or as an initial belief network. Compare the result acknowledging this information with a structure found without prior knowledge (with, in some sense, a uniform prior).(:if:) ### (:if userlang pl:)Rozszerzenie 3: urozmaić strukturę sieci: węzły innego typu niż dyskretne ze stabulowanymi prawdopodobieństwami warunkowymi (np. dla zmiennych ciągłych); zmienne ukryte (nie obserwowane, wogóle albo zazwyczaj, w danych uczących).(:if userlang en:)Extension 3: enrich the network, e.g. by introducing different types of nodes (e.g. true continuous, discrete but not simply tabulated), or unobservable variables.(:if:) ## (:if userlang pl:)'''Akwizycja i reprezentacja wiedzy'''. Samodzielnie skonstruuj sieć przekonań (jej strukturę i parametry).(:if userlang en:)'''Acquisition and representation of knowledge'''. Build the belief network manually (its structure and parameters).(:if:) ### (:if userlang pl:)Wersja podstawowa: skonstruuj prostszą sieć (wariant ''(a)'') lub wprowadź/zaimportuj trudniejszą sieć odnalezioną w internecie (wariant ''(b)''). Opisz zależności w sieci oraz kilka wyników zapytań do sieci (jak w wariancie ''Data Mining'').(:if userlang en:)Basic version: build a simpler network (case ''a'') or import a network found in the internet (case ''b''). Describe the dependencies in the network and several queries to the network (just as in the project ''Data Mining'').(:if:) ### (:if userlang pl:)Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant ''(c)''). Osoba ta nie może być kolegą (koleżanką) z naszego przedmiotu; dobrze, jeśli wogóle nie jest studentem bądź absolwentem informatyki lub matematyki. (Częścią zadania jest namówienie kogoś, by nam pomógł.) W raporcie zamieść transkrypcję fragmentu wywiadu.(:if userlang en:)Extension 1: build the network by performing an interview with a preson that is knowledgeable in the problem analyzed; it's good if that person is not a computer science student. Place a fragment of the talk with that person into the report.(:if:) ### (:if userlang pl:)Rozszerzenie 2: zaplanuj (i może też zaprogramuj) mechanizm gromadzenia danych w trakcie użytkowania modelu, oraz okresową automatyczną aktualizację parametrów modelu (a być może również struktury modelu, choć to mniej bezpieczne); możesz potrzebować narzędzia dopuszczającego nieobserwowanie niektórych zmiennych w danych uczących. Rozważ "trade-off" pomiędzy konserwatywnym zachowaniem posiadanego modelu a nadążaniem z modelem za gromadzonymi danymi. Niektóre narzędzia pozwolą ci wyrazić stary model bezpośrednio, np. jako parametry "a priori" dla rozkładu Dirichleta. Jeśli twoje narzędzie tego nie potrafi, będziesz musiał wygenerować odpowiednią porcję danych ze starego modelu, żeby zrównoważyć wpływ wiedzy względem wpływu napłyniętych obserwacji. Przykłady gromadzenia danych:(:if userlang en:)Extension 2: design (and perhaps also implement) a data collecting regime for the use of the model, and a periodic update of the model parameter (and perhaps structure); you might need a tool that allows for unobservable variables in training data. Consider the trade-off between the preservation of the prior knowledge and the tracking of experience due to collected data. Try to use the old model directly, e.g. as the a priori parameters for the Dirichlet distributions. If the tool doesn't allow it, consider generating samples from the prior model; but this can result in sampling artifacts. Examples of data collection:(:if:) **** (:if userlang pl:)Jeśli model służy do predykcji, to użytkownik może powiedzieć później, co stało się naprawdę.(:if userlang en:)If the model is used for prediction, the user can later tell, what really happened.(:if:) **** (:if userlang pl:)Jeśli model wspiera podejmowanie decyzji, to użytkownik może później ocenić podjętą decyzję.(:if userlang en:)If the model supports decision making, then the user can valuate the decision made.(:if:n) **** (:if userlang pl:)Jeśli dane (ang. "evidence") w zapytaniach użytkownika nie mają charakteru hipotetycznego ale są zaobserwowane, np. są to objawy obserwowane u pacjenta, to zarejestruj je; dobry model pomiędzy objawami może zaoszczędzić na badaniach diagnostycznych. Gromadząc dane spływające z całego regionu wydobywamy wiedzę o charakterze epidemiologicznym itd.(:if userlang en:)If the evidence in the queries to the model is observed (i.e. not hypothetical), e.g. they are the sympthoms of a disease in a patient, then register, or log, them; a good model between the sympthoms can spare on diagnostic tests. Additionally, epidemic information can be mined from the data, etc.(:if:) ### (:if userlang pl:)Rozszerzenie 3: urozmaić strukturę sieci (jak w rozrzerzeniu 3 wariantu ''Data Mining''): węzły innego typu niż dyskretne, zmienne ukryte itd.(:if userlang en:)Extension 3: enrich the network structure (like in the extension 3 for the project ''Data Mining''): nodes of type other than discrete tabulated, hidden variables etc.(:if:) ## (:if userlang pl:)'''Teoriodecyzyjne heurystyki w przeszukiwaniu i grach'''. Skonstruuj sieć przekonań z węzłem/węzłami decyzyjnymi oraz węzłem wartości/nagrody/użyteczności/kosztu; patrz [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. Dziedziną modelu ma być problem przeszukiwania (gra jedno-osobowa) lub gra dwuosobowa.(:if userlang en:)'''Decisiontheoretic heuristics in search and in games'''. Build a belief network with a decision node/nodes and a value/reward/utility/cost node; see[[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. The domain of the model should be a search problem (one-person game) or a two-person game.(:if:) ### (:if userlang pl:)Wersja podstawowa: Zmiennymi "środowiskowymi" są parametry stanu przeszukiwania / stanu gry. Zmienna / zmienne decyzyjne dostarczają parametrów operatorowi przejścia do kolejnego stanu. Stan gry może decydować, które zmienne są obserwowane w trakcie używania modelu (np. kolejne decyzje nasze/przeciwnika w grze o niewielkiej ilości ruchów, np. pokerze czy "oczku"). Niektóre zmienne mogą wogóle nie być obserwowalne w trakcie używania struktury, ale być łatwo dostępne dla uczenia struktury (np. kolejny ruch przeciwnika).(:if userlang en:)Basic version: "Environmental" variables are the search or game state parameters. Decision variable(s) provide parameters for the state transition operator (they represent actions). The state of the game can decide, which variables are observable when the model is used (e.g. the consecutive decisions of players in a limited moves game, like poker or black jack). Some variables can be not observable when the model is used, but be easily available for training (e.g. the next move of the opponent). (:if:) ### (:if userlang pl:)Rozszerzenie 1: zamiast konstruować model "z palca" albo "z internetu", zaprogramuj generator danych a następnie znajdź model z wygenerowanych danych. W generowanych danych za wartość zmiennej "heurystyka" podstaw estymowaną odległość od rozwiązania (poprzez najkrótszą z rzeczywiście znalezionych ścieżek do rozwiązania) lub wypróbkowane prawdopodobieństwo wygranej (jaka część spośród rozgrywek przechodzących przez dany stan zakończyła się wygraną). W generatorze wykorzystaj najlepsze dostępne ci heurystyki żeby przyspieszyć generowanie i poprawić jakość danych.(:if userlang en:)Extension 1: instead of building a model from intuition or finding it in the internet, implement a data generator, and learn the model from the generated data. In the data, substitute for the variable "heuristic" the estimated distance from a solution (by the shortest of actually found paths), or the sample probability of winning (what fraction of games that pass through the given state ended with winning). In the generator, you can use the best available heuristics to speed up the generation and achieve better data quality.(:if:) ### (:if userlang pl:)Rozszerzenie 2: zaproponuj / zaprogramuj mechanizm uaktualniania modelu w czasie rozgrywki lub po kilku rozgrywkach.(:if userlang en:)Extension 2: propose / implement model update mechanism, to be applied during the match or after several matches.(:if:) ### (:if userlang pl:)Rozszerzenie 3: zaproponuj / zaprogramuj strategię przeszukiwania / strategię rozgrywki, która nie kieruje się chęcią maksymalizacji nagrody, ale chęcią jak najsprawniejszego poprawienia jakości modelu.(:if userlang en:)Extension 3: propose / implement a search or game strategy, which will not aim at reward maximization, but at information gain maximization, so that the model can be updated well.(:if:) #### (:if userlang pl:)Rozszerzenie 4: zaproponuj, wykorzystując teorię bayesowskiego uczenia ze wzmocnieniem, mechanizm optymalnego wyboru ruchu, uwzględniający, że poprawienie jakości modelu poprawi skuteczność maksymalizacji nagrody.(:if userlang en:)Extension 4: propose, using the Bayesian Reinforcement Learning theory, an optimal action selection mechanism, taking into account that a good model update will improve the maximization of reward.(:if:) April 08, 2009, at 10:52 PM
by - bayes ex1-1
Changed lines 10-11 from:
# ** to:
# (:if userlang pl:)Pracownia z sieci bayesowskich:(:if userlang en:)Lab on Bayes Nets(:if:) [[http://b-course.cs.helsinki.fi/obc/depend.html | Dependence modeling trails]] (:if userlang pl:)(kurs online z Helsinek)(:if userlang en:) (online course from Helsinki)(:if:) ** [[http://sequoia.ict.pwr.wroc.pl/~witold/ai/ai_baynet_s.pdf | (:if userlang pl:)Wykład: Wnioskowanie na probabilistycznych sieciach przekonań(:if userlang en:)Lecture: Inference on probabilistic belief networks(:if:)]] Changed lines 15-17 from:
# *** to:
# (:if userlang pl:)Pracownia z sieci bayesowskich 2:(:if userlang en:)Lab on Bayes Nets 2:(:if:) ** [[http://sequoia.ict.pwr.wroc.pl/~witold/ai/JavaBayes/ | JavaBayes]] (:if userlang pl:)(kopia lokalna na stronie wykładowcy)(:if userlang en:) (local copy on the lecturer page)(:if:) *** [[http://www.cs.cmu.edu/~javabayes/Home/ | JavaBayes Home]] (:if userlang en:) (documentation)(:if userlang pl:) (dokumentacja) (:if:) Changed line 22 from:
** [[http://www.openbayes.org/ | Open Bayes for Python]] (częściowy klon BNT, tylko zmienne dyskretne) to:
** [[http://www.openbayes.org/ | Open Bayes for Python]] (:if userlang pl:)(częściowy klon BNT, tylko zmienne dyskretne)(:if userlang en:) (partial clone of BNT, only discrete variables) (:if:) Changed lines 27-28 from:
** [[http://bnj.sourceforge.net/ | Bayesian Network tools in Java (BNJ)]] to:
** [[http://bnj.sourceforge.net/ | Bayesian Network tools in Java (BNJ)]](:if userlang pl:) (problematyczny, nieaktywny)(:if userlang en:) (problematic, unmantained) (:if:) ** [[http://www.norsys.com/ | Norsys Software Corp. '''Netica''']] (:if userlang pl:) (brak automatycznego wykrywania struktury, tylko uczenie parametrów)(:if userlang en:) (lacks structure learning, only learns parameters) (:if:) Changed lines 31-46 from:
# ## Wystarczy jedno rozszerzenie, aby uzyska ## Jeśli wkręcisz się w realizowanie rozszerzeń, dodatkowe rozszerzenia mogą stanowi ## Wiele rozszerzeń ma dwa warianty: pogl ## Warto przeczytać treść wszystkich wariantów projektów. ## Patrząc na kryteria oceniania: *** Trzeba zrobić dwa rozszerzone zadania i bez mankamentów (20+20=40pkt), lub trzy podstawowe zadania (średnio 40/3=13pkt za zadanie -- wystarczy wersja podstawowa *** Trzeba zrobi ## Można też wynegocjować uznanie wyników częściowych z dużego projektu jako zadanie, jeśli będą zgłoszone w odpowiednim terminie (ale wtedy punktacja za duży projekt będzie mierzy& ## Je ## '''Data Mining'''. Znajdź strukturę sieci z danych wykorzystując jedno z poznanych narzędzi. ### Wersja podstawowa: odnajdź w internecie zbiór danych dla interesującego i/lub zrozumiałego dla Ciebie zagadnienia. Zinterpretuj zależności w powstałej sieci (m.in. popatrz na ich si& to:
# (:if userlang pl:)Warunki oceny małych projektów(:if userlang en:)Rules for small projects scoring (:if:) ## (:if userlang pl:)Za wersję podstawową można dostać maksymalnie 15 punktów (za ładny raport z dołączonymi -- tzn. wysłanymi mailem lub wskazanymi url-em -- źródłami w postaci wykorzystanych programów / skryptów dla przeprowadzonych eksperymentów / danych).(:if userlang en:)For the basic version you can get at most 15 points (for a nice rapport with attached sources: programs, experiment scripts, datasets etc. -- sent by mail or pointed by url). (:if:) ## (:if userlang pl:)Wystarczy jedno rozszerzenie, aby uzyskać maksimum: 20 punktów (ale nie dostaje się ich automatycznie za samo zrealizowanie wersji rozszerzonej). Niektóre rozszerzenia mogą się okazać bardzo mało czasochłonne w realizacji, nie ma konieczności ograniczać się do jednego ;-)(:if userlang en:)One extension is enough to score the maximum 20 points for a small project (the work needs to deserve it to score max, I'm not tough on it though). If you implement more extensions, the better.(:if:) ## (:if userlang pl:)Jeśli wkręcisz się w realizowanie rozszerzeń, dodatkowe rozszerzenia mogą stanowić treść dużego projektu (końcowego). Wkład pracy w duży projekt powinien być przynajmniej około trzykrotnie większy niż w pojedyńczy mały projekt. (:if userlang en:)Additional extensions may serve as the large project. The work for the large project should be at least about three times the work for a small project (counting only what goes beyond what you have submitted as a small project).(:if:) ## (:if userlang pl:)Wiele rozszerzeń ma dwa warianty: poglądowy "teoretyczny" (zaproponuj) i rzeczywisty (zaprogramuj). Na mały projekt często wystarczy wariant poglądowy, na duży projekt wskazany jest wariant rzeczywisty.(:if userlang en:)Lots of proposed extensions come in two flavors: "theoretical" (propose an idea, a plan) and "practical" (code it down). For a small project, the theoretical variant is definitely enough; it might even suffice for the large project for some extensions.(:if:) ## (:if userlang pl:)Warto przeczytać treść wszystkich wariantów projektów.(:if userlang en:)You may find it worthwhile to read all proposed variants of projects.(:if:) ## (:if userlang pl:)Patrząc na kryteria oceniania:(:if userlang en:)Grading requirements:(:if:) *** (:if userlang pl:)Trzeba zrobić dwa rozszerzone zadania i bez mankamentów (20+20=40pkt), lub trzy podstawowe zadania (średnio 40/3=13pkt za zadanie -- wystarczy wersja podstawowa) żeby mieć szansę na piątkę. (40pkt za małe projekty)(:if userlang en:)You need two small extended projects without considerable flaws (scoring the maximal 20 points each) or three basic projects (40/3=13 points each) to have chances for the 5.(:if:) *** (:if userlang pl:)Trzeba zrobić dwa podstawowe zadania bez mankamentów (15+15=30pkt) lub trzy podstawowe niedopieszczone zadania (średnio 10pkt za zadanie) żeby mieć szansę na cztery z plusem (30pkt za małe projekty).(:if userlang en:)You need two basic projects without considerable flaws (the maximal 15 points each) or three mediocre projects (30/3=10 points each) to have chances for the 4,5.(:if:) *** (:if userlang pl:)Trzeba zrobić dwa podstawowe niedopieszczone zadania (10+10=20pkt) lub jedno rozszerzone zadanie bez mankamentów zeby mieć szansę na czwórkę.(:if userlang en:)You need two mediocre projects (2*10=20 points) or a single extended project without flaws to have chances for the 4,0.(:if:) ## (:if userlang pl:)Proszę nie czekać na ostatnią chwilę, bo pokazując wcześniej można ze mną negocjować co znaczy "bez mankamentów".(:if userlang en:)Don't wait until the last minute, you have more opportunities to score more points if you turn your projects earlier.(:if:) ## (:if userlang pl:)Można też wynegocjować uznanie wyników częściowych z dużego projektu jako zadanie, jeśli będą zgłoszone w odpowiednim terminie (ale wtedy punktacja za duży projekt będzie mierzyć późniejszy wkład pracy).(:if userlang en:)You can negotiate to turn in partial results for the large project as a small project. But then the large project is graded based on further work.(:if:) ## (:if userlang pl:)Jeśli zadanie ma kilka wariantów wersji podstawowej, to są one jednocześnie rozszerzeniami (tzn. realizując dwie wersje podstawowe robimy zadanie rozszerzone).(:if userlang en:)If a project has several basic variants, then they are also extensions -- when doing more than one basic variant, the other is counted as extension.(:if:) # (:if userlang pl:)Projekt z sieci przekonań: warianty(:if userlang en:)Belief networks project: variants (:if:) ## '''Data Mining'''. (:if userlang pl:)Znajdź strukturę sieci z danych wykorzystując jedno z poznanych narzędzi.(:if userlang en:)Find the structure of the network from data, using one of available tools.(:if:) ### (:if userlang pl:)Wersja podstawowa: odnajdź w internecie zbiór danych dla interesującego i/lub zrozumiałego dla Ciebie zagadnienia. Zinterpretuj zależności w powstałej sieci (m.in. popatrz na ich siłę; popatrz czy zależność przyczynowa jest oczywista). Opisz kilka wyników zapytań do sieci (tzn. rozkładów prawdopodobieństw dla pewnych zmiennych przy ustalonych wartościach pewnych spośród pozostałych zmiennych): czy są intuicyjne, czy zachodzi np. "explaining away" etc.(:if userlang en:)Basic version: find in the internet a dataset for a subject that interests you and/or which you understand. Interpret the dependencies in the resulting net (like, look at their strength, do they imply causal dependency, is the causality obvious). Describe results of several queries to the network (that is, probability distributions for some variables with set values for some other variables): are they intuitive, is there some "explaining away", etc.(:if:) Changed line 9 from:
(:if userlang to:
(:if userlang pl:)Pracownie i zadania:(:if userlang en:)Labs and projects:(:if:) April 08, 2009, at 07:48 PM
by - lokalization
Changed lines 1-7 from:
** [[http ** [[http Pracownie i zadania to:
(:selectlang:) (:if userlang pl:) Ciekawe nowości na stronie: (:if userlang en:) Interesting news on the page: (:if:) ** (:if userlang pl:) zadania o grach (:if userlang en:) projects about games (:if:) ** [[http://en.wikipedia.org/wiki/D*_search_algorithm | (:if userlang pl:) algorytm przeszukiwania D* (:if userlang en:) search algorithm D* (:if:) ]] (:if userlang pl:) (proste wprowadzenie do tematu z trzeciej pracowni) (:if userlang en:) (simple introduction to the theme of the third lab) (:if:) ** [[http://www.youtube.com/watch?v=s9G7DRTuB5s | ''Case Based Reasoning'' for Game AI]] (Tech Talk) (:if userlang en:)Pracownie i zadania:(:if userlang pl:)Labs and projects:(:if:) April 07, 2009, at 08:28 PM
by - CBR for game AI
Changed lines 4-6 from:
to:
** [[http://www.youtube.com/watch?v=s9G7DRTuB5s | ''Case Based Reasoning'' for Game AI]] (Tech Talk wideo) Changed line 112 from:
to:
** [[http://www.youtube.com/watch?v=s9G7DRTuB5s | ''Case Based Reasoning'' for Game AI]] April 07, 2009, at 12:57 AM
by - gry heurystyki
Changed lines 1-3 from:
Ciekawe nowości na stronie: zadania o grach. to:
Ciekawe nowości na stronie: ** zadania o grach ** [[http://en.wikipedia.org/wiki/D*_search_algorithm | algorytm przeszukiwania D*]] (proste wprowadzenie do tematu z trzeciej pracowni) Pracownie i zadania: Added line 62:
** [[http://en.wikipedia.org/wiki/D*_search_algorithm | algorytm przeszukiwania D*]] Changed lines 94-98 from:
### Wersja podstawowa wariant ''(b)'': ### Rozszerzenie 2: zaimplementuj modyfikacj ### Rozszerzenie 3: zaproponuj / zaprogramuj modyfikacj ### Rozszerzenie 5 to:
### Wersja podstawowa wariant ''(b)'': zaprogramuj modyfikację algorytmu alfa-beta odcięć tak, aby przerywał obliczenia w momencie wyczerpania się czasu zegarowego przeznaczonego na ruch, zwracając najlepszy ruch wedle dokonanych obliczeń. Wykorzystaj np. iteracyjne pogłębianie. ### Rozszerzenie 2: zaproponuj / zaprogramuj (np.) modyfikację algorytmu alfa-beta odcięć tak, aby działał w ramach czasu zegarowego przeznaczonego mu na całą grę. Jeśli suma czasów zużytych na podjęcie ruchów przez gracza przekroczy ten czas, gracz przegrywa. Możesz dla uproszczenia uznać, że algorytm myśli tylko w czasie podejmowania przez siebie ruchu. Algorytm ma do dyspozycji czasy wykorzystane przez przeciwnika, grającego z tym samym limitem. Możliwie rozsądnie wyznacz ilość obliczeń/czasy na poszczególne ruchy (możesz eksperymentować). ### Rozszerzenie 3: zmodyfikuj wariant ''(a)'', zaprogramuj współbieżne/równoległe asynchroniczne działanie algorytmów. Tzn. każdy gracz może wykonać kilka ruchów pod rząd, jeśli drugi gracz nie zdąży wykonać ruchu w międzyczasie. Reguły twojej gry muszą dać się jakoś zinterpretować w takiej sytuacji. Gdy gracze doprowadzą do jakiegoś rodzaju stagnacji, to mogą postulować remis. ### Rozszerzenie 4: zaproponuj / zaprogramuj rozsądny sposób dysponowania czasem w sytuacji z rozrzerzenia 4, np. przetestuj różne strategie. Changed line 99 from:
### Wersja podstawowa wariant ''(a)'': Uruchom system GGP: serwer gier i klientów (wykorzystaj dostę to:
### Wersja podstawowa wariant ''(a)'': Uruchom system GGP: serwer gier i klientów (wykorzystaj dostępnego gotowego gracza). Added lines 101-110:
# Pracownia z gier 2: udoskonalenia i heurystyki ** [[http://en.wikipedia.org/wiki/Alpha-beta_pruning#Heuristic_improvements | Alfa-beta: udoskonalenia]] ** [[http://en.wikipedia.org/wiki/Quiescence_search | Quiescence search]] ** [[http://en.wikipedia.org/wiki/Transposition_table | Transposition table]] albo tzw. [[http://www.cs.ualberta.ca/~sutton/book/ebook/node68.html | afterstates]] ** [[http://en.wikipedia.org/wiki/Null-move_heuristic | Null-move heuristic]] ** [[http://en.wikipedia.org/wiki/Expectiminimax | Gry losowe -- expecti(mini)max]] ** [[http://www.math.uaa.alaska.edu/~afkjm/papers/empsearch.pdf | Hierarchical Heuristic Search Techniques for Empire-Based Games]] (Kenrick Mock) ** [[http://www.personeel.unimaas.nl/m-winands/documents/informed_search.pdf | Informed Search in Complex Games]] (by Mark Winands) ** [[Attach:AGI/GGP.pdf | General Game Playing]] April 04, 2009, at 05:04 PM
by - GGP
Changed lines 1-3 from:
Ciekawe nowości na stronie: to:
Ciekawe nowości na stronie: zadania o grach. Added lines 96-98:
## '''General Game Playing'''. To zadanie nie jest przypisane konkretnemu zestawowi zadań, bo obejmuje szerszy zakres materiału z wykładu. Można je oddać w terminie dowolnego zestawu zadań. ### Wersja podstawowa wariant ''(a)'': Uruchom system GGP: serwer gier i klientów (wykorzystaj dostępnych gotowych graczy). ### Wersja podstawowa wariant ''(b)'': Sformalizuj być może uproszczoną wersję jednej ze swoich ulubionych gier komputerowych (!) w ''Game Description Language''. April 04, 2009, at 04:56 PM
by - gry z czasem
Added line 37:
## Jeśli zadanie ma kilka wariantów wersji podstawowej, to są one jednocześnie rozszerzeniami (tzn. realizując dwie wersje podstawowe robimy zadanie rozszerzone). Changed lines 89-95 from:
## '''Gry to:
## '''Gry z limitem czasowym'''. '''Gry w czasie rzeczywistym'''. ### Wersja podstawowa wariant ''(a)'': zaimplementuj lub zmodyfikuj istniejący program-grę dwuosobową, tak aby pozwalał na grę dwóch różnych algorytmów przeciw sobie (może to być ten sam algorytm ale z różnymi parametrami). ### Wersja podstawowa wariant ''(b)'': zaproponuj modyfikację algorytmu alfa-beta odcięć tak, aby przerywał obliczenia w momencie wyczerpania się czasu zegarowego przeznaczonego na ruch, zwracając najlepszy ruch wedle dokonanych obliczeń, i jednocześnie wykorzystywał ten czas w możliwie rozsądny sposób (tzn. na tyle rozsądny na ile Ci wyjdzie...) ### Rozszerzenie 2: zaimplementuj modyfikację z wariantu ''(b)''. ### Rozszerzenie 3: zaproponuj / zaprogramuj modyfikację algorytmu alfa-beta odcięć tak, aby działał w ramach czasu zegarowego przeznaczonego mu na całą grę. Jeśli suma czasów zużytych na podjęcie ruchów przez gracza przekroczy ten czas, gracz przegrywa. Możesz dla uproszczenia uznać, że algorytm myśli tylko w czasie podejmowania przez siebie ruchu. Algorytm ma do dyspozycji czasy wykorzystane przez przeciwnika, grającego z tym samym limitem. Możliwie rozsądnie wyznacz ilość obliczeń/czasy na poszczególne ruchy. ### Rozszerzenie 4: zmodyfikuj wariant ''(a)'', zaprogramuj współbieżne/równoległe asynchroniczne działanie algorytmów. Tzn. każdy gracz może wykonać kilka ruchów pod rząd, jeśli drugi gracz nie zdąży wykonać ruchu w międzyczasie. Reguły twojej gry muszą dać się jakoś zinterpretować w takiej sytuacji. Gdy gracze doprowadzą do jakiegoś rodzaju stagnacji, to mogą postulować remis. ### Rozszerzenie 5: zaproponuj / zaprogramuj rozsądny sposób dysponowania czasem w sytuacji z rozrzerzenia 4, np. przetestuj różne strategie. Changed line 54 from:
### Rozszerzenie 2: zaproponuj / zaprogramuj mechanizm uaktualniania modelu w czasie to:
### Rozszerzenie 2: zaproponuj / zaprogramuj mechanizm uaktualniania modelu w czasie rozgrywki lub po kilku rozgrywkach. Changed line 31 from:
## Patrząc na kryteria to:
## Patrząc na kryteria oceniania: April 04, 2009, at 03:03 PM
by - kryteria oceny
Added lines 31-36:
## Patrząc na kryteria punktacji: *** Trzeba zrobić dwa rozszerzone zadania i bez mankamentów (20+20=40pkt), lub trzy podstawowe zadania (średnio 40/3=13pkt za zadanie -- wystarczy wersja podstawowa) żeby mieć szansę na piątkę. (40pkt za małe projekty) *** Trzeba zrobić dwa podstawowe zadania bez mankamentów (15+15=30pkt) lub trzy podstawowe niedopieszczone zadania (średnio 10pkt za zadanie) żeby mieć szansę na cztery z plusem (30pkt za małe projekty). *** Trzeba zrobić dwa podstawowe niedopieszczone zadania (10+10=20pkt) lub jedno rozszerzone zadanie bez mankamentów zeby mieć szansę na czwórkę. ## Proszę nie czekać na ostatnią chwilę, bo pokazując wcześniej można ze mną negocjować co znaczy "bez mankamentów". ## Można też wynegocjować uznanie wyników częściowych z dużego projektu jako zadanie, jeśli będą zgłoszone w odpowiednim terminie (ale wtedy punktacja za duży projekt będzie mierzyć późniejszy wkład pracy). Deleted line 58:
Changed line 73 from:
### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniarza (w szczególności, dokładne położenie magazyniarza jest nieistotne, istotne są pozycje osiągalne przez magazyniarza). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać zbiór akcji-taktyk: konfiguracja wynikowa (dla poziomu strategicznego), faktyczne ruchy magazyniarza do wykonania (dla systemu gry). Przykład: @@#@@ to ściana, @@*@@ to to:
### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniarza (w szczególności, dokładne położenie magazyniarza jest nieistotne, istotne są pozycje osiągalne przez magazyniarza). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać zbiór akcji-taktyk: konfiguracja wynikowa (dla poziomu strategicznego), faktyczne ruchy magazyniarza do wykonania (dla systemu gry). Przykład: @@#@@ to ściana, @@*@@ to skrzynia, tylko krańcowe pozycje są istotne:[@ Changed line 79 from:
### Rozszerzenie 3: Nie proponuj poziomowi strategicznemu martwych konfiguracji w rodzaju zablokowanych to:
### Rozszerzenie 3: Nie proponuj poziomowi strategicznemu martwych konfiguracji w rodzaju zablokowanych skrzyń:[@ Changed line 81 from:
### #@] Wykrywaj martwe konfiguracje ogólnym mechanizmem a nie przez ręczne zakodowanie szczególnych przypadków: np. przy pomocy więzów, albo algorytmu A* odpalonego na istotnym dla danej to:
### #@] Wykrywaj martwe konfiguracje ogólnym mechanizmem a nie przez ręczne zakodowanie szczególnych przypadków: np. przy pomocy więzów, albo algorytmu A* odpalonego na istotnym dla danej skrzyni fragmencie konfiguracji, żeby sprawdzić czy da się ją ruszyć. Changed line 73 from:
### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniarza (w szczególności, dokładne położenie magazyniarza jest nieistotne, istotne są pozycje osiągalne przez magazyniarza). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać to:
### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniarza (w szczególności, dokładne położenie magazyniarza jest nieistotne, istotne są pozycje osiągalne przez magazyniarza). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać zbiór akcji-taktyk: konfiguracja wynikowa (dla poziomu strategicznego), faktyczne ruchy magazyniarza do wykonania (dla systemu gry). Przykład: @@#@@ to ściana, @@*@@ to beczka, tylko krańcowe pozycje są istotne:[@ March 31, 2009, at 05:45 AM
by - sokoban
Changed line 68 from:
## '''Konstrukcja heurystyk''': rozwiąż przy pomocy algorytmu A* jedną z [[http://www.ii.uni.wroc.pl/~prych/SI/puzzle/ | łamigłówek z budapesztańskich mistrzostw]]. to:
## '''Konstrukcja heurystyk''': rozwiąż (napisz rozwiązywaczkę) przy pomocy algorytmu A* jedną z [[http://www.ii.uni.wroc.pl/~prych/SI/puzzle/ | łamigłówek z budapesztańskich mistrzostw]]. Changed lines 71-81 from:
### Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie to:
### Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie (wariant ''a'') lub więzami (wariant ''b''), a następnie algorytmem A*. W jaki sposób przekształciłeś algorytm rozwiązywania problemu w heurystykę? ## '''Sokoban''': rozwiąż (napisz rozwiązywaczkę) przy pomocy algorytmu A* grę logiczną Sokoban. ### Rozszerzenie 1 -- '''strategia a taktyka''': podziel rozwiązywaczkę na dwa poziomy. Na poziomie strategicznym, algorytm A* szuka rozwiązania w przestrzeni stanów taktycznie istotnych, gdzie pojedyncza akcja wymaga wielu kroków magazyniarza (w szczególności, dokładne położenie magazyniarza jest nieistotne, istotne są pozycje osiągalne przez magazyniarza). Na poziomie taktycznym, zaprogramuj mechanizm znajdowania konfiguracji taktycznie istotnych osiągalnych z bieżącej konfiguracji. Poziom taktyczny powinien zwracać akcję-taktykę: faktyczne ruchy magazyniarza do wykonania w grze. Przykład: @@#@@ to ściana, @@*@@ to beczka, tylko krańcowe pozycje są istotne:[@ #*# # # # # # # # # #*# # # # # # # # # #*# # # # # # # # # #*#@] ### Rozszerzenie 2: wykorzystaj programowanie więzów w implementacji pozmiomu taktycznego. ### Rozszerzenie 3: Nie proponuj poziomowi strategicznemu martwych konfiguracji w rodzaju zablokowanych beczek:[@ ** #* ### #@] Wykrywaj martwe konfiguracje ogólnym mechanizmem a nie przez ręczne zakodowanie szczególnych przypadków: np. przy pomocy więzów, albo algorytmu A* odpalonego na istotnym dla danej beczki fragmencie konfiguracji, żeby sprawdzić czy da się ją ruszyć. March 31, 2009, at 02:30 AM
by - Gosix
Deleted line 54:
Added lines 56-59:
*** [[http://www.gecode.org/doc-latest/modeling.pdf | Modeling with Gecode]] *** [[http://www.ps.uni-sb.de/Papers/abstracts/tackDiss.html | Constraint Propagation -- Models, Techniques, Implementation]] (Guido Tack) ** [[http://donyc.pop.e-wro.pl/checkers/ | aplet z warcabami]] ** [[http://sourceforge.net/projects/minigosix/ | Mini Gosix (autor: Tautrimas Pajarskas)]] (gra planszowa Gosix stworzona przez: Pierre Canuel) March 30, 2009, at 07:31 PM
by - dynamiczna arena
Changed lines 2-6 from:
* [[http://www.norsys.com/netlibrary/index.htm | Bayes Net Library]] * [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]] to:
Changed line 58 from:
## '''Znajdowanie ścieżki w dynamicznym środowisku''': zaprogramuj agenta przechodzącego z punktu startowego do punktu docelowego w sytuacji, gdy mapa którą dysponuje nie odpowiada dokładnie rzeczywistości. to:
## '''Znajdowanie ścieżki w dynamicznym środowisku''': zaprogramuj agenta przechodzącego z punktu startowego do punktu docelowego w sytuacji, gdy mapa którą dysponuje nie odpowiada dokładnie rzeczywistości, albo rzeczywistość jest zmienna. Added line 60:
**** Alternatywnie, agent dysponuje pełną informacją o arenie, ale na arenie pojawiają się nowe przeszkody w przypadkowych miejscach i momentach. Added line 64:
**** Alternatywnie, agent dysponuje pełną informacją o arenie, ale arena może się w każdej chwili "nieznacznie" zmienić. March 30, 2009, at 01:20 PM
by - wiezy
Added lines 57-59:
# Pracownia z więzów i z gier ** [[http://www.ps.uni-sb.de/Papers/abstracts/tackDiss.html | Constraint Propagation -- Models, Techniques, Implementation]] (Guido Tack) ** [[http://www.gecode.org/ | generic constraint development environment -- Gecode]] Changed line 62 from:
### Rozszerzenie 3: uwzględnij możliwość występowania na arenie "okazji": komórek osiągalnych, które nie były osiągalne na mapie. Sugerowane algorytmy: "Lifelong Planning A*", "D*". to:
### Rozszerzenie 3: uwzględnij możliwość występowania na arenie "okazji": komórek osiągalnych, które nie były osiągalne na mapie. Sugerowane algorytmy: "Lifelong Planning A*", "D* Lite". March 26, 2009, at 01:51 AM
by - sklejone notatki
Changed lines 56-58 from:
** *** [[Attach:AGI/GGP.pdf | General Game Playing to:
** [[Attach:SearchDynamic.pdf | Przeszukiwanie A* w dynamicznym środowisku]] Changed line 66 from:
### Wersja podstawowa: [[Paweł Rychlikowski sugeruje ''Hiroimono'' lub ''Divide into Squares'']]. to:
### Wersja podstawowa: [[http://www.ii.uni.wroc.pl/~prych/SI/wstepne.html | Paweł Rychlikowski sugeruje ''Hiroimono'' lub ''Divide into Squares'']]. March 25, 2009, at 05:27 PM
by - przeszukiwanie 2
Changed lines 64-65 from:
### Rozszerzenie 3: uwzględnij możliwość ## to:
### Rozszerzenie 3: uwzględnij możliwość występowania na arenie "okazji": komórek osiągalnych, które nie były osiągalne na mapie. Sugerowane algorytmy: "Lifelong Planning A*", "D*". ## '''Konstrukcja heurystyk''': rozwiąż przy pomocy algorytmu A* jedną z [[http://www.ii.uni.wroc.pl/~prych/SI/puzzle/ | łamigłówek z budapesztańskich mistrzostw]]. ### Wersja podstawowa: [[Paweł Rychlikowski sugeruje ''Hiroimono'' lub ''Divide into Squares'']]. ### Rozszerzenie 1: rozwiąż inną spośród łamigłówek. Porównaj opracowane przez ciebie heurystyki: jakie idee mają wspólne, a co jest w nich specyficzne dla zadania? ### Rozszerzenie 2: ''najpierw'' rozwiąż łamigłówkę algorytmicznie, a następnie algorytmem A*. W jaki sposób przekształciłeś algorytm rozwiązywania problemu w heurystykę? ## '''Gry''' dodam później. March 25, 2009, at 04:37 PM
by - przeszukiwanie 1
Added lines 59-65:
# Projekt z przeszukiwania heurystycznego i gier: warianty ## '''Znajdowanie ścieżki w dynamicznym środowisku''': zaprogramuj agenta przechodzącego z punktu startowego do punktu docelowego w sytuacji, gdy mapa którą dysponuje nie odpowiada dokładnie rzeczywistości. ### Wersja podstawowa: mamy sytuację podobną do rozpatrywanej na pracowni: szukamy ścieżki na dwuwymiarowej arenie. Jednak mamy do dyspozycji dwie mapy: ''mapę'', która jest w pełni dostępna algorytmowi, oraz ''arenę'', którą będziemy udostępniać algorytmowi tylko dla komórek sąsiadujących z zajmowaną przez agenta (możesz udostępnić bezpośrednio sąsiadujące bądź sąsiadujące w ustalonym promieniu); algorytm oczywiście powinien zapamiętywać potrzebną informację. Załóżmy wstępnie, że mapa nie ma fałszywych przeszkód. Zaprowadź agenta do celu minimalizując, w kolejności istotności: ilość rzeczywiście podjętych przez agenta kroków, złożoność obliczeń wykonywanych podczas ruchu agenta, złożoność obliczeń wstępnych. Sugerowane algorytmy: "Adaptive A*", "Real-Time Adaptive A*", "Prioritorized Learning Real-Time A*". ### Rozszerzenie 1: jeśli w wersji podstawowej udostępniałeś algorytmowi jedynie komórki areny bezpośrednio sąsiadujące z agentem, to teraz rozszerz "pole widzenia" do większego promienia. Wariant ''(1a)'': wprowadź "zawodność obserwacji": specjalne komórki, które z sąsiedztwa wyglądają na osiągalne, ale akcja wkroczenia na nie okazuje się niewykonalna. Wariant ''(1b)'': wprowadź zmienny cel: na arenie cel może okazać się w innym miejscu, niż był na mapie (agent musi zaobserwować komórkę prawdziwego celu, żeby się przekonać) -- jednak zwykle niedaleko od celu z mapy. #### Rozszerzenie 2: wolno przemieszczający się cel: po zbliżeniu się agenta do celu, ten zaczyna uciekać. ### Rozszerzenie 3: uwzględnij możliwość pojawienia się na arenie "okazji": komórek osiągalnych, które nie były osiągalne na mapie. Sugerowane algorytmy: "Lifelong Planning A*", "D*". ## Changed line 57 from:
*** [[Attach:RL_Ch4_Real_time_search.pdf | Real Time Search and Dynamic Programming]] to:
*** [[Attach:RL_Ch4_Real_time_search.pdf | Real Time Search and Dynamic Programming]] podrozdział "Deterministic Search" Changed line 58 from:
*** [[Attach: to:
*** [[Attach:AGI/GGP.pdf | General Game Playing]] początek rozdziału "Search and Planning" March 24, 2009, at 01:20 AM
by - A*
Added lines 54-58:
# Pracownia z przeszukiwania w przestrzeni stanów ** [[http://donyc.pop.e-wro.pl/astar/ | Przeszukiwanie labiryntów algorytmem A*]] ** "extras": Wariacje na temat A* *** [[Attach:RL_Ch4_Real_time_search.pdf | Real Time Search and Dynamic Programming]] *** [[Attach:GGP/GGP.pdf | General Game Playing]] początek rozdziału "Search and Planning" Changed line 42 from:
### Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant ''(c)''). Osoba ta nie może być kolegą (koleżanką) z naszego przedmiotu; dobrze, jeśli wogóle nie jest studentem bądź absolwentem informatyki lub matematyki. (Częścią zadania jest namówienie kogoś, by nam pomógł.) to:
### Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant ''(c)''). Osoba ta nie może być kolegą (koleżanką) z naszego przedmiotu; dobrze, jeśli wogóle nie jest studentem bądź absolwentem informatyki lub matematyki. (Częścią zadania jest namówienie kogoś, by nam pomógł.) W raporcie zamieść transkrypcję fragmentu wywiadu. Changed line 37 from:
### Rozszerzenie 1: samodzielnie zgromadź dane. Możesz np. podpiąć się do jakiejś aplikacji i przeprowadzić logowanie jej to:
### Rozszerzenie 1: samodzielnie zgromadź dane. Możesz np. podpiąć się do jakiejś aplikacji i przeprowadzić logowanie jej zmiennych. Możesz skonstruować model deterministyczny jakiegoś zjawiska (tylko zmienne wejściowe będą losowane), ale część zmiennych wejściowych pozostawić ukrytych przed modelowaniem statystycznym (co spowoduje, że część z pozostałych zależności nabierze charakteru losowego). March 23, 2009, at 05:49 PM
by - akwizycja ograniczenie
Added line 23:
*** [[http://www.dataonstage.com/BNT/PACKAGES/LinkStrength/index.html | LinkStrength Package for BNT]] Changed line 42 from:
### Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant ''(c)''). to:
### Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant ''(c)''). Osoba ta nie może być kolegą (koleżanką) z naszego przedmiotu; dobrze, jeśli wogóle nie jest studentem bądź absolwentem informatyki lub matematyki. (Częścią zadania jest namówienie kogoś, by nam pomógł.) Changed line 34 from:
## Data Mining. Znajdź strukturę sieci z danych wykorzystując jedno z poznanych narzędzi. to:
## '''Data Mining'''. Znajdź strukturę sieci z danych wykorzystując jedno z poznanych narzędzi. Changed line 39 from:
## Akwizycja i reprezentacja wiedzy. Samodzielnie skonstruuj sieć przekonań (jej strukturę i parametry). to:
## '''Akwizycja i reprezentacja wiedzy'''. Samodzielnie skonstruuj sieć przekonań (jej strukturę i parametry). Changed line 47 from:
## Teoriodecyzyjne heurystyki w przeszukiwaniu i grach. Skonstruuj sieć przekonań z węzłem/węzłami decyzyjnymi oraz węzłem wartości/nagrody/użyteczności/kosztu; patrz [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. Dziedziną modelu ma być problem przeszukiwania (gra jedno-osobowa) lub gra dwuosobowa. to:
## '''Teoriodecyzyjne heurystyki w przeszukiwaniu i grach'''. Skonstruuj sieć przekonań z węzłem/węzłami decyzyjnymi oraz węzłem wartości/nagrody/użyteczności/kosztu; patrz [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. Dziedziną modelu ma być problem przeszukiwania (gra jedno-osobowa) lub gra dwuosobowa. March 23, 2009, at 03:51 AM
by - projekt z sieci bayesowskich
Changed line 19 from:
** [[http://www.openbayes.org/ | Open Bayes for Python]] (częściowy klon BNT) to:
** [[http://www.openbayes.org/ | Open Bayes for Python]] (częściowy klon BNT, tylko zmienne dyskretne) Changed lines 25-26 from:
*** [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]] to:
*** [[http://www.norsys.com/netlibrary/index.htm | Bayes Net Library]] *** [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]] # Warunki oceny małych projektów ## Za wersję podstawową można dostać maksymalnie 15 punktów (za ładny raport z dołączonymi -- tzn. wysłanymi mailem lub wskazanymi url-em -- źródłami w postaci wykorzystanych programów / skryptów dla przeprowadzonych eksperymentów / danych). ## Wystarczy jedno rozszerzenie, aby uzyskać maksimum: 20 punktów (ale nie dostaje się ich automatycznie za samo zrealizowanie wersji rozszerzonej). Niektóre rozszerzenia mogą się okazać bardzo mało czasochłonne w realizacji, nie ma konieczności ograniczać się do jednego ;-) ## Jeśli wkręcisz się w realizowanie rozszerzeń, dodatkowe rozszerzenia mogą stanowić treść dużego projektu (końcowego). ## Wiele rozszerzeń ma dwa warianty: poglądowy "teoretyczny" (zaproponuj) i rzeczywisty (zaprogramuj). Na mały projekt często wystarczy wariant poglądowy, na duży projekt wskazany jest wariant rzeczywisty. ## Warto przeczytać treść wszystkich wariantów projektów. # Projekt z sieci przekonań: warianty ## Data Mining. Znajdź strukturę sieci z danych wykorzystując jedno z poznanych narzędzi. ### Wersja podstawowa: odnajdź w internecie zbiór danych dla interesującego i/lub zrozumiałego dla Ciebie zagadnienia. Zinterpretuj zależności w powstałej sieci (m.in. popatrz na ich siłę; popatrz czy zależność przyczynowa jest oczywista). Opisz kilka wyników zapytań do sieci (tzn. rozkładów prawdopodobieństw dla pewnych zmiennych przy ustalonych wartościach pewnych spośród pozostałych zmiennych): czy są intuicyjne, czy zachodzi np. "explaining away" etc. ### Rozszerzenie 1: samodzielnie zgromadź dane. Możesz np. podpiąć się do jakiejś aplikacji i przeprowadzić logowanie jej parametrów. Możesz skonstruować model deterministyczny jakiegoś zjawiska (tylko zmienne wejściowe będą losowane), ale część zmiennych wejściowych pozostawić ukrytych przed modelowaniem statystycznym (co spowoduje, że część z pozostałych zależności nabierze charakteru losowego). ### Rozszerzenie 2: wyraź posiadaną wiedzę o zagadnieniu w postaci więzów (twardych, a może również miękkich), lub w postaci początkowej sieci przekonań. Porównaj sieć znalezioną z uwzględnieniem twojej wiedzy, z siecią którą (to samo lub inne) narzędzie odnalazło przy braku wiedzy startowej (z w pewnym sensie "jednostajnym" rozkładem a priori na struktury sieci). ### Rozszerzenie 3: urozmaić strukturę sieci: węzły innego typu niż dyskretne ze stabulowanymi prawdopodobieństwami warunkowymi (np. dla zmiennych ciągłych); zmienne ukryte (nie obserwowane, wogóle albo zazwyczaj, w danych uczących). ## Akwizycja i reprezentacja wiedzy. Samodzielnie skonstruuj sieć przekonań (jej strukturę i parametry). ### Wersja podstawowa: skonstruuj prostszą sieć (wariant ''(a)'') lub wprowadź/zaimportuj trudniejszą sieć odnalezioną w internecie (wariant ''(b)''). Opisz zależności w sieci oraz kilka wyników zapytań do sieci (jak w wariancie ''Data Mining''). ### Rozszerzenie 1: skonstruuj sieć przeprowadzając wywiad z osobą, która zna się na analizowanym zagadnieniu (wariant ''(c)''). ### Rozszerzenie 2: zaplanuj (i może też zaprogramuj) mechanizm gromadzenia danych w trakcie użytkowania modelu, oraz okresową automatyczną aktualizację parametrów modelu (a być może również struktury modelu, choć to mniej bezpieczne); możesz potrzebować narzędzia dopuszczającego nieobserwowanie niektórych zmiennych w danych uczących. Rozważ "trade-off" pomiędzy konserwatywnym zachowaniem posiadanego modelu a nadążaniem z modelem za gromadzonymi danymi. Niektóre narzędzia pozwolą ci wyrazić stary model bezpośrednio, np. jako parametry "a priori" dla rozkładu Dirichleta. Jeśli twoje narzędzie tego nie potrafi, będziesz musiał wygenerować odpowiednią porcję danych ze starego modelu, żeby zrównoważyć wpływ wiedzy względem wpływu napłyniętych obserwacji. **** Jeśli model służy do predykcji, to użytkownik może powiedzieć później, co stało się naprawdę. **** Jeśli model wspiera podejmowanie decyzji, to użytkownik może później ocenić podjętą decyzję. **** Jeśli dane (ang. "evidence") w zapytaniach użytkownika nie mają charakteru hipotetycznego ale są zaobserwowane, np. są to objawy obserwowane u pacjenta, to zarejestruj je; dobry model pomiędzy objawami może zaoszczędzić na badaniach diagnostycznych. Gromadząc dane spływające z całego regionu wydobywamy wiedzę o charakterze epidemiologicznym itd. ### Rozszerzenie 3: urozmaić strukturę sieci (jak w rozrzerzeniu 3 wariantu ''Data Mining''): węzły innego typu niż dyskretne, zmienne ukryte itd. ## Teoriodecyzyjne heurystyki w przeszukiwaniu i grach. Skonstruuj sieć przekonań z węzłem/węzłami decyzyjnymi oraz węzłem wartości/nagrody/użyteczności/kosztu; patrz [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]]. Dziedziną modelu ma być problem przeszukiwania (gra jedno-osobowa) lub gra dwuosobowa. ### Wersja podstawowa: Zmiennymi "środowiskowymi" są parametry stanu przeszukiwania / stanu gry. Zmienna / zmienne decyzyjne dostarczają parametrów operatorowi przejścia do kolejnego stanu. Stan gry może decydować, które zmienne są obserwowane w trakcie używania modelu (np. kolejne decyzje nasze/przeciwnika w grze o niewielkiej ilości ruchów, np. pokerze czy "oczku"). Niektóre zmienne mogą wogóle nie być obserwowalne w trakcie używania struktury, ale być łatwo dostępne dla uczenia struktury (np. kolejny ruch przeciwnika). ### Rozszerzenie 1: zamiast konstruować model "z palca" albo "z internetu", zaproponuj / zaprogramuj generator danych a następnie znajdź model z wygenerowanych danych. W generowanych danych za wartość zmiennej "heurystyka" podstaw estymowaną odległość od rozwiązania (poprzez najkrótszą z rzeczywiście znalezionych ścieżek do rozwiązania) lub wypróbkowane prawdopodobieństwo wygranej (jaka część spośród rozgrywek przechodzących przez dany stan zakończyła się wygraną). W generatorze wykorzystaj najlepsze dostępne ci heurystyki żeby przyspieszyć generowanie i poprawić jakość danych. ### Rozszerzenie 2: zaproponuj / zaprogramuj mechanizm uaktualniania modelu w czasie rozrywki lub po kilku rozgrywkach. ### Rozszerzenie 3: zaproponuj / zaprogramuj strategię przeszukiwania / strategię rozgrywki, która nie kieruje się chęcią maksymalizacji nagrody, ale chęcią jak najsprawniejszego poprawienia jakości modelu. #### Rozszerzenie 4: zaproponuj, wykorzystując teorię bayesowskiego uczenia ze wzmocnieniem, mechanizm optymalnego wyboru ruchu, uwzględniający, że poprawienie jakości modelu poprawi skuteczność maksymalizacji nagrody. Added lines 2-10:
* [[http://ai.stanford.edu/~paskin/gm-short-course/ | A Short Course on Graphical Models]] (Mark A. Paskin) * [[http://www.norsys.com/netlibrary/index.htm | Bayes Net Library]] * [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]] # Pracownia z sieci bayesowskich: [[http://b-course.cs.helsinki.fi/obc/depend.html | Dependence modeling trails]] (kurs online z Helsinek) ** [[http://sequoia.ict.pwr.wroc.pl/~witold/ai/ai_baynet_s.pdf | Wykład 8: Wnioskowanie na probabilistycznych sieciach przekonań]] ** [[http://research.microsoft.com/apps/pubs/default.aspx?id=69588 | A Tutorial on Learning With Bayesian Networks]] (David Heckerman, Mar. 1995) ** [[http://opus.zbw-kiel.de/volltexte/2007/6175/pdf/economics_2007-11.pdf | Learning Causal Relations in Multivariate Time Series Data]] (Pu Chen and Hsiao Chihying) Deleted lines 11-18:
# Pracownia z sieci bayesowskich: [[http://b-course.cs.helsinki.fi/obc/depend.html | Dependence modeling trails]] (kurs online z Helsinek) ** [[http://sequoia.ict.pwr.wroc.pl/~witold/ai/ai_baynet_s.pdf | Wykład 8: Wnioskowanie na probabilistycznych sieciach przekonań]] ** [[http://research.microsoft.com/apps/pubs/default.aspx?id=69588 | A Tutorial on Learning With Bayesian Networks]] (David Heckerman, Mar. 1995) ** [[http://opus.zbw-kiel.de/volltexte/2007/6175/pdf/economics_2007-11.pdf | Learning Causal Relations in Multivariate Time Series Data]] (Pu Chen and Hsiao Chihying) ** [[http://ai.stanford.edu/~paskin/gm-short-course/ | A Short Course on Graphical Models]] (Mark A. Paskin) Changed lines 24-26 from:
** [[http://www.norsys.com/ | Norsys Software Corp. '''Netica''']] (''the world's most widely used Bayesian network development software'') to:
** [[http://www.norsys.com/ | Norsys Software Corp. '''Netica''']] (''the world's most widely used Bayesian network development software'') *** [[http://www.norsys.com/netlibrary/index.htm | Bayes Net Library]] *** [[http://www.norsys.com/tutorials/netica/secA/tut_A4.htm | Basic Decision Making with Bayes Nets]] Changed lines 3-5 from:
** [[http://www.norsys.com/ | Norsys Software Corp. ''Netica'']] to:
** [[http://www.norsys.com/ | Norsys Software Corp. ''Netica'']] Changed line 23 from:
** [[http://www.norsys.com/ | Norsys Software Corp. ''Netica'']] ('' to:
** [[http://www.norsys.com/ | Norsys Software Corp. '''Netica''']] (''the world's most widely used Bayesian network development software'') Changed lines 3-4 from:
to:
** [[http://www.norsys.com/ | Norsys Software Corp. ''Netica'']] ('''the world's most widely used Bayesian network development software''') March 22, 2009, at 10:47 PM
by - Netica
Added line 22:
** [[http://www.norsys.com/ | Norsys Software Corp. ''Netica'']] ('''the world's most widely used Bayesian network development software''') March 22, 2009, at 01:53 PM
by - GM course
Added lines 1-4:
Ciekawe nowości na stronie: ** [[http://ai.stanford.edu/~paskin/gm-short-course/ | A Short Course on Graphical Models]] (Mark A. Paskin) Changed line 9 from:
** [[http:// to:
** [[http://ai.stanford.edu/~paskin/gm-short-course/ | A Short Course on Graphical Models]] (Mark A. Paskin) Changed lines 15-16 from:
*** [[http://ano.malo.us/pebl/docs/data.html | data *** [[http://ano.malo.us/pebl/docs/prior.html | prior to:
*** [[http://ano.malo.us/pebl/docs/data.html | data: Pebl Dataset]] *** [[http://ano.malo.us/pebl/docs/prior.html | prior: Prior models]] March 17, 2009, at 07:59 AM
by - BNT
Added lines 15-17:
** [[http://www.cs.ubc.ca/~murphyk/Software/BNT/bnt.html | Bayes Net Toolbox for Matlab]] *** [[http://www.cs.ubc.ca/~murphyk/Software/BNT/usage.html | How to use BNT]] ** [[http://bnj.sourceforge.net/ | Bayesian Network tools in Java (BNJ)]] March 17, 2009, at 06:00 AM
by - pybayes
Changed lines 13-14 from:
** to:
** [[http://www.openbayes.org/ | Open Bayes for Python]] (częściowy klon BNT) *** [[https://developer.berlios.de/svn/?group_id=5386 | svn download]] March 17, 2009, at 05:26 AM
by - JavaBayes
Changed lines 6-7 from:
# Pracownia z sieci bayesowskich 2: [[http:// to:
# Pracownia z sieci bayesowskich 2: ** [[http://sequoia.ict.pwr.wroc.pl/~witold/ai/JavaBayes/ | JavaBayes]] (kopia lokalna na stronie wykładowcy) *** [[http://www.cs.cmu.edu/~javabayes/Home/ | JavaBayes Home]] (dokumentacja) ** [[http://code.google.com/p/pebl-project/ | pebl: Python Environment For Bayesian Learning]] *** [[http://ano.malo.us/pebl/docs/ | Pebl v1.0.1 documentation]] *** [[http://ano.malo.us/pebl/docs/data.html | data – Pebl Dataset]] *** [[http://ano.malo.us/pebl/docs/prior.html | prior – Prior models]] ** March 16, 2009, at 11:25 PM
by - pebl bayes nets python
Changed lines 5-7 from:
** [[http://web.cs.wpi.edu/~cs539/s05/Projects/k2_algorithm.pdf | Illustration of the K2 Algorithm for Learning Bayes Net Structures]] (Prof. Carolina Ruiz) to:
** [[http://web.cs.wpi.edu/~cs539/s05/Projects/k2_algorithm.pdf | Illustration of the K2 Algorithm for Learning Bayes Net Structures]] (Prof. Carolina Ruiz) # Pracownia z sieci bayesowskich 2: [[http://code.google.com/p/pebl-project/ | pebl: Python Environment For Bayesian Learning]] ** [[http://ano.malo.us/pebl/docs/ | Pebl v1.0.1 documentation]] March 05, 2009, at 08:47 AM
by - K2
Added line 5:
** [[http://web.cs.wpi.edu/~cs539/s05/Projects/k2_algorithm.pdf | Illustration of the K2 Algorithm for Learning Bayes Net Structures]] (Prof. Carolina Ruiz) Changed line 1 from:
# Pracownia to:
# Pracownia z sieci bayesowskich: [[http://b-course.cs.helsinki.fi/obc/depend.html | Dependence modeling trails]] (kurs online z Helsinek) March 02, 2009, at 11:47 PM
by - sieci bayesowskie
Added lines 1-4:
# Pracownia 2 marca, sieci Bayesowskie: [[http://b-course.cs.helsinki.fi/obc/depend.html | Dependence modeling trails]] (kurs online z Helsinek) ** [[http://sequoia.ict.pwr.wroc.pl/~witold/ai/ai_baynet_s.pdf | Wykład 8: Wnioskowanie na probabilistycznych sieciach przekonań]] ** [[http://research.microsoft.com/apps/pubs/default.aspx?id=69588 | A Tutorial on Learning With Bayesian Networks]] (David Heckerman, Mar. 1995) ** [[http://opus.zbw-kiel.de/volltexte/2007/6175/pdf/economics_2007-11.pdf | Learning Causal Relations in Multivariate Time Series Data]] (Pu Chen and Hsiao Chihying) |