![Használja az brain.js-t neurális hálózat kiépítéséhez - Kreatív Használja az brain.js-t neurális hálózat kiépítéséhez - Kreatív](https://a.lchan.org/creative/use-brain.js-to-build-a-neural-network-5.webp)
Tartalom
- 01. Állítsa be a projektet
- 02. Indítsa el az alkalmazást
- 03. Határozza meg edzéssel kapcsolatos kérdéseit
- 04. Inicializálja az ideghálózatot
- 05. Építsd meg a kvíz keretrendszert
- 06. A neuronhálózat edzése
- 07. Bővítse a hálózatot
![](https://a.lchan.org/creative/use-brain.js-to-build-a-neural-network.webp)
A Brain.js egy fantasztikus módszer az ideghálózat kiépítésére. Egyszerűen fogalmazva: a neurális hálózat a gépi tanulás olyan módszere, amely az emberi agyhoz hasonlóan működik. Ha egy kérdésre helyes választ ad (például: „Melyik lehetőséget választja ez a felhasználó?”), Lassan megtanulja a bemenetek és válaszok mintázatát és kapcsolatát. Az ideghálózat egyik példája a Facebook arcfelismerő rendszere, a DeepFace.
De az ideghálózatok bonyolult tartománynyelve és a látszólag meredek tanulási görbe miatt nehéz lehet elindulni.
Ebben az oktatóanyagban az elméletet a szükséges ismeretekig bontjuk le, és ami fontos, ragaszkodni fogunk ahhoz, hogy a brain.js-t ténylegesen használjuk ideghálózat létrehozásához. A végére lesz egy webalkalmazása, amely feleletválasztós kérdéseket tesz fel a felhasználó optimizmusával kapcsolatban. Benyújtásukkor ezek a válaszok ideghálózatot képeznek annak valószínűségére, hogy felhasználónk egy új kérdésre választja az egyes lehetőségeket.
Szeretne még hasznos web-tervező eszközöket? Tekintse meg a tökéletes weboldal-készítő kiválasztásáról szóló bejegyzésünket. Vagy ha valahová szüksége van a fájlok biztonságos tárolására, nézze meg a legjobb felhőtárhelyet. Összetett weboldalt tervez? Szüksége lesz egy robusztus webtárhely-szolgáltatásra, amely képes lépést tartani.
Töltse le az oktatóanyaghoz szükséges fájlokat.
01. Állítsa be a projektet
Először töltse le és telepítse a szükséges függőségeket. Ez az oktatóanyag feltételezi, hogy rendelkezik a React gyakorlati ismereteivel, vagy ennek megfelelő leképezéssel az előnyben részesített alternatívához.
Hozzon létre egy React alkalmazást a kívánt módszerrel. Kipróbálhatja a Facebook-ot create-reagál-app eszköz, amelyet az alábbiak szerint telepítettek:
npm install create-reagál-app -g
02. Indítsa el az alkalmazást
Most elkészíthetjük, telepíthetjük az brain.js fájlt, és elindíthatjuk az alkalmazásunkat:
npx create-react-app optimism-nn cd optimism-nn npm install brainjs npm start
Végezni fogjuk a neurális hálózat számítását a böngészőben. Az ideghálózatok erőforrás-igényesek, ezért ki kell tölteni őket egy szerverre. Ez a módszer azonban gyorsan beállítható és kielégíti alapvető szükségleteinket. Most adjuk hozzá a brain.js-t a belépési pontunkhoz (esetemben az App.js-hez).
importálja az agyat az „brain.js” -ből;
03. Határozza meg edzéssel kapcsolatos kérdéseit
A továbbiakban meg kell határoznunk a képzési kérdéseinket. Külön-külön kérdések.js fájlra lesz szükségünk képzésKérdések és validationQuestions sor. Megtalálhatja a listámat a Git repóban, vagy létrehozhatja sajátját. Minél több edzéssel kapcsolatos kérdése van, annál pontosabbak az eredményei. Ne felejtse el ezeket importálni a belépési pontba.
export const trainingQuestions = [{id: 'q1', kérdés: 'Gyakran látja a legjobban a dolgokat?', opciók: [{id: 'q1a', címke: 'Nem igazán', értéke: 0,2,}, { id: 'q1b', címke: 'Mindig', értéke: 1,0,}, {id: 'q1c', címke: 'Általában igen ", értéke: 0,7,}, {id:' q1d ', címke:' Soha ! ', értéke: 0,0,},],},];
Mindkét tömbhöz szükségünk van egy kérdésre, négy opció tömbjére, amely címkét és optimizmus értéket tartalmaz. Ez az érték lesz a neurális hálózatunk bemenete.
Győződjön meg arról, hogy változtatja az értékek sorrendjét és egyensúlyát, különben a neurális hálózat túlságosan a tömb opcióinak indexére koncentrálhat! Neurális hálózatunk négy bemenetet és négy kimenetet ad. Edzési adatainknak meg kell egyezniük ezzel, így konstruktorunkban szükségünk van valamilyen állapotra a kvízhez és a felhasználó lehetőségeihez:
this.state = {képzésVálaszok: trainingQuestions.map (() => Tömb (4) .kitöltés (0)), képzés: hamis, jóslatok: undefined,};
04. Inicializálja az ideghálózatot
A trainingAnswers minden kérdéshez létrehoz egy tömböt, amely [0, 0, 0, 0] értéket tartalmaz - alapértelmezett állapotunk, nincs kiválasztás. Meg kell majd inicializálnunk ideghálózatunkat is - csak egyetlen sort az brain.js-vel:
this.net = új agy.NeuralNetwork ({hiddenLayers: [4]});
05. Építsd meg a kvíz keretrendszert
A kvíz keretrendszerének felépítéséhez át kell tekintenünk képzési kérdéseinket és lehetőségeinket. Ez meglehetősen bőbeszédű és nem túl érdekes, ezért adok egy példát a kimenetre, amelyre inkább törekedhet:
render () {return (main> form onSubmit = {this.onSubmit}> [...] // kérdések és opciók ismétlése div className = "question"> h4> {question} / h4> div className = "options" > label htmlFor = {optionId}> span> {label} / span> input type = "radio" kötelező név = {questionId} id = {optionId} ellenőrizve = {() => this.isOptionChecked (questionIndex, optionIndex)} onChange = {() => this.onOptionChange (questionIndex, optionIndex)} /> / label> [...] / div> / div> [...] gomb típusa = "beküldés"> Küldés / gomb> / űrlap> / main>); }
Ha még nem ismeri a React alkalmazást, olvassa el az űrlapok dokumentációját.
Írhatjuk a mi isOptionChecked és onOptionChange a következő funkciók:
isOptionChecked = (questionIndex, optionIndex) => (this.state.trainingAnswers [questionIndex] [optionIndex]! == 0); onOptionChange = (questionIndex, optionIndex) => {this.setState (prevState => {const {trainingAnswers} = Object.assign (prevState, {}); trainingAnswers [questionIndex] = Array (4) .fill (0); trainingAnswers [ questionIndex] [optionIndex] = 1; return {trainingAnswers};}); };
06. A neuronhálózat edzése
Most, amikor felhasználónk egy lehetőségre kattint, frissítjük a relevánsat képzésVálaszok tömb a 1 a kiválasztott indexben, és változtassa meg a választógomb állapotát, hogy az ellenőrizve legyen.
Ideje hozzáadni a onSubmit funkció, ahol felépítjük a képzési adatokat és kiképezzük az ideghálózatot:
onSubmit = e => {e.preventDefault (); const {trainingAnswers} = ez.állapot; const trainingData = trainingQuestions.map ((q, i) => ({input: q.options.map (o => o.value), output: trainingAnswers [i],})); this.setState ({edzés: igaz,}); this.net.trainAsync (trainingData) .then (res => {console.log (res); // Naplózza a hibaarányt és # iterációt this.getPredictions ()}); }
Looping képzésKérdések, létrehozzuk a szükséges bemeneti és kimeneti tömböket. A bemeneti adatokat úgy kapjuk meg, hogy vesszük az egyes opciók optimizmusának értékét, és a kimeneti adatokat a képzésVálaszok tömb ugyanazon az indexen, mint a kérdés.
Ezt követően frissítjük az állapotot képzés: igaz tájékoztatni a felhasználót arról, hogy az ideghálózat tanul. Az ügyféleszköz feldolgozási teljesítményétől és hány kérdésedtől függően a folyamat másodperceket, perceket vagy tovább tarthat!
Végül átadjuk az edzés adatait az ideghálózatunknak, és azt mondjuk, hogy aszinkron módon edzen. Ez egy ígéretet eredményez, amelyet akkor teljesítenek, amikor a hálózat megtalálta a mintát vagy feladta.
Figyelje a bejelentett hibaarányt trainAsync. Ideális esetben 0 és 0,05 között kell lennie. Ha magasabb, ellenőrizze az edzés adatait.
Innen megkaphatjuk jóslatainkat:
getPredictions = () => {const prediktívok = validationQuestions.map (q => (this.net.run (q.options.map (o => o.value)))); this.setState ({edzés: hamis, jóslatok,}); }
Használata net.run, arra kérjük az újonnan kiképzett neurális hálózatunkat, hogy adja meg előrejelzéseit a korábban definiált minden egyes validálási kérdésre.
A nagy fináléhoz hozzáadjuk a feltételes betöltési logikánkat, és bemutatunk egy megállapítást a felhasználónak.
render () {const {edzés, jóslatok} = this.state; const validationQuestion = validationQuestions [0]; visszatérés (fő> {edzés && (h2> Betöltés… / h2>)} {! előrejelzések és&! edzés és& ([...] // Képzési kérdések űrlapja)} {jóslatok és&! edzés és& (div> h2> az ideghálózat: / h2> div className = "question"> h4> {validationQuestion.question} / h4> div className = "options"> {validationQuestion.options.map ((o, i) => (label key = { o.id}> {/ * a címke és a valószínűség megjelenítése kerek százalékban * /} span> {$ {o.label}: $ {Math.round (előrejelzések [0] [i] * 100)} %} / span> / label>))} / div> / div> / div>)} / main>); }}
07. Bővítse a hálózatot
Most megvan a kvíz alapvető keretrendszere, próbálja meg kibővíteni a következőkkel:
Keresse meg neurális hálózatának tényleges hibaarányát azáltal, hogy a felhasználó válaszol az érvényesítési kérdésekre. Nézze meg, hányszor választották a legjobb tippet.
A neuronhálózatot ezekkel a kiegészítő válaszokkal képezheti ki, és hátha javíthatja a pontosságot.
Helyezze az ideghálózati számításokat egy Node szerverre az brain.js segítségével funkcionálni, működtetni() és toJSON () mód.
Ez a cikk eredetileg a 321. számban jelent meg net magazin, a világ vezető webdesign magazinja. Vásárolja meg a 321. számot vagy iratkozz fel a netre.