Menü
Ingyenes
becsekkolás
a fő  /  Firmware/ Ideghálózatok egyszerű szavakkal. Egyszerű szavakkal a komplexről: mi az idegi hálózat? Az ideghálózatok története

Ideghálózatok egyszerű szavakkal. Egyszerű szavakkal a komplexről: mi az idegi hálózat? Az ideghálózatok története

James Loy, Georgia Tech. Kezdő útmutató, amely után létrehozhatja saját neurális hálózatát a Pythonban.

Motiváció:összpontosítva személyes tapasztalat a mély tanulás során úgy döntöttem, hogy a semmiből létrehozok egy neurális hálózatot egy olyan komplex tanulási könyvtár nélkül, mint a. Úgy gondolom, hogy egy kezdő Data Scientist számára fontos megérteni a belső struktúrát.

Ez a cikk azt tartalmazza, amit tanultam, és remélhetőleg az Ön számára is hasznos lesz! További hasznos kapcsolódó cikkek:

Mi az a neurális hálózat?

Az ideghálózatokról szóló cikkek többsége párhuzamot von az aggyal, amikor leírja őket. Könnyebben leírhatom ideghálózatok matematikai függvényként, amely egy adott bemenetet a kívánt eredményhez hozzárendel, anélkül, hogy részletekbe menne.

A neurális hálózatok a következő összetevőkből állnak:

  • bemeneti réteg, x
  • önkényes összeg rejtett rétegek
  • kimeneti réteg, ŷ
  • készlet Mérlegés elmozdulások minden réteg között W és b
  • kiválasztás minden rejtett réteghez σ ; ebben a munkában a Sigmoid aktiválási funkcióját fogjuk használni

Az alábbi ábra egy kétrétegű neurális hálózat architektúráját mutatja (vegye figyelembe, hogy a bemeneti réteg általában kizárt, ha az ideghálóban lévő rétegek számát számoljuk).

Neural Network osztály létrehozása a Pythonban egyszerűnek tűnik:

Ideghálózati képzés

Kimenet ŷ egyszerű kétrétegű neurális hálózat:

A fenti egyenletben a W súlyok és a b torzítások az egyetlen változók, amelyek befolyásolják a output kimenetet.

Természetesen a súlyok és az előfeszítések helyes értékei határozzák meg az előrejelzések pontosságát. Folyamat finomhangolás a bemenet súlyai ​​és torzításai ismertek.

A képzési folyamat minden iterációja a következő lépésekből áll

  • az előrejelzett icted kimenet kiszámítása, előremenetelnek nevezzük
  • hívott súlyok és torzítások frissítése

Az alábbi szekvenciális grafikon szemlélteti a folyamatot:

Közvetlen terjesztés

Amint azt a fenti grafikonon láthattuk, az előre terjedés csak egy egyszerű számítás, és egy alap kétrétegű neurális hálózat esetében az ideghálózat kimenetét adja meg:

Ehhez adjunk hozzá feed-et a Python-kódunkhoz. Megjegyezzük, hogy az egyszerűség kedvéért feltételeztük, hogy az eltolások értéke 0.

Szükségünk van azonban arra, hogy felmérjük az előrejelzéseink "jóságát", vagyis mennyire vannak előrejelzéseink). Veszteség funkció csak megengedi nekünk.

Veszteség funkció

Számos veszteségfüggvény áll rendelkezésre, és problémánk jellege diktálja a veszteségfüggvény választását. Ebben a munkában fogjuk használni a hibák négyzetének összege mint veszteségfüggvény.

A négyzetes hibák összege az egyes előre jelzett értékek és a tényleges érték közötti különbség átlaga.

Az edzés célja olyan súlyok és elfogultságok megtalálása, amelyek minimalizálják a veszteség funkciót.

Hátterjedés

Most, hogy megmérettük az előrejelzési hibánkat (veszteségünket), meg kell találnunk a módját tovább terjesztve a hibátés frissítsük súlyainkat és elfogultságainkat.

A súlyok és torzítások korrekciójához szükséges megfelelő mennyiség megismeréséhez ismerni kell a veszteségfüggvény deriváltját a súlyok és torzítások tekintetében.

Emlékezzünk az elemzésből arra, hogy a függvény deriváltja a függvény meredeksége.

Ha van deriváltunk, akkor egyszerűen növelhetjük / csökkenthetjük a súlyokat és az előfeszítéseket (lásd a fenti ábrát). Ez az úgynevezett .

A veszteségfüggvény deriváltját azonban nem tudjuk közvetlenül kiszámítani a súlyok és az előfeszítések tekintetében, mivel a veszteségfüggvény egyenlete nem tartalmaz súlyokat és torzításokat. Ezért szükségünk van egy láncszabályra, amely segít a számításban.

Fuh! Ez nehézkes volt, de lehetővé tette számunkra, hogy megszerezzük, amire szükségünk van - a veszteségfüggvény deriváltját (meredekségét) a súlyokhoz viszonyítva. Most ennek megfelelően állíthatjuk be a súlyokat.

Adjuk hozzá a backpropagation függvényt a Python-kódunkhoz:

Az idegháló működésének ellenőrzése

Most, hogy megvan a teljes Python kódunk az előre- és a visszapopagálás elvégzéséhez, vessünk egy példát az ideghálózatunkra, és nézzük meg, hogyan működik.


A tökéletes súlykészlet

Neurális hálózatunknak meg kell tanulnia az ideális súlykészletet ennek a funkciónak az ábrázolásához.

Képezzünk egy ideghálózatot 1500 iterációra, és nézzük meg, mi történik. Az alábbi iterációs veszteség grafikonra figyelve egyértelműen láthatjuk, hogy a veszteség monoton módon a minimumra csökken. Ez összhangban áll a korábban leírt gradiens süllyedési algoritmussal.

Nézzük meg az ideghálózat végleges előrejelzését (kimenetét) 1500 iteráció után.

Megcsináltuk! Előre és hátra terjedő algoritmusunk sikeres ideghálózatot mutatott, és a jóslatok igaz értékekre konvergálnak.

Ne feledje, hogy van egy kis különbség a jóslatok és a tényleges értékek között. Ez azért kívánatos, mert megakadályozza a túlterhelést, és lehetővé teszi az ideghálózat számára a láthatatlan adatok jobb általánosítását.

Záró gondolatok

Sokat tanultam a saját ideghálózatom nulláról történő írása során. Míg az olyan mélyen tanuló könyvtárak, mint a TensorFlow és a Keras, lehetővé teszik a mély hálózatok kiépítését anélkül, hogy teljesen megértenék az ideghálózat belső működését, hasznosnak tartom a törekvő adatkutatók számára, hogy mélyebben megismerjék azokat.

Személyes időm nagy részét befektettem ez a munkaés remélem, hogy hasznos lesz számodra!


Az ideghálózatokban szereplő kifejezések közül sok biológiailag összefügg, ezért kezdjük az elején:

Az agy összetett dolog, de több fő részre és műveletre is felosztható:

A kórokozó lehet belső(például kép vagy ötlet):

Most vessünk egy pillantást az alapvető és egyszerűsített részei agy:


Az agy általában olyan, mint egy vezetékes hálózat.

Idegsejt- az agy kalkulációjának alapegysége vegyi jeleket fogad és dolgoz fel más idegsejtektől, és számos tényezőtől függően vagy nem csinál semmit, vagy elektromos impulzust generál, vagy a cselekvési potenciált, amely ezután jeleket küld a szomszédos szomszédoknak szinapszisokon keresztül összekötött idegsejtek:

