Streszczenie i cele nauki przedmiotu

Sztuczna inteligencja to dział informatyki, którego przedmiotem jest badanie reguł rządzących inteligentnymi zachowaniami człowieka, tworzenie modeli formalnych tych zachowań i - w rezultacie - programów komputerowych symulujących te zachowania. Do problemów sztucznej inteligencji  zalicza się między innymi:

· podejmowanie decyzji w warunkach braku danych,

· analiza i synteza języków naturalnych,

· analiza i rozpoznawanie obrazów,

· rozumowanie logiczne/racjonalne,

· dowodzenie twierdzeń,

· gry logiczne, jak np. szachy czy go

· zarządzanie wiedzą i informacją (np. w biznesie czy w robotyce)

· systemy eksperckie i diagnostyczne.

Celem jedno-semestralnego cyklu wykładów jest zapoznawanie studentów z podstawowymi narzędziami używanymi w sztucznej inteligencji. Program obejmuje problematykę sieci neuronowych, podstawy złożoności obliczeniowej i problemów NP-trudych, heurystyki związane z ich aproksymowaniem. Ponadto program przybliża studentom  problematykę związaną z algorytmami ewolucyjnymi oraz  problem  algorytmami  randomizowanymi 


Materiały wykładów koncentrują się w czterech głównych tematach:

1. Sieci neuronowe i ich zastosowania

2. Problemy optymalizacji i deterministyczne algorytmy heurystyczne

3. Algorytmy zrandomizowane

4. Algorytmy ewolucyjne i ich zastosowania.

Po ukończeniu kursu student powinien wykazać znajomość podstawowych heurystyk związanych z rozwiązywaniem problemów optymalizacyjnych, podstawowej wiedzy na temat algorytmów randomizowanych, algorytmu wychładzania, algorytmów genetycznych, sieci neuronowych (w tym algorytm wstecznej propagacji) i zagadnień złożoności (problemy NP-trudne), a także umiejętność zastosowania w praktyce niektórych z wymienionych technik.


Wymagania wstępne


Organizacja przedmiotu

Podstawową formą zapoznawania się z przedmiotem są umieszczone w sieci wykłady. Wszelkie wątpliwości można rozstrzygać na cotygodniowym chacie (konsultacjach), a także (w dowolnym terminie) na forum, w wątku dotyczącym odpowiedniego wykładu.

Wykłady miewają dodatkowe pytania lub zadania; ich rozwiązywanie jest zalecane, choć nieobowiązkowe.


Zaliczenie

1. Aby zaliczyć ćwiczeń, student ma zaliczyć testy i projekt

Po zakończeniu każdego z głównych tematów odbędzie się test kompetencyjny. W ramach kursu będą trzy testy (związane z czterema głównymi tematami poruszonymi na wykładzie).  

Testy są w postaci zadań do rozwiązywania. Na każdy test student ma tydzień do przygotowania. Rozwiązania są  przesyłane na adres mailowy prowadzącego do wyznaczonego terminu. Zadania testowe będą umieszczone w rubryce testy na stronie wykładu NAI w systemie Edu.

 Projekt polega na implementowaniu jednego z algorytmów prezentowanych na wykładzie.  Student  ma do wyboru jeden z kilku tematów. Lista tematów będzie podana na stronie wykładu z NAI.

Aktywność ma wpływ na ocenę ostateczną. Za każde zadanie domowe można otrzymać 2 punkty,  za cały semestr maksymalnie 20 punktów. Te punkty będą uwzględnione pod koniec semestru. 

2. Zasada przeliczania punktów na oceny:

Za każdy test student może otrzymać maksymalnie 20 punktów, za projekt maksymalnie 40 punktów. Zatem maksymalnie student może zbierać 100 punktów (trzy testy + projekt).

Ocena jest wyznaczona zgodnie z regułami podanymi w tabelce

  
Ilość punktów
 
Ocena
 
45 - 55
 
3
 
56 - 65
 
3,5
 
66 - 75
 
4
 
76 - 85
 
4,5
 
86 - 100
 
5
 


    Przedmiot kończy się egzaminem.  Egzamin jest w formie pisemnej. Odbędzie się on w terminie zjazdu pod koniec semestru (termin jest podany na stronie uczelni).


Tematy wykładów

  1. Sztuczna inteligencja - podstawy.
  2. Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.
  3. Sieci neuronowe - uczenie.
  4. Sieci Kohonena. Problem grupowania danych.
  5. Problemy optymalizacji dyskretnej. Algorytmy heurystyczne.
  6. Zagadnienia złożoności obliczeniowej.
  7. Przykłady problemów optymalizacji dyskretnej.
  8. Algorytmy zrandomizowane.
  9. Algorytm mrówkowy. Obliczenia na DNA.
  10. Algorytmy ewolucyjne.
  11. Algorytmy ewolucyjne - teoria, techniki dodatkowe.
  12. Algorytmy ewolucyjne - nieklasyczne kodowanie. Programowanie genetyczne.

Literatura

1. S. Osowski: Sieci neuronowe w ujęciu algorytmicznym

2. Hagan, Demuth, Beale: Neural Network Design

3. Cormen, Leiserson, Riverst: Wprowadzenie do algorytmów

4. P. Cichosz: Systemy uczące się

5. D. Goldberg: Algorytmy genetyczne i ich zastosowania

6. Z. Michalewicz: Algorytmy + Struktury danych = programy ewolucyjne

7. Stuart J. Russell,  P. Norvig: Artificial Intelligence: A Modern Approach


Ciekawe linki

Sieci neuronowe:

1. Introduction to neural networks

2. Sztuczne sieci neuronowe. Architektura i algorytmy uczenia.

3. Wybrane zastosowania sieci neuronowych.

4. Java applet OCHRE - Optical Character Recognition.

Problemy optymalizacji i heurystyka:

1. Problemy NP-zupełne: Kompendium

2. Heuristic algorithms

Algorytm genetyczne i ewolucyjne: 

1. Introduction to genetic algorithms

2. Algorytmy genetyczne - ćwiczenia

Dane testowe - Uci Machine Learning Repository

 


Strona przygotowana przez Sinh Hoa Nguyen, 2009