Specjalnie dla interaktywnie.com pisze Bartłomiej Sulerz z MOSQI.TO.
Sztuczna inteligencja ma za zadanie ułatwiać nam życie i pomagać w pracy. Na co dzień chętnie korzystamy z gadżetów takich jak Siri czy Alexa. Dopatrujemy się szans na dłuższe i lepsze życie, dzięki zastosowaniu AI w medycynie. Specjalne programy już teraz w ciągu 5 minut diagnozują choroby przewlekłe, wkrótce będą równie szybko oceniać ryzyko zawału, dokładnie prześwietlając siatkówkę oka.
Jednak, o ile AI w medycynie stwarza głównie szanse dla ludzkości, tak w innych dziedzinach życia jej szybki rozwój może nieco przerażać. Obecnie największym zagrożeniem ze strony sztucznej inteligencji jest pozbawienie ludzi miejsc pracy. Czy wkrótce staniemy się zbędni? Elon Musk dopatruje się w AI fundamentalnego zagrożenia dla cywilizacji, przed którym uchroni nas jedynie nieustanna kontrola i rozważne podejście do sztucznej inteligencji. Warto zatem poznać temat nieco lepiej.
Z tego tekstu dowiesz się, co leży u podstaw sztucznej inteligencji - AI (Artificial Intelligence), jak konstruowane są warunki oraz wagi w sieciach samouczących się. Zrozumiesz, dlaczego ludzkość zaczyna powoli oddawać pole sztucznej inteligencji.
Commodore 64 na dobry początek
Nigdy nie byłem mięśniakiem. Dlatego już od dziecka bardziej interesował mnie aspekt inteligencji. Być może dlatego, gdy dostałem pierwsze Commodore 64, od razu rozpocząłem naukę programowania - w przeciwieństwie do rówieśników, którzy w owym czasie trenowali sprawność joysticków. Marzenie napisania “myślącego” programu towarzyszyło mi od dziecka, jednak ani warsztat, ani technologia wówczas nie pozwalały mi na nic innego, jak pisanie prostych programów składających się z IFów. Jeśli nie wiecie, czym są IFy - w skrócie są to instrukcje warunkowe pozwalające algorytmowi podejmować “decyzje” w zależności od zaistniałej sytuacji. Np.: “Jeśli o 10:00 będzie padać, zostaję w domu, w przeciwnym razie - jadę nad wodę”. Korzystając z takich warunków, jesteśmy w stanie napisać prawie każdy program. Prawie.
Fragment przykładowego algorytmu:
If (a === b) {
… If (a < (b-c)) {
… If (a > d) {
…
Jeśli problem staje się bardziej złożony, mnogość takich warunków i stałe rozrastanie się ich może spowodować znaczne skomplikowanie kodu, wpływając na jego czytelność, łatwość rozwijania czy znajdowania błędów. Pewne problemy stają się na tyle skomplikowane, że stworzenie do ich rozwiązania algorytmu opierającego się na instrukcjach warunkowych może być po prostu niewykonalne.
Problem ten, głównie od strony teoretycznej i matematycznej, nie dawał spać naukowcom już w latach 40-tych XX w. Wtedy, jak to zwykle bywa, zaczęto szukać inspiracji w naturze, a konkretnie w ludzkim mózgu. Dzięki temu w 1943 r. McCulloch i Pitts opracowali prototyp sieci perceptronowej. Był to matematyczny model bazujący na ówczesnej wiedzy na temat neuronów - pojedyncza komórka mogła zostać “uruchomiona” poprzez przekazany do niej sygnał o odpowiedniej wartości.
Wytrenuj swoją sieć
Prosta sieć neuronowa składa się z określonych warstw – warstwy wejściowej, warstwy wyjściowej oraz dowolnej liczby warstw ukrytych pomiędzy nimi. Liczba i rozmiar warstw ukrytych nie jest z góry określona i można eksperymentować z różnymi ich ilościami i strukturami, by uzyskać najlepsze możliwe rezultaty dla danego problemu. Poprzez takie połączenie neuronów, naukowcy byli w stanie “uczyć” sieci prostych zadań. Warstwa wejściowa (na obrazku po lewej stronie) - jest to zbiór warunków jaki przekazujemy naszej funkcji, np. czujniki wilgoci w doniczkach. Naszym celem jest tak wytrenować sieć, by przy określonej ilości suchych doniczek włączyła ona system nawadniania. Wynikiem jest pojedynczy neuron wyjściowy (na obrazku po prawej stronie). Jeśli ten neuron wyjściowy zostanie aktywowany, uruchomi on spryskiwacz. Co znaczy “zostanie aktywowany”? Dla uproszczenia możemy założyć, że wartość jaką przyjmuje (od 0 do 1) powinna przekroczyć 0.5.
Aby nauczyć taką sieć poprawnego zachowania, bez konieczności zakodowania wszystkich instrukcji warunkowych dla wszystkich wariantów, potrzebujemy zestawu danych wejściowych wraz z oczekiwanym rezultatem. Np. dla wartości doniczek 100100100 chcemy uzyskać na wyjściu “1” tj. stan aktywny. Posiadając odpowiednio dużą porcję takiego wkładu do nauki, rozpoczynamy proces trenowania sieci.
Jak to działa?
Każdy neuron (prócz warstwy wejściowej po lewej stronie) jest połączony z każdym neuronem z warstwy poprzedniej. To połączenie nazywamy synapsą. Synapsa posiada swoją własną wartość liczbową, zwaną wagą. Przy generowaniu sieci wszystkie wagi są ustawiane losowo (istnieją pewne schematy pozwalające na takie ustawienie początkowe wag, by proces uczenia przebiegał możliwie najszybciej). Waga takiego połączenia wpływa na aktywację danego rozpatrywanego neuronu.
Dla przykładu - Neuron A posiada wartość aktywacji 0.6, waga połączenia między neuronem B i A wynosi 0.2345. Gdy neuron B dostanie “sygnał” na tej synapsie, przeliczy wartość swojej aktywacji: B = A * w, czyli B = 0.6 * 0.2345 = 0.1407.
Jeśli neuron posiadałby więcej synaps, jego aktywacja będzie sumą wszystkich połączeń: B = A1*w1 + A2*w2 + A3*w3 …
Ile ważą wagi?
Po co właściwie te wagi? Wagi stanowią integralną część konstrukcji, dzięki nim możemy taką sieć “uczyć”. Po załadowaniu - ustawieniu na warstwie wejściowej odpowiednio danych testowych - sieć dokonuje propagacji, czyli oblicza wszystkie aktywacje neuronów od lewej do prawej, dając odpowiedni rezultat na warstwie wyjściowej. Wynik ten jest porównywany do oczekiwanego i jeśli jest on od niego różny, zaczynamy tzw. “propagację wsteczną”. Polega ona na wstecznym przekazywaniu informacji, że waga powinna zostać zmodyfikowana, aby w przyszłości przy podawaniu tych samych danych wejściowych bardziej zbliżyć się do oczekiwanego rezultatu. Wartości, o ile powinny być zmodyfikowane konkretne wagi, wyliczane są za pomocą specjalnego wzoru matematycznego, przy czym zwykle te wartości są obniżane, aby nie dokonywać zbyt drastycznych zmian - chodzi nam o to, by dla każdego przypadku testowego sieć działała poprawnie, nie tylko dla testowanego w danym momencie.
Po wykonaniu serii takich cykli składających się z: danych wejściowych -> propagacji -> porównania wyniku z oczekiwanym -> propagacją wsteczną -> następnego przypadku testowego, wagi w połączeniach neuronów zaczną się same poprawiać aż do tego momentu, gdy nie będzie już przypadków testowych, w których rezultat jest inny niż oczekiwany. Wtedy proces uczenia dobiega końca i możemy zacząć używać takiej sieci do zaimplementowania jej w naszej aplikacji.
Dzięki temu, zamiast bardzo skomplikowanego i „zasobożernego” kodu, mamy bardzo prosty kod opierający się jedynie na tablicy, ustalonych wcześniej w procesie uczenia, wartości wag. Takie rozwiązanie bardzo dobrze sprawdza się przy rozpoznawaniu mowy, tekstu czy obrazów. Ogromną wadą takich rozwiązań jest konieczność posiadania bardzo dużej i zróżnicowanej kolekcji przypadków testowych zgodnie z zasadą - im większa kolekcja, tym bardziej dokładny i wiarygodny wynik.
Sieć uczy się pamiętać
Taki rodzaj sieci w dzisiejszych czasach jest już jednak nieco przestarzały i nie wystarcza do rozwiązywania naprawdę trudnych problemów, w których potrzebna jest zdolność samodzielnego podejmowania decyzji. Ostatnimi czasy, pojawiło się sporo nowych topologii sieci neuronowych, różniących się celami, jak i działaniem. Ich główną różnicą, w stosunku do opisanych wyżej sieci, jest ich wielokierunkowość lub tzw. rekurencyjność. Topologie takie pozwalają sieci posiadać “pamięć” i w odpowiednich momentach wracać do niej, by podjąć lepszą decyzję.
Bez względu na rodzaj używanej sieci, jest to zwykle duży krok naprzód w porównaniu do tradycyjnych rozwiązań. Gdyby nie sieci neuronowe, nie byłoby wszechpotężnego Google.
Co dalej?
Ostatnim trendem jest tworzenie takich sieci, które będą w stanie pokonać człowieka w zadaniach, które do tej pory wydawały się niemożliwe dla komputera. Przykładem może być Deep Mind, sztuczna inteligencja, która w bardzo krótkim, niemożliwym wręcz, czasie nauczyła się ogrywać najlepszych graczy w abstrakcyjną grę strategiczną GO. W grę, która do niedawna uważana była za zarezerwowaną wyłącznie dla ludzi, ze względu na konieczność zaangażowania intuicji, szacowania i “abstrakcji” ludzkiego umysłu. Obecnie Deep Mind, która brała aktywny udział w rozgrywkach internetowych, została odłączona ze względu na zdobycie zbyt znaczącej przewagi nawet nad najlepszymi mistrzami, powodując niepokój i niemałe zgorszenie wśród graczy.
Twórcy takich rozwiązań tworzą też interfejsy do “grania” w inne komputerowe gry, gdzie również odnoszą ogromne sukcesy. Co wynika z tego dla ludzkości? Uczmy się pilnie, AI nawet na chwilę nie przestaje!
Bartłomiej Sulerz, Head of Innovation, MOSQI.TO
Pobierz ebook "Social media marketing dla firm i agencje się w nim specjalizujące"
Zaloguj się, a jeśli nie masz jeszcze konta w Interaktywnie.com - możesz się zarejestrować albo zalogować przez Facebooka.
Projektujemy i wdrażamy strony internetowe - m.in. sklepy, landing page, firmowe. Świadczymy usługi związane …
Zobacz profil w katalogu firm
»
Pomagamy markom odnosić sukces w Internecie. Specjalizujemy się w pozycjonowaniu stron, performance marketingu, social …
Zobacz profil w katalogu firm
»
W 1999 roku stworzyliśmy jedną z pierwszych firm hostingowych w Polsce. Od tego czasu …
Zobacz profil w katalogu firm
»
1stplace.pl to profesjonalna agencja SEO/SEM, specjalizująca się w szeroko pojętym marketingu internetowym. Firma oferuje …
Zobacz profil w katalogu firm
»
Pozycjonujemy się jako alternatywa dla agencji sieciowych, oferując konkurencyjną jakość, niższe koszty i większą …
Zobacz profil w katalogu firm
»