Álmok, emlékek, önszabályozó mozgások, reflexek és általában minden, amit gondol vagy tesz - minden ennek a folyamatnak köszönhető: neuronok milliói, vagy akár milliárdjai működnek különböző szinteken, és olyan kapcsolatokat hoznak létre, amelyek különféle párhuzamos alrendszereket hoznak létre, és egy biológiai anyagot képviselnek idegi háló.

Természetesen ezek mind egyszerűsítések és általánosítások, de nekik köszönhetően leírhatunk egy egyszerűt
neurális hálózat:

És egy grafikon segítségével formalizált leírásához:

Itt némi pontosításra van szükség. A körök neuronok, és a vonalak a közöttük lévő kapcsolatok,
és annak érdekében, hogy ebben a szakaszban ne összekapcsolás képviselik az információk közvetlen mozgását balról jobbra... Első idegsejt Ebben a pillanatban aktív és elszürkült. Számot is rendeltünk hozzá (1 - ha működik, 0 - ha nem). Az idegsejtek közötti számok mutatják súly kommunikáció.

A fenti grafikonok a hálózat pillanatát mutatják, a pontosabb megjelenítés érdekében időintervallumokra kell felosztani:

Saját ideghálózatának létrehozásához meg kell értenie, hogy a súly hogyan befolyásolja az idegsejteket, és hogyan képzik az idegsejteket. Vegyünk példaként egy nyulat (tesztnyulat), és tegyük egy klasszikus kísérlet körülményei közé.

Ha biztonságos légáram irányul rájuk, a nyulak, akárcsak az emberek, pislognak:

Ez a viselkedés grafikonokkal rajzolható meg:

Az előző diagramhoz hasonlóan ezek a grafikonok is csak azt a pillanatot mutatják be, amikor a nyúl érzi a levegőt, és mi kódolás fúj, mint logikai. Ezenkívül a súlyérték alapján kiszámoljuk, hogy a második idegsejt ég-e. Ha egyenlő 1-vel, akkor az érzéki neuron beindul, pislogunk; ha a súly kisebb, mint 1, akkor nem pislogunk: a második idegsejtnek van határ- 1.

Vezessünk be még egy elemet - biztonságos hangjelzés:

A nyúl érdeklődését így modellezhetjük:

A fő különbség az, hogy a súly most van nullaígy nem kaptunk villogó nyulat, nos, legalábbis még nem. Most megtanítjuk a nyulat, hogy pislogjon a parancsra, keverés közben
irritáló anyagok (sípolás és lehelet):

Fontos, hogy ezek az események különböző időpontokban történjenek korszakok, grafikonokban így fog kinézni:

Maga a hang nem tesz semmit, de a légáramlástól még mindig a nyúl pislog, és ezt megmutatjuk a súlyok és az ingerek szorosán (piros színnel).

Kiképzés a komplex viselkedés egyszerűsödhet, mint az összekapcsolt neuronok közötti súly fokozatos változása az idő múlásával.

A nyúl kiképzéséhez ismételje meg a lépéseket:

Az első három kísérletben az áramkörök így fognak kinézni:

Felhívjuk figyelmét, hogy a hanginger stimulusának súlya minden ismétlés után növekszik (pirossal kiemelve), ez az érték most önkényes - 0,30-at választottunk, de a szám bármi lehet, akár negatív is. A harmadik ismétlés után nem veszi észre a nyúl viselkedésének változását, de a negyedik ismétlés után valami elképesztő dolog fog történni - a viselkedés megváltozik.

Levegővel eltávolítottuk az expozíciót, de a nyúl még mindig pislog, amikor meghallja a csipogást! Utolsó diagramunk magyarázhatja ezt a viselkedést:

Megtanítottuk a nyulat, hogy pislogva reagáljon a hangra.


Egy ilyen jellegű valódi kísérletben több mint 60 ismétlésre lehet szükség az eredmény eléréséhez.

Most elhagyjuk az agy és a nyulak biológiai világát, és megpróbálunk mindent adaptálni
megtanult mesterséges ideghálózatot létrehozni. Először próbáljunk meg egy egyszerű feladatot végrehajtani.

Tegyük fel, hogy van egy négygombos gépünk, amely akkor adagolja az ételt, amikor a megfelelőt megnyomják.
gombok (nos, vagy energia, ha robot vagy). A feladat annak kiderítése, hogy melyik gomb adja ki a jutalmat:

Ábrázolhatjuk (sematikusan), hogy a gomb mit csinál, ha így nyomjuk meg:

Jobb megoldani ezt a problémát teljes egészében, ezért nézzük meg az összes lehetséges eredményt, beleértve a helyeset is:


Kattintson a 3. gombra a vacsora megszerzéséhez.

Az idegháló kódban történő reprodukálásához először egy olyan modellt vagy grafikont kell készítenünk, amellyel feltérképezhetjük a hálózatot. Itt van egy grafikon, amely illeszkedik a feladathoz, és jól mutatja biológiai megfelelőjét is:

Ez az idegháló egyszerűen bemenetet kap - ebben az esetben annak érzékelése lesz, hogy melyik gombot nyomták meg. Ezután a hálózat a bemeneti információt súlyokkal helyettesíti, és a réteg hozzáadása alapján következtetést von le. Kicsit zavarónak tűnik, de nézzük meg, hogy a gomb hogyan jelenik meg modellünkben:


Vegye figyelembe, hogy minden súly 0, így az ideghálózat, akárcsak egy csecsemő, teljesen üres, de teljesen összekapcsolódik.

Így a külső eseményt összekapcsoljuk az ideghálózat bemeneti rétegével, és kiszámoljuk az értékét a kimenetén. Lehet, hogy nem esik egybe a valósággal, de ezt egyelőre figyelmen kívül hagyjuk, és számítógéppel érthető módon elkezdjük leírni a feladatot. Kezdjük a súlyok megadásával (JavaScriptet fogunk használni):

Var bemenetek =; var súlyok =; // A kényelem érdekében ezeket a vektorokat meghívhatjuk
A következő lépés egy olyan függvény létrehozása, amely összegyűjti a bemeneti értékeket és súlyokat, és kiszámítja a kimeneti értéket:

Funkció EvalNeuralNetwork (inputVector, weightVector) (var eredmény = 0; inputVector.forEach (függvény (inputValue, weightIndex) (layerValue = inputValue * weightVector; eredmény + = layerValue;)); return (result.toFixed (2)); / / / Összetettnek tűnhet, de csak annyit tesz, hogy megegyezik a súly / beviteli párral és hozzáadja az eredményt
A várakozásoknak megfelelően, ha futtatjuk ezt a kódot, ugyanazt az eredményt kapjuk, mint a modellünkben vagy grafikonunkban ...

EvaluateNeuralNetwork (bemenetek, súlyok); 0,00
Élő példa: Neural Net 001.

A neurális hálózat fejlesztésének következő lépése egy módja annak, hogy ellenőrizze saját kimenetét vagy a valós helyzethez hasonló eredményeket,
kódoljuk először ezt a konkrét valóságot egy változóba:

Az inkonzisztenciák (és hány) észleléséhez hozzáadunk egy hibafunkciót:

Hiba = valóság - neurális nettó kimenet
Ezzel értékelhetjük neurális hálózatunk teljesítményét:

De ami még fontosabb, mi a helyzet olyan helyzetekkel, amikor a valóság pozitív?

Most már tudjuk, hogy a neurális hálózati modellünk nem működik (és tudjuk, mennyit), nagyszerű! Ez nagyszerű, mert most már használhatjuk a hibafunkciót a tanulás vezérlésére. De mindeznek akkor lesz értelme, ha a hibafunkciót a következőképpen definiáljuk:

Hiba = Kívánt teljesítmény- Neurális nettó kimenet
Észrevehetetlen, de olyan fontos eltérés, amely hallgatólagosan megmutatja, hogy megtesszük
használja a korábban megszerzett eredményeket a jövőbeni akciókkal való összehasonlításhoz
(és edzésre, mint később látni fogjuk). Ez a való életben is létezik, tele
minták megismétlése, így evolúciós stratégiává válhat (nos,
a legtöbb esetben).

Var input =; var súlyok =; var kívánt eredmény = 1;
És egy új funkció:

Funkció EvalNeuralNetError (kívánt, tényleges) (return (kívánt - tényleges);) // A hálózat és a hiba kiértékelése után a következőket kapjuk: // "Neural Net output: 0.00 Error: 1"
Élő példa: Neural Net 002.

Foglaljuk össze a köztes eredményt... Feladattal kezdtük, elkészítettük egyszerű modell biológiai idegháló formájában, és módot kapott a teljesítményének a valósághoz vagy a kívánt eredményhez viszonyított mérésére. Most meg kell találnunk a módját az inkonzisztencia kijavítására - ez a folyamat mind a számítógépek, mind az emberek számára tanulásnak tekinthető.

Hogyan lehet idomhálózatot képezni?

A biológiai és a mesterséges neurális hálózatok megismerésének alapja az ismétlés
és tanulási algoritmusok tehát külön dolgozunk velük. Kezdjük azzal
képzési algoritmusok.

A természetben a tanulási algoritmusokat fizikai vagy kémiai változásokként értjük
a neuronok jellemzői kísérletek után:

Drámai illusztráció arról, hogy két neuron hogyan változik az idő múlásával a kódban és a tanulási algoritmus-modellünkben azt jelenti, hogy idővel egyszerűen megváltoztatunk valamit, hogy megkönnyítsük életünket. Ezért adjunk hozzá egy változót az élet könnyűségének jelzésére:

Var learningRate = 0,20; // Minél nagyobb az érték, annál gyorsabb lesz a tanulási folyamat :)
És mi a különbség?

Ez megváltoztatja a súlyokat (akárcsak egy nyúl!), Különösen a kimenet súlyát, amelyet meg akarunk szerezni:

Az ilyen algoritmus kódolása az Ön választása, az egyszerűség kedvéért a tanulási tényezőt hozzáadom a súlyhoz, itt ez függvényként:

Function learn (inputVector, weightVector) (weightVector.forEach (function (súly, index, súlyok) (if (inputVector> 0) (súlyok = súly + learningRate;)));)
Használatakor ez a tanulási funkció egyszerűen hozzáadja a tanulási tényezőnket a súlyvektorhoz aktív idegsejt, a tanulás (vagy ismétlés) fordulója előtt és után az eredmények a következők lesznek:

// Eredeti súlyvektor: // Neurális nettó kimenet: 0,00 Hiba: 1 tanulás (bevitel, súlyok); // Új súlyvektor: // Neurális nettó kimenet: 0,20 Hiba: 0,8 // Ha ez nem nyilvánvaló, akkor az ideghálózat kimenete közel 1 (egy csirke kimenete) - ezt akartuk, így arra következtethetünk, hogy jó irányba haladunk
Élő példa: Neural Net 003.

Oké, hogy most jó irányba haladunk, ennek a rejtvénynek az utolsó darabja a megvalósítás lesz. ismétlések.

Ez nem olyan nehéz, a természetben csak ugyanazt csináljuk újra és újra, és a kódban csak az ismétlések számát adjuk meg:

Var vizsgálatok = 6;
A képzési ideghálózatunkban az ismétlések számának függvénye így fog kinézni:

Funkcionális vonat (próbák) (a (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }
Nos, a végső jelentésünk:

Neurális nettó kimenet: 0,00 hiba: 1,00 súlyvektor: neurális nettó kimenet: 0,20 hiba: 0,80 súlyvektor: neurális nettó kimenet: 0,40 hiba: 0,60 súlyvektor: neurális nettó kimenet: 0,60 hiba: 0,40 súlyvektor: neurális nettó kimenet: 0,80 hiba : 0,20 Súlyvektor: Neurális nettó kimenet: 1,00 Hiba: 0,00 Súlyvektor: // Csirke vacsora!
Élő példa: Neural Net 004.

Most van egy súlyvektorunk, amely csak egy eredményt ad (csirke vacsorára), ha az input vektor megegyezik a valósággal (a harmadik gomb megnyomása).

Szóval mi olyan jó, amit most csináltunk?

Abban konkrét eset ideghálózatunk (edzés után) fel tudja ismerni a bemeneti adatokat és elmondani, ami a kívánt eredményhez vezet (még mindig konkrét helyzeteket kell programoznunk):

Ezenkívül skálázható modell, játék és eszköz a veled tartott tréningekhez. Tanulhattunk valami újat a gépi tanulásról, a neurális hálózatokról és a mesterséges intelligenciáról.

Figyelem a felhasználók számára:

  • A vizsgált súlyok tárolásának mechanizmusa nincs megadva, ezért ez az ideghálózat elfelejt mindent, amit tud. A kód frissítésekor vagy újrafuttatásakor legalább hat sikeres újrapróbálkozásra van szükség ahhoz, hogy a hálózat teljes mértékben megtanulja, ha úgy gondolja, hogy egy személy vagy egy gép véletlenszerű sorrendben nyomja meg a gombokat ... Ez eltart egy ideig.
  • A fontos dolgok elsajátításához szükséges biológiai hálózatok tanulási aránya 1, ezért csak egy sikeres ismétlésre lesz szükség.
  • Van egy tanulási algoritmus, amely nagyon hasonlít a biológiai idegsejtekre, fülbemászó névvel: widroff-hoff szabály, vagy widroff-hoff edzés.
  • A neuronküszöböket (példánkban 1) és a túlillesztési hatásokat (nagy számú ismétlés esetén az eredmény nagyobb lesz, mint 1) nem veszünk figyelembe, de természetüknél fogva nagyon fontosak, és felelősek a viselkedés nagy és összetett blokkjaikért válaszokat. Így a negatív súlyok is.

Jegyzetek és irodalomjegyzék további olvasáshoz

Megpróbáltam elkerülni a matematikát és a nehéz kifejezéseket, de ha érdekel, felépítettünk egy perceptront, amelyet a kettős osztályozók felügyelt tanulási (felügyelt tanulási) algoritmusaként határozunk meg - ez nehéz dolog.

Az agy biológiai felépítése nem könnyű téma, részben a pontatlanság, részben összetettsége miatt. Jobb kezdeni az Idegtudomány (Purves) és a Kognitív Idegtudomány (Gazzaniga). Módosítottam és adaptáltam a nyuszi példát a Gateway to Memory (Gluck) -ról, amely szintén nagyszerű útmutató a grafikonok világához.

Egy másik nagyszerű forrás, a Bevezetés a neurális hálózatokba (Gurney) tökéletes minden AI-igényéhez.

Most a Pythonban! Köszönet Ilya Andshmidtnek a Python verzió biztosításáért:

Bemenet = súlyok = kívánt_eredmény = 1 tanulási_arány = 0,2 kísérlet = 6 def értékeli a neurális_hálózatot (bemenet_array, súly_array): eredmény = 0 i tartományban (len (input_array)): layer_value = input_array [i] * weight_array [i] eredmény + = layer_value print ("értékelő_neural_network:" + str (eredmény)) print ("súlyok:" + str (súlyok)) visszatérési eredmény def értékelő_hiba (kívánt, tényleges): hiba = kívánt - tényleges nyomtatás ("értékelő_hiba:" + str (hiba) ) return error def learn (input_array, weight_array): print ("learning ...") for i in range (len (input_array)): ha input_array [i]> 0: weight_array [i] + = learning_rate def train (próbák) ): az i tartományban (próbák): neural_net_result = Eval_neural_network (inputok, súlyok) megtanulják (inputok, súlyok) vonat (próbák)
Most a GO-n! Köszönet Kieran Mahir-nak ezért a verzióért.

Csomag főimport ("fmt" "matek") func main () (fmt.Println ("Bemenetek és súlyok létrehozása ...") bemenetek: = float64 (0,00, 0,00, 1,00, 0,00) súlyok: = float64 (0,00, 0,00, 0,00, 0,00) kívánt: = 1,00 learningRate: = 0,20 próba: = 6 vonat (próbák, bemenetek, súlyok, kívánt, learningRate)) func train (próbák int, inputok float64, float64 súlyok, kívánt float64, learningRate float64) ( mert i: = 1;< 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 (weightVector = weightVector + learningRate)) visszatérő weightVector) func értékelés (inputVector float64, weightVector float64) float64 (eredmény: = 0.00 index esetén, inputValue: = tartomány inputVector (layerValue: = inputValue * weightVector eredmény = eredmény + layerValue) visszatérési eredmény ) func assessmentError (kívánt float64, tényleges float64) float64 (return kívánt - tényleges)

