Inne
Artykuł
Krzysztof Wołk, Środa, 20 marca 2019, 14:01

Dopiero w ostatnich kilku latach opracowano dostatecznie dobre rozwiązanie rozpoznawania obiektów za pomocą głębokich sieci konwolucyjnych. Dzięki niemu takie rozsławione w mediach zjawiska, jak autonomiczny sklep firmy Amazon czy inwigilacja chińskiego społeczeństwa na szeroką skalę, stały się możliwe. Dotyczy to także rozwiązań, z których każdy z nas korzysta lub z którymi się zetknął, jak rozpoznawanie twarzy lub pisma, rozszerzona rzeczywistość, wspomaganie obrazowania i diagnozowania medycznego itp. Mimo że nazwa „sieć konwolucyjna” kojarzy się z powieściami science fiction Williama Gibsona, zrozumiemy zasadę działania tego wynalazku, gdy dokonamy jego rozbioru na części składowe. 

 

Prosty start:

Zanim zaczniemy zastanawiać się, jak nasz komputer może rozpoznawać np. ptaki, spróbujmy zacząć od czegoś prostszego − od rozpoznawania napisanej odręcznie cyfry 8.

Wyobraźmy sobie, że stworzyliśmy małą sieć neuronową (na podstawie z wiedzy z artykułu o tłumaczeniu maszynowym), aby oszacować ceny domów w zależności od liczby sypialni, powierzchni czy dzielnicy, w jakiej się znajdują:

Wiemy także, że sama koncepcja uczenia maszynowego polega na wielokrotnym posługiwaniu się algorytmami. Wystarczy podstawić nowe dane, aby rozwiązać inne problemy. Dlatego też w tym przypadku zmodyfikujemy tę samą sieć neuronową, aby rozpoznać napisany odręcznie tekst. Aby uprościć ten proces, naszym zadaniem będzie rozpoznanie jednej cyfry − 8.

Uczenie maszynowe działa tylko wtedy, gdy mamy odpowiednie dane, najlepiej w dużej ilości. Dlatego, aby rozpocząć proces, potrzebne nam są duże ilości zdjęć, na których znajduje się odręcznie napisana cyfra osiem. Na nasze szczęście badacze wykreowali MNIST, czyli bazę danych zawierającą ręcznie napisane cyfry, służącą właśnie do uczenia maszynowego. MNIST daje nam dostęp do 60 000 obrazów z ręcznie napisanymi cyframi o rozmiarze 18x18 pikseli.

Oto trochę przykładów cyfry 8 z bazy MNIST:

Jeśli przyjrzymy się bliżej, dane wejściowe w naszej przykładowej sieci neuronowej to cyfry − 3 sypialnie czy 185,80 metrów kwadratowych powierzchni itd.

Teraz jednak chcemy, aby nasza sieć przeglądała obrazy. W jaki sposób tego dokonać?

Odpowiedź na to pytanie jest niezwykle prosta. Sieć neuronowa pobiera liczby jako dane wejściowe. Dla komputera każdy obraz stanowi tak naprawdę wykres cyfr, które reprezentują dane informujące o natężeniu czerni w każdym pikselu:

Zatem aby obraz cyfry 8 mógł być przetworzony w naszej sieci neuronowej, zostanie on potraktowany jako zbiór 324 cyfr (324, ponieważ 18x18 piksel). 

Aby było to możliwe, musimy zwiększyć naszą sieć, by miała 324 połączenia wejściowe:

Zauważmy, że nasza sieć neuronowa ma także dwa wyjścia (zamiast jednego). Pierwsze wyjście będzie przewidywało prawdopodobieństwo, że dany obraz reprezentuje cyfrę 8, a drugie wyjście będzie przewidywać prawdopodobieństwo, że dany obraz nie jest cyfrą 8. Stworzenie oddzielnych wyjść dla każdego typu obiektu, który chcemy rozpoznawać, umożliwia nam użycie sieci neuronowej do klasyfikacji obiektów w grupy.

Nasza sieć neuronowa jest o wiele większa niż poprzednia (324 wejścia zamiast 3!) Współczesne komputery, czy nawet telefony komórkowe są w stanie bez problemów przetwarzać takie ilości danych w sieci neuronowej.

