Zapobieganie : Obrona Techniczna




100 Pytań Do…Chief Digital Officer(a)


















Wczoraj , Dziś … Jutro




Chcesz mówić jak Jezus? Po aramejsku? Da się zrobić…



www.szkolazpieklarodem.pl





Wesprzyj Szkołę Z Piekła Rodem, kliknij w Reklamę…Dziękujemy…








TEST : Jak zrównoważone jest Twoje życie?




Numer 01 (49) / 2021




Odwiedzin: 34407
Dzisiaj: 9
On-line: 1
Strona istnieje: 1516 dni
Ładowanie: 0.384 sek


[ 295 ]


"PIEKIELNA" BIBLIOTECZKA



[www.szkolazpieklarodem.pl]


Jak napisać chatbota


WEB 3.0


Programowanie Komputera Kwantowego


Google Glass…w PHP





Zrób Sobie Własną Sieć Neuronową 



Klasyfikacja nie różni się zbytnio od przewidywania (IV)

Nazwaliśmy powyższą prostą maszynę predyktorem, ponieważ pobiera dane wejściowe i przewiduje, jaki powinien być wynik. Udoskonaliliśmy tę prognozę, dostosowując parametr wewnętrzny, informowany o błędzie, który widzieliśmy podczas porównywania ze znanym przykładem. Teraz spójrz na poniższy wykres pokazujący zmierzone szerokości i długości robaków ogrodowych.



Możesz wyraźnie zobaczyć dwie grupy. Gąsienice są cienkie i długie, a biedronki szerokie i krótkie. Pamiętasz predyktor, który próbował obliczyć prawidłową liczbę mil podanych kilometrów? Ten predyktor miał w sercu regulowaną funkcję liniową. Pamiętaj, że funkcje liniowe dają proste linie, gdy wykreślasz ich wynik względem danych wejściowych. Regulowany parametr c zmienił nachylenie tej prostej. Co się stanie, jeśli umieścimy linię prostą na tym wykresie?



Nie możemy użyć tej linii w taki sam sposób, jak wcześniej - aby zamienić jedną liczbę (kilometry) na inną (mile), ale być może możemy użyć tej linii do oddzielenia różnych rzeczy. Na powyższym wykresie, jeśli linia oddzielała gąsienice od biedronek, mogłaby posłużyć do sklasyfikowania nieznanego błędu na podstawie jego pomiarów. Powyższa linia jeszcze tego nie robi, ponieważ połowa gąsienic znajduje się po tej samej stronie linii podziału co biedronki. Wypróbujmy inną linię, ponownie dostosowując nachylenie, i zobaczmy, co się stanie.



Tym razem linka jest jeszcze mniej przydatna! W ogóle nie oddziela tych dwóch rodzajów błędów. Spróbujmy jeszcze raz:



To jest o wiele lepsze! Ta linia starannie oddziela gąsienice od biedronek. Możemy teraz użyć tej linii jako klasyfikatora błędów. Zakładamy, że nie ma innych rodzajów błędów, których byśmy nie widzieli - ale na razie to w porządku, po prostu próbujemy zilustrować ideę prostego klasyfikatora. Wyobraź sobie, że następnym razem nasz komputer użyje ramienia robota do podniesienia nowego błędu i zmierzy jego szerokość i wysokość, a następnie wykorzysta powyższą linię do prawidłowego zaklasyfikowania go jako gąsienicę lub biedronkę. Spójrz na poniższy wykres, możesz zobaczyć, że nieznany błąd to gąsienica, ponieważ leży nad linią. Ta klasyfikacja jest prosta, ale już dość potężna!



Widzieliśmy, jak funkcja liniowa wewnątrz naszych prostych predyktorów może zostać użyta do sklasyfikowania wcześniej niewidocznych danych. Ale pominęliśmy kluczowy element. Jak uzyskać właściwe nachylenie? W jaki sposób możemy ulepszyć linię, o której wiemy, że nie jest dobrym separatorem między tymi dwoma rodzajami błędów? Odpowiedź na to pytanie ponownie znajduje się w samym sercu tego, jak sieci neuronowe uczą się, i przyjrzymy się temu w następnej kolejności.

Prosta maszyna do przewidywania (III)

Zacznijmy bardzo prosto. Wyobraź sobie podstawową maszynę, która zadaje pytanie, "myśli" i podaje odpowiedź. Podobnie jak w powyższym przykładzie, gdy my sami przyjmujemy dane wejściowe naszymi oczami, używamy naszych mózgów do analizy sceny i dochodzimy do wniosku, jakie obiekty są w tej scenie. Oto jak to wygląda:



Komputery tak naprawdę nie myślą, to tylko gloryfikowane kalkulatory, pamiętajmy, więc użyjmy bardziej odpowiednich słów, aby opisać, co się dzieje:



Komputer pobiera pewne dane wejściowe, wykonuje obliczenia i wyświetla wynik. Poniżej ilustruje to. Dane wejściowe "3 x 4" są przetwarzane, być może poprzez zamianę mnożenia na łatwiejszy zestaw dodawania, i wyskakuje odpowiedź wyjściowa "12".



"To nie jest tak imponujące!" możesz pomyśleć. W porządku. Używamy tutaj prostych i znanych przykładów, aby przedstawić koncepcje, które będą miały zastosowanie do bardziej interesujących sieci neuronowych, którym przyjrzymy się później. Zwiększmy złożoność tylko o mały stopień. Wyobraź sobie maszynę, która konwertuje kilometry na mile, na przykład:



Teraz wyobraź sobie, że nie znamy wzoru na przeliczanie kilometrów na mile. Wiemy tylko, że związek między nimi jest liniowy. Oznacza to, że jeśli podwoimy liczbę w milach, ta sama odległość w kilometrach również się podwoi. To ma intuicyjny sens. Wszechświat byłby dziwnym miejscem, gdyby to nie była prawda! Ta liniowa zależność między kilometrami i milami daje nam wskazówkę na temat tego tajemniczego obliczenia - musi mieć postać "mile = kilometry x c", gdzie c jest stałą. Nie wiemy jeszcze, czym jest ta stała c. Jedyne inne wskazówki, które mamy, to przykłady parowania kilometrów z prawidłową wartością mil. Przypominają rzeczywiste obserwacje używane do testowania teorii naukowych - są przykładami prawdziwej prawdy



Co powinniśmy zrobić, aby obliczyć brakującą stałą c? Po prostu wybierzmy wartość na chybił trafił i spróbujmy! Spróbujmy c = 0,5 i zobaczmy, co się stanie.



Tutaj mamy mile = kilometry x c, gdzie kilometry to 100, a c to nasze obecne przypuszczenie na poziomie 0,5. To daje 50 mil. W porządku. To wcale nie jest złe, biorąc pod uwagę, że wybraliśmy losowo c = 0,5! Wiemy jednak, że to nie do końca prawda, ponieważ nasz przykład prawdy numer 2 mówi nam, że odpowiedź powinna brzmieć 62,137. Mylimy się do 12.137. To jest błąd, różnica między naszą obliczoną odpowiedzią a rzeczywistą prawdą z naszej listy przykładów. To jest,

błąd = prawda - obliczona
= 62,137 - 50
= 12,137



Więc, co dalej? Wiemy, że się mylimy i jak bardzo. Zamiast być powodem do rozpaczy, używamy tego błędu, aby poprowadzić drugie, lepsze, przypuszczenie na c. Spójrz ponownie na ten błąd. Byliśmy krótko przed 12.137. Ponieważ wzór na przeliczenie kilometrów na mile jest liniowy, mil = kilometry x c, wiemy, że zwiększenie c spowoduje zwiększenie wydajności. Przesuńmy c w górę z 0,5 do 0,6 i zobaczmy, co się stanie. Gdy c jest teraz ustawione na 0,6, otrzymujemy mile = kilometry x c = 100 x 0,6 = 60. To lepsze niż poprzednia odpowiedź wynosząca 50. Wyraźnie robimy postęp! Teraz błąd jest znacznie mniejszy 2.137. Może to być nawet błąd, z którym chętnie będziemy żyć.



Ważną kwestią jest to, że użyliśmy błędu, aby wskazać, w jaki sposób przesunęliśmy wartość c. Chcieliśmy zwiększyć wydajność z 50, więc trochę zwiększyliśmy c. Zamiast próbować użyć algebry do obliczenia dokładnej wartości, jaką c musi się zmienić, kontynuujmy ten sposób udoskonalania c. Jeśli nie jesteś przekonany i uważasz, że dość łatwo jest wypracować dokładną odpowiedź, pamiętaj, że wiele bardziej interesujących problemów nie będzie miało prostych wzorów matematycznych dotyczących danych wyjściowych i wejściowych. Dlatego potrzebujemy bardziej wyrafinowanych metod - takich jak sieci neuronowe. Zróbmy to jeszcze raz. Wydajność 60 jest nadal za mała. Zwiększmy ponownie wartość c z 0,6 do 0,7.