Segíthet és átutalhat néhány pénzt a webhely fejlesztésére

 

A neurális hálózatok most divatban vannak, és jó okkal. Segítségükkel felismerheti például a képeken lévő tárgyakat, vagy éppen ellenkezőleg, megrajzolhatja Salvador Dali rémálmait. A kényelmes könyvtáraknak köszönhetően a legegyszerűbb neurális hálózatok csak pár soros kódban jönnek létre, és nem kell több az IBM mesterséges intelligenciájához vonzódni.

Elmélet

A biológusok még mindig nem tudják pontosan, hogyan működik az agy, de hogyan működik egyes elemek az idegrendszer jól tanulmányozott. Neuronokból - speciális sejtekből áll, amelyek elektrokémiai jeleket cserélnek egymással. Minden neuronnak sok dendritje és egy axonja van. A dendritek összehasonlíthatók azokkal a bemenetekkel, amelyeken keresztül az adatok bejutnak az idegsejtbe, míg az axon szolgál a kimeneteként. A dendritek és az axonok közötti kapcsolatokat szinapszisoknak nevezzük. Nem csak jeleket továbbítanak, hanem amplitúdójukat és frekvenciájukat is megváltoztathatják.

Az egyes neuronok szintjén bekövetkező transzformációk nagyon egyszerűek, de még a nagyon kicsi ideghálózatok is sok mindenre képesek. A Caenorhabditis elegans féreg sokféle viselkedését - mozgás, ételkeresés, különféle reakciók a külső ingerekre és még sok minden mást - csak háromszáz idegsejt kódol. És oké férgek! Még a hangyáknak is van elegendő 250 000 neuronja, és amit csinálnak, az határozottan meghaladja a gépek erejét.

Majdnem hatvan évvel ezelőtt Frank Rosenblatt amerikai kutató megpróbált alkotni számítógépes rendszer, az agy képébe és hasonlatosságába rendezve, létrehozásának lehetőségei azonban rendkívül korlátozottak voltak. Azóta az ideghálózatok iránti érdeklődés ismételten fellángolt, de időről időre kiderült, hogy a számítási teljesítmény nem elegendő egyetlen fejlett neurális hálózat számára sem. Sokat változott ebben a tekintetben az elmúlt évtized során.

Elektromechanikus agy motorral

Rosenblatt autóját Mark I Perceptron-nak hívták. Képfelismerésre tervezték, ezt a feladatot a számítógépek még mindig ilyen rosszul teljesítik. Az I. jelet a retina látszatával láttuk el: négyszögletes 400 fotocella tömb, függőlegesen húsz és vízszintesen húsz. A fotocellákat véletlenszerűen csatlakoztatták az idegsejtek elektronikus modelljeihez, és ezek viszont nyolc kimenethez. Rosenblatt potenciométereket használt szinapszusként összekapcsolva az elektronikus idegsejteket, a fotocellákat és a kimeneteket. A perceptron edzésénél 512 léptetőmotor automatikusan elforgatta a potenciométer gombjait, a kimeneten kapott eredmény pontosságától függően beállítva az idegsejtek feszültségét.

Így működik egy ideghálózat dióhéjban. Egy mesterséges idegsejtnek, mint egy valódinak, több bemenete és kimenete van. Minden bemenetnek van súlyozási tényezője. Ezen együtthatók megváltoztatásával kiképezhetjük az ideghálózatot. A kimeneti jel függését a bemeneti jelektől az úgynevezett aktiválási funkció határozza meg.

A Rosenblatt perceptronban az aktiválási függvény összeadja az összes bemenet súlyát, amelyhez logikus érkezett, majd összehasonlítja az eredményt egy küszöbértékkel. Hátránya, hogy az egyik súlyozási tényező enyhe változása ezzel a megközelítéssel aránytalanul nagy hatással lehet az eredményre. Ez megnehezíti a tanulást.

A modern ideghálózatok általában nem lineáris aktiválási funkciókat használnak, mint például a sigmoid. Ezenkívül a régi ideghálózatoknak túl kevés rétege volt. Manapság a be- és kimenet között általában egy vagy több rejtett neuronréteg található. Itt történik minden móka.

Hogy könnyebben megérthesse a tétet, nézze meg ezt a diagramot. Ez egy előre rejtett ideghálózat, egyetlen rejtett réteggel. Minden kör egy neuronnak felel meg. Bal oldalon a bemeneti réteg neuronjai találhatók. Jobb oldalon a kimeneti réteg neuronja található. Középen egy rejtett réteg található, négy idegsejtdel. A bemeneti réteg összes neuronjának kimenete az első rejtett réteg minden neuronjához kapcsolódik. Viszont a kimeneti réteg neuronjának bemenetei a rejtett réteg neuronjainak összes kimenetéhez kapcsolódnak.

Nem minden idegi hálót terveznek így. Például vannak olyan (bár kevésbé elterjedt) hálózatok, amelyekben az idegsejtekből származó jel nemcsak a következő rétegbe táplálódik, mint például az áramkörünkből származó előremenő hálózat, hanem az ellenkező irányba is. Az ilyen hálózatokat ismétlődőnek nevezzük. A teljesen összekapcsolt rétegek szintén csak az egyik lehetőség, és még az egyik alternatívát is érintjük.

Gyakorlat

Tehát próbáljuk meg a saját kezünkkel felépíteni a legegyszerűbb ideghálózatot, és kitalálni, hogyan működik ez az út mentén. A Python-ot a Numpy könyvtárral fogjuk használni (megtehettük volna Numpy nélkül is, de a Numpy alkalmazásával a lineáris algebra kevesebb erőfeszítést igényel). Ez a példa Andrew Trask kódján alapul.

Funkciókra van szükségünk a sigmoid és deriváltjának kiszámításához:

A folytatás csak a résztvevők számára elérhető

1. lehetőség: Csatlakozzon a "site" közösséghez, hogy elolvassa a webhely összes anyagát

A közösség tagsága a megadott időszakban hozzáférést biztosít az ÖSSZES Hacker anyaghoz, növeli a személyes összesített kedvezményt, és lehetővé teszi a professzionális Xakep pontszám felhalmozását!

2016 első felében a világ számos fejleményről hallott az ideghálózatok területén - a Google-ról (a hálózati lejátszó a Go AlphaGo-ban), a Microsoftról (számos szolgáltatás a képazonosításra), az induló MSQRD-ről, a Prismáról és mások bemutatták algoritmusaikat.

Könyvjelzőkhöz

Az oldal szerkesztői elmondják, hogy melyek az idegi hálózatok, mire szolgálnak, miért éppen most fogták el a bolygót, és nem évekkel korábban vagy később, mennyi pénzt lehet rájuk keresni, és kik a fő piaci szereplők. A MIPT, a Yandex, a Mail.Ru Group és a Microsoft szakértői is megosztották véleményüket.

Mik azok a neurális hálózatok, és milyen feladatokat tudnak megoldani

A mesterséges intelligencia rendszerek fejlesztésének egyik iránya a neurális hálózatok. Az elképzelés az, hogy a lehető legszorosabban szimulálja az emberi idegrendszer működését - nevezetesen a képességét, hogy megtanulja és kijavítsa a hibákat. Ez fő jellemzője bármilyen idegi hálózat - képes önállóan tanulni és cselekedni a korábbi tapasztalatok alapján, minden alkalommal egyre kevesebb hibát követve el.

Az ideghálózat nemcsak az aktivitást, hanem az emberi idegrendszer felépítését is utánozza. Egy ilyen hálózat nagyszámú egyedi számítási elemből ("neuronok") áll. A legtöbb esetben mindegyik "neuron" a hálózat egy meghatározott rétegére utal. A bemeneti adatokat egymás után dolgozzák fel a hálózat minden rétegén. Az egyes "neuronok" paraméterei változhatnak az előző bemeneti adatok halmazán elért eredmények függvényében, megváltoztatva ezzel a teljes rendszer sorrendjét.

Andrey Kalinin, a Mail.ru Search Group vezetője, a Mail.Ru Group megjegyzi, hogy az ideghálózatok képesek ugyanazokat a problémákat megoldani, mint más gépi tanulási algoritmusok, az egyetlen különbség a tanulás megközelítésében rejlik.

Minden olyan feladat, amelyet az ideghálózatok meg tudnak oldani, valamilyen módon kapcsolódnak a tanuláshoz. A neurális hálózatok fő alkalmazási területei közé tartozik az előrejelzés, a döntéshozatal, a mintafelismerés, az optimalizálás, az adatok elemzése.

Vlad Shershulsky, a Microsoft oroszországi együttműködési programjainak igazgatója Oroszországban megjegyzi, hogy a neurális hálózatokat ma már széles körben használják: „Például sok nagy internetes oldal használja őket arra, hogy természetesebbé és hasznosabbá tegye a felhasználói viselkedésre adott reakciókat a közönség számára. Az ideghálózatok állnak leginkább modern rendszerek beszédfelismerés és szintézis, valamint képfelismerés és -feldolgozás. Egyes navigációs rendszerekben használják őket, legyenek azok ipari robotok vagy önvezető autók. A neurális hálózatokon alapuló algoritmusok megvédik az információs rendszereket a rosszindulatú támadásoktól, és segítenek az illegális tartalom azonosításában a hálózaton. "

Rövid távon (5-10 év) Shershulsky úgy véli, hogy az ideghálózatokat még szélesebb körben fogják használni:

Képzeljünk el egy mezőgazdasági kombájnt, amelynek működtetői több videokamerával vannak felszerelve. Percenként percenként ötezer képet készít az egyes növényekről a pályáján, és ideghálózat segítségével elemzi, hogy gyomról van-e szó, fertőzött-e betegség vagy kártevők. És minden növényt külön-külön kezel. Kitaláció? Már nem egészen. Öt év múlva pedig normává válhat. - Vlad Shershulsky, a Microsoft

A moszkvai Fizikai és Technológiai Intézet Élő rendszerek központjának idegrendszeri és mély tanulási laboratóriumának vezetője, Mihail Burtsev kísérleti térképet ad az ideghálózatok fejlődéséről 2016-2018 között:

  • képek tárgyainak felismerésére és osztályozására szolgáló rendszerek;
  • hang interakciós interfészek a tárgyak internetéhez;
  • szolgáltatásminőség-ellenőrző rendszerek a telefonközpontokban;
  • hibaelhárító rendszerek (beleértve az idő előrejelzőit is) Karbantartás), anomáliák, kibernetikai-fizikai fenyegetések;
  • intelligens biztonsági és felügyeleti rendszerek;
  • robotok, amelyek felváltják a telefonos központok egyes funkcióit;
  • videoelemző rendszerek;
  • önálló tanulási rendszerek, amelyek optimalizálják az anyagáramlás kezelését vagy az objektumok elhelyezkedését (raktárakban, szállításban);
  • intelligens, önállóan tanuló vezérlőrendszerek a gyártási folyamatokhoz és eszközökhöz (beleértve a robotokat is);
  • egyetemes fordítási rendszerek megjelenése "menet közben" konferenciák és személyes használat céljából;
  • botok-tanácsadók megjelenése technikai támogatás vagy személyi asszisztensek, személyhez közeli funkciókban.

Grigory Bakunov, a Yandex technológiai terjesztési igazgatója úgy véli, hogy a neurális hálózatok elterjesztésének alapja az elkövetkező öt évben az lesz, hogy az ilyen rendszerek képesek különféle döntéseket hozni: „A legfontosabb, amit az ideghálózatok tesznek egy ember érdekében: hogy megmentse a felesleges döntéshozástól. Tehát szinte mindenhol használhatók, ahol nem túl intellektuális döntéseket hoz egy élő ember. Ezt a készséget fogják kiaknázni a következő öt évben, az emberi döntéshozatalt egyszerű automatával helyettesítve. ”

Miért váltak olyan népszerűvé a neurális hálózatok?

A tudósok több mint 70 éve fejlesztik a mesterséges ideghálózatokat. Az ideghálózat formalizálásának első kísérlete 1943-ból származik, amikor két amerikai tudós (Warren McCulloch és Walter Pitts) cikket mutatott be az emberi eszmék és az idegi tevékenység logikai számításairól.

Andrej Kalinin, a Mail.Ru Group munkatársa szerint azonban a közelmúltig túl alacsony volt az ideghálózatok sebessége ahhoz, hogy széles körben alkalmazzák őket, ezért ezeket a rendszereket főként a számítógépes látáshoz kapcsolódó fejlesztésekben használták, más algoritmusokat pedig más területeken használtak. gépi tanulás.

A neurális hálózat fejlesztési folyamatának fáradságos és időigényes része képezi azt. Ahhoz, hogy a neurális hálózat helyesen oldja meg a hozzárendelt feladatokat, több tízmillió bemeneti adatsorozaton kell "futtatnia" működését. A gyorsított tanulás különféle technológiáinak megjelenésével társítják Andrej Kalinin és Grigory Bakunov az ideghálózatok terjedését.

A legfontosabb dolog, ami most történt, az, hogy megjelentek olyan különféle trükkök, amelyek lehetővé teszik az átképzésre sokkal kevésbé hajlamos idegi hálózatok létrehozását - Grigory Bakunov, Yandex

