Ogólnie

 

Chyba nie każą nam opowiadać o perceptronach i innym gównie, to jest gorsze niż analiza matematyczna

O sztucznej inteligencji potrafi opowiedzieć chyba każdy. Zaczniemy więc od sieci neuronowych, a potem kilka przykładów ich wykorzystania w AI.

Sieci neuronowe

 

Ogólna nazwa struktur matematycznych i ich programowych lub sprzętowych modeli, realizujących obliczenia lub przetwarzanie sygnałów poprzez rzędy elementów, zwanych sztucznymi neuronami, wykonujących pewną podstawową operację na swoim wejściu. Oryginalną inspiracją takiej struktury była budowa naturalnych neuronów oraz układów nerwowych, w szczególności mózgu.

Podstawową cechą różniącą SSN od programów realizujących algorytmiczne przetwarzanie informacji jest zdolność generalizacji czyli uogólniania wiedzy dla nowych danych nieznanych wcześniej, czyli nie prezentowanych w trakcie nauki. Określa się to także jako zdolność SSN do aproksymacji wartości funkcji wielu zmiennych w przeciwieństwie do interpolacji możliwej do otrzymania przy przetwarzaniu algorytmicznym. Można to ująć jeszcze inaczej. Np. systemy ekspertowe z reguły wymagają zgromadzenia i bieżącego dostępu do całej wiedzy na temat zagadnień, o których będą rozstrzygały. SSN wymagają natomiast jednorazowego nauczenia, przy czym wykazują one tolerancję na nieciągłości, przypadkowe zaburzenia lub wręcz braki w zbiorze uczącym. Pozwala to na zastosowanie ich tam, gdzie nie da się rozwiązać danego problemu w żaden inny, efektywny sposób.

A po ludzku:
Sztuczne sieci neuronowe to taki algorytm. W zasadzie sprytny bo może mieć np. niekompletne dane wejściowe, a i tak poda nam jakiś wynik. Działa to podobnie do mózgu, może się uczyć nowych rozwiązań, może się mylić, itd. Najlepiej to sobie wyobrazić w ten sposób, że mamy zbiór obrazków czarno-białych 32x32px, przyjmijmy, że są to odręcznie pisane literki pozyskane ze skanera. Rolą sieci neuronowej jest odczytać te literki, a przecież jedno 'T' może mieć daszek przechylony w prawo, a drugie w lewo. No i w tym cała ich magia.
Mamy jeszcze taki schemat, oto przykładowy perceptron jednokierunkowy:
Na obrazku widzimy, że podajemy mu dwie informacje i na wyjściu uzyskujemy również dwie. Analogiczne do przykładu który podałem powyżej, może to być x1 = link do obrazka, x2 = rodzaj alfabetu, a otrzymamy y1 = literka, y2 = wielka bądź mała. To zadaniem neuronów w środku jest wywnioskowanie co to za literka, mając do dyspozycji same piksele.
Oczywiście ten przykład jest wzięty z kosmosu, ale tak to jakoś wygląda. W normalnych systemach sieci neuronowych takich "układów" jest cała masa i sa połączone ze sobą na różne sposoby, jak algorytmy.

Przejdźmy zatem do przykładów!

OCR

 

OCR (ang. Optical Character Recognition) - zestaw technik lub oprogramowanie służące do rozpoznawania znaków i całych tekstów w pliku graficznym o postaci rastrowej. Zadaniem OCR jest zwykle rozpoznanie tekstu w zeskanowanym dokumencie (np. papierowym formularzu lub stronie książki).

Niegdyś termin oznaczał samo rozpoznawanie ciągów znaków, głównie drukowanych, które są łatwiejsze do rozpoznania, dziś również pisma odręcznego oraz cech formatowania, jak krój pisma, stopień pisma, interlinia (techniki służące do tego typu zaawansowanego rozpoznawania nazywane są terminem ICR), a nawet układów tabelarycznych, np. formularzy.

Zasada działania:
Rozpoznawanie pisma jest możliwe dzięki zastosowaniu metod z dziedziny rozpoznawania wzorców zaliczanej do sztucznej inteligencji. Oprogramowanie OCR wykorzystuje różne metody segmentacji obrazu np. progowanie, aby wyodrębnić poszczególne znaki z obrazu, które następnie są najczęściej osobno klasyfikowane jako poszczególne litery. Zwykle w tym procesie wykorzystywane są sieci neuronowe. Zazwyczaj, by wyeliminować pomyłki, program sprawdza całość rozpoznanego tekstu lub poszczególne wyrazy pod kątem poprawności ortograficznej i gramatycznej danego języka.