O nie! Poszliśmy za daleko i przekroczyliśmy znaną prawidłową odpowiedź. Nasz poprzedni błąd to 2,137, a teraz -7,863. Znak minus po prostu mówi, że mamy raczej przodozgryz, a nie przodozgryz, pamiętajcie, że błąd to (prawidłowa wartość - obliczona wartość). Ok, więc c = 0,6 było znacznie lepsze niż c = 0,7. Moglibyśmy być zadowoleni z małego błędu z c = 0,6 i zakończyć to ćwiczenie teraz. Ale idźmy trochę dłużej. Dlaczego nie podnieść c tylko o niewielką wartość, z 0,6 do 0,61.



To znacznie lepsze niż wcześniej. Mamy wartość wyjściową 61, która jest błędna tylko o 1,137 od prawidłowego 62,137. Tak więc ten ostatni wysiłek nauczył nas, że powinniśmy umiarkować, jak bardzo podnosimy wartość c. Jeśli dane wyjściowe zbliżają się do poprawnej odpowiedzi - to znaczy błąd się zmniejsza - nie należy tak mocno przesuwać zmiennego bitu. W ten sposób unikamy przekroczenia właściwej wartości, tak jak robiliśmy to wcześniej. Znowu bez zbytniego rozpraszania się dokładnymi sposobami pracy out c, i aby pozostać skupionym na idei sukcesywnego jej udoskonalania, moglibyśmy zasugerować, że korekta jest ułamkiem błędu. To intuicyjnie słuszne - duży błąd oznacza, że potrzebna jest większa korekta, a mały błąd oznacza, że potrzebujemy najmniejszego szturchnięcia, aby c. To, co właśnie zrobiliśmy, wierz lub nie, przechodzi przez sam rdzeń procesu uczenia się w sieci neuronowej - przeszkoliliśmy maszynę, aby coraz lepiej dawała właściwą odpowiedź. Warto zatrzymać się i się nad tym zastanowić - nie rozwiązaliśmy problemu dokładnie w jednym kroku, jak to często robimy w szkolnych zadaniach matematycznych lub przyrodniczych. Zamiast tego przyjęliśmy zupełnie inne podejście, próbując odpowiedzi i wielokrotnie ją poprawiając. Niektórzy używają terminu iteracyjny, co oznacza ciągłe ulepszanie odpowiedzi krok po kroku.

Kluczowe punkty:

•  Wszystkie użyteczne systemy komputerowe mają dane wejściowe i wyjściowe, a pomiędzy nimi jakieś obliczenia. Sieci neuronowe nie są inne.
•  Gdy nie wiemy dokładnie, jak coś działa, możemy spróbować to oszacować za pomocą modelu zawierającego parametry, które możemy dostosować. Gdybyśmy nie wiedzieli, jak zamienić kilometry na mile, moglibyśmy użyć funkcji liniowej jako modelu z regulowanym gradientem.
•  Dobrym sposobem udoskonalenia tych modeli jest dostosowanie parametrów na podstawie tego, jak błędny jest model w porównaniu ze znanymi prawdziwymi przykładami.

Łatwe dla mnie, trudne dla Ciebie (II)

Komputery to nic innego jak kalkulatory. Są bardzo, bardzo szybkie w arytmetyce. Jest to świetne rozwiązanie do wykonywania zadań, które pasują do tego, co robi kalkulator - sumowanie liczb w celu obliczenia sprzedaży, stosowanie procentów do obliczania podatku, wykreślanie wykresów istniejących danych. Nawet oglądanie programów telewizyjnych lub przesyłanie strumieniowe muzyki przez komputer nie wymaga wiele więcej niż wielokrotne wykonywanie przez komputer prostych instrukcji arytmetycznych. Może cię to zaskoczyć, ale rekonstrukcja klatki wideo z zer i jedynek, które są przesyłane przez Internet do twojego komputera, odbywa się za pomocą arytmetyki, niewiele bardziej złożonej niż sumy, które zrobiliśmy w szkole. Bardzo szybkie sumowanie liczb - tysiące, a nawet miliony na sekundę - może robić wrażenie, ale nie jest to sztuczna inteligencja. Człowiek może mieć trudności z bardzo szybkim zrobieniem dużych sum, ale proces robienia tego nie wymaga wcale dużej inteligencji. Wymaga to po prostu umiejętności wykonywania bardzo podstawowych instrukcji, a to właśnie robi elektronika wewnątrz komputera. A teraz odwróćmy sprawy i odwróćmy sytuację na komputerach! Spójrz na poniższe obrazy i zobacz, czy potrafisz rozpoznać, co zawierają:



Ty i ja możemy spojrzeć na zdjęcie przedstawiające ludzkie twarze, kota lub drzewo i rozpoznać je. W rzeczywistości możemy to zrobić dość szybko i z bardzo dużą dokładnością. Nie często się mylimy. Możemy przetworzyć dość dużą ilość informacji zawartych w obrazach i bardzo skutecznie przetworzyć je, aby rozpoznać zawartość obrazu. Tego rodzaju zadanie nie jest łatwe dla komputerów - w rzeczywistości jest niezwykle trudne.

Problem: Komputer: Człowiek

Szybko pomnóż tysiące dużych liczb: Łatwo: Trudno
Znajdź twarze na zdjęciu tłumu ludzi: Trudne: Łatwe

Podejrzewamy, że rozpoznawanie obrazu wymaga ludzkiej inteligencji - czegoś czego brakuje maszynom, bez względu na to, jak skomplikowane i potężne są je zbudowane, ponieważ nie są ludźmi. Ale właśnie chcemy aby z tego rodzaju problemami komputery lepiej radziły sobie - ponieważ są szybkie i nie męczą się. I właśnie tego rodzaju trudnych problemów dotyczy sztuczna inteligencja. Oczywiście komputery zawsze będą zbudowane z elektroniki, więc zadaniem sztucznej inteligencji jest znalezienie nowych rodzajów recept lub algorytmów, które działają na nowe sposoby, aby spróbować rozwiązać tego rodzaju trudniejsze problemy. Nawet jeśli nie całkiem dobrze, ale wystarczająco dobrze, aby sprawiać wrażenie człowieka podobnego do inteligencji w pracy.

Kluczowe punkty:

•  Niektóre zadania są łatwe dla tradycyjnych komputerów, ale trudne dla ludzi. Na przykład mnożenie milionów par liczb.
•  Z drugiej strony, niektóre zadania są trudne dla tradycyjnych komputerów, ale łatwe dla ludzi. Na przykład rozpoznawanie twarzy na zdjęciu tłumu

Poszukiwanie inteligentnych maszyn (I)

Przez tysiące lat my, ludzie, próbowaliśmy zrozumieć, jak działa nasza własna inteligencja i powielać ją w jakichś maszynach myślących. Nie zadowalały nas mechaniczne lub elektroniczne maszyny pomagające nam w prostych zadaniach - krzemień iskrzący pożary, koła pasowe podnoszące ciężkie skały i kalkulatory wykonujące obliczenia. Zamiast tego chcemy zautomatyzować bardziej wymagające i złożone zadania, takie jak grupowanie podobnych zdjęć, rozpoznawanie chorych komórek od zdrowych, a nawet przeprowadzanie porządnej partii szachów. Wydaje się, że zadania te wymagają ludzkiej inteligencji lub przynajmniej bardziej tajemniczych, głębszych zdolności ludzkiego umysłu, których nie ma w prostych maszynach, takich jak kalkulatory. Maszyny z tą ludzką inteligencją są tak uwodzicielską i potężną ideą, że nasza kultura jest pełna fantazji i obaw - niezwykle zdolnych, ale ostatecznie groźnych HAL 9000 w filmie Stanleya Kubricka 2001: A Space Odyssey, szalonych robotach Terminator i gadającym samochodzie KITT z fajną osobowością z klasycznego serialu telewizyjnego Knight Rider. Kiedy Gary Kasparow, aktualny mistrz świata w szachach i arcymistrz, został pokonany przez komputer IBM Deep Blue w 1997 roku, obawialiśmy się potencjału inteligencji maszynowej, tak samo jak świętowaliśmy to historyczne osiągnięcie. Nasze pragnienie posiadania inteligentnych maszyn gdzie Turek była po prostu osobą ukrytą w szafce!

Nowy złoty wiek inspirowany naturą