„Először is van egy nagy és nyilvánosan hozzáférhető címkézett képsor (ImageNet), amelyből tanulhat. Másodszor, a modern videokártyák lehetővé teszik a neurális hálózatok százszoros gyorsabb kiképzését és használatát. Harmadszor, kész, előre kiképzett ideghálózatok jelentek meg, amelyek felismerik a képeket, amelyek alapján létrehozhatja az alkalmazásokat anélkül, hogy hosszú időt igényelne az ideghálózat munkára való felkészítésére. Mindez az ideghálózatok nagyon erőteljes fejlődését biztosítja a mintafelismerés területén ”- mondja Kalinin.

Mekkora a neurális hálózati piac volumene

- Nagyon könnyű megszámolni. Bármely területet igénybe vehet, amely alacsonyan képzett munkaerőt igényel - például a call center szolgáltatókat -, és egyszerűen kivonhatja az összes emberi erőforrást. Azt mondanám, hogy több milliárd dolláros piacról beszélünk, akár egyetlen országon belül is. Azt, hogy a világon hány ember végez alacsony képzettségű munkát, könnyű megérteni. Tehát nagyon elvont módon is azt gondolom, hogy százmilliárdos piacról beszélünk az egész világon. ”- mondja Grigory Bakunov, a Yandex technológiai terjesztési igazgatója.

Egyes becslések szerint a szakmák több mint fele automatizálódik - ez az a maximális mennyiség, amellyel a gépi tanulási algoritmusok (és különösen az ideghálózatok) piaca növelhető. - Andrey Kalinin, Mail.Ru Group

„A gépi tanulási algoritmusok a következő lépést jelentik bármely folyamat automatizálásában, bármelyik fejlesztésében szoftver... Ezért a piac legalább egybeesik az egész szoftverpiaccal, de inkább felülmúlja, mert lehetővé válik olyan új intelligens megoldások készítése, amelyekhez a régi szoftverek nem férnek hozzá ”- folytatja Andrey Kalinin, a Mail.ru Search vezetője a Mail.Ru Group-nál. .

Miért építik a neurális hálózat fejlesztői a tömegpiaci mobilalkalmazásokat

Az elmúlt hónapokban egyszerre több, ideghálót használó, nagy horderejű szórakoztató projekt jelent meg a piacon - ez is egy népszerű videó szolgáltatás, amely közösségi háló Facebook, és Orosz alkalmazások képfeldolgozáshoz (a Mail.Ru Group beruházásai júniusban) és mások.

Saját neurális hálózataik képességeit megmutatta a Google (az AlphaGo technológia megverte a bajnokot Go-ban; 2016 márciusában a társaság 29 árnyékot árverezett el, amelyet ideghálózatok rajzoltak stb.), Valamint a Microsoft (a képeket felismerő CaptionBot projekt képekben és automatikusan feliratokat generál nekik; a WhatDog projekt, amely egy fotó alapján meghatározza a kutya fajtáját; a HowOld szolgáltatás, amely meghatározza a képen látható személy életkorát stb.) és a Yandex (júniusban a csapat beépített egy szolgáltatást az autók képeken történő felismerésére az Auto.ru alkalmazásban; album; májusban létrehozta a LikeMo.net projektet, hogy híres művészek stílusában rajzoljon).

Az ilyen szórakoztató szolgáltatásokat inkább nem a globális problémák megoldására hozzák létre, amelyekre a neurális hálózatok irányulnak, hanem a neurális hálózatok képességeinek bemutatására és a képzés lebonyolítására.

„A játékok a faji viselkedésünk jellemző jellemzői. Egyrészt az emberi viselkedés szinte minden tipikus forgatókönyve szimulálható játékhelyzetekben, másrészt a játék alkotói és különösen a játékosok sok örömet szerezhetnek a folyamatban. Van egy tisztán haszonelvű szempont is. A jól megtervezett játék nemcsak a játékosok számára hozza meg az elégedettséget: játék közben ideghálózati algoritmust képeznek ki. Végül is a neurális hálózatok a példamutatáson alapulnak ”- mondja Vlad Shershulsky a Microsoft részéről.

„Először is ez a technológia képességeinek bemutatása céljából történik. Valójában nincs más oka. Ha a Prismáról beszélünk, akkor világos, hogy miért tették. A srácok valamilyen csővezetéket építettek, amely lehetővé teszi számukra, hogy képekkel dolgozzanak. Ennek bemutatására egy elég egyszerű módszert választottak. Miért ne? Ez csak az algoritmusok bemutatása ”- mondja Grigory Bakunov, a Yandex munkatársa.

Andrey Kalinin, a Mail.Ru Group részéről más véleményen van: „Természetesen ez a nyilvánosság szempontjából lenyűgöző. Másrészt nem mondanám, hogy a szórakoztató termékeket nem lehet hasznosabb területeken alkalmazni. Például a képek stilizálása rendkívül fontos számos iparág számára (tervezés, számítógépes játékok, az animáció csak néhány példa), és a neurális hálózatok teljes kihasználása jelentősen optimalizálhatja a számukra a tartalom létrehozásának költségeit és módszereit. "

Az ideghálózati piac legfontosabb szereplői

Ahogyan Andrej Kalinin megjegyzi, a piacon jelen lévő ideghálózatok nagy része nagyban különbözik egymástól. „A technológiák nagyjából azonosak mindenki számára. De a neurális hálózatok használata olyan öröm, amelyet nem mindenki engedhet meg magának. Az ideghálózat önálló kiképzéséhez és számos kísérlet elvégzéséhez nagy edzőkészletekre és drága videokártyákkal rendelkező gépparkra van szükség. Nyilvánvalóan léteznek ilyen lehetőségek nagyvállalatok", Mondja.

A fő piaci szereplők közül Kalinin megemlíti a Google-t és divízióját, a Google DeepMind-et, amely létrehozta az AlphaGo hálózatot, valamint a Google Brain-t. A Microsoftnak saját fejlesztései vannak ezen a területen - a Microsoft Research laboratórium kezeli őket. Ideghálózatokat hoznak létre az IBM, a Facebook (a Facebook AI Research részlege), Baidu (Baidu Institute of Deep Learning) és mások. Nagyon sok fejlesztés zajlik a világ műszaki egyetemein.

Grigory Bakunov, a Yandex technológiai terjesztési igazgatója megjegyzi, hogy az ideghálózatok területén érdekes fejleményeket találunk a startupok körében is. „Emlékeznék például a ClarifAI cégre. Ez egy kis induló vállalkozás, amelyet valaha a Google-tól származó emberek készítettek. Most talán a legjobbak a világon a kép tartalmának azonosításában. " Ezek az induló vállalkozások közé tartozik az MSQRD, a Prisma és mások.

Oroszországban nemcsak a startupok, hanem a nagy technológiai vállalatok is részt vesznek a fejlesztésben a neurális hálózatok területén - például a Mail.Ru Group holding neurális hálózatokat használ a szövegek feldolgozásához és osztályozásához, valamint a képek elemzéséhez. A vállalat robotokkal és párbeszédrendszerekkel kapcsolatos kísérleti fejlesztéseket is folytat.

A Yandex saját ideghálózatának létrehozásával is foglalkozik: „Alapvetően az ilyen hálózatokat már használják a képekkel, hanggal való munkában, de más területeken is vizsgáljuk képességeiket. Most nagyon sok kísérletet végzünk az ideghálózatok szöveggel való munkájának felhasználásával. " A fejlesztéseket az egyetemeken hajtják végre: Skoltech, MIPT, Moszkvai Állami Egyetem, HSE és mások.

