Artur Majtczak

Artur Majtczak

W poniższym artykule (i dołączonym do niego filmie) wykażę bezsensowność używania głębokiego uczenia (ang. Deep Learning), sieci neuronowych (ang. neural network) do rozpoznawania obrazów na przykładzie rozpoznawania pisma odręcznego ze zbioru znaków MNIST i udowodnię to w praktyce.

Wykażę także, że do rozpoznawania odręcznie pisanych cyfr czy szerzej obrazu, nie jest konieczne uczenie systemu dziesiątkami tysięcy próbek, a wystarczy jedna lub najwyżej kilka, a dodatkowo nie będzie miało znaczenia jakiej wielkości jest próbka służąca do uczenia systemu, jak i próbka do badania jego skuteczności. Nie będzie też miało znaczenia wyśrodkowanie, wielkość, kąt obrotu, czy grubość pisanych linii, co ma kapitalne znaczenie w metodach rozpoznawania obrazu opartych na uczeniu maszynowym czy deep learning.

Jak wiemy, każdy obraz w komputerze składa się z pojedynczych punktów (Max Planck mówi że cały nasz świat składa się z pikseli), które połączone w odpowiedni sposób tworzą obraz. Tak samo jest ze znakami tworzącymi cyfry w bazie danych znaków MNIST.

      

