Czym jest Deep Learning?
Deep Learning (uczenie głębokie) to dział Machine Learning (uczenia maszynowego), o którym jest w ostatnim czasie bardzo głośno. Zacznijmy więc może od tego czym jest uczenie maszynowe. Jest to dziedzina nauki zajmująca się systemami uczącymi się (a patrząc inaczej zajmująca się zagadnieniami prowadzącymi do powstania sztucznej inteligencji).
Są to np systemy:
- klasyfikujące emaile na spam / normalna wiadomość
- rozpoznające znaki
- rozpoznające mowę
- tłumaczące tekst
- przewidujące przyszłe ceny
Istotą jest jednak, że nie ma tutaj zakodowanych żadnych konkretnych reguł (typu: "Jeśli email zawiera jakieś słowo ze zbioru A to jest to prawdopodobnie spam"). Cała wiedza jest nabywana w procesie uczenia się - czyli np system jest uczony na podstawie określonej ilości emaili, które są oznaczone jako spam / normalna wiadomość, a potem na podstawie "nabytej wiedzy" klasyfikuje nowe emaile pod względem tego czy są spamem czy nie. Im więcej było danych treningowych tym system powinien lepiej się nauczyć.
Przykładowe algorytmy:
- sieci neuronowe
- naiwny klasyfikator Bayesa
- drzewa decyzyjne
- regresja liniowa / logistyczna
Ale czym w takim razie jest uczenie głębokie? Jest to taki dział uczenia maszynowego, gdzie model ma strukturę hierarchiczną, złożoną z wielu nieliniowych warstw. Co to oznacza w praktyce? W przypadku sieci neuronowych mamy po prostu dużą liczbę warstw ukrytych, gdzie każda kolejna warstwa odpowiada za nauczenie się coraz to bardziej złożonych właściwości. W przypadku sieci neuronowej służącej do rozpoznawania twarzy może to wyglądać następująco:
- pierwsza warstwa rozpoznaje krawędzie
- druga warstwa na podstawie krawedzi z pierwszej warstwy rozpoznaje proste figury geometryczne
- trzecia warstwa na podstawie informacji z drugiej warstwy rozpoznaje bardziej złożone figury
- czwarta rozpoznaje elementy takie jak ucho, nos, oko
- np piąta i szósta rozpoznaje różne kombinacje powyższych elementów
- siódma natomiast rozpoznaje już całą twarz
Tak można właśnie obrazowo patrzeć na to sformułowanie hierarchiczna budowa.
Głównymi używanymi tutaj algorytmami są (głębokie) sieci neuronowe różnego typu:
- jednokierunkowe
- konwolujcyjne
- rekurencyjne
- z pamięcią (LSTM - Long Short Term Memory)
Inne algorytmy to np:
- uczenie ze wzmocnieniem - które służą do uczenia się np grania w gry (wzmocnienie = informacja na koniec rozgrywki o tym czy była ona wygrana / przegrana, na podstawie której algorytm aktualizuje swoje postępowanie), właśnie w ten sposób nauczony został bot do gry Dota2, który zwyciężył z najlepszymi graczami na oficjalnych mistrzostwach (przeprowadził odpowiednio dużą liczbę rozgrywek, zaczynając od całkowicie losowych zachowań, aż do poziomu profesjonalnego gracza)
Jakie są główne zastosowania uczenia głębokiego (w uproszczeniu można powiedzieć, że są to te zastosowania uczenia maszynowego, gdzie potrzeba "głębokich" algorytmów, dużej liczby danych i dużej mocy obliczeniowej)? Są to:
- rozpoznawanie obrazów: poziom wyższy niż przeciętny człowiek
- stawianie diagnoz lekarskich na podstawie zdjęć medycznych: w wielu przypadkach poziom wyższy niż zespoły lekarzy
- autonomiczne pojazdy
- samodzielne roboty
- tworzenie streszczeń tekstów
- oraz wiele innych
Jeśli ktoś potrafi programować, to stworzenie jakiegoś podstawowego systemu jest dość proste, biorąc pod uwagę istniejące frameworki. Najbardziej popularne to:
- tensorflow (python)
- theano (python)
- torch (lua) / pytorch (python)
- caffe (c++)
Podobnie jak w przypadku kryptowalut ;-) tutaj moc obliczeniowa jest również bardzo ważna. nVidia wychodząc na przeciw wymaganiom oferuje np takie rozwiązanie:
https://www.nvidia.com/en-us/data-center/dgx-server/
96 krotne przyspieszenie w stosunku to standardowego serwera:
Niestety nie jest to raczej komputer dla Kowalskiego, gdyż cena jest zaporowa (z tego co pamiętam to 69k$). No ale nie ma co się dziwić:
Dlaczego Deep Learning zyskał na popularności dopiero w ostatnich kilku latach (mimo iż sieci neuronowe były znane od bardzo dawna, ale ich skuteczność nie była zadowalajaca w wielu przypadkach)? Złożyły się na 3 główne czynniki:
- dostęp do dużej mocy obliczeniowej
- rozwój wielu technik poprawiających właściwości algorytmów
- dostęp do dużej ilości danych
Czego możemy się spodziewać w ciągu najbliższych kilku lat?
- coraz to doskonalszych autonomicznych pojazdów / robotów
- duży udział takich systemów w procesach diagnoz medycznych
- systemów potrafiących zastąpić pracę w pewnych zawodach (co będzie wiązało się z utratą tych miejsc przez ludzi, ale też pojawią się nowe miejsca pracy)
- boty potrafiące pokonać człowieka w (prawie?) każdą grę komputerową
Czego można się spodziewać w ciągu najbliższych stu lat?
- stworzenia superinteligencji przewyższającej inteligencję ludzką
- wykorzystania tej superinteligencji w celu np eksploracji kosmosu
- w gorszym wypadku poważnego zagrożenia dla ludzkości (już teraz wiele osób (choćby Elon Musk) wskazuje na to, że rozwój sztucznej inteligencji może przynieść wiele zagrożeń
żródło zdjęć: https://www.nvidia.com
dobry art, może jakiś tutorial jak sobie samemu zrobić prosty program z wykorzystaniem deep learning (przy wykorzystaniu framework'ów np. w pythonie)? Najlepiej żeby przewidywał cenę BTC ;)
tip!
Chodzi mi właśnie po głowie coś takiego, żeby pokazać jak to działa na konkretnym przykładzie. A że jesteśmy na steemit to też pomyślałem o przewidywaniu kursu kryptowalut :) W wolnej chwili napiszę.
You've got talent!
This post received a 2.6% upvote from @randowhale thanks to @jacekw! For more information, click here!
@tipU quick guide | earn interest in @tipU profit
Temat bardzo świeży i wiele osób chce się tego uczyć. Myślę że to jest przyszłość, nie tak daleka ale jednak nadal przyszłość.
Jakie zastosowania Ciebie najbardziej interesują?
Najbardziej wszystkie te które prowadzą do powstania silnej sztucznej inteligencji (AGI - Artificial General Intelligence):
Congratulations @jacekw! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOPThis post has received a 14.43 % upvote from @buildawhale thanks to: @jacekw. Send 0.100 or more SBD to @buildawhale with a post link in the memo field to bid on the next vote.
To support our curation initiative, please vote on my owner, @themarkymark, as a Steem Witness