Menu
Jest wolny
Zameldować się
główny  /  Oprogramowanie / Sieci neuronowe z prostymi słowami. Proste słowa o trudnych: Co to jest sieci neuronowe? Historia sieci neuronowych

Sieci neuronowe to proste słowa. Proste słowa o trudnych: Co to jest sieci neuronowe? Historia sieci neuronowych

James Loy, Politechnika Techniczna Georgia Technology. Przewodnik dla początkujących, po czym możesz stworzyć własną sieć neuronową na Pythonie.

Motywacja:skupiający się na osobiste doświadczenie W nauce głębokiego treningu postanowiłem stworzyć sieć neuronową od podstaw bez złożonej biblioteki szkoleniowej, takich jak na przykład. Wierzę, że dla początkującego danego naukowca ważne jest zrozumienie wewnętrznej struktury.

Ten artykuł zawiera to, czego się nauczyłem, a mam nadzieję, że będzie to dla ciebie przydatne! Inne przydatne artykuły na ten temat:

Jaka jest sieć neuronowa?

Większość artykułów na sieci neuronowych prowadzona jest z parallelami mózgowymi. Łatwiej mnie opisać sieci neuronowe Jako funkcja matematyczna, która wyświetla określony wejście do pożądanego wyniku, nie szczegółowo.

Sieci neuronowe składają się z następujących elementów:

  • warstwa wlotowa, x
  • arbitralny numer Ukryte warstwy
  • warstwa wyjściowa, ŷ
  • zestaw waży i przemieszczenia Między każdą warstwą W. i b.
  • wybór dla każdej ukrytej warstwy σ ; W tej pracy użyjemy funkcji aktywacji SIGMOID.

Poniższy diagram pokazuje architekturę dwuwarstwowej sieci neuronowej (zauważ, że poziom wejściowy jest zwykle wykluczony, gdy licząc liczbę warstw w sieci neuronowej).

Tworzenie klasy Neural Network na Pythonie wygląda prosto:

Trening Neural Network.

Wynik ŷ prosta dwuwarstwowa sieć neuronowa:

W powyższym równaniu waga W i offset B są jedynymi zmiennymi wpływającymi na wyjście ŷ.

Oczywiście, prawidłowe wartości wagi i przemieszczeń określają dokładność przewidywania. Proces cienkie ustawienie Wagi i przemieszczenia danych wejściowych są znane jako.

Każda iteracja procesu uczenia się składa się z następujących kroków

  • obliczanie przewidywanego wyjścia ŷ zwane dystrybucją bezpośredniej
  • aktualizowanie ciężarów i przemieszczeń

Poniższy wykres szeregowy ilustruje proces:

Dystrybucja bezpośrednia

Jak widzieliśmy na wykresie powyżej, Dystrybucja bezpośrednia jest po prostu łatwym obliczeniami, a dla podstawowej 2-warstwowej sieci neuronowej, wycofanie sieci neuronowej podaje się wzorem:

Dodajmy funkcję dystrybucji bezpośredniej do naszego kodu na Pythonie-E, aby to zrobić. Zauważ, że dla prostoty sugerujemy, że przesunięcie jest równe 0.

Jednak potrzebujesz sposobu na ocenę "jakości" naszych prognoz, to jest, jak daleko są nasze prognozy). Funkcja straty Po prostu pozwala nam to zrobić.

Funkcja straty

Istnieje wiele dostępnych funkcji strat, a charakter naszego problemu powinien dyktować nas wybór funkcji straty. W tej pracy będziemy używać suma kwadratów błędów Jako funkcja straty.

Ilość kwadratów błędów jest średnia różnica między każdą przewidywaną a rzeczywistą wartością.

Celem nauki jest znalezienie zestawu skal i przemieszczeń, które minimalizują funkcję straty.

Odwrotna dystrybucja

Teraz, gdy mierzyliśmy nasz błąd prognozy (strata), musimy znaleźć sposób Rozpowszechnianie błędów i zaktualizuj nasze wagi i przesunięcia.

Aby dowiedzieć się odpowiedniej ilości, aby dostosować wagi i przemieszczenia, musimy poznać funkcję pochodną straty w odniesieniu do ciężarów i przesunięć.

Przypomnij sobie z analizy funkcja pochodna jest stycznym kątem nachylenia funkcji.

Jeśli mamy pochodną, \u200b\u200bmożemy po prostu zaktualizować wagi i przesunięcia, zwiększając je / zmniejszając je (patrz wykres powyżej). Nazywa się.

Nie możemy jednak bezpośrednio obliczyć pochodną funkcji straty w stosunku do wag i przemieszczeń, ponieważ równanie funkcji straty nie zawiera skal i przemieszczeń. Dlatego potrzebujemy zasady łańcucha, aby pomóc w obliczeniach.

Fuch! To było kłopotliwe, ale pozwoliło uzyskać to, czego potrzebujemy - pochodną (nachylenie) funkcji straty w stosunku do wag. Teraz możemy odpowiednio dostosować ciężary.

Dodaj funkcję backpropagagation do naszego kodu na Python-E:

Sprawdzanie pracy neurosetyki

Teraz, gdy mamy pełny kod na Python-E, aby wykonać dystrybucję bezpośredniego i odwrotnej, spójrzmy na naszą neuronową sieć na przykładzie i zobacz, jak to działa.


Idealny zestaw skal

Nasza sieć neuronowa powinna odkrywać idealny zestaw skal do prezentacji tej funkcji.

Trenujmy sieć neuronową na 1500 iteracji i zobaczymy, co się stanie. Biorąc pod uwagę harmonogram strat na temat iteracji, możemy wyraźnie zobaczyć, że strata monotonicznie zmniejsza się do minimum. Jest to zgodne z algorytmem zejścia gradientu, które powiedzieliśmy wcześniej.

Spójrzmy na ostatnią prognozę (wyjście) z sieci neuronowej po 1500 iteracjach.

Zrobiliśmy to!Nasze bezpośrednie i zwracane algorytm rozpowszechniania wykazały pomyślną obsługę sieci neuronowej, a prognozy zbiegają się na prawdziwych wartości.

Należy pamiętać, że istnieje niewielka różnica między prognozami a rzeczywistymi wartościami. Jest to pożądane, ponieważ uniemożliwia lepszą sieć neuronalną uogólnienie niewidzialnych danych.

Ostateczne refleksje

Dowiedziałem się dużo w procesie pisania od podstaw mojej własnej sieci neuronowej. Chociaż biblioteki głębokiej uczenia się, takie jak Tensorlow i Keras, umożliwiają tworzenie głębokich sieci bez całkowitego zrozumienia wewnętrznej pracy sieci neuronowej, uważam, że początkujący dane naukowca jest przydatny, aby uzyskać głębsze zrozumienie.

Zainwestowałem dużo mojego osobistego czasu ta pracaI mam nadzieję, że będzie przydatne dla ciebie!


Wiele warunków sieci neuronowych wiąże się z biologią, więc zacznijmy od samego początku:

Mózg jest skomplikowany, ale można go podzielić na kilka głównych części i operacji:

Agent przyczynowy może być wewnętrzny(Na przykład obraz lub pomysł):

A teraz spójrz na główny i uproszczony częścimózg:


Mózg jest ogólnie podobny do sieci kablowej.

Neuron.- Główna jednostka rachunku w mózgu, otrzymuje i przetwarza sygnały chemiczne innych neuronów i, w zależności od wielu czynników, lub nic, ani nie generuje impuls elektryczny lub potencjał działania, który następnie napędza sygnały dostosować połączonyneurony:

Marzenia, wspomnienia, ruchy samoregulacyjne, refleksy i rzeczywiście wszystko, co myślisz lub robisz - wszystko dzieje się z powodu tego procesu: miliony, a nawet miliardy neuronów pracują na różnych poziomach i tworzyć połączenia, które tworzą różne równoległe podsystemy i są biologicznym neuronem netto.

Oczywiście to wszystko jest uproszczone i uogólnieni, ale dzięki nimi możemy opisać proste
Sieć neuronowa:

I jest sformalizowany do opisania go z wykresem:

Niektóre wyjaśnienia są wymagane tutaj. Kubki są neuronami, a linie to połączenia między nimi,
I nie skomplikować na tym etapie, pojednaniereprezentują bezpośredni ruch informacji od lewej do prawej. Pierwszy Neuron B. ten moment Aktywny i podświetlony szary. Przypisaliśmy mu również numer (1 - jeśli działa, 0 - jeśli nie). Liczby między pokazami neuronów wagakomunikacja.

Wykresy powyżej pokazują moment czasu sieciowego, aby uzyskać dokładniejsze mapowanie, musisz podzielić go w segmenty tymczasowe:

Aby utworzyć sieć neuronową, musisz zrozumieć, w jaki sposób wagi wpływają na neurony i jak szkolone są neurony. Jako przykład, weź królika (testuj królik) i umieść go w warunkach klasycznego eksperymentu.

Kiedy są wysyłane przez bezpieczny strumień powietrza, królików, takich jak ludzie, mrugnij:

Ten model zachowania można rysować przez wykresy:

Podobnie jak w poprzednim schemacie, te wykresy pokazują tylko moment, kiedy królik czuje cios, a my jesteśmy tak kodowaniemrugaj jako wartość logiczną. Ponadto obliczymy, czy drugi neuron jest wyzwalany, na podstawie wartości wagi. Jeśli jest równy 1, to działa neuron dotykowy, mrugamy; Jeśli waga jest mniejsza niż 1, nie mrugamy: drugi neuron limit- 1.

Przedstawiamy inny element - bezpieczny sygnał dźwiękowy.:

Możemy symulować interesy królika takiego:

Główną różnicą jest to, że teraz waga jest równa zeroWięc nie dostaliśmy migającego królika, na razie, przynajmniej. Teraz naucz królika mrugającego na zespole, mieszając
bodźce (sygnał dźwiękowy i dmuchanie):

Ważne jest, aby te wydarzenia występowały w różnych tymczasowych epokiNa wykresach będzie wyglądać tak:

Sam dźwięk nie ma nic, ale przepływ powietrza nadal sprawia, że \u200b\u200bkrólik mrugnie i pokazujemy go przez wagi pomnożone przez bodźce (czerwone).

Treningzłożone zachowanie może być uproszczone jako stopniowa zmiana wagi pomiędzy związanych neuronami w czasie.

Aby trenować królik, powtórz akcję:

Za pierwsze trzy próby schematu będą wyglądać tak:

Należy pamiętać, że waga dla bodźca dźwiękowego rośnie po każdym powtórzeniu (podświetlona na czerwono), ta wartość jest teraz dowolna - wybraliśmy 0,30, ale liczba może być cokolwiek, nawet negatywna. Po trzecim powtórzeniu nie zauważysz zmian w zachowaniu królika, ale po czwartym odwrotnie, coś zaskakujące - zachowa się zmieni.

Usunęliśmy efekty powietrza, ale królik wciąż miga, usłyszałem sygnał dźwiękowy! Wyjaśnij to zachowanie, może nasz ostatni schemat:

Szkoliliśmy królika, aby zareagować na dźwięk migania.


W prawdziwym eksperymencie ten rodzaj może wymagać więcej niż 60 powtórzeń, aby osiągnąć wynik.

Teraz zostawimy biologiczny świat mózgu i królików i spróbujemy dostosować wszystko
Dowiedz się, aby stworzyć sztuczną sieć neuronową. Zacznijmy, spróbujmy zrobić proste zadanie.

Przypuśćmy, że mamy maszynę z czterema przyciskami, co zapewnia żywność po prawidłowej naciśnięciu
Przyciski (dobrze lub energia, jeśli jesteś robotem). Zadaniem jest dowiedzieć się, który przycisk daje wynagrodzenie:

Możemy przedstawić (schematycznie), co powoduje, że przycisku po naciśnięciu w następujący sposób:

To zadanie jest lepsze do rozwiązania całości, więc spójrzmy na wszystkie możliwe wyniki, w tym poprawne:


Kliknij przycisk 3rd, aby uzyskać kolację.

Aby odtworzyć sieć neuronową w kodzie, musimy dokonać modelu lub wykresu, dzięki którym można było dopasować do sieci. Oto jeden harmonogram odpowiedni do zadania, oprócz, wyświetla jego biologiczny analogowy:

Ta sieć neuronowa po prostu otrzymuje przychodzące informacje - w tym przypadku będzie to postrzeganie przycisku, który naciśnięty jest przycisk. Następnie sieć zastępuje informacje o przychodzącym znaczeniu i wytwarza wyjście na podstawie dodawania warstwy. Brzmi trochę mylące, ale zobaczmy, jak przedstawiono przycisk w naszym modelu:


Należy pamiętać, że wszystkie ciężary są równe 0, więc neuronowa sieć, jak dziecko, jest całkowicie puste, ale całkowicie ze sobą powiązane.

W ten sposób porównujemy zdarzenie zewnętrzne z warstwą wlotową sieci neuronowej i obliczamy wartość na jego wyjściu. Może się pokrywać lub nie zbiegać się z rzeczywistością, ale nadal ignorujemy i zaczynamy opisać zadanie jasnego komputera. Zacznijmy od wejścia skali (użyjemy JavaScript):

Var wejściowe \u003d; var wagi \u003d; // dla wygody, te wektory można nazwać
Następnym krokiem jest utworzenie funkcji, która zbiera wartości wejściowe i wagi i oblicza wartość na wyjściu:

Funkcja EwaleneuralNeturaleNetwork (Exputvector, Waga) (Rezultat VAR \u003d 0; Ewantevector.Forach (Layervalue \u003d Inputvalue * Waga; że robi, jest porównuje parę wagi / wejściowe i dodaje wynik
Zgodnie z oczekiwaniami, jeśli uruchomimy ten kod, otrzymamy ten sam wynik jak w naszym modelu lub grafice ...

Ewaluacja (wejścia, wagi); // 0,00.
Przykład na żywo: neuronowa netto 001.

Kolejnym krokiem w poprawie naszej neuralitionu będzie sposób sprawdzenia własnych weekendów lub wartościowych wartości porównywalnych z rzeczywistą sytuacją,
Najpierw kodyfikujmy tę konkretną rzeczywistość w zmiennej:

Aby wykryć niespójności (i ile) dodamy funkcję błędu:

Błąd \u003d rzeczywistość - wyjście neuronowe netto
Dzięki nim możemy ocenić pracę naszej sieci neuronowej:

Ale co ważniejsze - co z sytuacjami, gdy rzeczywistość daje pozytywny wynik?

Teraz wiemy, że nasz model sieci neuronowej nie działa (i wiemy ile), świetnie! I jest świetny, ponieważ teraz możemy użyć funkcji błędów do zarządzania naszym uczeniem. Ale to wszystko zapewni znaczenie, jeśli przedefiniujemy funkcję błędu w następujący sposób:

Błąd \u003d. Pożądane wyjście. - Neural Netto
Nieuchwytna, ale tak ważna rozbieżność, cicho pokazując, że będziemy
Użyj wcześniej uzyskanych wyników dla porównania z przyszłymi działaniami
(I do nauki, jak zobaczymy). Istnieje w prawdziwym życiu, pełnym
powtarzające się wzorce, więc może stać się strategią ewolucyjną (cóż, w
w większości przypadków).

Var wejście \u003d; var wagi \u003d; var rateResult \u003d 1;
I nowa funkcja:

Funkcja EvaluateneuralERror (pożądany, rzeczywisty);) // Po ocenie zarówno sieci, jak i błąd, które otrzymamy: // "Neural Net Output: 0.00 Błąd: 1"
Przykład na żywo: Neural Net 002.

Podsumujmy wynik. Zaczęliśmy od zadania, uczyniło go prosty model. W formie biologicznej sieci neuronowej otrzymano metodę pomiaru jego wydajności w porównaniu z rzeczywistością lub pożądanym wynikiem. Teraz musimy znaleźć sposób na poprawność niezgodności - proces, zarówno dla komputerów, jak i osób można uznać za szkolenie.

Jak wytresować sieć neuronową?

Podstawą szkolenia zarówno biologiczna, jak i sztuczna sieć neuronowa jest powtórzeniem.
i algorytmy szkoleniowe.Więc będziemy współpracować z nimi osobno. Zacznijmy od S.
Algorytmy szkoleniowe.

W naturze, w ramach algorytmów szkoleniowych odnosi się do zmian w fizycznych lub chemicznych
Charakterystyka neuronów po eksperymentach:

Dramatyczna ilustracja, jak dwie neurony zmieniają się po czasie w kodzie i nasz model "Algorytm" uczenia się "oznacza, że \u200b\u200bpo prostu zmienimy coś przez jakiś czas, aby złagodzić swoje życie. Dlatego dodajmy zmienną do wyznaczenia stopnia ulgi życia:

Var leadionrate \u003d 0,20; // Większa wartość, tym szybciej będzie proces uczenia się :)
A co się zmieni?

Zmieni to wagę (podobnie jak królik!), Zwłaszcza ciężar wyjścia, który chcemy zdobyć:

Jak zakodować taki algorytm - Twój wybór, dodam współczynnik kształcenia wagi dla prostoty, tutaj jest w formie funkcji:

Funkcja Dowiedz się (WAŻNOŚĆ.Forach (funkcja (waga, indeks, wagi) (jeśli (wejście\u003e 0) (wagi \u003d waga + nauczanie;))
Po użyciu ta funkcja treningowa po prostu dodała nasze współczynnik szkoleniowy wektor aktywna neurona., Przed i po kręgu uczenia się (lub powtórzenia) wyniki będą takie:

// Oryginalna waga Vector: // Neural Net Output: 0.00 Błąd: 1 Dowiedz się (Wejście, Wagi); // Nowy Waga Wektor: // Wyjście neuronowe netto: 0,20 Błąd: 0,8 // Jeżeli nie jest oczywiste, wycofanie sieci neuronowej jest blisko 1 (wydanie kurczaka) - czego chcieliśmy, więc możemy stwierdzić, że jesteśmy poruszając się we właściwym kierunku
Przykład na żywo: Neural Net 003.

Ok, teraz, kiedy poruszamy się we właściwym kierunku, ostatni szczegół tej łamigłówki wprowadzą powtarzać.

Nie jest to takie trudne, w naturze po prostu robimy to samo raz, aw kodzie po prostu wskazujemy liczbę powtórzeń:

Var Trials \u003d 6;
I wprowadzenie liczby powtórzeń będzie wyglądać tak w naszej sieci neuronowej.

Pociąg funkcyjny (próby) (dla (i \u003d 0; ja< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }
Cóż, nasz raport końcowy:

Wyjście neuralne neuralne: 0.00 Błąd: 1,00 Vector: Neural Net Output: 0.20 Błąd: 0,80 Waga Wektor: Neural wyjście netto: 0,40 Błąd: 0,60 wagi Wektor: Neural wyjście netto: 0,60 Błąd: 0,40 wagi Vector: Neural Net Output: 0,80 Błąd : 0.20 Waga wektor: Neural Net Output: 1.00 Błąd: 0,00 Waga wektor: // Obiad z kurczaka!
Przykład na żywo: Neural Net 004.

Teraz mamy wektor wagi, co da tylko jeden wynik (kurczak na obiad), jeśli wektor wejściowy odpowiada rzeczywistości (naciskając trzeci przycisk).

Więc co to jest fajne?

W tym betonowa obudowa Nasza neuralna sieć (po treningu) może rozpoznać dane wejściowe i powiedzieć, że doprowadzi do pożądanego wyniku (nadal będziemy musieli zaprogramować konkretne sytuacje):

Ponadto jest to skalowalny model, zabawka i narzędzie do naszego uczenia się z tobą. Byliśmy w stanie nauczyć się czegoś nowego o uczeniu się maszyn, sieci neuronowych i sztucznej inteligencji.

Uwaga użytkowników:

  • Mechanizm przechowywania badanych skali nie jest podany, więc ta sieć neuronowa zapomni wszystko, co wie. Podczas aktualizacji lub ponownego uruchomienia kodu potrzebujesz co najmniej sześciu udanych powtórzeń, dzięki czemu sieć jest całkowicie przeszkolona, \u200b\u200bjeśli uważasz, że osoba lub maszyna będzie nacisnąć przyciski w kolejności losowej ... zajmie trochę czasu.
  • Sieci biologiczne do nauki Ważne rzeczy mają szybkość nauki 1, więc potrzebujesz tylko jednego pomyślnego powtórzenia.
  • Istnieje algorytm do nauki, który jest bardzo podobny do biologicznych neuronów, jego chwytliwą nazwę: zasada Widrof-Hofflub. learning Widroff-Hoff.
  • Progi neuronów (1 w naszym przykładzie) i skutki przekwalifikowania (z dużą liczbą powtórzeń, wynik będzie większy niż 1) nie są brane pod uwagę, ale są bardzo ważne w przyrodzie i są odpowiedzialne za duże i złożone bloki reakcji behawioralnych. Jak ujemne ciężary.

Notatki i odniesienia do dalszego czytania

Próbowałem uniknąć matematyki i ścisłych warunków, ale jeśli jesteś zainteresowany, zbudowaliśmy perceptron, który jest zdefiniowany jako algorytm kontrolowanego szkolenia (trening z nauczycielem) podwójnych klasyfikatorów - ciężka rzecz.

Biologiczna struktura mózgu nie jest prostym tematem, częściowo ze względu na nieścisłości, częściowo ze względu na jego złożoność. Lepiej jest rozpocząć od neuroscience (purves) i neuronologii poznawczej (Gazzaniga). Zmieniłem się i dostosowałem przykład z królikiem z bramy do pamięci (Gluck), który jest również doskonałym przewodnikiem w świecie wykresów.

Kolejne zasoby eleganckie Wprowadzenie do sieci neuronowych (Gurney) nadaje się do wszystkich Twoich potrzeb związanych z EI.

A teraz na pythonie! Dziękuję ilee andshmidt dla dostarczonej wersji na Pythonie:

Wejścia \u003d Wagi \u003d pożądany_Result \u003d 1 Learning_Rate \u003d 0,2 Trials \u003d 6 Def Ocena_neural_network (Input_array, Waga_array): Wynik \u003d 0 dla I W zasięgu (Len (Input_array)): Layer_value \u003d Input_array [I] * Wear_array [I] Wynik + \u003d Layer_Value Drukuj ("Ocena_neural_network:" + ul (wynik)) Drukuj ("Waga:" + str (wagi)) Wynik powrotny DEF Ocena_error (pożądany, rzeczywisty): Błąd \u003d pożądany - Rzeczywisty druk ("Ocena_error:" + Str (błąd) Powrót Błąd Def Dowiedz się (Input_array, Waga_array): Drukuj ("Uczenie się ...") dla I W zasięgu (Len (Input_array)): Jeśli Input_array [I]\u003e 0: Wespey_array [I] + \u003d Learning_Rate DEF Train (Trials) : Dla I w zakresie (próby): neural_net_Result \u003d ocena_neural_network (wejścia, wagi) Dowiedz się (wejścia, wagi) Pociąg (próby)
A teraz iść! Dziękujemy za tę wersję Kirana Maher.

Pakiet Główny import ("FMT" "matematyka") FUNC Główna () (FMT.Println ("Utworzenie Wejścia i wagi ...") Wejścia: \u003d Float64 (0,00, 0,00, 1,00, 0,00) Wagi: \u003d Float64 (0,00, O. Dla I: \u003d 1; ja< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print("\nError: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print("\n\n") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue > 0,00 (waga \u003d waga + leczenie)) WARTOŚĆ WARTOŚĆ) FUNC Ocena (Wejście Float64, Waga Float64) Float64 (wynik: \u003d 0,00 dla indeksu, Inputvalue: \u003d Range Wespektorektor ) Wymaganie FUNC (pożądany float64, rzeczywisty float64) float64 (pożądany zwrot - rzeczywista)

Możesz pomóc i przetłumaczyć trochę pieniędzy na rozwój na miejscu.

 

Neuralety są teraz w modzie, a nie na próżno. Z ich pomocą, możesz na przykład rozpoznać obiekty na zdjęciach lub przeciwnie, narysować koszmary Salvador Dali. Dzięki wygodnym biblioteczkom najprostsze sieci neuronowe są tworzone przez całą parę wierszy Kodeksu, nie będzie już odwołać się do sztucznej inteligencji IBM.

Teoria

Biolodzy nadal nie wiedzą dokładnie, jak działa mózg, ale zasada działania poszczególne elementy Układ nerwowy jest dobrze badany. Składa się z neuronów - specjalistycznych komórek, które wymieniają się między sobą sygnały elektrochemiczne. Każdy neuron ma wiele dendrytów i jeden akson. Dendriti można porównać z wejściami, przez które dane są odbierane w neuronie, Axon służy jego wyjście. Związki między Dendrytami i Axon nazywane są synapsami. Nie tylko przesyłają sygnały, ale także mogą zmienić ich amplitudę i częstotliwość.

Transformacje, które występują na poziomie poszczególnych neuronów są bardzo proste, ale nawet bardzo małe sieci neuronowe są bardzo możliwe. Wszystkie różnorodność zachowania robaka Caenorhabditis elegans - ruch, wyszukiwanie żywności, różne reakcje na bodźce zewnętrzne i znacznie więcej jest zakodowane w ciągu zaledwie trzysta neuronów. I okej robaki! Nawet mrówki chwyta 250 tysięcy neuronów i co robią, samochody są zdecydowanie w stanie.

Prawie sześćdziesiąt lat temu American badacz Frank Rosenblatt próbował stworzyć system komputerowy, ułożone w wizerunku i podobieństwo mózgu, ale możliwości jego stworzenia były niezwykle ograniczone. Zainteresowanie sieciami neuronowymi został zablokowany wielokrotnie, ale raz w czasie okazało się, że moc obliczeniowa nie ma żadnej zaawansowanej sieci neuronowej. W ciągu ostatniej dekady wiele się zmieniło w tym zakresie.

Elektromechaniczny mózg z silnikiem

Samochód Rosenblatt został nazwany Mark I Perceptron. Miało to rozpoznać obrazy - zadania, z którymi komputery nadal radzą sobie tak. Mark I został wyposażony w wybór siatkówki oczu: matryca kwadratowa 400 fotokomórek, dwadzieścia pionowo i dwadzieścia poziomo. Komórki fotograficzne w losowo podłączonych do modeli neuronów elektronicznych i z kolei, do ośmiu wyjść. Jako synapsy łączące neurony elektroniczne, fotokomórki i wyjścia, rosenblatt używane potencjometry. Podczas treningu silników krokowych PercepTron 512, uchwyty potencjometru automatycznie obracały się, dostosowując stres na neuronach, w zależności od dokładności wyniku wyjściowego.

Tutaj w dwóch słowach, jak działa na Neurallet. Sztuczny neuron, jak jest prawdziwy, ma kilka wejść i jeden wyjście. Każde wejście ma współczynnik wagowy. Zmieniając te współczynniki, możemy trenować sieć neuronową. Zależność sygnału na wylocie z sygnałów wejściowych określa tak zwaną funkcję aktywacji.

W percepcji Rosenblatt funkcja aktywacji złożyła masę wszystkich wejść, do których odebrano jednostkę logiczną, a następnie porównano wynik z wartością progową. Jej minus był tak, że niewielka zmiana w jednym z współczynników wagowych z tym podejściem jest w stanie mieć nieproporcjonalnie ważny wpływ na wynik. To utrudnia nauczanie.

W nowoczesnych sieciach neuronowych funkcje aktywacji nieliniowe są zwykle używane, takie jak Sigmoid. Ponadto stare sieci neuronowe miały zbyt mało warstw. Teraz między wejściem a wyjściem zwykle ma jedną lub więcej ukrytych warstw neuronów. Jest tam, co jest najbardziej interesujące.

Aby łatwiej zrozumieć, o czym mówimy, spójrz na ten schemat. Jest to neuralna sieć dystrybucji bezpośredniej z jedną ukrytą warstwą. Każde koło odpowiada neuronowi. Lewa to neurony warstwy wlotowej. Po prawej - neuron warstwy wyjściowej. W środku znajduje się ukryta warstwa z czterema neuronami. Wyjścia wszystkich neuronów warstwy wejściowej są podłączone do każdego neuronu pierwszej ukrytej warstwy. Z kolei wejścia warstwy wyjściowej neuronu są związane ze wszystkimi wyjściami neuronów ukrytych warstw.

Nie wszystkie sieci neuronowe są w ten sposób rozmieszczone. Na przykład, są (choć mniej wspólne) sieci, w których sygnał z neuronów jest stosowany nie tylko do następnej warstwy, jak bezpośrednia sieć dystrybucji z naszego schematu, ale także w przeciwnym kierunku. Takie sieci nazywane są nawracające. W pełni podłączone warstwy jest również tylko jedną z opcji, a nawet dotykamy jednej z alternatyw.

Ćwiczyć

Spróbujmy więc zbudować najprostszą sieć neuronową z własnymi rękami i radzić sobie w jej pracy po drodze. Będziemy używać Pythona z biblioteką Numpy (można zrobić bez numpry, ale z numperem liniową algebrą zajmuje mniej siłę). Przykład rozważany jest oparty na końcach TRACKE.

Będziemy potrzebować funkcji obliczania sigmoidów i jego pochodnej:

Kontynuacja dostępna tylko dla uczestników

Opcja 1. Dołącz do społeczności witryny, aby przeczytać wszystkie materiały na stronie

Członkostwo we Wspólnocie w określonym okresie otworzy Państwu dostęp do wszystkich materiałów hakerów, zwiększy osobisty rabat akumulatorowy i gromadzi profesjonalną ocenę wyniku Xakep!

W pierwszej połowie 2016 r. Świat usłyszał wiele zmian w dziedzinie sieci neuronowych - ich algorytmy zostały wykazane przez Google (Gracz sieciowy w Alphago), Microsoft (szereg usług do identyfikacji obrazów), MSQRD, startupów Prisma i innych .

Do zakładek

Redakcja mówi, że są one neuronymi sieciami, dla których są potrzebni, dlaczego teraz uchwycili planetę, a nie lat wcześniej, czy później, ile na nich można zdobyć i kto jest głównymi graczami rynku. Eksperci z MIPT, Yandex, Mail.ru Group i Microsoft również udostępniono ich opinie.

Co to jest sieci neuronowe i jakie zadania mogą rozwiązać

Sieci neuronowe są jednym z kierunków rozwoju systemów sztucznych inteligencji. Pomysł polega na tym, jak ściśle symulują pracę ludzkiego układu nerwowego - mianowicie, jego zdolność do nauki i poprawiania błędów. To się składa główna cecha Każda sieć neuronowa jest w stanie uczyć się niezależnie i działać na podstawie wcześniejszych doświadczeń, co za każdym razem, gdy za każdym razem mniej i mniejsze błędy.

Neuraletima naśladuje nie tylko aktywność, ale także struktura ludzkiego układu nerwowego. Taka sieć składa się z dużej liczby pojedynczych elementów obliczeniowych ("neurony"). W większości przypadków każdy "Neuron" odnosi się do określonej warstwy sieci. Dane wejściowe są sekwencyjnie przetwarzane we wszystkich warstwach sieci. Parametry każdego "neuronu" mogą się różnić w zależności od wyników uzyskanych na poprzednich zestawach wejściowych, zmieniając tym samym działanie całego systemu.

Szef "Search Mail.ru" w Mail.ru Group Andrei Kalinin zauważa, że \u200b\u200bsieci neuronowe są w stanie rozwiązać te same zadania, ponieważ inne algorytmy uczenia maszynowe, różnica leży tylko w podejściu do nauki.

Wszystkie zadania, które mogą rozwiązać sieci neuronowe, są w jakiś sposób związane z uczeniem się. Wśród głównych obszarów sieci neuronowych przewidują, podejmowanie decyzji, rozpoznawanie obrazu, optymalizację, analizę danych.

Dyrektor programów współpracy technologicznej Microsoft w Rosji, VLAD Sershulsky zauważa, że \u200b\u200bsieci neuronowe są teraz używane wszędzie: "Na przykład wiele dużych witryn internetowych wykorzystuje ich odpowiedź na zachowanie użytkowników bardziej naturalnej i przydatnej publiczności. Neuralety podkłada większość nowoczesne systemy. Rozpoznawanie i synteza mowy, a także rozpoznawanie i przetwarzanie obrazu. Są one używane w niektórych systemach nawigacyjnych, zarówno robotów przemysłowych, jak i bezzałogowych samochodów. Algorytmy neuronowe oparte na sieci chronią systemy informacyjne od atakujących atakujących i pomagają zidentyfikować nielegalne treści w sieci ".

W niedalekiej przyszłości (5-10 lat) Sershulsky wierzy, sieci neuronowe będą używane nawet szersze:

Wyobraź sobie kombinacje rolnicze, których mechanizmy wykonawcze są wyposażone w różne kamery. Robi pięć tysięcy zdjęć na minutę każdej rośliny na pasie jego trajektorii, przy użyciu sieci neuronowej, analizy - niezależnie od tego, czy nie jest to chwast, czy nie jest to dotknięte chorobą ani szkodnikami. I przetwarza każdą roślinę indywidualnie. Fikcja? Już wcale. I za pięć lat może stać się normą. - Vlad Shershulsky, Microsoft

Głowa laboratorium systemów neuronowych i głębokiego szkolenia centrum żywych MFTI Michail Burtsev prowadzi rzekomą mapę rozwoju sieci neuronowych na lata 2016-2018:

  • systemy rozpoznawania i klasyfikacja obiektów na obrazach;
  • interfejsy głosowe interakcje dla Internetu rzeczy;
  • systemy monitorowania jakości usług w centrach telefonicznych;
  • systemy rozwiązywania problemów (w tym czas przewidywania konserwacja), anomalie, zagrożenia cyber-fizyczne;
  • systemy bezpieczeństwa intelektualnego i monitorowania;
  • wymiana botów części funkcji operatorów Call Center;
  • systemy analityki wideo;
  • systemy samokształceniowe optymalizujące zarządzanie przepływami materiałowymi lub lokalizacją obiektów (w magazynach, transport);
  • inteligentne, samokształceniowe systemy zarządzania procesami przemysłowymi i urządzeń (w tym robotyki);
  • pojawienie się systemów uniwersalnego tłumaczenia "w locie" na konferencje i osobiste zastosowanie;
  • wygląd konsultantów botów pomoc techniczna lub osobistych asystentów, na zabawnych funkcjach dla osoby.

Dyrektor Technologii Yandex Gregory Bakunow uważa, że \u200b\u200bpodstawa dystrybucji sieci neuronowej w ciągu najbliższych pięciu lat będzie umiejętnością takich systemów do zaakceptowania różnych decyzji: "Najważniejsze jest to, że sieci neuronowe są teraz dokonywane dla osoby - oszczędzaj to z nadmiernego podejmowania decyzji. Mogą więc być używane prawie wszędzie, gdzie nie ma zbyt inteligentnych rozwiązań żywej osoby. W ciągu najbliższych pięciu lat umiejętność ta będzie obsługiwana, co zastąpi podejmowanie decyzji w prostym pojeździe ".

Dlaczego sieci neuronowe stały się teraz tak popularne

Naukowcy zajmują się rozwojem sztucznych sieci neuronowych powyżej 70 lat. Pierwsza próba sformalizowania sieci neuronowej jest odwołuje się do 1943 r., Kiedy dwaj amerykańscy naukowcy (Warren McKallock i Walter Pitts) przedstawili artykuł o logicznym rachunku zmian ludzkich i aktywności nerwowej.

Jednak do niedawna Andrei Kalinin mówi z grupy Mail.ru, szybkość sieci neuronowej była zbyt niska, dzięki czemu mogą się rozpowszechniać, a zatem takie systemy były stosowane głównie w rozwoju wizji komputerowej, a inne algorytmy były używane Inne obszary. Uczenie maszynowe.

Czasochłonny i długa część procesu rozwoju sieci neuronowej jest jego szkolenie. Aby sieć neuronowa mogła poprawić poprawnie rozwiązać zadania, wymagane jest "prowadzenie pracy na dziesiątkach milionów zestawów wejściowych. Jest to z pojawieniem się różnych technologii przyspieszonego uczenia się i kojarzyć rozprzestrzenianie się sieci neuronowej Andrei Kalinin i Grigory Bakunov.

Najważniejszą rzeczą, która wydarzyła się teraz różnymi sztuczkami, które umożliwiają sieci neuronalne, znacznie mniej podatne na przekwalifikowanie. - Gregory Bakunov, Yandex

"Najpierw pojawił się dużą i publicznie dostępną tablicę oznakowanych zdjęć, na których możesz się uczyć. Po drugie, nowoczesne karty wideo pozwalają stu razy szybciej uczyć sieci neuronowych i ich używać. Po trzecie, gotowe, preferowane sieci neuronowe, rozpoznawalne obrazy, na podstawie których można dokonać aplikacji, nie angażować się w długotrwałe przygotowanie sieci neuronowej do pracy. Wszystko to zapewnia bardzo potężny rozwój sieci neuronowych właśnie w dziedzinie rozpoznawania obrazu "Kalinin Notes.

Jakie są objętości rynku sieci neuronowej

"Bardzo łatwo jest obliczyć. Możesz wziąć dowolną powierzchnię, w której używana jest nisko wykwalifikowana praca - na przykład praca operatorów centrów telefonicznych - i po prostu odliczają wszystkie zasoby ludzkie. Powiedziałbym, że mówimy o wielu miliardach dolarów, nawet w odrębnym kraju. Ile osób na świecie angażuje się w pracę o niskiej wykwalifikowanej pracy, można łatwo zrozumieć. Więc nawet bardzo abstrakcyjnie mówiąc, myślę, że mówimy o targu ulicznego miliarda na całym świecie, "mówi Gregory Bakunov, dyrektor rozpowszechniania technologii Yandex.

Według pewnych szacunków, ponad połowa zawodów zostanie zautomatyzowana - jest to maksymalna wolumin, do którego można zwiększyć rynek algorytmów uczenia maszyn (i sieci neuronowych) .- Andrei Kalinin, Mail.ru Group

"Algorytmy uczenia maszynowe są następnym krokiem w automatyzacji wszelkich procesów w rozwoju dowolnego oprogramowanie. Dlatego rynek przynajmniej pokrywa się całym rynkiem oprogramowania, ale raczej przewyższa go, ponieważ staje się możliwe, aby nowe rozwiązania intelektualne niedostępne dla starego oprogramowania "kontynuuje szef" wyszukiwania e-mail.ru "pocztą. RU Group Andrei Kalinin.

Dlaczego deweloperzy sieci neuronowych tworzą aplikacje mobilne dla rynku masowego

W ciągu ostatnich kilku miesięcy na rynku pojawiły się kilka projektów wysokiego profili rozrywki, które korzystają z sieci neuronowych - jest to popularna obsługa wideo sieć społeczna Facebook, I. rosyjskie zastosowania Do przetwarzania zdjęć (w czerwcu inwestycji z grupy mail.ru) i innych.

Zdolności własnych sieci neuronowych zostały wykazane przez Google (Technologia Alphago wygrana w mistrzu GO; w marcu 2016 r. Korporacja sprzedawana na aukcji 29 obrazów narysowanych przez sieci neuronowe i tak dalej), a Microsoft (Projekt Capttionbot, rozpoznawalne obrazy Na zdjęciach i automatycznie generując im podpisy; Whatdog Projekt, na zdjęciu definiując rasę psa; Howold Service, co określa wiek osoby na zdjęciu i tak dalej), a Yandex (w czerwcu zespół) Zbudował usługę do rozpoznawania samochodów w auto; album; w maju stworzył projekt Likemo.net do rysowania w stylu znanych artystów).

Takie usługi rozrywkowe są tworzone raczej nie do rozwiązywania globalnych zadań, dla których sieci neuronowe mają na celu wykazanie umiejętności sieci neuronowej i prowadzenie szkolenia.

"Gry są charakterystyczną cechą naszego zachowania jako gatunki biologiczne. Z jednej strony, w sytuacjach gier, prawie wszystkie typowe scenariusze ludzkiego zachowania mogą być symulowane, a na drugim - zarówno twórcy gier, jak i zwłaszcza gracze mogą uzyskać dużo przyjemności z procesu. Istnieje czysto użytkowy aspekt. Dobrze zaprojektowana gra przynosi nie tylko satysfakcję od graczy: W procesie gry uczą algorytmu sieci neuronowej. W końcu sieć neuronowa opiera się na przykładach, "mówi Vlad Shershulsky z Microsoft.

"Przede wszystkim jest to wykonane w celu pokazania możliwości technologii. Inny powód, nie. Jeśli mówimy o Prisma, jasne jest to, co zrobili. Faceci zbudowali trochę pipline, co pozwala im pracować ze zdjęciami. Aby temu zademonstrować, wybrali raczej prosty sposób na tworzenie stylizacji. Dlaczego nie? Jest to tylko demonstracja pracy algorytmów "- mówi Gregory Bakunov z Yandexa.

Andrei Kalinin z Mail.ru Group obserwuje się do innych opinii: "Oczywiście jest spektakularny pod względem publiczności. Z drugiej strony nie powiedziałbym, że produkty rozrywkowe nie mogą być stosowane w bardziej przydatnych obszarów. Na przykład zadanie stylizacji obrazów jest niezwykle istotne dla różnych branż (projekt, gry komputerowe, Animacja to zaledwie kilka przykładów), a pełne wykorzystanie sieci neuronowej może znacznie zoptymalizować koszty i metody tworzenia treści dla nich. "

Główni gracze na rynku sieci neuronowej

Ponieważ Andrei Kalinin Notes, przez i duże, większość sieci neuronowych obecnych na rynku sieci neuronowej różnią się od siebie. "Wszystkie technologie są w przybliżeniu takie same. Ale korzystanie z sieci neuronowej jest przyjemnością, na którą nie każdy może sobie pozwolić. Aby samodzielnie nauczyć neuronowej sieci i umieścić wiele eksperymentów, potrzebujesz dużych zestawów szkoleniowych i parkingów z drogim kartami wideo. Oczywiście są takie możliwości duże firmy"On mówi.

Wśród głównych graczy na rynku, Kalinin wspomina Google i jego oddział Google Deepmind, który stworzył sieć Alpaco i Google Brain. Własne wydarzenia Microsoft są w tej dziedzinie - są zaangażowane w laboratorium Microsoft Research. Tworzenie sieci neuronowych są zaangażowane w IBM, Facebook (Facebook Ai Research), Baidu (Baidu Institute of Deep Learning) i innych. Wiele wydarzeń jest utrzymywane na uniwersytetach technicznych na całym świecie.

Dyrektor rozpowszechniania technologii Yandex Gregory Bakunov zauważa, że \u200b\u200binteresujące zmiany w dziedzinie sieci neuronowych znajduje się wśród startupów. "Pamiętałem na przykład klarifai. Jest to niewielki start Uruchomiony kiedyś z Google. Teraz, być może treść świata najlepiej określić zawartość obrazu. " Te przystawki obejmują MSQRD i Prisma i inne.

W Rosji, nie tylko startup, ale także duże firmy technologiczne są zaangażowane w opracowywanie w dziedzinie sieci neuronowych - na przykład, Grupa Mail.ru trzyma sieci neuronowe do przetwarzania i klasyfikacji tekstów w "Wyszukiwanie", analizy obrazu. Firma prowadzi również rozwój eksperymentalny związany z botami i systemami dialogowymi.

Yandex zajmuje się tworzeniem własnej sieci neuronowej: "Zasadniczo takie sieci są już używane w pracy z obrazami, z dźwiękiem, ale zbadamy ich możliwości w innych obszarach. Teraz umieściliśmy wiele eksperymentów w korzystaniu z sieci neuronowej w pracy z tekstem. " Rozwój są prowadzone na uniwersytetach: w Skoltech, MFT, MSU, HSE i innych.

W pierwszej połowie 2016 r. Świat usłyszał wiele zmian w dziedzinie sieci neuronowych - ich algorytmy zostały wykazane przez Google (Gracz sieciowy w Alphago), Microsoft (szereg usług do identyfikacji obrazów), MSQRD, startupów Prisma i innych .

Do zakładek

Redakcja mówi, że są one neuronymi sieciami, dla których są potrzebni, dlaczego teraz uchwycili planetę, a nie lat wcześniej, czy później, ile na nich można zdobyć i kto jest głównymi graczami rynku. Eksperci z MIPT, Yandex, Mail.ru Group i Microsoft również udostępniono ich opinie.

Co to jest sieci neuronowe i jakie zadania mogą rozwiązać

Sieci neuronowe są jednym z kierunków rozwoju systemów sztucznych inteligencji. Pomysł polega na tym, jak ściśle symulują pracę ludzkiego układu nerwowego - mianowicie, jego zdolność do nauki i poprawiania błędów. Jest to główna funkcja dowolnej sieci neuronowej - jest w stanie uczyć się niezależnie i działać na podstawie poprzednich doświadczeń, co za każdym razem mało i mniejsze błędy.

Neuraletima naśladuje nie tylko aktywność, ale także struktura ludzkiego układu nerwowego. Taka sieć składa się z dużej liczby pojedynczych elementów obliczeniowych ("neurony"). W większości przypadków każdy "Neuron" odnosi się do określonej warstwy sieci. Dane wejściowe są sekwencyjnie przetwarzane we wszystkich warstwach sieci. Parametry każdego "neuronu" mogą się różnić w zależności od wyników uzyskanych na poprzednich zestawach wejściowych, zmieniając tym samym działanie całego systemu.

Szef "Search Mail.ru" w Mail.ru Group Andrei Kalinin zauważa, że \u200b\u200bsieci neuronowe są w stanie rozwiązać te same zadania, ponieważ inne algorytmy uczenia maszynowe, różnica leży tylko w podejściu do nauki.

Wszystkie zadania, które mogą rozwiązać sieci neuronowe, są w jakiś sposób związane z uczeniem się. Wśród głównych obszarów sieci neuronowych przewidują, podejmowanie decyzji, rozpoznawanie obrazu, optymalizację, analizę danych.

Dyrektor programów współpracy technologicznej Microsoft w Rosji, VLAD Sershulsky zauważa, że \u200b\u200bsieci neuronowe są teraz używane wszędzie: "Na przykład wiele dużych witryn internetowych wykorzystuje ich odpowiedź na zachowanie użytkowników bardziej naturalnej i przydatnej publiczności. Neuraly są oparte na większości nowoczesnych systemów rozpoznawania mowy i syntezy mowy, a także rozpoznawania i przetwarzania obrazu. Są one używane w niektórych systemach nawigacyjnych, zarówno robotów przemysłowych, jak i bezzałogowych samochodów. Algorytmy neuronowe oparte na sieci chronią systemy informacyjne od atakujących atakujących i pomagają zidentyfikować nielegalne treści w sieci ".

W niedalekiej przyszłości (5-10 lat) Sershulsky wierzy, sieci neuronowe będą używane nawet szersze:

Wyobraź sobie kombinacje rolnicze, których mechanizmy wykonawcze są wyposażone w różne kamery. Robi pięć tysięcy zdjęć na minutę każdej rośliny na pasie jego trajektorii, przy użyciu sieci neuronowej, analizy - niezależnie od tego, czy nie jest to chwast, czy nie jest to dotknięte chorobą ani szkodnikami. I przetwarza każdą roślinę indywidualnie. Fikcja? Już wcale. I za pięć lat może stać się normą. - Vlad Shershulsky, Microsoft

Głowa laboratorium systemów neuronowych i głębokiego szkolenia centrum żywych MFTI Michail Burtsev prowadzi rzekomą mapę rozwoju sieci neuronowych na lata 2016-2018:

  • systemy rozpoznawania i klasyfikacja obiektów na obrazach;
  • interfejsy głosowe interakcje dla Internetu rzeczy;
  • systemy monitorowania jakości usług w centrach telefonicznych;
  • systemy rozwiązywania problemów (w tym przewidywanie czasu konserwacji), anomalie, cyberatoryjne zagrożenia;
  • systemy bezpieczeństwa intelektualnego i monitorowania;
  • wymiana botów części funkcji operatorów Call Center;
  • systemy analityki wideo;
  • systemy samokształceniowe optymalizujące zarządzanie przepływami materiałowymi lub lokalizacją obiektów (w magazynach, transport);
  • inteligentne, samokształceniowe systemy zarządzania procesami przemysłowymi i urządzeń (w tym robotyki);
  • pojawienie się systemów uniwersalnego tłumaczenia "w locie" na konferencje i osobiste zastosowanie;
  • pojawienie się konsultantów botów wsparcia technicznego lub asystentów osobistych, do funkcji blisko człowieka.

Dyrektor Technologii Yandex Gregory Bakunow uważa, że \u200b\u200bpodstawa dystrybucji sieci neuronowej w ciągu najbliższych pięciu lat będzie umiejętnością takich systemów do zaakceptowania różnych decyzji: "Najważniejsze jest to, że sieci neuronowe są teraz dokonywane dla osoby - oszczędzaj to z nadmiernego podejmowania decyzji. Mogą więc być używane prawie wszędzie, gdzie nie ma zbyt inteligentnych rozwiązań żywej osoby. W ciągu najbliższych pięciu lat umiejętność ta będzie obsługiwana, co zastąpi podejmowanie decyzji w prostym pojeździe ".

Dlaczego sieci neuronowe stały się teraz tak popularne

Naukowcy zajmują się rozwojem sztucznych sieci neuronowych powyżej 70 lat. Pierwsza próba sformalizowania sieci neuronowej jest odwołuje się do 1943 r., Kiedy dwaj amerykańscy naukowcy (Warren McKallock i Walter Pitts) przedstawili artykuł o logicznym rachunku zmian ludzkich i aktywności nerwowej.

Jednak do niedawna Andrei Kalinin mówi z grupy Mail.ru, szybkość sieci neuronowej była zbyt niska, dzięki czemu mogą się rozpowszechniać, a zatem takie systemy były stosowane głównie w rozwoju wizji komputerowej, a inne algorytmy były używane Inne obszary. Uczenie maszynowe.

Czasochłonny i długa część procesu rozwoju sieci neuronowej jest jego szkolenie. Aby sieć neuronowa mogła poprawić poprawnie rozwiązać zadania, wymagane jest "prowadzenie pracy na dziesiątkach milionów zestawów wejściowych. Jest to z pojawieniem się różnych technologii przyspieszonego uczenia się i kojarzyć rozprzestrzenianie się sieci neuronowej Andrei Kalinin i Grigory Bakunov.

Najważniejszą rzeczą, która wydarzyła się teraz różnymi sztuczkami, które umożliwiają sieci neuronalne, znacznie mniej podatne na przekwalifikowanie. - Gregory Bakunov, Yandex

"Najpierw pojawił się dużą i publicznie dostępną tablicę oznakowanych zdjęć, na których możesz się uczyć. Po drugie, nowoczesne karty wideo pozwalają stu razy szybciej uczyć sieci neuronowych i ich używać. Po trzecie, gotowe, preferowane sieci neuronowe, rozpoznawalne obrazy, na podstawie których można dokonać aplikacji, nie angażować się w długotrwałe przygotowanie sieci neuronowej do pracy. Wszystko to zapewnia bardzo potężny rozwój sieci neuronowych właśnie w dziedzinie rozpoznawania obrazu "Kalinin Notes.

Jakie są objętości rynku sieci neuronowej

"Bardzo łatwo jest obliczyć. Możesz wziąć dowolną powierzchnię, w której używana jest nisko wykwalifikowana praca - na przykład praca operatorów centrów telefonicznych - i po prostu odliczają wszystkie zasoby ludzkie. Powiedziałbym, że mówimy o wielu miliardach dolarów, nawet w odrębnym kraju. Ile osób na świecie angażuje się w pracę o niskiej wykwalifikowanej pracy, można łatwo zrozumieć. Więc nawet bardzo abstrakcyjnie mówiąc, myślę, że mówimy o targu ulicznego miliarda na całym świecie, "mówi Gregory Bakunov, dyrektor rozpowszechniania technologii Yandex.

Według pewnych szacunków, ponad połowa zawodów zostanie zautomatyzowana - jest to maksymalna wolumin, do którego można zwiększyć rynek algorytmów uczenia maszyn (i sieci neuronowych) .- Andrei Kalinin, Mail.ru Group

"Algorytmy uczenia maszynowe są następnym krokiem w automatyzacji wszelkich procesów w rozwoju dowolnego oprogramowania. Dlatego rynek przynajmniej pokrywa się całym rynkiem oprogramowania, ale raczej przewyższa go, ponieważ staje się możliwe, aby nowe rozwiązania intelektualne niedostępne dla starego oprogramowania "kontynuuje szef" wyszukiwania e-mail.ru "pocztą. RU Group Andrei Kalinin.

Dlaczego deweloperzy sieci neuronowych tworzą aplikacje mobilne dla rynku masowego

W ciągu ostatnich kilku miesięcy na rynku pojawił się kilka projektów rozrywkowych o wysokim profilu, które korzystają z sieci neuronowych - jest to popularna usługa wideo, która jest siecią społecznościową Facebook i rosyjskimi aplikacjami do przetwarzania zdjęć (w czerwcu inwestycji z Mail.ru Grupa) i inne.

Zdolności własnych sieci neuronowych zostały wykazane przez Google (Technologia Alphago wygrana w mistrzu GO; w marcu 2016 r. Korporacja sprzedawana na aukcji 29 obrazów narysowanych przez sieci neuronowe i tak dalej), a Microsoft (Projekt Capttionbot, rozpoznawalne obrazy Na zdjęciach i automatycznie generując im podpisy; Whatdog Projekt, na zdjęciu definiując rasę psa; Howold Service, co określa wiek osoby na zdjęciu i tak dalej), a Yandex (w czerwcu zespół) Zbudował usługę do rozpoznawania samochodów w auto; album; w maju stworzył projekt Likemo.net do rysowania w stylu znanych artystów).

Takie usługi rozrywkowe są tworzone raczej nie do rozwiązywania globalnych zadań, dla których sieci neuronowe mają na celu wykazanie umiejętności sieci neuronowej i prowadzenie szkolenia.

"Gry są charakterystyczną cechą naszego zachowania jako gatunki biologiczne. Z jednej strony, w sytuacjach gier, prawie wszystkie typowe scenariusze ludzkiego zachowania mogą być symulowane, a na drugim - zarówno twórcy gier, jak i zwłaszcza gracze mogą uzyskać dużo przyjemności z procesu. Istnieje czysto użytkowy aspekt. Dobrze zaprojektowana gra przynosi nie tylko satysfakcję od graczy: W procesie gry uczą algorytmu sieci neuronowej. W końcu sieć neuronowa opiera się na przykładach, "mówi Vlad Shershulsky z Microsoft.

"Przede wszystkim jest to wykonane w celu pokazania możliwości technologii. Inny powód, nie. Jeśli mówimy o Prisma, jasne jest to, co zrobili. Faceci zbudowali trochę pipline, co pozwala im pracować ze zdjęciami. Aby temu zademonstrować, wybrali raczej prosty sposób na tworzenie stylizacji. Dlaczego nie? Jest to tylko demonstracja pracy algorytmów "- mówi Gregory Bakunov z Yandexa.

Andrei Kalinin z Mail.ru Group obserwuje się do innych opinii: "Oczywiście jest spektakularny pod względem publiczności. Z drugiej strony nie powiedziałbym, że produkty rozrywkowe nie mogą być stosowane w bardziej przydatnych obszarów. Na przykład zadanie stylizacji obrazów jest niezwykle istotne dla wielu branż (projekt, gry komputerowe, animacja - Oto zaledwie kilka przykładów), a pełne wykorzystanie sieci neuronowej może znacznie optymalizować koszty i metody tworzenia treści im. "

Główni gracze na rynku sieci neuronowej

Ponieważ Andrei Kalinin Notes, przez i duże, większość sieci neuronowych obecnych na rynku sieci neuronowej różnią się od siebie. "Wszystkie technologie są w przybliżeniu takie same. Ale korzystanie z sieci neuronowej jest przyjemnością, na którą nie każdy może sobie pozwolić. Aby samodzielnie nauczyć neuronowej sieci i umieścić wiele eksperymentów, potrzebujesz dużych zestawów szkoleniowych i parkingów z drogim kartami wideo. Oczywiście istnieją takie możliwości dla dużych firm - mówi.

Wśród głównych graczy na rynku, Kalinin wspomina Google i jego oddział Google Deepmind, który stworzył sieć Alpaco i Google Brain. Własne wydarzenia Microsoft są w tej dziedzinie - są zaangażowane w laboratorium Microsoft Research. Tworzenie sieci neuronowych są zaangażowane w IBM, Facebook (Facebook Ai Research), Baidu (Baidu Institute of Deep Learning) i innych. Wiele wydarzeń jest utrzymywane na uniwersytetach technicznych na całym świecie.

Dyrektor rozpowszechniania technologii Yandex Gregory Bakunov zauważa, że \u200b\u200binteresujące zmiany w dziedzinie sieci neuronowych znajduje się wśród startupów. "Pamiętałem na przykład klarifai. Jest to niewielki start Uruchomiony kiedyś z Google. Teraz, być może treść świata najlepiej określić zawartość obrazu. " Te przystawki obejmują MSQRD i Prisma i inne.

W Rosji, nie tylko startup, ale także duże firmy technologiczne są zaangażowane w opracowywanie w dziedzinie sieci neuronowych - na przykład, Grupa Mail.ru trzyma sieci neuronowe do przetwarzania i klasyfikacji tekstów w "Wyszukiwanie", analizy obrazu. Firma prowadzi również rozwój eksperymentalny związany z botami i systemami dialogowymi.

Yandex zajmuje się tworzeniem własnej sieci neuronowej: "Zasadniczo takie sieci są już używane w pracy z obrazami, z dźwiękiem, ale zbadamy ich możliwości w innych obszarach. Teraz umieściliśmy wiele eksperymentów w korzystaniu z sieci neuronowej w pracy z tekstem. " Rozwój są prowadzone na uniwersytetach: w Skoltech, MFT, MSU, HSE i innych.