Zbiór znaków MNIST i jego klasyfikacja jest swego rodzaju abecadłem dla każdego początkującego studenta czy osoby rozpoczynającej zabawę z głębokim uczeniem czy sieciami neuronowymi.
Zbiór ten został skompletowany przez Yann’a Lecun (http://yann.lecun.com/exdb/mnist/) i zawiera 70.000 obrazów w rozdzielczości 28x28 pikseli w 255 odcieniach szarości. Przyjęto, że 60.000 obiektów stanowi zbiór treningowy, a 10.000 są to elementy ze zbioru testowego.  Obraz (w tym wypadku cyfra od 0 do 9) reprezentowany jest jako macierz 2D o wymiarach 28×28, w której wartości 0-255 reprezentują odcień szarości piksela. Łatwiejszą formą do przetwarzania przez algorytmy uczenia maszynowego jest postać wektora, którą otrzymujemy odczytując wartości pikseli z obrazu wiersz po wierszu. Stąd otrzymamy 784-wymiarowy wektor (28*28=784) reprezentujący jeden obrazek z cyfrą. Z tego wynika, że cały zbiór treningowy to macierz o wymiarach 60000×784.

Teraz tylko wystarczy użyć dostępnych w chmurze narzędzi typu TensorFlow, pobrać kilka plików w Pythonie, poczytać o wielu mądrych metodach uczenia sieci, kupić o tym kilka książek, albo po prostu pobrać gotowca co robi większość i stworzyć swoją pierwszą sieć neuronową.
Wow, do jednego znaku składającego się z 28 linii po 28 punktów specjalnie przygotowanego do rozpoznawania, czyli odpowiednio wycentrowanego, wyskalowanego w idealnej rozdzielczości tęgie głowy wymyśliły, że skoro nasz ludzki mózg składający się z neuronów potrafi to odczytać to stworzymy mini elektroniczny mózg ze sztucznych neuronów to on też to odczyta. I udało się! Wyniki są prawie idealne, bliskie 100%, ale…

Używanie sieci neuronowych do rozpoznawania cyfr to jak zastąpienie patyka służącego do pisania cyfr na piasku na plaży wyspecjalizowanym robotem wybierającym z plaży po jednym ziarnku piasku w celu otrzymania tego samego wzoru!

Czy myślicie że nasz mózg patrząc na cyfrę tnie ją na paski, piksele, wektory i analizuje punkt po punkcie? Jeżeli przyjmiemy wyliczenia dr. Clarka, że rozdzielczość naszego wzroku to 576 megapikseli (tak naprawdę nie więcej niż 20 megapikseli w centrum patrzenia), to naprawdę nie ma takiego napoju energetycznego, który wspomoże nasz mózg w takiej pracy.

Co więcej, czy na tym ma polegać uczenie? Czy my musimy zobaczyć 60.000 znaków, aby się ich nauczyć, czy może nauczycielka w szkole podstawowej napisała go raz i kazała zapamiętać?
Czy jeżeli narysuje Wam jeden raz pewien znak np.:



to rozpoznacie ten poniżej jako inny?



Oczywiście jest troszkę inny, ale gdy obok niego mamy określony zbiór np. cyfr i ten znak  - to każdy ten znak rozpozna mimo że widzi go pierwszy raz. Nie będzie też miał problemów z jego narysowaniem po chwili w innym miejscu.

I teraz najważniejsze, jak zapamiętujemy ten znak? Piksel po pikselu, 784 punkty? A co jakby to był znak w rozdzielczości 256 na 256 punktów, czyli takiej jaką ma zwykła ikonka na naszym domowym komputerze składający się z 65536 punktów?
Nie, nasz mózg jest wspaniały jeżeli chodzi o upraszczanie wszelkich danych jakie do niego dochodzą, a tym bardziej jak to są tak ogromne dane, jak dane o obrazie.

Pomyślmy przez chwilę jak słowami opisalibyśmy ten znak komuś innemu, a otrzymamy od razu  jedną z metod uproszczonego zapamiętywania – pewnie opiszemy to mniej więcej tak:
dwa odcinki, poziomy i pionowy, pierwszy odcinek jest poziomy, a na jego końcu pod kątem 90 stopni styka się z odcinkiem pionowym. Zauważmy, że do opisu znaku wystarczą w tym przypadku praktycznie 4 informacje , a nie informacja o 784 punktach w 255 odcieniach szarości. Co więcej tak zapisana informacja jest niezależna od wielkości znaku.

Dokładnie takiej samej metody możemy użyć do zapamiętywania każdego znaku, cyfry, ale i przedmiotu na obrazie niezależnie od tego czy przedmiot będzie w przestrzeni dwu czy trójwymiarowej (w dużym uproszczeniu, gdyż rozpoznawanie obrazu w przestrzeni 2D czy nawet 3D wymaga dokonania dodatkowych czynności – jeżeli to kogoś zainteresuje chętnie opiszę pewne metody łatwego rozpoznawania w kolejny m artykule).

To jeszcze raz, na czym polega ta prosta metoda?

Zapamiętujemy:
1. „punkty startu”
2. „kąt startu”
3. „typ odcinka”
4. „kąt wygięcia odcinka”
5.„kąt połączenia odcinka”

Jak widać wg. mnie mózg ludzki zapamiętuje podstawowe kształty i sposób ich połączenia.
Wykrywamy łatwo linie proste, koła, łuki mniej lub bardziej wygięte i ich wzajemne położenie czy połączenie.

Zobaczmy na przykładzie cyfry 6 (polecam też zobaczyć wszystko na dołączonym filmie https://youtu.be/do9PM2PtW0M):

Cyfrę 6 możemy rozpoznać na kilka sposobów - tak naprawdę składa się z kilku odcinków połączonych ze sobą zawsze pod dodatnim kątem, albo z kilku odcinków tworzących na dole koło, albo z jednego odcinka tworzącego swoistego ślimaka, w tym wypadku zakreślającego 476 stopni od początku na górze do końca na dole.

Taka metoda ma też dodatkową zaletę, nie ma znaczenia czy obraz jest obrócony o praktycznie dowolny kąt, nie ma znaczenia grubość linii, nie ma znaczenia wielkość obrazu czy jego położenie, czyli wszystko to co wpływa bardzo negatywnie przy metodach głębokiego uczenia.
Przecież ten sam znak narysowany pod kątem 45 stopni ma wszystkie opisane powyżej parametry takie same.
Uważny czytelnik pewnie od razu wychwyci, a co z cyfrą 6 i 9? – no do pewnego kąta cyfra 6 jest szóstką, a pod pewnym kątem jest już dziewiątką.

Zobaczcie na dołączonym filmie, jak wielkie problemy w rozpoznawaniu mają standardowe metody oparte na głębokim uczeniu, gdy napiszemy cyfry pod kątem. Pamiętajmy też, że zestaw znaków MNIST jest już specjalnie przygotowany, znaki są odpowiednio wyskalowane, wycentrowane, zawsze w identycznej rozdzielczości 28x28 itd.

W tym miejscu sprawniejsi programiści zwrócą pewnie uwagę na jeden wielki problem.

Ludzki mózg widzi po prostu całość, cały obraz, linie, koła – to proste, ale komputer widzi w jednym momencie właściwie tylko jeden punkt, jeden z tych 784 punktów więc jak to oprogramować, jak wykryć te linie? Dodatkowym problemem jest to że niektóre cyfry są pisane grubą czcionką więc gdy widzimy jeden punkt, a obok niego sprawdzamy wszędzie są też zamalowane punkty to skąd wiadomo w którą stronę jest linia?


 (tak widzi komputer) 

Możemy użyć w przypadku znaków dwóch technik:
1. Proste odchudzanie, aż otrzymamy linię grubości punktu (punkt to może być piksel, ale też mogą to być 4 piksele, w zależności od potrzeb)

2. „Metoda szybkiego wtrysku” – wyobrażamy sobie, że musimy zamalować daną cyfrę kolorem (taka funkcja fill) wpuszczamy w jednym punkcie farbę i patrzymy gdzie może się rozprzestrzenić, ale jakby była pod ciśnieniem więc np. w cyfrze 8 na skrzyżowaniu nie rozlewa się na wszystkie strony tylko przelatuje na przeciwną stronę „skrzyżowania” i leci dalej.

 

Po odchudzeniu gdy mamy już jedną linię, łatwo wyodrębniamy proste, krzywe, kąty i to zapamiętujemy.

Samą metodę obmyśliłem ponad 20 lat temu, przed napisaniem tego artykułu postanowiłem napisać prosty programik sprawdzający czy miałem rację. Po kilku dniach otrzymałem program, nie doskonały bo nie robię przecież programu komercyjnego, ale wystraczający do potwierdzenia, że to działa i ma wykrywalność znaków ponad 97%, a pewnie jakbym jeszcze kilka dni popracował doszedłbym i do 99%.

Z drugiej strony można powiedzieć, że przecież metody opisywane wszędzie w internecie te wykorzystujące sieci neuronowe robią z taką samą wykrywalnością, więc po co robić inaczej? – tak i nie – ta metoda nie wymaga uczenia, super komputerów, nie musi być to zestaw tylko 10 znaków, może ich być dowolna ilość, nie muszą być znaki w formacie 28x28 bo mogą być w 450x725, a właściwie każdy znak może być w dowolnym, za każdym razem innym formacie, znaki mogą być obracane. Dodanie kolejnych znaków nie wymaga ponownego uczenia sieci, nie ma problemu żeby też taki algorytm rozpoznawał dodatkowo znaki wydrukowane w prawie dowolnych czcionkach dostępnych na komputerze oczywiście bez potrzeby jakiegokolwiek dodatkowego ich uczenia.

Niektórzy pewnie napiszą mi zaraz, że tak naprawdę chodzi tylko o pokazaniu na MNIST sposobu uczenia sieci neuronowych, ale nie mogę się z tym zgodzić, to naprawdę nie ma sensu. Nie uczymy się przecież na zajęciach ZPT przybijania gwoździ kulą do rozbiórek domów.
Zostawcie już te znaki bo do tego nie ma kompletnie sensu używania takich metod.

Wywalcie te wszystkie grube książki o Deep Learning, zostawcie to super narzędzie w chmurach, usiądźcie do zwykłego obmyślania coraz lepszych algorytmów sami, takie abecadło programisty.

Do napisania tego artykułu zostałem zmuszony, gdyż podczas pracy nad naszym projektem silnej sztucznej inteligencji SaraAI.com jestem ciągle zasypywany pytaniami jakich używam metod głębokiego uczenia, jakich metod NLP, itd. – a gdy odpowiadam że nie używam bezpośrednio praktycznie żadnych znanych metod widzę tylko zdziwienie i powątpiewanie na twarzach rozmówców, dlatego chciałem wykazać, że nie zawsze musimy trzymać się ogólnie przyjętej linii rozwiązywania problemów programistycznych, możemy zrobić coś zupełnie inaczej otrzymując dużo lepsze wyniki.

 

Do artykułu polecam też w komplecie film typu "proof of concept": https://youtu.be/do9PM2PtW0M

Mały komentarz:
"Wywalcie te wszystkie grube książki o Deep Learning" - po tych słowach mam nadzieję, że wiecie już, że artykuł specjalnie jest napisany w mocno prowokacyjnym stylu, bo co jak nie emocje doprowadza do wzmożonej dyskusji :-) (nie wyrzucajcie tych książek!)
Nie chodzi mi o porzucenie Deep Learningu, ale o zwrócenie uwagi na to, aby używać tych metod tam gdzie jest to optymalne. Dodatkowo uważam, że dane wrzucane do uczenia należy wstępnie przygotować tak jak to robi nasz mózg.
Nasz mózg wprawdzie odbiera obraz z oka złożony z pikseli (fotonów), ale zanim go porówna z wzorcem pamięciowym przetwarza go i przygotowuje w korze wzrokowej w obszarach V1-V5 - róbmy podobnie.

Zwróćcie uwagę, że jeżeli się wczytacie bardziej, to nie chodzi zupełnie o zestaw znaków MNIST. W tej metodzie mogę dodać dowolną ilość znaków łącznie z wszystkimi chińskimi i nie zmieni to rozpoznawalności - zobaczcie na filmie jak dodaję do cyfr 2 i 3 cyfry II i III rzymskie, co kompletnie nie ma znaczenia w takiej metodzie, (dodaję raz i są rozpoznawane jak 2 i 3 arabskie), a ma duże znaczenie przy metodach opartych na sieciach neuronowych.
Potraktujcie tę metodę jako podstawowe ABC, które rozwijając można bez problemu używać do rozpoznawania twarzy, czy zbioru Fashion MNIST, a także ImageNet.

Jednym z zarzutów jest to, że robiłem ten program kilka dni, a przecież można to zrobić na sieciach w 10 minut. OK, ktoś TensorFlow też nie pisał 10 minut. Teraz gdy mam gotowy algorytm, mogę dodać w kilka minut kolejne alfabety.

"Ale istnieje few-shot learning (czy zero-shot learning), gdzie nie musimy uczyć na 60.000 próbek" - tak, ale metody te na razie mają totalnie niezadowalające wyniki, więc po co, skoro tu mamy prosty i działający algorytm wymagający jednej lub kilku próbek.

"Ale stosuje się augmentację danych (obroty o niewielki kąt, skalowanie, rozszerzanie, wydłużanie)" - tak, ale to tylko powiększenie liczby próbek o kolejne tysiące.

"Wynik 97%, który podajesz nie ma żadnej wymiernej wartości, bo nikt poza tobą nie może tego przetestować." - o to chodzi, że teraz już każdy może uzyskać taki wynik, bo podałem całą metodę, więc dobry programista bez problemu nie tylko powtórzy ten wynik, ale i bez problemu go poprawi.

"Czemu używać Twojego algorytmu, a nie sieci neuronowych?"
Z ciekawości zapytam tylko, bo nie zrobiłem aż tak dużego researchu, czy znacie jakiś program/algorytm, który rozpoznaje dowolne znaki dowolnego alfabetu pisane i drukowane w dowolnym formacie, wielkości, kolorze czy grubości, albo na którym można przeprowadzić taki test:

1 osoba rysuje dowolny znak, może być wymyślony
10 innych osób pisze ten sam znak albo trochę inny
system ma za zadanie stwierdzić kto napisał zły znak.
Dla utrudnienia każdy rysuje znak na tablecie w innej rozdzielczości, z inna grubością pędzla, różnymi kolorami, pod różnymi kątami?

Dodatkowo ten algorytm zadziała na "kalkulatorze" bez dostępu do sieci, dodanie kolejnych obrazów nie wymaga ponownego uczenia całej bazy, wykorzystywane zasoby są naprawdę pomijalnie małe.

Człowiek od zawsze patrzył w gwiazdy, pytał czy jest sam. W najbardziej pesymistycznej opcji równania Drake'a istnieje 250.000 wysoko rozwiniętych cywilizacji gdzieś tam w nieskończonym kosmosie, które zdolne są nas odwiedzić.
Ale wiemy też, że szansa na kontakt z tak wysoko rozwiniętą inteligencją jest bliska zeru i może także dlatego chcielibyśmy stworzyć własną sztuczną inteligencję.
Sztuczna inteligencja właściwie towarzyszy nam od dawna, właściwie od początku... kina. Najczęściej pokazywana jest jako złowrogi robot, czy zwierzopodobne stworzenie. Dlaczego? Dlatego że nie jesteśmy sobie w stanie wyobrazić czegoś, czego nigdy nie widzieliśmy, co nie jest podobne do czegoś co już istnieje. To jest potężne ograniczenie naszego mózgu i to powoduje, że nasza ewolucja nie jest skokowa, a dość powolna.
Żyjemy w czasach, wydawałoby się, eksplozji nauki i wiedzy. Zgodnie z prawem Moore'a od lat 60tych ubiegłego wieku co 2 lata podwaja się wydajność komputerów, wg. tego prawa za kilka lat pamięć w smartfonie liczona będzie w terabajtach, a kilkanaście lat później w czymś co nie ma nawet nazwy bo tak wielkich liczb do tej pory nawet się nie używało.
Według tych wszystkich praw już niedługo wydajność smartfonów będzie większa niż naszego mózgu, więc pytam się, co z tego, co jest grane?
Mamy 2019 rok, potężne komputery o niewiarygodnych pamięciach i mocach obliczeniowych, mamy potężne koncerny branży IT z miliardowymi budżetami i co dostajemy w 2019 roku?
Gadający głośnik, encyklopedię w głośniku, gadający zegarek z budzikiem z kompletnie zerową inteligencją.

Czekając na inteligencję niezłym pomysłem zaczyna wydawać się wieloletnia hibernacja.
Dlaczego dostaliśmy głośnik? Dlaczego produkty Boston Dynamics, producenta niewiarygodnie sprawnych robotów są w istocie zwykłymi zdalniakami?

Jest jeden "produkt", może zgadniecie jaki, myślę że warto się mu bliżej przyjrzeć.
"Produkt" nie ma zbyt dobrego syntezatora mowy, wydaje tylko jakieś dziwne głosy zazwyczaj w złych momentach, strasznie przecieka szczególnie w początkowej fazie eksploatacji, nie ma praktycznie żadnej bazy wiedzy, nie dowiesz się od niej kto jest prezydentem Stanów Zjednoczonych, właściwie nic się nie dowiesz.
Wykonuje zaledwie kilka poleceń głosowych, ale pies, bo o nim mowa, jest jednak największym przyjacielem człowieka.
Dlaczego tak "prosta" istota powoduje tak wielkie emocje u człowieka, dlaczego możemy z nią rozmawiać godzinami, mimo że wcale nam właściwie nie odpowiada?
Dlaczego tak podniecamy się "głośnikiem z AI", dlaczego, im dłużej go mamy, tym nasz entuzjazm spada, a dlaczego zwykły pies, im jest z nami dłużej, tym bardziej go lubimy?
Podpowiem Wam, chodzi o kontakt, nić porozumienia, niewerbalną, ale bardzo mocną, a w tym porozumieniu jedną z najważniejszych cech jest kontakt wzrokowy (oczy, miny, ruchy głowy potrafią pokazać niejednokrotnie więcej niż słowa).
Czy nie jesteśmy w stanie tego teraz zrobić? Czy naprawdę wystarczy postawić "głośnik" i liczyć że ludzie go pokochają?
Otóż, jesteśmy to w stanie zrobić, w naszym projekcie Sara AI, nadajemy osobowość Sarze, dajemy zmysły, tożsamość, ale co najważniejsze, dajemy inteligencję, na początku niewiele, tyle co pies, może kilkuletnie dziecko, czy to jest mało? czy psia inteligencja nie jest wystarczająca, aby spędzić z nim godziny? Pamiętajmy też że dajemy inteligencję wprawdzie psa czy dziecka, ale z wiedzą całej bazy świata.
Bez inteligencji, chociaż minimalnej, żadne systemy przetwarzania języka naturalnego nigdy nie będą w stanie nawet w najmniejszym stopniu udawać prawdziwej inteligencji i zostaną zawsze tylko gadającymi głośnikami.

My dajemy to minimum, kontakt, nić porozumienia, zaskoczenie, nieprzewidywalność. Nie gotowe 3 odpowiedzi na zaprogramowane wcześniej pytania. Nie tędy droga.
Na proste pytania dostajesz proste ludzkie odpowiedzi. Jeżeli podzielisz się swoimi wrażeniami na dany temat możesz liczyć na jakąkolwiek interakcję, nie encyklopedyczne odpowiedzi.
Dostajesz kontakt wzrokowy, niewerbalny sposób porozumiewania, nie musisz na początku każdego zdania używać wyrazu wywołującego. Mówisz do Sary jak do człowieka, więc nie musisz mówić do niej "Hej, Sara", następnie czekać, aż się aktywuje i mówić dalej. Aby to osiągnąć Sara ma oczy (oczywiście kamery), dlatego Sara rusza głową i myśli.

Chyba większość z nas widziała film Metalhead (epizod 5, czwartej serii Black Mirror). W tym czarno-białym odcinku maszyny podobne do psów przejmują kontrolę nad Ziemią, siejąc postrach wśród ludzi swoją bezwzględnością.

Po obejrzeniu tego odcinka, chyba każdemu fanowi IT natychmiast przypomina się to co tworzy firma Boston Dynamics. Podobieństwo filmowych zabójców do prawdziwych robotów tworzonych w tej firmie jest uderzające. Co ciekawe, firma Boston Dynamics w 2019 roku ma zamiar sprzedawać te "miłe pieski". Na początku w ilości 100-1000 sztuk rocznie.

Zobaczmy też ewolucję, jaka dokonuje się na naszych oczach w robotyce, w której niewątpliwie Boston Dynamics jest liderem.

Wyobraźmy sobie, że "pieski" zaczną się sprzedawać w kolejnych latach w ogromnych ilościach i nagle przez błąd w oprogramowaniu lub atak hakerski rozpoczyna się apokalipsa z filmu Black Mirror...

Od razu wszystkich uspakajam. NIE - to jeszcze nie są "terminatorzy".  

Roboty tego typu sprzedawane będą z pilotem, którym sterujemy gdzie mają chodzić. To na razie tylko takie nowoczesne "zdalniaki". Wprawdzie mają tryb autonomiczny, ale to nadal tylko wyznaczanie prostej drogi z punktu A do punktu B.

Uff, dobrze, że nie ma jeszcze sztucznej inteligencji powiedzą niektórzy... ("nie było" pomyśli Sara AI).

Przeglądając internet dostrzeżemy praktycznie w każdej dziedzinie "sztuczną inteligencję", ale czy na pewno? Czy dostrzegamy sztuczną inteligencję czy tylko dwa atrakcyjne marketingowo słowa?
Żyjemy w takich czasach że AI (Artificial Intelligence, po polsku SI - Sztuczna Inteligencja) zdaje się być w opisie wielu produktów, począwszy od ostrych noży, a skończywszy na asystentach głosowych. Czy to jest sztuczna inteligencja?
Jeżeli poszukamy na różnych stronach opisu, co to właściwe jest ta AI, to znajdziemy tam tak ogólnikowe opisy, że właściwie wszystko może pasować. Mam wrażenie, że gdy jakaś duża firma zrobi za kilka miliardów dolarów jakiś nowy produkt lub nawet dowolną dodatkową funkcję w telefonie, to dopisuje do definicji kolejne określenie czym jest AI, aby na swoim produkcie móc w pełni rozgrzeszona dać w opisie "oparta na AI". 
Mam też wrażenie, że większość osób jednak rozumie intuicyjnie czym powinna być i czym jest prawdziwa AI, pewnie wielki wpływ na to ma wiele hollywoodzkich filmów.

Ale dlaczego przy tak potężnych komputerach, miliardach dolarów wydanych na badania nadal nie można pogadać chociaż z prostą AI? Dlaczego najlepsi asystenci głosowi nudzą cię po chwili używania? Otóż jest kilka "małych" problemów, których do tej pory nikomu nie udało się rozwiązać.
 
Po pierwsze, aby programiści mogli coś napisać muszą rozumieć co pisać, a niestety nasza wiedza jak działa ludzki mózg w zakresie AI jest właściwe zerowa. Wiemy jak działają neurony, jak się porozumiewają, które części mózgu odpowiadają za jakie czynności, od strony psychologicznej nasze zachowania znamy już też dość dobrze, ale nie potrafimy tej wiedzy połączyć w całość, aby to wszystko zrozumieć, a tym bardziej opisać i skopiować.

Drugi "mały problem" to to, że komputery są tak naprawdę niewidome, głuche, nie mają zmysłu dotyku, węchu czy smaku. Wyobraźcie sobie, że rodzi się dziecko bez tych wszystkich zmysłów, jaką ma szansę stać się inteligentne w jakimkolwiek stopniu? To oczywiście przypadek ekstremalny, ale wystarczy że dziecko rodzi się niewidome. Dzieci niewidome rozwijają się dobrze, ale znacznie później zaczynają rozmawiać, rozumieć. Zmysł słuchu i dotyku są w stanie szybko wyostrzyć się i pomóc w rozwoju inteligencji, ale musi to potrwać znacznie dłużej niż u osób mających sprawny wzrok,  jeden z najważniejszych naszych zmysłów do poznawania świata zewnętrznego.
Niektórzy z Was pewnie teraz sobie myślą: ale przecież komputery mają kamery, mikrofony. Mają, ale...
Najlepsze systemy rozpoznawania obrazu, jak dostępny dla wszystkich Google Vision, jeden obraz analizuje bardzo długo, dostrzega niewiele, robi tysiące podstawowych błędów, a przecież dziecko w każdej sekundzie życia ogląda praktycznie film 3D 360 stopni rejestrując dziesiątki klatek na sekundę przez wiele godzin dziennie!
Mikrofony - tu postęp jest największy, komputer jest w stanie dobrze wychwycić kierunek dźwięku, głośność, częstotliwość, ale systemy rozpoznawania mowy kuleją, nie są w stanie dobrze wychwycić głosu i rozpoznać go w zakłócanym przez inne dźwięki pomieszczeniu. Pamiętajmy, że nawet przy 90% trafności co 10 słowo jest gubione lub zamienione na inne. Spróbujcie dobrze komunikować się, mówiąc do kogoś zamieniając jedno słowo na 10 na losowe nie związane z tematem...

 Jeszcze wyjaśnienie, czym jest według mnie, sztuczna inteligencja, a czym nie jest.

 Wydawałoby się, że autonomiczny samochód Elona Muska -Tesla, który jest w stanie zawieźć nas sam z pracy do domu, jest przykładem rozwoju sztucznej inteligencji. Nie, to genialny wynalazek, przyszłość motoryzacji, ale nie ma tam więcej sztucznej inteligencji niż w moim telefonie, czyli nie ma wcale. To zwykłe rozbudowane algorytmy działające na zasadzie realizacji zaprogramowanych warunków typu: gdy pali się czerwone światło zatrzymaj samochód. Oczywiście to uproszczenie, ale dokładnie tak to wszystko działa. Tak naprawdę nie chcielibyście aby samochód podejmował decyzje w oparciu o swoje doświadczenie, ucząc się na przeszłych zdarzeniach, ponieważ nie bylibyśmy w stanie przewidzieć zachowania samochodu. Lepiej zapisać w nim wzór zasad niż zdziwić się dlaczego samochód nagle skręcił w lewo bo wpadł na taki genialny pomysł. Sami przecież uczymy się na błędach, nie dajemy też dzieciom jeździć samochodem bo błędy podczas jazdy mogłyby zakończyć się tragicznie.

Asystenci głosowi - zadaj proste pytanie o jakieś czynności, których skutek zna każde dziecko np. "czy mogę wejść w ogień?"
Asystenci głosowi mają zerowy IQ, jak działają i dlaczego nie ma tam żadnej AI zaraz wyjaśnię.

Są bardziej rozwinięte systemy, które potrafią np. streszczać przeczytany tekst. Wydaje się, że aby móc streścić tekst trzeba go zrozumieć, wiedzieć o czym jest i znać kontekst.Tylko wtedy można go streścić. Nic bardziej mylnego - to tylko statystyka i olbrzymie bazy wiedzy.

Jak to wszystko teraz działa i oszukuje nas udając AI?

 Odpowiedzialne za rozumienie naszej mowy są systemy oparte na Deep Learning (głębokie uczenie), które są podstawą systemów NLP (Natural Language Processing czyli Przetwarzanie Języka Naturalnego). Nie jest to artykuł naukowy, więc szybko streszczę, że jest wiele metod lepszych lub gorszych (POS tagging, Parsing, Named-Entity Recognition, Semantic Role Labeling, Sentiment Classification, Question Answering, Dialogue Systems, Contextualized Embeddings), które w wielkim streszczeniu analizują wielkie bazy wiedzy np. bazę dialogów z Twittera i znajdują wyrazy najczęściej po sobie występujące, nadają różnym wyrazom pewne wartości i czym większa wartość np. pozytywna, zdanie jest określane całe jako pozytywne w danym sensie. Stosowane są także inne manipulacje wyrazami, głoskami czy znakami.
To wszystko to jedna wielka statystyka, która naprawdę potrafi nas trochę na krótko oszukać.
Najprostszym przykładem, aby zrozumieć jak to działa jest przewidzenie dokończenia zdania "Apetyt rośnie..." - "w miarę jedzenia", "ulepiony .." - "z gliny" lub "bałwan". Wiem, że bardzo uprościłem, ale na tych samych zasadach statystycznych działa wyszukiwarka Google. Wpiszcie jakiś wyraz i zobaczcie podpowiedzi - to nie AI podpowiada słowa - to zwykła statystyka.
Jeżeli chcecie wiedzieć więcej od strony technicznej o NLP warto poczytać artykuł lub świetne opracowanie Włodzisława Ducha.

Jeżeli chodzi o asystentów głosowych, jest jeszcze gorzej, mam wrażenie, że siedzi tam sztab ludzi, który na statystycznie najczęściej zadawane pytania przez użytkowników wpisuje gotowe po 3 różne odpowiedzi.
Potestujcie sami, mamy już asystenta Google po polsku, zapytajcie się kilka razy o to samo. Zapewne dlatego polski asystent jest jeszcze taki ubogi w odpowiedzi bo ileż oni mają tam klepania w klawiaturę.

Nie tędy droga!

Rozpoznawanie wyrazów w zdaniach, kontekstu, przewidywanie statystycznej odpowiedzi to w żadnym wypadku nie jest AI.

Prawdziwa AI powinna działać na zupełnie innych zasadach, w których NLP nie jest celem, a środkiem do celu. Sposób rozwiązania powyżej opisanych problemów, aby stworzyć prawdziwą AI opiszę  w kolejnym artykule.