Sztuczna inteligencja

Sztuczna inteligencja to dziedzina nauki, zajmująca się badaniem, modelowaniem i próbą naśladowania zachowania istot inteligentnych. Do podstawowych technik sztucznej inteligencji należą obliczenia ewolucyjne, sztuczne sieci neuronowe, systemy logiki rozmytej, systemy eksperckie, sztuczne życie.

W ciągu ostatnich lat stworzyłem wiele aplikacji wykorzystujących różnorodne techniki sztucznej inteligencji. Większość z nich była związana z moimi studiami magisterskimi, z moimi własnymi badaniami lub z projektami naukowymi, w których uczestniczyłem. Wybrane z tych prac zostały zaprezentowane poniżej.

PSO

Inteligencja roju w zadaniach optymalizacji globalnej (2009)

Metoda roju cząstek jest prostą ale efektywną metodą rozwiązywania zadań globalnej optymalizacji numerycznej. Przetestowałem tę metodę na zestawie znanych, wielowymiarowych funkcji testowych (m.in. dolina Rosenbrock’a, ścieżka Ackley’a, funkcja Rastrigin’a). Napisałem w tym celu aplikację w języku Visual Basic .NET w środowisku Visual Studio 2008. Interfejs graficzny tego programu został stworzony w technologii Windows Presentation Foundation na platformie .NET Framework 3.5.

Program: pso-bin.zip Kod źródłowy programu: pso-src.tgz

HFC GUI

Algorytmy genetyczne i ewolucyjne (2007)

W ostatnich latach poznałem różnorodne techniki ewolucyjne sztucznej inteligencji i implementowałem większość z nich. Przeprowadziłem eksperymenty numeryczne z Klasycznym Algorytmem Genetycznym (SGA) dla optymalizacji jednowymiarowej, Strategią Ewolucyjną dla optymalizacji brachistochrony (krzywej najszybszego spadku), Hierarchical Fair Competition (model wyspowy algorytmu ewolucyjnego) i Programowaniem Genetycznym dla zadań całkowania numerycznego.

Game Of Life

Gra w Życie, automaty komórkowe (2005)

Automaty komórkowe są powiązane w bardzo luźny sposób ze Sztuczną Inteligencją, jednak są one inspirującym przykładem tego, jak systemy sterowane bardzo prostymi regułami mogą zachowywać się i ewoluować w bardzo złożony, zadziwiający sposób. Stworzyłem program, pozwalający zapoznać się z wieloma zjawiskami, wyłaniającymi się z najbardziej znanego automatu komórkowego, tzw. Gry w Życie, jak również ze znacznie szerszej klasy automatów. Wiele z tych zjawisk opisałem na przygotowanej przeze mnie stronie.

więcej…

3d

Zachowania sterujące (2007)

Zachowania sterujące autonomicznych agentów pozwalają na naśladowanie kolektywnego zachowania stad zwierząt, rojów owadów, ławic ryb etc. w sztucznym, dynamicznym środowisku. Mój program w języku Python pozwala na symulację takich naturalnych zjawisk i na ich wizualizację w trójwymiarowym środowisku. W programie zaimplementowałem proste zachowania takie jak: podążanie, ucieczka, błądzenie, podążanie za ścieżką, unikanie przeszkód, jak również zachowania złożone oraz kolektywne.

Kod źródłowy w języku Python: steering.py

Hopfield network

Sieci neuronowe Hopfield’a (2007)

Sztuczne sieci neuronowe Hopfield’a są rodzajem sieci rekurencyjnych, które mogą działać na zasadzie pamięci autoasocjacyjnej. Stworzyłem testową implementację takiej sieci, będącej w stanie wykonywać automatyczną korektę błędów we wpisywanych przez użytkownika adresach URL.

Kod źródłowy w języku Python: hopfield.py

Fuzzy

Podsumowania lingwistyczne baz danych (2007)

Duże ilości danych i ukryta w nich wiedza są często trudne do uchwycenia i odkrycia przez ludzki umysł. Rozwiązaniem w takiej sytuacji może być wykorzystanie technik sztucznej inteligencji opartych na koncepcji logiki rozmytej. Napisany przeze mnie program pozwala połączyć się z dowolną bazą danych (za pośrednictwem sterownika ODBC) i wygenerować streszczenie lingwistyczne dla danych zgromadzonych w bazie. Projekt został zaimplementowany w środowisku .NET Framework 2.0 z wykorzystaniem ADO.NET.

Kod źródłowy projektu: lingsumm.tgz Raport: lingsumm-report-pl.pdf

Diagram

Systemy eksperckie (2007)

Podczas laboratoriów ze sztucznej inteligencji, na które uczęszczałem, stworzyłem projekt systemu ekspertowego prowadzącego wnioskowanie w logice pierwszego rzędu (rachunek predykatów). Możliwości tego systemu zostały przetestowane w obszarze bezpieczeństwa systemów informatycznych. W projekcie został zaproponowany autorski format bazy wiedzy do opisu faktów oraz zasad wnioskowania, został także napisany analizator składniowy bazy wiedzy, oparty na generatorze Yacc. Projekt uczestniczył w konkursie Student Best Project, zorganizowanym przez Politechnikę Częstochowską oraz firmę Power Media w roku 2007, i uzyskał wyróżnienie w finale konkursu. Projekt został zrealizowany w języku Python.

Kod źródłowy projektu: ses.tgz

PSO

Zastosowanie klasyfikatorów probabilistycznych w rozpoznawaniu spamu (2008)

Klasyfikacja bayesowska jest jedną z najefektywniejszych, probabilistycznych metod wykrywania spamu, opartych na analizie treści korespondencji. Zaimplementowałem różne klasyfikatory i porównałem ich efektywność w rozpoznawaniu spamu na przygotowanych zbiorach danych testowych. Zaimplementowane klasyfikatory to: naiwny klasyfikator bayesowski, klasyfikator log likelihood oraz ukryty model markova. Projekt został napisany w języku Python.

Kod źródłowy projektu: spam-recognition.tgz Raport: spam-recognition.pdf