{"id":347772,"date":"2021-12-08T21:38:00","date_gmt":"2021-12-08T18:38:00","guid":{"rendered":"https:\/\/inform.com.de\/?p=347772"},"modified":"2021-12-07T19:36:47","modified_gmt":"2021-12-07T16:36:47","slug":"in-parole-semplici-sul-complesso-cosa-sono-le-reti-neurali-scrivere-una-rete-neurale-feedforward-da-zero","status":"publish","type":"post","link":"https:\/\/inform.com.de\/it\/in-parole-semplici-sul-complesso-cosa-sono-le-reti-neurali-scrivere-una-rete-neurale-feedforward-da-zero\/","title":{"rendered":"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero."},"content":{"rendered":"<h2>Cos'\u00e8 una rete neurale?<\/h2>\n<p>Come sai, il nostro cervello \u00e8 una cosa complessa. Il coordinamento del suo lavoro avviene attraverso i neuroni &#8211; cellule nervose con rami che si estendono da loro. Intrecciandosi tra loro, i neuroni formano una rete neurale, un meccanismo intricato che determina tutta la diversit\u00e0 della psiche umana. Questa \u00e8 la radice della nostra autocoscienza, il sentimento di noi come individui, guidati dai nostri desideri e aspirazioni interiori.<\/p>\n<p>Se si verifica un malfunzionamento nel lavoro dei neuroni, la persona cambia oltre il riconoscimento. A seconda della gravit\u00e0 della lesione, i cambiamenti vanno da lievi segni di comportamento deviante alla cessazione del normale funzionamento del corpo. Il danno cerebrale \u00e8 spesso fatale.<\/p>\n<p>Ma oggi non parleremo di biologia, perch\u00e9 non solo il sistema del nostro cervello si chiama reti neurali, ma anche un complesso programma per computer con principi operativi simili. Come la materia grigia, \u00e8 frattale, cio\u00e8 consiste in molti programmi pi\u00f9 semplici che formano una sorta di simbiosi.<\/p>\n<p>Durante il funzionamento, la rete neurale impara, acquisisce esperienza e diventa pi\u00f9 perfetta. Quindi, abbiamo a che fare con un vero organismo digitale, che si prevede un giorno superer\u00e0 il suo creatore.<\/p>\n<h2>Come sono apparse le reti neurali<\/h2>\n<p>L'emergere del concetto di reti neurali artificiali risale agli anni '40 del secolo precedente. In particolare, \u00e8 associato agli scienziati McCulloch e Pitts, che hanno cercato di simulare i processi del cervello. Hanno anche proposto l'idea di creare un sistema di autoapprendimento progettato per eseguire varie operazioni logiche. Il problema era che le tecnologie di quel tempo erano lontane da quelle di oggi e gli inventori non riuscirono a realizzare appieno le loro idee.<\/p>\n<p>(Warren McCulloch e Walter Pitts)<\/p>\n<p>Il loro lavoro fu continuato dal fisiologo canadese Donald Hebb e nel 1949 fu presentato al mondo il primo algoritmo per il calcolo della ANN. Per i successivi 10 anni, serv\u00ec come base per lo sviluppo di altri scienziati, fino a quando, finalmente, nel 1958, Frank Rosenblatt cre\u00f2 il parceptron, una tecnologia che imita il lavoro del nostro cervello. Per l'epoca, questa novit\u00e0 era incredibile. Scienziati sovietici e americani si unirono al lavoro, che diedero anche un notevole contributo alla ricerca.<\/p>\n<p>Tra la fine del XX e l'inizio del XXI secolo, la tecnologia ha fatto un balzo in avanti, che \u00e8 servito come un buon incentivo per un'attivit\u00e0 scientifica pi\u00f9 intensa, e nel 2007 l'informatico Jeffrey Hinton ha inventato un algoritmo di apprendimento profondo per le reti neurali, che \u00e8 ora ampiamente utilizzato in auto a guida autonoma.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3d9471a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\"  title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3d9471a.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>(Geoffrey Hinton)<\/p>\n<h3>Un po &#8216;di storia<\/h3>\n<p>Per la prima volta, il concetto di reti neurali artificiali (ANN) \u00e8 nato quando si cercava di simulare i processi del cervello. La prima grande svolta in quest'area pu\u00f2 essere considerata la creazione del modello di rete neurale McCulloch-Pitts nel 1943. Gli scienziati hanno prima sviluppato un modello di un neurone artificiale. Hanno anche proposto la costruzione di una rete di questi elementi per eseguire operazioni logiche. Ma soprattutto, gli scienziati hanno dimostrato che una tale rete \u00e8 in grado di apprendere.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3e7c52e.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\"  title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3e7c52e.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Il passo successivo importante fu lo sviluppo da parte di Donald Hebb del primo algoritmo per il calcolo della ANN nel 1949, che divenne fondamentale per diversi decenni successivi. Nel 1958, Frank Rosenblatt ha sviluppato il parceptron, un sistema che imita i processi del cervello. Un tempo, la tecnologia non aveva analoghi ed \u00e8 ancora fondamentale nelle reti neurali. Nel 1986, quasi contemporaneamente, indipendentemente l'uno dall'altro, gli scienziati americani e sovietici migliorarono in modo significativo il metodo fondamentale di insegnamento del <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D0%BB%D0%BE%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD_%D0%A0%D1%83%D0%BC%D0%B5%D0%BB%D1%8C%D1%85%D0%B0%D1%80%D1%82%D0%B0\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">perceptron multistrato<\/a>. Nel 2007, le reti neurali hanno subito una rinascita. Lo scienziato informatico britannico <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A5%D0%B8%D0%BD%D1%82%D0%BE%D0%BD,_%D0%94%D0%B6%D0%B5%D1%84%D1%84%D1%80%D0%B8\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jeffrey Hinton<\/a> ha sviluppato per la prima volta un algoritmo di apprendimento profondo per reti neurali multistrato, che ora viene utilizzato, ad esempio, per azionare veicoli senza pilota.<\/p>\n<h3>Brevemente sulla cosa principale<\/h3>\n<p>Nel senso generale del termine, le reti neurali sono modelli matematici che funzionano sul principio delle reti di cellule nervose in un organismo animale. Le ANN possono essere implementate sia in soluzioni programmabili che hardware. Per facilit\u00e0 di percezione, un neurone pu\u00f2 essere immaginato come una sorta di cellula, che ha molti buchi di input e un output. Il numero di segnali in ingresso formati in quello in uscita determina l'algoritmo di calcolo. Valori efficaci vengono forniti a ciascun input neuronale, che vengono poi propagati lungo le connessioni interneuronali (sinossi). Le sinapsi hanno un parametro: il peso, a causa del quale le informazioni di input cambiano quando si passa da un neurone a un altro. Il modo pi\u00f9 semplice per immaginare come funzionano le reti neurali pu\u00f2 essere rappresentato dall'esempio della miscelazione dei colori. I neuroni blu, verde e rosso hanno pesi diversi.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3f7db4e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3f7db4e.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>La rete neurale stessa \u00e8 un sistema di molti di questi neuroni (processori). Separatamente, questi processori sono abbastanza semplici (molto pi\u00f9 semplici di un processore di personal computer), ma quando sono collegati a un sistema di grandi dimensioni, i neuroni sono in grado di eseguire compiti molto complessi.<\/p>\n<p>A seconda dell'area di applicazione, una rete neurale pu\u00f2 essere interpretata in diversi modi: ad esempio, dal punto di vista dell'apprendimento automatico, una ANN \u00e8 un metodo di riconoscimento di pattern. Da un punto di vista matematico, questo \u00e8 un problema multiparametrico. Dal punto di vista della cibernetica, \u00e8 un modello di controllo adattivo della robotica. Per l'intelligenza artificiale, ANN \u00e8 una componente fondamentale per modellare l'intelligenza naturale utilizzando algoritmi computazionali.<\/p>\n<p>Il vantaggio principale delle reti neurali rispetto agli algoritmi di calcolo convenzionali \u00e8 la loro capacit\u00e0 di apprendimento. Nel senso generale del termine, l'apprendimento consiste nel trovare i corretti coefficienti di accoppiamento tra i neuroni, nonch\u00e9 nel generalizzare i dati e nell'identificare relazioni complesse tra i segnali di ingresso e di uscita. Infatti, il buon esito dell'addestramento di una rete neurale significa che il sistema sar\u00e0 in grado di identificare il risultato corretto in base ai dati non presenti nel training set.<\/p>\n<h2>Applicazione di reti neurali<\/h2>\n<p>Il campo di applicazione delle reti neurali \u00e8 incredibilmente ampio ed \u00e8 limitato solo dalla nostra immaginazione. Ne elenchiamo alcuni:<\/p>\n<ul>\n<li>Sistemi di controllo automatico del trasporto. Piloti automatici.<\/li>\n<li>Internet. Assistenti vocali, browser intelligenti, programmi di traduzione.<\/li>\n<li>Economia e affari. Previsione dei tassi di cambio, moderni programmi di contabilit\u00e0, robot di trading, programmi di valutazione del rischio, gestione delle macchine di produzione, controllo della qualit\u00e0, ecc.<\/li>\n<li>Medicinale. Metodi moderni di diagnosi, analisi dell'efficacia del trattamento, elaborazione di immagini mediche.<\/li>\n<li>Robotica. Pianificazione del percorso, riconoscimento vocale e dei gesti.<\/li>\n<li>Sicurezza. Gestione di sistemi di videosorveglianza e allarmi.<\/li>\n<li>Giochi per computer e intrattenimento. Robot intelligenti, programmi analitici per scacchi e altri giochi.<\/li>\n<li>Arte. Creazione di dipinti, libri e altri manufatti culturali.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4177889.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4177889.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<h3>La situazione odierna<\/h3>\n<p>E non importa quanto sarebbe promettente questa tecnologia, finora le ANN sono ancora molto lontane dalle capacit\u00e0 del cervello e del pensiero umano. Tuttavia, le reti neurali vengono gi\u00e0 utilizzate in molte aree dell'attivit\u00e0 umana. Finora, non sono in grado di prendere decisioni altamente intellettuali, ma sono in grado di sostituire una persona dove prima era necessaria. Tra le numerose aree di applicazione di ANN, si possono notare: la creazione di sistemi di autoapprendimento dei processi produttivi, veicoli senza pilota, sistemi di riconoscimento delle immagini, sistemi di sicurezza intelligenti, robotica, sistemi di monitoraggio della qualit\u00e0, interfacce di interazione vocale, sistemi di analisi e molto altro. Questo uso diffuso delle reti neurali \u00e8, tra le altre cose, dovuto all'emergere di vari modi per accelerare l'apprendimento di RNA.<\/p>\n<p>Oggi il mercato delle reti neurali \u00e8 enorme: miliardi e miliardi di dollari. Come dimostra la pratica, la maggior parte delle tecnologie delle reti neurali nel mondo differiscono poco l'una dall'altra. Tuttavia, l'uso di reti neurali \u00e8 un'impresa molto costosa, che nella maggior parte dei casi pu\u00f2 essere consentita solo da grandi aziende. Per lo sviluppo, l'addestramento e il test delle reti neurali, \u00e8 necessaria una grande potenza di calcolo, \u00e8 ovvio che i grandi attori del mercato IT ne hanno abbastanza. Tra le principali societ\u00e0 che guidano lo sviluppo in quest'area ci sono la divisione DeepMind di Google, la divisione Microsoft Research, IBM, Facebook e Baidu.<\/p>\n<p>Certo, tutto questo \u00e8 positivo: le reti neurali si stanno sviluppando, il mercato sta crescendo, ma finora il compito principale non \u00e8 stato risolto. L'umanit\u00e0 non \u00e8 riuscita a creare una tecnologia che sia persino vicina alle capacit\u00e0 del cervello umano. Diamo un'occhiata alle principali differenze tra il cervello umano e le reti neurali artificiali.<\/p>\n<h3>Perch\u00e9 le reti neurali sono ancora lontane dal cervello umano?<\/h3>\n<p>La differenza pi\u00f9 importante, che cambia radicalmente il principio e l'efficienza del sistema, \u00e8 la diversa trasmissione del segnale nelle reti neurali artificiali e nella rete biologica dei neuroni. Il fatto \u00e8 che nella RNA i neuroni trasmettono valori che sono valori reali, cio\u00e8 numeri. Nel cervello umano vengono trasmessi impulsi con un'ampiezza fissa e questi impulsi sono quasi istantanei. Quindi, ci sono una serie di vantaggi per la rete umana di neuroni.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea437f470.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea437f470.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>In primo luogo, le linee di comunicazione nel cervello sono molto pi\u00f9 efficienti ed economiche rispetto alle RNA. In secondo luogo, il circuito a impulsi garantisce la semplicit\u00e0 dell'implementazione della tecnologia: \u00e8 sufficiente utilizzare circuiti analogici invece di complessi meccanismi computazionali. Infine, le reti di impulsi sono protette dalle interferenze acustiche. I numeri effettivi sono soggetti a rumore, il che aumenta la probabilit\u00e0 di errori.<\/p>\n<h2>Prospettive per le reti neurali<\/h2>\n<p>Il movimento luddista inizi\u00f2 all'inizio del XIX secolo. Questa parola \u00e8 stata usata per descrivere le persone che partecipano alle proteste contro l'urbanizzazione. Con l'industrializzazione della societ\u00e0, quando le macchine utensili iniziarono a sostituire gradualmente i lavoratori, molte persone rimasero senza lavoro ed erano estremamente insoddisfatte della loro situazione. Immagina solo che shock avrebbero sperimentato se avessero saputo che in un paio di centinaia di anni le macchine saranno in grado di parlare e persino di muoversi in modo indipendente!<\/p>\n<p>Nel frattempo, questi tempi sono arrivati, e oggi ci sono anche retrogradi che temono che la robotica e lo sviluppo della tecnologia in generale possano fare uno scherzo crudele con le persone. Dopotutto, se le macchine sono gi\u00e0 in grado di svolgere cos\u00ec tante attivit\u00e0 oggi, in futuro occuperanno tutti i lavori, rendendo le persone superflue. E questa posizione \u00e8 confermata solo dalle valutazioni di esperti che di tanto in tanto prevedono l'imminente scomparsa di una determinata professione.<\/p>\n<p>Questa posizione ha il diritto di esistere, ma non \u00e8 del tutto corretta, poich\u00e9 nel tempo non solo le vecchie professioni scompaiono, ma ne compaiono anche di nuove. S\u00ec, ci sono pastori e cacciatori di un ordine di grandezza in meno rispetto a prima, ma sono apparsi programmatori e operatori di marketing. Nei momenti di svolta della storia, l'economia si riorienta, estirpando il superfluo e generosamente dotando coloro che sono richiesti.<\/p>\n<p>La crescente influenza delle reti neurali artificiali \u00e8 evidente, ed \u00e8 probabile che presto saranno letteralmente ovunque, ma averne paura significa rifiutare la natura umana stessa, che consiste nel desiderio di scoperta e realizzazione.<\/p>\n<h2>Creazione di blocchi neurali<\/h2>\n<p>Per prima cosa, devi decidere quali sono i componenti di base di una rete neurale &#8211; i <strong>neuroni<\/strong> -. Il neurone prende i dati di input, esegue determinate <strong>operazioni matematiche con esso<\/strong> e quindi restituisce il risultato. Un neurone con due input ha questo aspetto:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/fed4726d9a0d92019fee18550c1d79a0-1.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/fed4726d9a0d92019fee18550c1d79a0-1.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Tre cose stanno accadendo qui. Innanzitutto, ogni ingresso viene moltiplicato per il suo peso (mostrato in <strong>rosso<\/strong> nel diagramma ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea460c31b.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea460c31b.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Quindi tutti gli ingressi ponderati vengono sommati insieme all'offset <code>b<\/code>(indicato in <strong>verde<\/strong> nel diagramma ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea46be05a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea46be05a.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Infine, l'importo viene trasferito tramite la funzione di attivazione (contrassegnata in <strong>giallo<\/strong> nel diagramma ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea477ea32.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea477ea32.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>La funzione di attivazione viene utilizzata per collegare input non correlati a un output che ha una forma semplice e prevedibile. Di norma, la funzione <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B8%D0%B3%D0%BC%D0%BE%D0%B8%D0%B4%D0%B0\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sigmoide<\/a> \u00e8 considerata la funzione di attivazione utilizzata :<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4848293.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4848293.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p><strong>La funzione sigmoide<\/strong> emette solo numeri in un intervallo <code>(0, 1)<\/code>. Puoi pensarlo come una compressione da <code>(\u2212\u221e, +\u221e)<\/code>a <code>(0, 1)<\/code>. Grandi numeri negativi diventano <code>~0<\/code>e grandi numeri positivi diventano <code>~1<\/code>.<\/p>\n<h2>Un semplice esempio di lavoro con i neuroni in Python<\/h2>\n<p>Supponiamo di avere un <strong>neurone con due input<\/strong> che utilizza una funzione di <strong>attivazione del sigmoide<\/strong> e ha i seguenti parametri:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea491789f.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea491789f.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p><code>w = [0,1]<\/code>\u00c8 solo un modo di scrivere <code>w1 = 0, w2 = 1<\/code>in forma vettoriale. Assegniamo un input con un valore al neurone <code>x = [2, 3]<\/code>. Per una rappresentazione pi\u00f9 compatta, verr\u00e0 utilizzato il <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prodotto scalare<\/a>.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea49c304f.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea49c304f.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Dato che l'input era <code>x = [2, 3]<\/code>, l'output sar\u00e0 uguale <code>0.999<\/code>. \u00c8 tutto. Questo processo di <strong>passaggio dei dati di input<\/strong> per ricevere l'output \u00e8 chiamato feedforward.<\/p>\n<h2>Costruire un neurone da zero in Python<\/h2>\n<p>Cominciamo a implementare il neurone. Ci\u00f2 richieder\u00e0 l'uso di NumPy. \u00c8 una potente libreria Python computazionale che utilizza operazioni matematiche:<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<p><span><span>uno<\/span><\/span><\/p>\n<p><span><span>2<\/span><\/span><\/p>\n<p><span><span>3<\/span><\/span><\/p>\n<p><span><span>quattro<\/span><\/span><\/p>\n<p><span><span>cinque<\/span><\/span><\/p>\n<p><span><span>6<\/span><\/span><\/p>\n<p><span><span>7<\/span><\/span><\/p>\n<p><span><span>otto<\/span><\/span><\/p>\n<p><span><span>nove<\/span><\/span><\/p>\n<p><span><span>10<\/span><\/span><\/p>\n<p><span><span>undici<\/span><\/span><\/p>\n<p><span><span>12<\/span><\/span><\/p>\n<p><span><span>13<\/span><\/span><\/p>\n<p><span><span>quattordici<\/span><\/span><\/p>\n<p><span><span>quindici<\/span><\/span><\/p>\n<p><span><span>sedici<\/span><\/span><\/p>\n<p><span><span>17<\/span><\/span><\/p>\n<p><span><span>diciotto<\/span><\/span><\/p>\n<p><span><span>diciannove<\/span><\/span><\/p>\n<p><span><span>venti<\/span><\/span><\/p>\n<p><span><span>21<\/span><\/span><\/p>\n<p><span><span>22<\/span><\/span><\/p>\n<p><span><span>23<\/span><\/span><\/p>\n<p><span><span>24<\/span><\/span><\/p>\n<p><span><span>25<\/span><\/span><\/p>\n<p><span><span>26<\/span><\/span><\/p>\n<p><span><span>27<\/span><\/span><\/p>\n<\/div>\n<\/td>\n<td>\n<div>\n<p><span><span><span>importa <\/span><\/span><\/span><span><span><span>numpy <\/span><\/span><span><span>come <\/span><\/span><span><span>np<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>def <\/span><\/span><\/span><span><span><span>sigmoide <\/span><\/span><span><span>( <\/span><\/span><span><span>x <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># La nostra funzione di attivazione: f (x) = 1 \/ (1 + e ^ (- x))<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>ritorno <\/span><\/span><\/span><span><span><span>1 <\/span><\/span><span><span>\/ <\/span><\/span><span><span>( <\/span><\/span><span><span>1 <\/span><\/span><span><span>+ <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>exp <\/span><\/span><span><span>( <\/span><\/span><span><span>&#8211; <\/span><\/span><span><span>x <\/span><\/span><span><span>) <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>classe <\/span><\/span><\/span><span><span><span>Neuron <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>def <\/span><\/span><\/span><span><span><span>__init__ <\/span><\/span><span><span>( <\/span><\/span><span><span>self <\/span><\/span><span><span>, <\/span><\/span><span><span>weight <\/span><\/span><span><span>, <\/span><\/span><span><span>bias <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>s\u00e9 <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>pesi <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>pesi<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>s\u00e9 <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>bias <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>bias<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>def <\/span><\/span><\/span><span><span><span>feedforward <\/span><\/span><span><span>( <\/span><\/span><span><span>self <\/span><\/span><span><span>, <\/span><\/span><span><span>input <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># Immettere i dati di peso, aggiungere l'offset<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># e successivo utilizzo della funzione di attivazione<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>totale <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>punto <\/span><\/span><span><span>( <\/span><\/span><span><span>self <\/span><\/span><span><span>. <\/span><\/span><span><span>pesi <\/span><\/span><span><span>, <\/span><\/span><span><span>input <\/span><\/span><span><span>) <\/span><\/span><span><span>+ <\/span><\/span><span><span>self <\/span><\/span><span><span>. <\/span><\/span><span><span>pregiudizio<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>ritorno <\/span><\/span><\/span><span><span><span>sigmoide <\/span><\/span><span><span>( <\/span><\/span><span><span>totale <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>pesi <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>matrice <\/span><\/span><span><span>( <\/span><\/span><span><span>[ <\/span><\/span><span><span>0 <\/span><\/span><span><span>, <\/span><\/span><span><span>1 <\/span><\/span><span><span>] <\/span><\/span><span><span>) <\/span><\/span><span><span># w1 = 0, w2 = 1<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>bias <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>4 <\/span><\/span><span><span># b = 4<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>n <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>Neuron <\/span><\/span><span><span>( <\/span><\/span><span><span>pesi <\/span><\/span><span><span>, <\/span><\/span><span><span>bias <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>x <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>matrice <\/span><\/span><span><span>( <\/span><\/span><span><span>[ <\/span><\/span><span><span>2 <\/span><\/span><span><span>, <\/span><\/span><span><span>3 <\/span><\/span><span><span>] <\/span><\/span><span><span>) <\/span><\/span><span><span># x1 = 2, x2 = 3<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>stampa <\/span><\/span><\/span><span><span><span>( <\/span><\/span><\/span><span><span><span>n <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>feedforward <\/span><\/span><\/span><span><span><span>( <\/span><\/span><\/span><span><span><span>x <\/span><\/span><\/span><span><span><span>) <\/span><\/span><\/span><span><span><span>) <\/span><\/span><\/span><span><span><span># 0.9990889488055994<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Riconosci i numeri? Questo \u00e8 lo stesso esempio discusso in precedenza. Anche la risposta ricevuta questa volta \u00e8 uguale <code>0.999<\/code>.<\/p>\n<h2>Un esempio di raccolta di neuroni in una rete neurale<\/h2>\n<p><strong>Una rete neurale<\/strong> \u00e8 essenzialmente un gruppo di <strong>neuroni interconnessi<\/strong>. Una semplice rete neurale si presenta cos\u00ec:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/0e2c31c441e9cdc4eb35c1c746dc5651-1.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/0e2c31c441e9cdc4eb35c1c746dc5651-1.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Sul livello introduttivo della rete, ci sono due ingressi &#8211; <code>x1<\/code>e <code>x2<\/code>. Ci sono due neutroni sullo strato nascosto &#8211; <code>h1<\/code>e <code>h2<\/code>. C'\u00e8 un neurone sul livello di output &#8211; <code>\u043e1<\/code>. Si noti che gli input per <code>\u043e1<\/code>sono risultati di output <code>h1<\/code>e <code>h2<\/code>. Ecco <strong>come viene costruita la rete neurale<\/strong>.<\/p>\n<blockquote>\n<p><strong>Un livello nascosto<\/strong> \u00e8 qualsiasi livello tra il livello di input e il livello di output, che sono rispettivamente il primo e l'ultimo livello. Possono esserci diversi livelli nascosti.<\/p>\n<\/blockquote>\n<h2>Formazione sulla rete neurale<\/h2>\n<p>Output <strong>\u0177 di una<\/strong> semplice rete neurale a due strati:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Nell'equazione precedente, i pesi W e le distorsioni b sono le uniche variabili che influenzano l'output \u0177.<\/p>\n<p>Naturalmente, i valori corretti per i pesi e le distorsioni determinano l'accuratezza delle previsioni. Il processo di messa a punto di pesi e pregiudizi dai dati di input \u00e8 noto come addestramento della rete neurale.<\/p>\n<p>Ogni iterazione del processo di formazione consiste nei seguenti passaggi<\/p>\n<ul>\n<li>calcolare l'output previsto \u0177 chiamato propagazione in avanti<\/li>\n<li>l'aggiornamento di pesi e pregiudizi chiamati backpropagation<\/li>\n<\/ul>\n<p>Il grafico sequenziale di seguito illustra il processo:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4c1cc09.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4c1cc09.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<h3>Distribuzione diretta<\/h3>\n<p>Come abbiamo visto nel grafico sopra, la propagazione in avanti \u00e8 solo un semplice calcolo e per una rete neurale a 2 strati di base, l'output della rete neurale \u00e8 dato da:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Aggiungiamo feedforward al nostro codice Python per farlo. Si noti che per semplicit\u00e0 abbiamo assunto che gli offset siano 0.<\/p>\n<p>Tuttavia, abbiamo bisogno di un modo per valutare la &#8220;bont\u00e0&#8221; delle nostre previsioni, cio\u00e8 fino a che punto sono le nostre previsioni). <strong>La funzione di perdita<\/strong> ci consente di fare proprio questo.<\/p>\n<h3>Funzione di perdita<\/h3>\n<p>Sono disponibili molte funzioni di perdita e la natura del nostro problema dovrebbe determinare la nostra scelta della funzione di perdita. In questo articolo useremo la <strong>somma dei quadrati degli errori<\/strong> come funzione di perdita.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4dd5677.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4dd5677.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>La somma degli errori al quadrato \u00e8 la media della differenza tra ciascun valore previsto e il valore effettivo.<\/p>\n<p><strong>L'obiettivo dell'allenamento \u00e8 trovare una serie di pesi e pregiudizi che riducano al minimo la funzione di perdita.<\/strong><\/p>\n<h3>Propagazione posteriore<\/h3>\n<p>Ora che abbiamo misurato il nostro errore di previsione (perdite), dobbiamo trovare un modo per <strong>propagare l'errore indietro<\/strong> e aggiornare i nostri pesi e pregiudizi.<\/p>\n<p>Per scoprire l'importo appropriato da correggere per pesi e bias, dobbiamo conoscere la derivata della funzione di perdita rispetto a pesi e bias.<\/p>\n<p>Ricordiamo dall'analisi che la <strong>derivata di una funzione \u00e8 la tangente della pendenza della funzione.<\/strong><\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4e9fbda.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4e9fbda.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Se abbiamo una derivata, possiamo semplicemente aggiornare i pesi e i bias aumentandoli \/ diminuendoli (vedi diagramma sopra). Questa si chiama <strong>discesa del gradiente<\/strong>.<\/p>\n<p>Tuttavia, non possiamo calcolare direttamente la derivata della funzione di perdita rispetto ai pesi e ai bias, poich\u00e9 l'equazione della funzione di perdita non contiene pesi e bias. Pertanto, abbiamo bisogno di una regola della catena per facilitare il calcolo.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4fe692d.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4fe692d.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Fuh! Era macchinoso, ma ci ha permesso di ottenere ci\u00f2 di cui avevamo bisogno: la derivata (pendenza) della funzione di perdita rispetto ai pesi. Ora possiamo regolare i pesi di conseguenza.<\/p>\n<p>Aggiungiamo la funzione di backpropagation al nostro codice Python:<\/p>\n<h2>Derivati \u200b\u200bparziali<\/h2>\n<p>Le derivate parziali possono essere calcolate, quindi si sa quale \u00e8 stato il contributo all'errore per ogni peso. La necessit\u00e0 di derivati \u200b\u200b\u00e8 ovvia. Immagina una rete neurale che cerca di trovare la velocit\u00e0 ottimale per un veicolo autonomo. Se l'auto rileva che sta andando pi\u00f9 veloce o pi\u00f9 lenta della velocit\u00e0 richiesta, la rete neurale cambier\u00e0 la velocit\u00e0, accelerando o decelerando l'auto. Cosa sta accelerando \/ decelerando in questo caso? Derivate di velocit\u00e0.<\/p>\n<p>Diamo un'occhiata alla necessit\u00e0 di derivati \u200b\u200bparziali usando un esempio.<\/p>\n<p>Supponiamo che ai bambini venga chiesto di lanciare una freccetta contro un bersaglio, mirando al centro. Ecco i risultati:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51122d6.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51122d6.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Ora, se troviamo un errore generale e lo sottraiamo semplicemente da tutti i pesi, riassumeremo gli errori commessi da ciascuno. Quindi, diciamo che il bambino ha colpito troppo in basso, ma chiediamo a tutti i bambini di sforzarsi di colpire il bersaglio, quindi questo porter\u00e0 alla seguente immagine:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51cbdd8.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51cbdd8.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>L'errore di diversi bambini pu\u00f2 diminuire, ma l'errore totale \u00e8 ancora in aumento.<\/p>\n<p>Trovate le derivate parziali, troviamo separatamente gli errori corrispondenti a ciascun peso. Se si correggono selettivamente i pesi, \u00e8 possibile ottenere quanto segue:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea528fe3a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea528fe3a.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<h2>Iperparametri<\/h2>\n<p>Una rete neurale viene utilizzata per automatizzare la selezione delle funzionalit\u00e0, ma alcuni parametri vengono configurati manualmente.<\/p>\n<h3>Tasso di apprendimento<\/h3>\n<p>La velocit\u00e0 di apprendimento \u00e8 un iperparametro molto importante. Se il tasso di apprendimento \u00e8 troppo basso, anche dopo aver addestrato la rete neurale per un lungo periodo, sar\u00e0 lontano dai risultati ottimali. I risultati saranno simili a questo:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea534e6eb.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea534e6eb.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>D'altra parte, se il tasso di apprendimento \u00e8 troppo alto, la rete risponder\u00e0 molto rapidamente. Il risultato \u00e8 il seguente:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea540f66b.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea540f66b.jpg\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<h2>Reti neurali profonde<\/h2>\n<p>L'apprendimento profondo \u00e8 una classe di algoritmi di apprendimento automatico che impara a comprendere i dati in modo pi\u00f9 approfondito (in modo pi\u00f9 astratto). Gli algoritmi pi\u00f9 diffusi per le reti neurali di deep learning sono presentati nel diagramma seguente.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea55368b9.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea55368b9.png\" alt=\"In parole semplici sul complesso: cosa sono le reti neurali? Scrivere una rete neurale feedforward da zero.\" ><\/a><\/p>\n<p>Algoritmi di rete neurale popolari (<a href=\"http:\/\/www.asimovinstitute.org\/neural-network-zoo\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/www.asimovinstitute.org\/neural-network-zoo<\/a> )<\/p>\n<p>Pi\u00f9 formalmente nel deep learning:<\/p>\n<ul>\n<li>Una cascata (pipeline, come flusso trasmesso sequenzialmente) di una pluralit\u00e0 di strati di elaborazione (non lineari) viene utilizzata per estrarre e trasformare le caratteristiche;<\/li>\n<li>Basato sullo studio delle caratteristiche (presentazione delle informazioni) nei dati senza apprendimento supervisionato. Le funzioni di livello superiore (che sono negli ultimi strati) sono ottenute dalle funzioni di livello inferiore (che sono negli strati degli strati iniziali);<\/li>\n<li>Esplora viste stratificate che corrispondono a diversi livelli di astrazione; i livelli formano una gerarchia di presentazione.<\/li>\n<\/ul>\n<h2>Addestra la rete neurale utilizzando le funzioni XOR<\/h2>\n<p>Perch\u00e9 la funzione XOR \u00e8 cos\u00ec interessante? Semplicemente perch\u00e9 non pu\u00f2 essere ottenuto da un neurone: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0. Tuttavia, \u00e8 facilmente ottenibile aumentando il numero di neuroni. Cercheremo di addestrare una rete con 3 neuroni nello strato nascosto e 1 output (poich\u00e9 abbiamo un solo output). Per fare ci\u00f2, dobbiamo creare un array di vettori X e Y con i dati di addestramento e la rete neurale stessa:<\/p>\n<pre><code>\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Vector[] X = { new Vector(0, 0), new Vector(0, 1), new Vector(1, 0), new Vector(1, 1) }; \/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Vector[] Y = { new Vector(0.0), \/\/ 0 ^ 0 = 0 new Vector(1.0), \/\/ 0 ^ 1 = 1 new Vector(1.0), \/\/ 1 ^ 0 = 1 new Vector(0.0) \/\/ 1 ^ 1 = 0 }; Network network = new Network(new int[]{2, 3, 1}); \/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0435\u0442\u044c \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0445\u043e\u0434\u0430\u043c\u0438, \u0442\u0440\u0435\u043c\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c <\/code><\/pre>\n<p>Quindi iniziamo l'addestramento con i seguenti parametri: velocit\u00e0 di apprendimento &#8211; 0,5, numero di epoche &#8211; 100000, valore di errore &#8211; 1e-7:<\/p>\n<pre><code>network.Train(X, Y, 0.5, 1e-7, 100000); \/\/ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 <\/code><\/pre>\n<p>Dopo l'allenamento, esaminiamo i risultati eseguendo un passaggio diretto per tutti gli elementi:<\/p>\n<pre><code>for (int i = 0; i <\/code><\/pre>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/lastici.ru\" class=\"external external_icon\">lastici.ru<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Stiamo parlando di reti neurali: facile presentazione di informazioni complesse in modo che anche un bambino possa capire. Studiamo le basi e approfondiamo l&#8217;argomento da zero.<\/p>\n","protected":false},"author":1,"featured_media":413743,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[365,431,322,332,167,288,258],"tags":[],"class_list":["post-347772","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-attivita-commerciale","category-computer-3","category-per-donne","category-per-uomo","category-ricerca","category-tecnologie","category-varie"],"_links":{"self":[{"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/posts\/347772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/comments?post=347772"}],"version-history":[{"count":0,"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/posts\/347772\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/media\/413743"}],"wp:attachment":[{"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/media?parent=347772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/categories?post=347772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.com.de\/it\/wp-json\/wp\/v2\/tags?post=347772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}