Zagadnienia spokrewnione z OCR:

  • Rozpoznawanie obrazów
  • Rozpoznawanie odcisków palców
  • Rozpoznawanie podpisów

Robotyka i automatyka

 

NASA wykorzystuje sieci neuronowe do sterowania ramieniem robota, którego zadaniem jest chwytanie przedmiotów znajdujących się w dowolnym położeniu (dotyczy to między innymi manipulatora działającego w ładowni promów kosmicznych, gdzie w warunkach nieważkości szczególnie trudno jest utrzymać manipulowane obiekty w stałym położeniu, a pewność chwytu jest uzależniona od stopnia zgodności orientacji przestrzennej osi przedmiotu i elementów chwytaka.

Firma General Dynamics opracowała dla potrzeb US Navy oparty na sieciach neuronowych system klasyfikujący i rozpoznający sygnały sonarowe. System ten pozwala rozpoznawać szumy charakterystyczne dla napędów różnych typów statków i okrętów. Udało się tak dokładnie wytrenować sieć, że jest ona zdolna do rozróżniania między sobą szumów różnych okrętów tego samego typu, co pozwala na identyfikację nazwy jednostki, a także potrafi rozpoznawać za pomocą hydrofonów niektóre dźwięki nadwodne, na przykład szum wytwarzany przez helikopter unoszący się nad powierzchnią oceanu.

Podobne osiągnięcia, ale w zakresie identyfikacji samolotów uzyskali naukowcy z University of Pensylvania współpracujący z firmą TRW. Zbudowana przez nich sieć neuronowa potrafi rozpoznawać samoloty z taką dokładnością, że podstawą do bezbłędnej identyfikacji może być detal wielkości 18 cali zaobserwowany z odległości 50 mil.

Wielki producent rakiet, firma General Devices Space Systems Division użyła sieci neuronowych do sterowania pracą 150 zaworów doprowadzających paliwo i tlen do silników rakiety Atlas. Okazało się, że odpowiednio wytrenowana sieć potrafiła w oparciu o dane na temat aktualnych fluktuacji mocy silnika sterować zaworami trafniej, niż poprzednio stosowany, kosztowny, zawodny i złożony system automatyki oparty na wykorzystaniu danych z setek sensorów.

Bardzo znanym zastosowaniem sieci neuronowej jest wykorzystany przez firmę Eaton Corporation układ sterowania pozwalający na wspomaganie kierowcy dużej ciężarówki (pięć osi, osiemnaście kół) przy wykonywaniu niektórych szczególnie trudnych manewrów (cofanie z naczepą).

Gry komputerowe

 

Kolejnym mechanizmem sztucznej inteligencji, popularnym do chwili obecnej głównie w środowiskach naukowych, są sieci neuronowe, które ostatnio zyskują coraz większą popularność również w grach komputerowych. Pomimo tego, że jest to zagadnienie trudne i skomplikowanie, może prowadzić do bardzo dobrych rezultatów i umożliwia m.in. dostosowywanie poziomu przeciwnika do grającego, a także wypracowywanie realistycznych zachowań. Także ze względu na właściwości sieci istnieje możliwość uczenia ich w trakcie rozgrywki, dzięki czemu obiekty mogą zyskiwać nowe zachowania, co znacznie urozmaica rozgrywkę.

Dodatkowo

 

Diagnoza Raka Piersi - program do rozpoznawania raka piersi (breast-cancer) na podstawie podawanych 10-ciu atrybutów (spoistość masy nowotworowej, itd.) wyrażonych w wartościach: 1- 10. W programie zastosowano sieć neuronową z dwoma warstwami ukrytymi. Sieć ta została nauczona dawania poprawnej diagnozy na podstawie 200 przypadków diagnoz pobranych z bazy danych na stronie www.ics.uci.edu/pub/machine-learning-databases.

Synteza mowy – polega na mechanicznej zamianie tekstu zapisanego w postaci znakowej na wypowiedź (mowę) w postaci dźwiękowej. Maszynę lub program komputerowy zamieniający tekst na mowę określa się mianem syntezatora mowy. W zależności od syntezatora, możemy uzyskać bardzo dokładną wymowę także słów nietypowych, literowanie różnych skrótów, odczytywanie liczb w tym również ułamków oraz odczytywanie dat poprzez dekomponowanie liczb. Syntezatory mowy mają wiele zastosowań. Pozwalają na zautomatyzowanie informowania bądź alarmowania użytkownika, są pomocne przy nauce języków obcych oraz tłumaczeniach, mogą także np. odczytywać dokumenty pisane alfabetem Brailla.