2016 első felében a világ számos fejleményről hallott az ideghálózatok területén - a Google-ról (a hálózati lejátszó a Go AlphaGo-ban), a Microsoftról (számos szolgáltatás a képazonosításra), az induló MSQRD-ről, a Prismáról és mások bemutatták algoritmusaikat.

Könyvjelzőkhöz

Az oldal szerkesztői elmondják, hogy melyek az idegi hálózatok, mire szolgálnak, miért éppen most fogták el a bolygót, és nem évekkel korábban vagy később, mennyi pénzt lehet rájuk keresni, és kik a fő piaci szereplők. A MIPT, a Yandex, a Mail.Ru Group és a Microsoft szakértői is megosztották véleményüket.

Mik azok a neurális hálózatok, és milyen feladatokat tudnak megoldani

A neurális hálózatok a mesterséges intelligencia rendszerek fejlesztésének egyik iránya. Az elképzelés az, hogy a lehető legszorosabban szimulálja az emberi idegrendszer működését - nevezetesen a képességét, hogy megtanulja és kijavítsa a hibákat. Ez minden idegi hálózat fő jellemzője - képes önállóan tanulni és a korábbi tapasztalatok alapján cselekedni, minden alkalommal egyre kevesebb hibát követve el.

Az ideghálózat nemcsak az aktivitást, hanem az emberi idegrendszer felépítését is utánozza. Egy ilyen hálózat nagyszámú egyedi számítási elemből ("neuronok") áll. A legtöbb esetben mindegyik "neuron" a hálózat egy meghatározott rétegére utal. A bemeneti adatokat egymás után dolgozzák fel a hálózat minden rétegén. Az egyes "neuronok" paraméterei változhatnak az előző bemeneti adatok halmazán elért eredmények függvényében, megváltoztatva ezzel a teljes rendszer sorrendjét.

Andrey Kalinin, a Mail.ru Search Group vezetője, a Mail.Ru Group megjegyzi, hogy az ideghálózatok képesek ugyanazokat a problémákat megoldani, mint más gépi tanulási algoritmusok, az egyetlen különbség a tanulás megközelítésében rejlik.

Minden olyan feladat, amelyet az ideghálózatok meg tudnak oldani, valamilyen módon kapcsolódnak a tanuláshoz. A neurális hálózatok fő alkalmazási területei közé tartozik az előrejelzés, a döntéshozatal, a mintafelismerés, az optimalizálás, az adatok elemzése.

Vlad Shershulsky, a Microsoft oroszországi technológiai együttműködési programjainak igazgatója Oroszországban megjegyzi, hogy a neurális hálózatokat ma már széles körben használják: „Például sok nagy internetes webhely használja őket arra, hogy természetesebbé és hasznosabbá tegye a felhasználói viselkedésre adott reakciókat a közönség számára. Az ideghálózatok állnak a legtöbb modern beszédfelismerő és szintézis rendszer, valamint a képfelismerés és -feldolgozás középpontjában. Egyes navigációs rendszerekben használják őket, legyenek azok ipari robotok vagy önvezető autók. A neurális hálózatokon alapuló algoritmusok megvédik az információs rendszereket a rosszindulatú támadásoktól, és segítenek a hálózat illegális tartalmának azonosításában. "

Rövid távon (5-10 év) Shershulsky úgy véli, hogy az ideghálózatokat még szélesebb körben fogják használni:

Képzeljünk el egy mezőgazdasági kombájnt, amelynek működtetői több videokamerával vannak felszerelve. Percenként percenként ötezer képet készít az egyes növényekről a pályáján, és ideghálózat segítségével elemzi, hogy gyomról van-e szó, fertőzött-e betegség vagy kártevők. És minden növényt külön-külön kezel. Kitaláció? Már nem egészen. Öt év múlva pedig normává válhat. - Vlad Shershulsky, a Microsoft

A moszkvai Fizikai és Technológiai Intézet Élő rendszerek központjának idegrendszeri és mély tanulási laboratóriumának vezetője, Mihail Burtsev kísérleti térképet ad az ideghálózatok fejlődéséről 2016-2018 között:

  • képek tárgyainak felismerésére és osztályozására szolgáló rendszerek;
  • hang interakciós interfészek a tárgyak internetéhez;
  • szolgáltatásminőség-ellenőrző rendszerek a telefonközpontokban;
  • rendszerek a problémák (beleértve a karbantartás idejének előrejelzését), rendellenességek, kiberfizikai fenyegetések azonosítására;
  • intelligens biztonsági és felügyeleti rendszerek;
  • robotok, amelyek felváltják a telefonos központok egyes funkcióit;
  • videoelemző rendszerek;
  • önálló tanulási rendszerek, amelyek optimalizálják az anyagáramlás kezelését vagy az objektumok elhelyezkedését (raktárakban, szállításban);
  • intelligens, önállóan tanuló vezérlőrendszerek a gyártási folyamatokhoz és eszközökhöz (beleértve a robotokat is);
  • egyetemes fordítási rendszerek megjelenése "menet közben" konferenciák és személyes használat céljából;
  • robotok-technikai segítségnyújtási tanácsadók vagy személyes asszisztensek megjelenése egy személyhez közeli funkciókban.

Grigory Bakunov, a Yandex technológiai terjesztési igazgatója úgy véli, hogy a neurális hálózatok elterjesztésének alapja az elkövetkező öt évben az lesz, hogy az ilyen rendszerek képesek különféle döntéseket hozni: „A legfontosabb, amit az ideghálózatok tesznek egy ember érdekében: hogy megmentse a felesleges döntéshozástól. Tehát szinte mindenhol használhatók, ahol nem túl intellektuális döntéseket hoz egy élő ember. Ezt a készséget fogják kiaknázni a következő öt évben, az emberi döntéshozatalt egyszerű automatával helyettesítve. ”

Miért váltak olyan népszerűvé a neurális hálózatok?

A tudósok több mint 70 éve fejlesztik a mesterséges ideghálózatokat. Az ideghálózat formalizálásának első kísérlete 1943-ból származik, amikor két amerikai tudós (Warren McCulloch és Walter Pitts) cikket mutatott be az emberi eszmék és az idegi tevékenység logikai számításairól.

Andrej Kalinin, a Mail.Ru Group munkatársa szerint azonban a közelmúltig túl alacsony volt az ideghálózatok sebessége ahhoz, hogy széles körben alkalmazzák őket, ezért ezeket a rendszereket főként a számítógépes látáshoz kapcsolódó fejlesztésekben használták, más algoritmusokat pedig más területeken használtak. gépi tanulás.

A neurális hálózat fejlesztési folyamatának fáradságos és időigényes része képezi azt. Ahhoz, hogy a neurális hálózat helyesen oldja meg a hozzárendelt feladatokat, több tízmillió bemeneti adatsorozaton kell "futtatnia" működését. A gyorsított tanulás különféle technológiáinak megjelenésével társítják Andrej Kalinin és Grigory Bakunov az ideghálózatok terjedését.

A legfontosabb dolog, ami most történt, az, hogy megjelentek olyan különféle trükkök, amelyek lehetővé teszik az átképzésre sokkal kevésbé hajlamos idegi hálózatok létrehozását - Grigory Bakunov, Yandex

