Wpis z mikrobloga

#programowanie #sztucznainteligencja #technologia
Pytanie do koderów, widzieliście kiedyś kod sztucznej inteligencji? Czym to sie różni od zwykłych algorytmów, da sie do opisać na jakiś prostych przykładach żeby niekodujący zrozumieli ?

Drugie pytanie, czasem jak czytam te artykuły w "tabloidach" o niby przełomach w SI to sie zastanawiam czy to nie jest czasem zwykły program napakowany setkami algorytmów (if else) i nazywany SI, czy media obecnie nie przesadzają z nazywaniem czegoś sztuczna inteligencją
  • 14
Pytanie do koderów, widzieliście kiedyś kod sztucznej inteligencji? Czym to sie różni od zwykłych algorytmów, da sie do opisać na jakiś prostych przykładach żeby niekodujący zrozumieli ?


@Haradrim: temat jest dość szeroki.
Niektóre sztuczne inteligencje np. to rozpoznawania obrazów ekstremalnie upraszczając to
to zwykłe "mnożenie pixeli"przez wagi sumowanie i wyliczanie pewnych funkcji
(losowy link http://edu.pjwstk.edu.pl/wyklady/nai/scb/wyklad3/w3.htm)

(jak są wcześniej wyliczane te wagi to już musisz doczytać)

Niektóre, np. systemy rekomendacyjne to powiedzmy
@Haradrim dokładnie na poczatku implementujesz sieć, a potem podczas jej uczenia zmieniają się wagi poszczególnych neuronów. Cala zabawa polega na przystosowaniu struktury sieci do danego problemu, a następnie dobranie parametrów można powiedzieć na chybił trafił i uczenie sieci możliwie dużą ilością danych w nadzieji, że miała lepszą skuteczność od poprzedniej sieci.
@Haradrim: W zasadzie mnożenie macierzy. Dużo dużych macierzy. Tak naprawdę zasadniczym źródłem postępu jest dostęp do dużej ilości danych, stąd np Google czy FB są tutaj komercyjnymi liderami. W sporej większości przypadków trenowanie sieci neuronowych to kwestia określenia jak bardzo coś wpływa na błąd (względem jakiegoś wzorca) i nakierowaniu tego w drugą stronę (tak w dużym uproszczeniu działa propagacja wsteczna w sieciach FF, w rekurencyjnych podobnie zresztą tylko nie lecisz cyklami
Typowy kod ai wygląda tak: http://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#sphx-glr-beginner-blitz-neural-networks-tutorial-py. Nie ma w nim żadnych if. Różni się tym od zwykłego programu, że ma dwie oddzielne części. Jedna (ucząca się) wylicza miliony wag, a druga (inteligentna) korzysta z tych wag. Zadaniem samym w sobie jest zrozumienie co się naprawdę policzyło w części uczącej i tego teraz nie potrafimy zrobić.
@Haradrim: Kwestia taka, że AI to bardziej matematyka niż informatyka - sztuczny neuron to nieliniowy klasyfikator, w najprostszej postaci (perceptron Rosenblatta) to taki twór który umożliwia podział punktów na dwie klasy (np. w przypadku dwuwymiarowym daje 0 po jednej stronie i 1 po drugiej stronie ustalonej prostej). Formalnie liczy sumę ważoną wejść i traktuje je funkcją aktywacji (w przypadku poprzedniego nawiasu to bardzo prosta funkcja - 0 dla x < 0
@Haradrim: Oczywiście to ułamek czubka góry lodowej, ale sztuczny neuron z nieliniową funkcją aktywacji to kamień milowy rozwoju systemów inteligentnych i jest zaskakujące jak wiele może zdziałać taki prosty technicznie model - prosty i zaskakująco sprawny system OCR opierający się na niewielkiej sieci neuronowej jest w stanie zaprogramować programista po pół roku kursu Turbo Pascala;)
@Haradrim: I jak koledzy wyżej już pisali różnica jest taka w odróżnieniu od "zwykłych" algorytmów, że (w klasycznym przypadku uczenia nadzorowanego) nie tworzymy algorytmu który ma rozwiązać nasz problem, tylko dajemy naszej sieci zestaw danych uczących (np. zbiory pikseli składających się na znak + informacja jaki to znak), odpowiedni algorytm uczenia wyznacza wagi neuronów tak, żeby sieć dawała prawidłowe odpowiedzi dla tychże danych a potem tak "nauczonej" sieci używamy do rozpoznawania