Optymizm i ambicja w zakresie sztucznej inteligencji rosły wysoko, gdy temat został sformalizowany w latach pięćdziesiątych. Pierwsze sukcesy polegały na tym, że komputery grały w proste gry i dowodziły twierdzeń. Niektórzy byli przekonani, że maszyny o inteligencji na poziomie ludzkim pojawią się w ciągu mniej więcej dekady. Ale sztuczna inteligencja okazała się trudna, a postęp utknął w martwym punkcie. Lata siedemdziesiąte przyniosły druzgocące wyzwanie akademickie dla ambicji związanych ze sztuczną inteligencją, a następnie cięcia finansowania i utratę zainteresowania. Wydawało się, że maszyny o zimnej, twardej logice, absolutnych jedynek i zer, nigdy nie byłyby w stanie osiągnąć organicznych, czasem rozmytych, procesów myślowych biologicznych mózgów. Po okresie niewielkich postępów pojawił się niesamowicie potężny pomysł, aby wyprowadzić poszukiwania inteligencji maszynowej z rutyny. Dlaczego nie spróbować zbudować sztucznych mózgów, kopiując sposób działania prawdziwych biologicznych mózgów? Prawdziwe mózgi z neuronami zamiast bramek logicznych, bardziej miękkie, bardziej organiczne rozumowanie zamiast zimnych, twardych, czarno-białych, absolutystycznych tradycyjnych algorytmów. Naukowców zainspirowała pozorna prostota mózgu pszczoły lub gołębia w porównaniu ze złożonymi zadaniami, które mogli wykonać. Wydawało się, że ułamek grama jest w stanie sterować lotem i przystosowywać się do wiatru, identyfikować pokarm i drapieżniki oraz szybko decydować, czy walczyć, czy uciec. Z pewnością komputery, teraz z ogromnymi tanimi zasobami, mogą naśladować i ulepszać te mózgi? Pszczoła ma około 950 000 neuronów - czy dzisiejsze komputery z gigabajtami i terabajtami zasobów mogą przewyższyć pszczoły? Jednak przy tradycyjnym podejściu do rozwiązywania problemów - te komputery z ogromną pamięcią masową i superszybkimi procesorami nie były w stanie osiągnąć tego, co mogłyby zrobić stosunkowo maleńkie mózgi ptaków i pszczół. Sieci neuronowe wyłoniły się z tego dążenia do inteligentnych obliczeń inspirowanych biologicznie - i stały się jedną z najpotężniejszych i najbardziej użytecznych metod w dziedzinie sztucznej inteligencji. Dziś Deepmind firmy Google, która osiąga fantastyczne rzeczy, takie jak samodzielna nauka gry w gry wideo i po raz pierwszy pokonanie mistrza świata w niezwykle bogatej grze Go, ma u podstaw sieci neuronowe. Sieci neuronowe są już sercem codziennych technologii - takich jak automatyczne rozpoznawanie tablic rejestracyjnych samochodów i dekodowanie odręcznych kodów pocztowych na odręcznych listach. Ten przewodnik dotyczy sieci neuronowych, zrozumienia ich działania i stworzenia własnej sieci neuronowej, którą można wyszkolić w rozpoznawaniu postaci pisanych odręcznie, co jest bardzo trudne w przypadku tradycyjnego podejścia do informatyki.

Ten przewodnik jest dla każdego, kto chce zrozumieć, czym są sieci neuronowe. Jest dla każdego, kto chce tworzyć i wykorzystywać własne. I to jest dla każdego, kto chce docenić dość łatwe, ale ekscytujące pomysły matematyczne, które są podstawą ich działania. Ten przewodnik nie jest skierowany do ekspertów w dziedzinie matematyki lub informatyki. Nie będziesz potrzebować żadnej specjalnej wiedzy ani zdolności matematycznych poza matematyką szkolną. Jeśli możesz dodawać, mnożyć, odejmować i dzielić, możesz stworzyć własną sieć neuronową. Najtrudniejszą rzeczą, jakiej użyjemy, jest rachunek gradientowy - ale nawet ta koncepcja zostanie wyjaśniona tak, aby jak najwięcej czytelników mogło ją zrozumieć. Zainteresowani czytelnicy mogą chcieć skorzystać z tego przewodnika, aby wybrać się na dalsze ekscytujące wycieczki po sztucznej inteligencji. Kiedy już opanujesz podstawy sieci neuronowych, możesz zastosować podstawowe idee do wielu różnych problemów. Nauczyciele mogą wykorzystać ten przewodnik jako szczególnie delikatne wyjaśnienie sieci neuronowych i ich implementacji, aby zachwycić i pobudzić uczniów do samodzielnego uczenia się sztucznej inteligencji za pomocą zaledwie kilku wierszy kodu języka programowania. Kod został przetestowany na Raspberry Pi, małym, niedrogim komputerze bardzo popularnym w szkołach i wśród młodych uczniów.