Zostało więc tylko wytrenowanie naszej sieci neuronowej przy użyciu obrazów przedstawiających cyfrę osiem i inne cyfry, aby nauczyć ją rozpoznawania ósemki. Nauczymy ją, że prawdopodobieństwo obrazu z ósemką jest stuprocentowe, a obrazu zawierającego inną cyfrę − zero procent.

Oto przykład naszych danych uczących:

Jesteśmy w stanie wytrenować taki rodzaj sieci neuronowej w kilka minut na nowoczesnym laptopie. Kiedy ukończymy proces uczenia naszej sieci, będzie ona w stanie rozpoznawać obrazy odręcznie napisanej cyfry osiem z niezłą dokładnością.

Witajcie w erze rozróżniania obrazów późnych lat osiemdziesiątych!

Ocena artykułu:
Ocen: 18
Zaloguj się, by móc oceniać
Namonaki (2019.03.20, 15:42)
Ocena: 8

0%
Python !
tylko czy źródła są gdzieś dostępne do pobrania (i eksperymentowania)?
git clone ?
bi3dron4 (2019.03.20, 15:53)
Ocena: 11

0%
Moja sieć neuronowa jest już za płytka...
Namonaki (2019.03.20, 15:59)
Ocena: 12

0%
co nie którzy chcieli by wiedzieć jak coś działa :D

wyobraź sobie że Python'a uczy się na kierunku studiów geografia...
jest to jeden z najłatwiejszych jeżyków

a co do trudności to jeszcze nie zauważyłem żadnych pochodnych...
jeśli temat Cie przerasta po prostu możesz go ominąć
wszystkim nie dogodzisz :D
maxpower (2019.03.20, 16:20)
Ocena: 13

0%
Jestem zadowolony z artykułu. Jutro buduję Skynet.
kain (2019.03.20, 16:30)

0%
Garcia15 @ 2019.03.20 15:49  Post: 1195207
Zbyt głęboki i trudny artykuł. To nie jest portal programistyczny lub techniczny. Tutaj ludzie tylko czytają ciekawe newsy i recenzje co kupić. Po co nam szczegóły działania AI - ważne, że działa, nie zarabiamy w ten branży więc po co.


Robimy ciekawe, techniczne artykuły - źle. Robimy artykuły dla początkujących - też źle. Tak myślę że salomonowym rozwiązaniem jest omijanie tych artykułów które nas nie interesują ;)
Namonaki (2019.03.20, 16:56)
Ocena: 8

0%
kain @ 2019.03.20 16:30  Post: 1195220
Robimy ciekawe, techniczne artykuły - źle. Robimy artykuły dla początkujących - też źle. Tak myślę że salomonowym rozwiązaniem jest omijanie tych artykułów które nas nie interesują ;)

jak już mówiłem ...
Namonaki @ 2019.03.20 15:59  Post: 1195212

wszystkim nie dogodzisz :D


być może problemem jest brak ogniw pośrednich
Kitu (2019.03.20, 18:07)
Ocena: 13

0%
Namonaki @ 2019.03.20 15:59  Post: 1195212
wyobraź sobie że Python'a uczy się na kierunku studiów geografia...
jest to jeden z najłatwiejszych jeżyków

U mnie na informatyce wszyscy żartowali, że w zdecydowanej większości przypadków (i zastosowań) Python ogranicza się do 'import [odpowiednia biblioteka]' i trzech linijek na jej obsługę ;)
Andree (2019.03.20, 18:44)
Ocena: 1

0%
Bardzo ciekawy artykuł. Chyba będę musiał się nauczyć tego Pythona :P
Makavcio2 (2019.03.20, 18:52)
Ocena: 7

0%
Będę chyba musiał wrócić do tego artykułu przez weekend, kiedy sobie wypocznę i będę miał czas odświeżyć wiadomości z poprzedniego tekstu, bo momentami się tu gubię...

Takiego Laba pokochałem i za takim Labem przez ostatni rok tęskniłem <3
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook
Ostatnio komentowane