Sztuczna inteligencja
Przykłady tematów na pracownię
UWAGA: dodatkowe listy tematów wstępnych można znaleźć
tu:
- wybór semestralnego zestawu kursów do studiowania w Instytucie
Informatyki UWr, biorąc pod uwagę aktualną ofertę, wymagania,
listę kursów już zaliczonych, oraz jakąś reprezentację
preferencji studenta
- wybór kierunku studiów dla maturzysty
- wybór wycieczki górskiej dla określonej grupy turystów, biorący
pod uwagę określone wymagania: długość wycieczki i preferencje
uczestników (widokowe, wyczynowe, zainteresowania historyczne, itp.),
oraz konkretny zestaw tras turystycznych w jakimś rejonie,
np. Kotlinie Jeleniogórskiej
- doradztwo inwestycyjne: dobrać portfel inwestycji (akcji, obligacji,
innych instrumentów finansowych) do określonych wymagań klienta
- planowanie upraw rolnych dla gospodarstwa w zależności od:
gleby, klimatu, aktualnej prognozy pogody, wielkości uprawy,
dostępnego sprzętu i siły roboczej, przewidywanej
koniunktury, itp.
- wybór sposobu rozrywkowego spędzenia wieczoru piątkowego biorąc
pod uwagę preferencje, oraz istniejące w danej chwili
możliwości
- wybór imprezy, na którą warto zabrać przyjaciółkę,
albo wybór prezentu dla kobiety
- wykonanie zakupów w supermarkecie: mamy daną listę produktów do
kupienia, na której niektóre pozycje mogą być w pełni określone
(typ, producent, wielkość opakowania), a inne tylko typ i ilość
minimalna (np. mąka pszenna, 800g), oraz dostępną gotówkę;
program ma wybrać co kupić żeby spełnić wymagania i zmieścić
się w gotówce
- ogólnie dobrymi tematami są zagadnienia diagnozy: analiza przyczyn
uszkodzenia jakiegoś systemu (byle nie samochodu), i ewentualnie
sposób naprawy, na przykład:
- postępowanie w przypadku awarii systemu komputerowego
(nie bootuje się); chodzi tu o zwerbalizowanie wiedzy fachowca
potrafiącego w wielu przypadkach poradzić sobie z taką awarią
W zadaniu można zastosować dowolną z technik przeszukiwania
omówionych na wykładzie, bądź inną, z zastosowaniem funkcji oceny
wyznaczającej preferowane elementy wyboru. Może to zatem być
przeszukiwanie z nawracaniem, przeszukiwanie grafu (najpierw-najlepszy
lub A*), wyżarzanie, metody gradientowe, itp.
- wybór ruchu w jakiejś grze, np.\ odzywka w licytacji brydżowej
metodą wyboru ruchu powinno w tym wypadku być przeszukiwanie,
tzn. najpierw generacja wszystkich (albo części możliwości),
wybór jednej z nich, i poruszanie się w przestrzeni stanów
wyznaczonych przez te wybory
- układanie krzyżówki z zadanego zbioru słów
(kryterium optymalności może być sumaryczna liczba "oczek"
krzyżówki, lub pole prostokąta opisującego całą krzyżówkę)
- znajdowanie drogi przez labirynt, którego plan mamy
(nie musimy błądzić na ślepo)
- ,,rozumienie'' zdań języka naturalnego w Prologu
Pod hasłem można zrealizować szereg ciekawych projektów.
Po zdefiniowaniu małego języka naturalnego opartego na kilku
czasownikach, rzeczownikach, i innych elementach, zaczynamy od
napisania programu analizującego zdania napisane w tym języku
(zakończone kropką) i tworzącego ich reprezentację w postaci
klauzul Prologu. Należy oczywiście uprościć język w takim
stopniu (zasób słów, gramatykę i infleksję), aby dało się w
miarę prosto parsować zdania, na przykład przy użyciu notacji
reguł gramatycznych Prologu.
Po wygenerowaniu prologowej reprezentacji zdania można
zaimplementować system odpowiadania na pytania (zakończone
znakiem zapytania) dotyczące wcześniej wprowadzonych
informacji. Innym możliwym wariantem mogłoby być streszczanie
posiadanych informacji w odpowiedzi na zapytanie typu: Co wiesz o ...?
- rozpoznawanie spamu w poczcie elektronicznej
Po przeanalizowaniu pewnej ilości poczty elektronicznej określ
cechy wyróżniające spam, wyznacz prostą strategię
rozpoznawania spamu (niekoniecznie 100% poprawną) na podstawie
zawartości nagłówków i/lub treści listu, i napisz program w
Prologu implementujący tę strategię.
Strategia może rozpoznawać spam w niektórych przypadkach ,,na
pewniaka,'' posługiwać się systemem punktowania, ich
połączeniem, bądź jeszcze innymi podejsciami, jednak powinna
być zgodna z opracowaną koncepcją, tzn.\ w treści programu
powinny znaleźć się elementy odpowiadające elementom
konceptualnym wymyślonym przez człowieka.
- manipulacja formułami matematycznymi
Szereg tematów tradycyjnie podejmowanych w sztucznej inteligencji,
z bogatą literaturą dotyczy manipulacji formuł matematycznych,
takich jak: rozwiązywanie równań, upraszczanie wzorów,
symboliczne różniczkowanie i całkowanie funkcji, itp.
Pomimo wielu istniejących systemów i przykładów, również w
podstawowych podręcznikach, są to dobre tematy na wstępne
ćwiczenie, zwłaszcza dobrze wpasowujące się w paradygmat logiczny.
- wybór trasy przelotu z jednego miasta do drugiego na podstawie
dostępnego rozkładu lotów i zadanego czasu początkowego i
końcowego, z minimalizacją kosztu biletu (należy przetestować na
przykładach, które wezmą pod uwagę wiele różnych połączeń,
linii lotniczych, i cen biletów); rozwiązanie może składać się
z części logicznej, która będzie generować różne dostępne
połączenia, oraz nadrzędnej części wyboru, która może być
interakcyjna, lub realizować pełny przegląd w celu wybrania
najtańszego połączenia
- wariant poprzedniego zadania z wyborem połączenia
kolejowo-autobusowego ale z minimalizacją czasu podróży
- wybór mieszkania do wynajęcia spośród dostępnych w ogłoszeniach
w gazecie (można wykorzystać bazę danych z elektronicznej wersji
jakiejś gazety, np. GW) na podstawie sformułowanych preferencji
użytkownika
- zaproponowanie sposobu spędzenia wieczoru dla jednej z typowych
sytuacji: (1) randka z koleżanką, (2) wizyta krewnych z innego
miasta, (3) wizyta ważnego gościa zagranicznego
- zaplanowanie wyjazdu wakacyjnego
- dobranie zestawu kursów do semestralnego planu studiów w
Instytucie Informatyki Uniwersytetu Wrocławskiego
- wybór menu na obiad (mięso, wino, sałatka, dodatki np. zupa lub
gorące warzywo) w taki sposób, żeby elementy ,,pasowały'' do
siebie, aksjomaty określałyby co do siebie pasuje (określone
mięsa i warzywa, wina, sałatki do mięs, itd.) i możemy zadać
ogólnie dostępny zestaw produktów i pozwolić systemowi dobrac z
niego menu obiadowe, ale pytając nas o zgodę przy dołączaniu
każdego składnika
- wybrać konfigurację oświetlenia właściwą dla konkretnego
pomieszczenia, jego wielkości i przeznaczenia (użytek ogólny,
kuchnia, pracownia, pokój telewizyjny, sala kinowa, koncertowa,
itd.); należy przetestować system na różnych przykładach i
określić granice stosowalności systemu
- wybór systemu ogrzewania (konfiguracja pieca, grzejników i
czujników) właściwy dla danej architektury domu (liczba i
wielkość pokoi, liczba pięter, wielkość i typ okien); aksjomaty
powinny określać elementy ogrzewania właściwe dla danej
konfiguracji domu i ograniczenia wiązące ze sobą różne parametry
(taki program, oczywiście w wersji bardzo uproszczonej, powinien
jednak napisać ktoś kto ma minimalne choćby pojęcie o systemach
ogrzewania)
Zagadnienia, które mogą być rozwiązane w oparciu o metodę sieci
przekonań muszą być zamodelowane zbiorem zmiennych losowych,
odpowiadających zdarzeniom występującym w dziedzinie problemowej.
Dla każdej zmiennej losowej musimy mieć kompletny rozkład
prawdopodobieństwa tej zmiennej, albo bezwględnego, jeśli brak jest
zmiennych uzależniających, albo prawdopodobieństwa warunkowego
względem wszystkich kombinacji warunków, od których dana zmienna
zależy. Te wartości powinny być uzyskane z obserwacji.
Zatem zagadnienia jakie można modelować w tym zadaniu mogą być
dowolne, dla których możemy stworzyć powyższą sieć zależności,
i określić wartości prawdopodobieństw. Może to być dowolne
zagadnienie, pochodzące z własnego doświadczenia, obserwacji
(np. ptaszków, kwiatków, zachowania osób, itp.), albo z jakiejś
dostępnej bazy danych. Godne polecenia są dane dotyczące
np. notowań giełdowych, kursów walut, głosowań posłów w
parlamencie, obserwacji pogodowych, itp. Na stronie WWW kursu
pojawią się linki do bardziej popularnych dostępnych w Internecie
baz danych statystycznych.
Należy pamiętać o tym, by sieć zależności probabilistycznych nie
posiadała cykli, jak również o tym, by wprowadzone wartości
prawdopodobieństw spełniały aksjomaty prawdopodobieństwa, to jest
aby suma prawdopodobieństw wszystkich wartości danej zmiennej
losowej wynosiła zawsze 1.0. Wiele narzędzi tworzenia sieci
przekonań same wymuszają spełnienie tych warunków.
UWAGA: dodatkowe sugestie tematów na projekt można znaleźć
tu:
- Systemy doradcze. Takie systemy zawierają w sobie specjalistyczną
wiedzę człowieka-eksperta w jakiejś dziedzinie problemowej,
i potrafią przyjąć i zrozumieć postawione im zadanie z tej
dziedziny, a następnie zaproponować rozwiązanie biorące pod
uwagę wprowadzone fakty, jak również inne ważne okoliczności,
o które system może zapytać. Wiele z takich zagadnień dobrze
programuje sie w podejściu regułowym, ponieważ w wielu
dziedzinach wiedza specjalistów naturalnie wyraża się w postaci
reguł JEŻELI-TO.
- Gry kombinatoryczne lub dwuosobowe. Można tu sformułować wiele
atrakcyjnych tematów zwłaszcza gdy ktoś szczególnie interesuje
się daną grą. Należy jednak dobrze przemyśleć wybór takiego
tematu: po okresie entuzjazmu związanego z wymyślaniem
reprezentacji przestrzeni rozwiązań i pierwszych prób z
oczywistymi strategiami, problem może okazać się o wiele
trudniejszy niż się początkowo wydawał, a sprawdzanie kolejnych
pomysłów usprawniających strategię wymaga czasami przeprowadzenia
i przeanalizowania wielu rozgrywek i prowadzi do szybkiego
znużenia zagadnieniem.
- Systemy odpowiadające na sformułowane w języku naturalnym pytania
z jakiejś dziedziny i czerpiące swoją wiedzę z wiadomości prasowych.
Szczególnie przydatne do tego projektu są serwisy prasowe w
formacie RSS oferowane przez wiele agencji prasowych. Wiadomości
w tych serwisach są na ogół od razu krótkimi streszczeniami
sformułowanymi uproszczonym językiem, dostosowanym do danej tematyki.
Na przykład, system mógłby analizować bieżące wiadomości sportowe,
i być w stanie udzielać informacji o aktualnych wynikach rozgrywek
ligowych, konkursach, mistrzostwach, rekordach, itp.
- Systemy prowadzące konwersację w języku naturalnym (w trybie tekstowym).
Jedno z fundametalnych wyzwań sztucznej inteligencji, jest przedmiotem
testu Turinga, napisano wiele programów konwersacyjnych, odbywają się
na ten temat międzynarodowe konferencje i konkursy (patrz
Nagroda
Loebnera). Przy dobrze wybranej platformie programowej i
odpowiednio zawężonym temacie konwersacji jest to również dobre
zagadnienie na wstępny projekt ze sztucznej inteligencji.
-
Projekt Hoshimi będący częścią konkursu Microsoft Imagine Cup
i polegający na stworzeniu strategii gry z atrakcyjnym graficznym
interfacem. Termin zgłoszenia programu do pierwszego etapu
konkursu upływa 15 marca.
- Liga symulacyjna piłki
nożnej robotów Robocup.
Jest to inne wyzwanie sztucznej inteligencji, zawierające w sobie
elementy wielu różnych zagadnień, z którymi zmaga się AI.
Dostępne są narzędzia do symulacji gry, jak również przykładowe
programy graczy. Dobry temat, zwłaszcza dla entuzjastów piłki nożnej.