Co będziemy robić?

Wybierzemy się w podróż do stworzenia sieci neuronowej, która będzie rozpoznawać liczby zapisane odręcznie. Zaczniemy od bardzo prostego przewidywania neuronów i stopniowo będziemy je poprawiać, gdy osiągniemy ich granice. Po drodze zrobimy krótkie przystanki, aby poznać kilka pojęć matematycznych potrzebnych do zrozumienia, w jaki sposób sieci neuronowe uczą się i przewidują rozwiązania problemów. Będziemy podróżować przez pojęcia matematyczne, takie jak funkcje, proste klasyfikatory liniowe, udoskonalanie iteracyjne, mnożenie macierzy, rachunek gradientowy, optymalizacja poprzez pochodzenie gradientu, a nawet obroty geometryczne. Ale wszystko to zostanie wyjaśnione w naprawdę delikatny i przejrzysty sposób i nie zakłada absolutnie żadnej wcześniejszej wiedzy ani doświadczenia poza prostą matematyką szkolną. Kiedy już pomyślnie stworzymy naszą pierwszą sieć neuronową, weźmiemy pomysł i będziemy go używać w różnych kierunkach. Na przykład użyjemy przetwarzania obrazu, aby ulepszyć nasze systemy uczące się bez uciekania się do dodatkowych danych szkoleniowych. Zajrzymy nawet do umysłu sieci neuronowej, aby zobaczyć, czy ujawnia coś wnikliwego - coś, co niewielu przewodników pokazuje, jak to zrobić! Nauczymy się również Pythona, łatwego, użytecznego i popularnego języka programowania, ponieważ stopniowo tworzymy własną sieć neuronową. Ponownie, żadne wcześniejsze doświadczenie w programowaniu nie będzie zakładane ani potrzebne.

Jak to zrobimy?

Głównym celem tego przewodnika jest udostępnienie koncepcji sieci neuronowych jak największej liczbie osób. Oznacza to, że zawsze zaczniemy pomysł w naprawdę wygodnym i znajomym miejscu. Następnie wykonamy małe, łatwe kroki, budując z tego bezpiecznego miejsca, aby dotrzeć do miejsca, w którym mamy wystarczająco dużo zrozumienia, aby coś docenić naprawdę fajne lub ekscytujące w sieciach neuronowych. Aby wszystko było jak najbardziej dostępne, oprzemy się pokusie omawiania wszystkiego, co jest bardziej niż ściśle wymagane do stworzenia własnej sieci neuronowej. Będzie ciekawy kontekst i styczne elementy, które docenią niektórzy czytelnicy, a jeśli to ty, zachęcamy do ich zbadania szerzej. W tym przewodniku nie omówimy wszystkich możliwych optymalizacji i udoskonaleń sieci neuronowych. Jest ich wiele, ale odwrócą uwagę od podstawowego celu - wprowadzenia podstawowego pomysłu było tak proste i uporządkowane, jak to tylko możliwe. Ten przewodnik jest celowo podzielony na trzy sekcje:

•  W części 1 delikatnie przeanalizujemy matematyczne koncepcje w prostych sieciach neuronowych. Celowo nie będziemy wprowadzać żadnego programowania komputerowego, aby nie odwracać uwagi od podstawowych pomysłów.
•  W części 2 nauczymy się języka Python na tyle, aby zaimplementować naszą własną neutralną sieć. Nauczymy go rozpoznawać odręczne numery i przetestujemy jego działanie.
•  W części 3 pójdziemy dalej, niż to konieczne do zrozumienia prostych sieci neuronowych, tylko po to, żeby się trochę zabawić. Spróbujemy pomysłów na dalsze polepszenie wydajności naszej sieci neuronowej. Zajrzymy do wyszkolonej sieci, aby zobaczyć, czy możemy zrozumieć, czego się nauczyła i jak decyduje o swoich odpowiedziach.

I nie martw się, wszystkie narzędzia oprogramowania, których będziemy używać, będą darmowe i otwarte, więc nie będziesz musiał płacić za ich używanie. Nie potrzebujesz też drogiego komputera do stworzenia własnej sieci neuronowej. Cały kod w tym przewodniku został przetestowany pod kątem pracy z bardzo niedrogim Raspberry Pi Zero, a na końcu znajduje się sekcja wyjaśniająca, jak przygotować Raspberry Pi.