„Először is van egy nagy és nyilvánosan hozzáférhető címkézett képsor (ImageNet), amelyből tanulhat. Másodszor, a modern videokártyák lehetővé teszik a neurális hálózatok százszoros gyorsabb kiképzését és használatát. Harmadszor, kész, előre kiképzett ideghálózatok jelentek meg, amelyek felismerik a képeket, amelyek alapján létrehozhatja az alkalmazásokat anélkül, hogy hosszú időt igényelne az ideghálózat munkára való felkészítésére. Mindez az ideghálózatok nagyon erőteljes fejlődését biztosítja a mintafelismerés területén ”- mondja Kalinin.

Mekkora a neurális hálózati piac volumene

- Nagyon könnyű megszámolni. Bármely területet igénybe vehet, amely alacsonyan képzett munkaerőt igényel - például a call center szolgáltatókat -, és egyszerűen kivonhatja az összes emberi erőforrást. Azt mondanám, hogy több milliárd dolláros piacról beszélünk, akár egyetlen országon belül is. Azt, hogy a világon hány ember végez alacsony képzettségű munkát, könnyű megérteni. Tehát nagyon elvont módon is azt gondolom, hogy százmilliárdos piacról beszélünk az egész világon. ”- mondja Grigory Bakunov, a Yandex technológiai terjesztési igazgatója.

Egyes becslések szerint a szakmák több mint fele automatizálódik - ez az a maximális mennyiség, amellyel a gépi tanulási algoritmusok (és különösen az ideghálózatok) piaca növelhető. - Andrey Kalinin, Mail.Ru Group

„A gépi tanulási algoritmusok a következő lépést jelentik bármely folyamat automatizálásában, bármilyen szoftver fejlesztésében. Ezért a piac legalább egybeesik az egész szoftverpiaccal, de inkább felülmúlja, mert lehetővé válik olyan új intelligens megoldások készítése, amelyekhez a régi szoftverek nem férnek hozzá. ”- folytatja Andrey Kalinin, a Mail.ru Search vezetője a Mail.Ru Group-nál. .

Miért építik a neurális hálózat fejlesztői a tömegpiaci mobilalkalmazásokat

Az elmúlt hónapokban egyszerre több, ideghálót használó, nagy jelentőségű szórakoztató projekt jelent meg a piacon - ez a népszerű videószolgáltatás, amely a Facebook közösségi hálózat, és a képek feldolgozására szolgáló orosz alkalmazások (júniusban a Mail beruházásai .Ru Group) és mások.

Saját neurális hálózataik képességeit megmutatta a Google (az AlphaGo technológia megverte a bajnokot Go-ban; 2016 márciusában a társaság 29 árnyékot árverezett el, amelyet ideghálózatok rajzoltak stb.), Valamint a Microsoft (a képeket felismerő CaptionBot projekt képekben és automatikusan feliratokat generál nekik; a WhatDog projekt, amely egy fotó alapján meghatározza a kutya fajtáját; a HowOld szolgáltatás, amely meghatározza a képen látható személy életkorát stb.) és a Yandex (júniusban a csapat beépített egy szolgáltatást az autók képeken történő felismerésére az Auto.ru alkalmazásban; album; májusban létrehozta a LikeMo.net projektet, hogy híres művészek stílusában rajzoljon).

Az ilyen szórakoztató szolgáltatásokat inkább nem a globális problémák megoldására hozzák létre, amelyekre a neurális hálózatok irányulnak, hanem a neurális hálózatok képességeinek bemutatására és a képzés lebonyolítására.

„A játékok a faji viselkedésünk jellemző jellemzői. Egyrészt az emberi viselkedés szinte minden tipikus forgatókönyve szimulálható játékhelyzetekben, másrészt a játék alkotói és különösen a játékosok sok örömet szerezhetnek a folyamatban. Van egy tisztán haszonelvű szempont is. A jól megtervezett játék nemcsak a játékosok számára hozza meg az elégedettséget: játék közben ideghálózati algoritmust képeznek ki. Végül is a neurális hálózatok a példamutatáson alapulnak ”- mondja Vlad Shershulsky a Microsoft részéről.

„Először is ez a technológia képességeinek bemutatása céljából történik. Valójában nincs más oka. Ha a Prismáról beszélünk, akkor világos, hogy miért tették. A srácok valamilyen csővezetéket építettek, amely lehetővé teszi számukra, hogy képekkel dolgozzanak. Ennek bemutatására egy elég egyszerű módszert választottak. Miért ne? Ez csak az algoritmusok bemutatása ”- mondja Grigory Bakunov, a Yandex munkatársa.

Andrey Kalinin, a Mail.Ru Group részéről más véleményen van: „Természetesen ez a nyilvánosság szempontjából lenyűgöző. Másrészt nem mondanám, hogy a szórakoztató termékeket nem lehet hasznosabb területeken alkalmazni. Például a képek stilizálásának feladata számos iparág számára rendkívül releváns (a tervezés, a számítógépes játékok, az animáció csak néhány példa), és az ideghálózatok teljes kihasználása jelentősen optimalizálhatja a számukra a tartalom létrehozásának költségeit és módszereit. "

Az ideghálózati piac legfontosabb szereplői

Ahogyan Andrej Kalinin megjegyzi, a piacon jelen lévő ideghálózatok nagy része nagyban különbözik egymástól. „A technológiák nagyjából azonosak mindenki számára. De a neurális hálózatok használata olyan öröm, amelyet nem mindenki engedhet meg magának. Az ideghálózat önálló kiképzéséhez és számos kísérlet elvégzéséhez nagy edzőkészletekre és drága videokártyákkal rendelkező gépparkra van szükség. Nyilvánvaló, hogy a nagyvállalatoknak vannak ilyen lehetőségeik ”- mondja.

A fő piaci szereplők közül Kalinin megemlíti a Google-t és divízióját, a Google DeepMind-et, amely létrehozta az AlphaGo hálózatot, valamint a Google Brain-t. A Microsoftnak saját fejlesztései vannak ezen a területen - a Microsoft Research laboratórium kezeli őket. Ideghálózatokat hoznak létre az IBM, a Facebook (a Facebook AI Research részlege), Baidu (Baidu Institute of Deep Learning) és mások. Nagyon sok fejlesztés zajlik a világ műszaki egyetemein.

Grigory Bakunov, a Yandex technológiai terjesztési igazgatója megjegyzi, hogy az ideghálózatok területén érdekes fejleményeket találunk a startupok körében is. „Emlékeznék például a ClarifAI cégre. Ez egy kis induló vállalkozás, amelyet valaha a Google-tól származó emberek készítettek. Most talán a legjobbak a világon a kép tartalmának azonosításában. " Ezek az induló vállalkozások közé tartozik az MSQRD, a Prisma és mások.

Oroszországban nemcsak a startupok, hanem a nagy technológiai vállalatok is részt vesznek a fejlesztésben a neurális hálózatok területén - például a Mail.Ru Group holding neurális hálózatokat használ a szövegek feldolgozásához és osztályozásához, valamint a képek elemzéséhez. A vállalat robotokkal és párbeszédrendszerekkel kapcsolatos kísérleti fejlesztéseket is folytat.

A Yandex saját ideghálózatának létrehozásával is foglalkozik: „Alapvetően az ilyen hálózatokat már használják a képekkel, hanggal való munkában, de más területeken is vizsgáljuk képességeiket. Most nagyon sok kísérletet végzünk az ideghálózatok szöveggel való munkájának felhasználásával. " A fejlesztéseket az egyetemeken hajtják végre: Skoltech, MIPT, Moszkvai Állami Egyetem, HSE és mások.