Introduzione Alle Reti Neurali 05: L'Addestramento Automatico

Поділитися
Вставка
  • Опубліковано 19 жов 2024

КОМЕНТАРІ • 72

  • @gervasioosbello6236
    @gervasioosbello6236 3 місяці тому +1

    Complimenti , fatto molto bene e con la giusta ironia per tener svegli i più distratti :)

  • @massimilianoziliotto255
    @massimilianoziliotto255 2 роки тому +5

    È la prima volta che mi sento in obbligo di commentare un video. Ottima presentazione, semplice, piacevole, pratica. Grazie mille

  • @Gabbosauro
    @Gabbosauro 2 роки тому +3

    I video sono fatti veramente bene e spiegati in modo molto comprensibile. Abbiamo bisogno del seguito!

  • @michelacampitiello6431
    @michelacampitiello6431 Рік тому +2

    lo so che arrivo dopo anni, ma ti ho adorato dal primo fino all'ultimo video. Chiaro, preciso e divertente

  • @mattiamincarini424
    @mattiamincarini424 6 років тому +8

    Ti prego continua! Mi sta intrigando moltissimo!

  • @manculicani
    @manculicani Рік тому +2

    Complimenti per la serie di video che hai realizzato. La migliore che ho trovato sul tema

  • @clav7711
    @clav7711 Рік тому

    la scopro solo ora questa serie peccato sia finita. Complimenti per il modo di insegnare.

  • @giorgiocarlodepetri6228
    @giorgiocarlodepetri6228 2 роки тому

    Arrivo in ritardo, ma devo complimentarmi, con l'augurio di trovare videolezioni di pari valore.

  • @lucamattioni7690
    @lucamattioni7690 6 років тому +10

    Mi sono perso il tuo video precedente., ma comunque sono felice che tu sia tornato su yt: continua così😁 spieghi molto bene

  • @leno3039
    @leno3039 3 роки тому +2

    Ottima serie di video, super chiari ed approfonditi al punto giusto. Complimenti!

  • @AlfonsoC.7593
    @AlfonsoC.7593 6 років тому +4

    Veramente interessanti e ben fatti, spero presto tu possa fare i video di approfondimento. Molto utili i riferimenti agli strumenti presenti in rete !!! Grazieee !!

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому +1

      Grazie mille! Attualmente è in programma una serie sul machine learning applicato usando scikit-learn

  • @LUDOVICOPAPALIA
    @LUDOVICOPAPALIA 4 роки тому

    Studio giurisprudenza ma riesco comunque a capire tutti i video. Spieghi benissimo! Mi raccomando continua a farli!

  • @robert-kw2tm
    @robert-kw2tm 5 років тому +2

    Grande davvero bel video
    Sarebbe bello se ne facessi altri

  • @sergiogottardi
    @sergiogottardi 2 роки тому

    Se in prima battuta ... dovessi dire tutto chiaro chiarissimo e quindi ... chiamato alla lavagna e messo sotto interrogazione di verifica ... allora la cosa sarebbe dura ... se invece dovessi rispondere in termini di traccia mentale complessiva ... allora direi che l'ascolto è stato estremamente stimolante e piacevole ... ovvero ... sarebbe come osservando uno scultore mentre opera - a lavoro, ovviamente. non ancora avanzato. intravedere - la sagoma e il volto del personaggio trattato ... Insomma ... scusandomi per lo svolazzo metaforico ...DICO GRAZIE per questa fresca e piacevolissima disinvolta serie di LEZIONI ...

  • @awakedreamer1859
    @awakedreamer1859 Рік тому

    L'unico che non fa sfoggio inutile e incomprensibile di cose "fighe" a caso che poi non capisce nessuno. Grazie. Volevo aggiungere che trovo didatticamente sensato non usare le librerie di python da subito ma fare le cose "a mano" all'inizio, perchè permette di mettere in pratica la teoria che davvero è stata spiegata così come è stata spiegata. Senza scorciatoie. Diversamente avrebbe creato solo confusione in un argomento già molto molto difficile. In tutti gli altri video che ho visto serve un dottorato nelle singole librerie che hanno usato per capire cosa stiano facendo e la teoria non viene nemmeno spiegata bene.

  • @andreapellegrino2175
    @andreapellegrino2175 4 роки тому

    Sei un grande. Semplice, chiaro, ottimi esempi.

  • @davidgiustini922
    @davidgiustini922 11 місяців тому

    Complimenti per i video, davvero ottima spiegazione!!

  • @lotationx8987
    @lotationx8987 4 роки тому +1

    Torna per favore, sei il migliore

  • @federicoantonucci9041
    @federicoantonucci9041 5 років тому +4

    Ottimi video, davvero complimenti! A quando altri?

  • @giabo67
    @giabo67 3 роки тому

    secondo me sei davvero bravo a spiegare. ti prego continua

  • @albertocesaretti9785
    @albertocesaretti9785 Рік тому +1

    Complimenti, serie di video molto comprensibili perché spiegato con un esempio pratico. Potresti forse scrivere anche un libro, magari implementando una rete più complessa. Grazie

  • @fabrizio3672
    @fabrizio3672 5 років тому +1

    Innanzitutto grazie per la serie di video. Una cosa non mi torna a livello di calcolo: alla fine quando fai vedere i dati per il point 7 (quindi ottava cell di valori nell’array) hai una dcost_dpred di -0.0135 e una dpred_dz di 0.0067. Come fa dcost_dz a venire 0.0006? Innanzitutto il segno già dovrebbe essere negativo e poi il prodotto dovrebbe essere intorno a -0.00009. Grazie!

  • @DanieleScali
    @DanieleScali 5 років тому +3

    molto molto molto bravo

  • @azic1467
    @azic1467 4 роки тому

    Bellissimo e interessantissimo video!

  • @Victor-fi7lc
    @Victor-fi7lc 2 роки тому

    SEI UN GRANDE

  • @martino577
    @martino577 3 роки тому

    Ottimi video, davvero complimenti!

  • @davidch.6593
    @davidch.6593 4 роки тому

    Hai fatto un bel lavoro, complimenti

  • @skatazen
    @skatazen 12 днів тому

    Complimenti

  • @giacomogallucci3340
    @giacomogallucci3340 Рік тому

    grande! davvero bravo! spiegazione ottima! Posso farti una domanda? Qualsiasi tipo di intelligenza artificiale ha come base le reti neurali?

  • @nelloangelococuzza1219
    @nelloangelococuzza1219 4 роки тому +2

    Ciao molto interessante l'articolo, faccio una osservazione:
    Lanciando più volte il codice ogni tanto notavo che il risultato non era corretto, al che ho cercato di approfondire.
    Mi sono accorto che per i seguenti combinazioni di pesi iniziali, il risultato era errato.
    Quindi:
    Invece di impostare random i pesi e il bias iniziale, ho impostato i valori in maniera fissa;
    w1 = 0.93
    w2 =0.13
    b=0.30
    il risultato è che tutti i gatti hanno come obiettivo 1 -> che in altre parole sono tutti uguali.
    Tengo presente che sia le iterazioni che il valore del learning li ho lasciati come da esempio.
    Analizzando più affondo Il problema ho notato che per certi valori di partenza il Sigmoide è talmente piccolo che non basta il numero di iterazioni o il valore di learning precedentemente impostato.
    Quindi segue la domanda : dato che l'algoritmo è sensibile ai valori di partenza, come calibrare i valori di iterazione/learnig e i pesi di modo chè la RN dia sempre un risultato coerente ??
    Grazie

  • @CortezPro
    @CortezPro 6 років тому +3

    Tutto chiarissimo complimenti, nei prossimi video approfondirai le reti neurali in Python?

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому +10

      Grazie mille per i complimenti! Per quanto riguarda i prossimi video avevo intenzione o di approfondire l'argomento reti neurali utilizzando python insieme a keras (e quindi presentando topologie più complesse), oppure di iniziare una serie applicativa su altri argomenti inerenti il machine learning (Regressioni, K Nearest Neighbors, Macchine a Vettore di Supporto e clustering) con scikit-learn per python

    • @CortezPro
      @CortezPro 6 років тому +2

      Tutti argomenti interessanti, grazie mille per la risposta e i video di qualità :D

  • @X360SILVER
    @X360SILVER 5 років тому

    Ciao, non ho capito come funziona il codice sulle linee 46,47 e 48. Tu dici che sono derivate parziali di z rispetto a w1,w2 e il bias, ma utilizzando: "point[0]" non dovebbe richiamare la variabile "point" sulla linea 32 e quindi non dovrebbe ritornare il valore del gatto in posizione zero ? Poi perché sulla linea 48 del bias l'hai inizializzato = 1 ?
    Spero riuscirai ad aiutarmi grazie

  • @federicodambrosio
    @federicodambrosio 4 роки тому

    Grazie mille molto interessante!

  • @sky741
    @sky741 5 років тому +3

    389 iscritti
    questo qui spiega le cose meravigliosamente bene..
    poi vai in un canale qualsiasi di dementi
    e trovi k iscritti.
    evidentemente qualcosa non funziona

  • @shrek985
    @shrek985 5 місяців тому

    ciao, ti volevo chiedere se si possono mettere anche 3 diversi "gatti" invece che 2

  • @daviderossi7383
    @daviderossi7383 5 років тому +2

    Riccardo dove sei??? Ci manchi

  • @EmanueleCorsi
    @EmanueleCorsi 4 роки тому

    Grazie, diciamo che è la prima volta che capisco sul serio i concetti alla base (gli esempi pratici funzionano sempre, c'è poco da fa'). Mi vengono però due domande, se "ascolti" ancora magari mi rispondi. a) Che succede se ho più di due possibili catalogazioni? Se ad esempio i gatti fossero di tre tipi anziché due, non sarebbe più sufficiente la Sigmoide? b) facciamo un passo indietro, non ho capito perché trasformi i numeri grossi in numeri più piccoli, tipo da 50 a 5.0. Grazie ancora e keep up with the good work!!

  • @augustomassimilianocoratza8415
    @augustomassimilianocoratza8415 5 років тому

    ciao ma quale sarebbe il codice di python, per rappresentare graficamente l'errore quadratico ?

  • @ferdinandodavino2388
    @ferdinandodavino2388 5 років тому

    Vogliamo la prossima

  • @andreap5420
    @andreap5420 5 років тому +2

    È davvero un piacere seguire queste lezioni, quando farai uscire altro?

  • @Knighthell75
    @Knighthell75 Рік тому

    che figata

  • @francescolosardo6250
    @francescolosardo6250 4 роки тому

    Utilissimo hai qualche libro da consigliare?

  • @SmHeart99
    @SmHeart99 6 років тому +1

    Scusa l'ignoranza ma questo programma mi sembra non faccia altro che dare come output un numero molto vicino a 0 quando gli diciamo che il gatto è del tipo 0 e molto vicino a 1 quando gli diciamo che il gatto è del tipo 1. Qual è la parte interessante?

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому +1

      Lo scopo del programma è fare una previsione sul tipo di gatto partendo da due input (peso e lunghezza). Il tipo di gatto (0 o 1) non viene dato come input ma è solo un valore "bersaglio" usato nell'addestramento della rete. È vero che in questo caso vengono verificate le previsioni sul dataset di partenza, ma l'idea è che una volta inseriti altri due valori di peso e lunghezza (non presenti nel dataset di partenza), la rete restituisca una previsione che si basa su quanto "imparato" durante l'addestramento.

    • @SmHeart99
      @SmHeart99 6 років тому +1

      Ah okay, scusami ora è chiaro

  • @lucasantagata4551
    @lucasantagata4551 4 роки тому

    Ciao, innanzitutto complimenti per il video. Non ho ben capito (intorno al minuto 1:55) il significato di point[0], point[1], point[2]. Il point è un gatto casuale che scelgo, ma i numeri nelle parentesi quadre cosa vogliono dire? E non mi è ben chiaro il signifcato di target. Ti ringrazio!

    • @ficifict
      @ficifict 3 роки тому +1

      la variabile point contiene l'array coi dati del gatto scelto casualmente, i numeri all'interno della quadra della variabile point servono ad estrarre il dato specifico
      ad esempio, un gatto ha peso 9, lunghezza 70 e il target dovrebbe essere 0, quindi l'array point contiene point = [5, 7.0, 0], quindi point[0] = 5, point[1] = 7.0 e point [2] = 0
      in poche parole sono la posizione del dato quei numeretti

  • @raffaelegreco3337
    @raffaelegreco3337 5 років тому +1

    Complimenti per il video, sto effettuando la mia tesi di laurea sulle reti neurali applicate ad eventi franosi, mi spiego meglio praticamente attraverso la lettura di alcune matrici che contengono dati numerici quali ad esempio pendenza del terreno, angolo di esposizione ecc ecc ed attraverso zone note in cui sono avvenute delle frane, devo valutare se altre parti del territorio possono essere soggette a frana o meno. Ora io non ho mai programmato quindi non saprei proprio come partire e nemmeno dove poter trovare qualcosa che mi possa aiutare. chi può darmi qualche consiglio?

  • @lucavisconti1872
    @lucavisconti1872 6 років тому +2

    grazie per i video.
    Quindi per addestrare la rete devo prendere in modo randomico i punti (inputs, output) dal database(nel tuo caso 10000 volte) e poco importa se i punti sono pochi e si ripeteranno spesso. Ogni volta che completo il processo ( forward + back propagation) uso un nuovo punto preso randomicamente e ho un miglioramento.
    Corretto? :$

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому +1

      Grazie a te per il commento! È corretto! Devi comunque considerare che il dataset che ho usato, di solito, è troppo piccolo per qualsiasi applicazione reale (10 elementi sono un po' pochini) . Le reti neurali sono di fatto approssimatrici di funzioni. Questo significa che più punti si hanno nel dataset meglio è, perché avremo una sicurezza maggiore sulle previsioni. Di fatto però non c'è nessun problema se durante l'addestramento vengono presi più volte alcuni valori. Nella serie che sto per iniziare cercherò di chiarire anche alcune cose sulla formattazione dei dataset e tratterò alcuni problemi che si possono riscontrare se questa non viene eseguita correttamente.

    • @lucavisconti1872
      @lucavisconti1872 6 років тому +1

      grazie per la risposta.
      Ho un altro dubbio: Se le reti neurali approssimano funzioni, avere una funzione di attivazione sigmoide sul neurone di output mi limita l'intervallo di valori tra cui la funzione puo variare a 0 e 1. Ovviamente, in generale una funzione continua puo assumere valori da -inf a +inf. Come faccio, quindi ad approssimare funzioni contnue?

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому

      Ottima domanda! La funzione di attivazione sigmoide è solo una delle tante possibili. Esistono anche funzioni di attivazione lineari (che hanno quindi un range che va da -inf a +inf) o definite a tratti e ognuna ha la sua utilità in un determinato problema. Essendo quello preso in esempio un problema di classificazione binaria molto semplice, ho optato per la funzione sigmoide. Ci sono reti neurali multi strato che hanno funzioni di attivazioni diverse per ogni strato... È un mondo veramente affascinante.

    • @lucavisconti1872
      @lucavisconti1872 6 років тому

      indubbiamente! e questi video che stai facendo sono preziosissimi per chi come me si sta avvicinando alle reti neurali per la prima volta. chiari e pratici. Forse puoi consigliarmi anche un buon testo per approfondire alcuni argomenti. Il mio scopo sara' quello di costruire una semplice rete (input, 1 hidden e output) per fare interpolazioni usando un database. Mi chiedo anche se tale rete sia piu accurata della classica regressione (lineare o non) che si studia in statistica

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому +2

      In media le reti neurali sono molto più performanti rispetto ad altri metodi statistici ma solo a patto di avere una quantità di dati considerevole (centinaia di migliaia di valori). Per quanto riguarda un testo da consigliarti sinceramente non saprei. Quello che ho imparato e che sto imparando tutt'ora l'ho imparato su Internet. Mi trovo meglio con un approccio top-down : penso ad un progetto e apprendo le cose che mi servono per arrivare al risultato volta per volta. Il mio consiglio è di provare a fare una ricerca, vedere se qualcuno ha pensato a qualcosa di simile e partire da lì

  • @giuellio75
    @giuellio75 6 років тому +2

    grazie Riccardo, grande capacità divulgativa. Hai pubblicato qualcosa di nuovo dopo questo?

    • @riccardotalarico4263
      @riccardotalarico4263  6 років тому +2

      Grazie davvero per il commento positivo! No, questo è l'ultimo video pubblicato per ora. Sto preparando una serie sul machine learning applicato che mi piacerebbe pubblicare settimanalmente ma, a causa di impegni universitari, il tutto procede un po' a rilento purtroppo. Se sei interessato iscriviti e clicca sulla campanella così riceverai una notifica non appena riuscirò a pubblicare qualcosa di nuovo :)

    • @giuellio75
      @giuellio75 6 років тому +1

      @@riccardotalarico4263 "campanello" volentieri, a presto :)

  • @giuseppecesarino1859
    @giuseppecesarino1859 3 роки тому

    grazie

  • @0XAN
    @0XAN 5 років тому

    hai usato la discesa del gradiente per trovare i pesi e il bias ottimi.

  • @Abdaado
    @Abdaado 5 років тому

    Continuerai a farne altri?

  • @andreavolpedifuoco2548
    @andreavolpedifuoco2548 5 років тому +2

    Ti prego continua i video

  • @lemorlenny
    @lemorlenny 5 років тому

    I tuoi video sono davvero ottimi|, pensi di continuare?

  • @CamminareSulleAcque
    @CamminareSulleAcque 5 років тому

    Ciao, anzitutto complimenti per i tutorial sei bravissimo: ho seguito passo passo li script python però mi stampa un array di solo "sabbia", potresti aiutarmi?
    import math as mt
    import random as rd
    rd.seed(1)
    def RN(m1,m2):
    t= m1*w1+m2*w2+b
    return sigmoide(t)
    def sigmoide(t):
    return 1/(1+mt.exp(-t))
    #mt.exp(-t) = e^(-t)
    dataset=[[9,7.0,0],[2,5.0,1],[3.2,4.94,1],[9.1,7.46,0],[1.6,4.83,1],[8.4,7.46,0],[8,7.28,0],[3.1,4.58,1],[6.3,9.14,0],[3.4,5.36,1]]
    def sigmoide_p(t):
    return sigmoide(t)*(1-sigmoide(t))
    def train():
    w1=rd.random()
    w2=rd.random()
    b=rd.random()
    iterazioni= 10000
    learing_rate = 0.1
    for i in range(iterazioni):
    ri = rd.randint(0,len(dataset)-1)
    point= dataset[ri]
    z=point[0] * w1 + point[1] * w2 + b
    pred=sigmoide(z)
    target = point[2]
    cost=(pred - target)**2
    dcost_dpred = 2*(pred - target)
    dpred_dz = sigmoide_p(z)
    dz_dw1=point[0]
    dz_dw2=point[1]
    dz_db=1
    dcost_dz=dcost_dpred * dpred_dz
    dcost_dw1=dcost_dz * dz_dw1
    dcost_dw2=dcost_dz * dz_dw2
    dcost_db=dcost_dz * dz_db
    w1= w1 - learing_rate * dcost_dw1
    w2 = w2 - learing_rate * dcost_dw2
    b = b - learing_rate * dcost_db
    return w1, w2, b
    w1, w2, b=train()
    pred=[]
    for gatto in dataset:
    z= w1 * gatto[0] + w2 * gatto[1] + b
    predction = sigmoide(z)
    if predction

    • @riccardotalarico4263
      @riccardotalarico4263  5 років тому

      Ciao! Grazie mille per i complimenti. Ho guardato il tuo codice e c'è un problema di indentazione quando hai scritto "return w1,w2,b" basta cancellare uno spazio davanti alla riga e tutto dovrebbe funzionare:
      for i in range(iterazioni):
      ri = rd.randint(0,len(dataset)-1)
      point= dataset[ri]
      z=point[0] * w1 + point[1] * w2 + b
      pred=sigmoide(z)
      target = point[2]
      cost=(pred - target)**2
      dcost_dpred = 2*(pred - target)
      dpred_dz = sigmoide_p(z)
      dz_dw1=point[0]
      dz_dw2=point[1]
      dz_db=1
      dcost_dz=dcost_dpred * dpred_dz
      dcost_dw1=dcost_dz * dz_dw1
      dcost_dw2=dcost_dz * dz_dw2
      dcost_db=dcost_dz * dz_db
      w1= w1 - learing_rate * dcost_dw1
      w2 = w2 - learing_rate * dcost_dw2
      b = b - learing_rate * dcost_db
      return w1, w2, b

    • @CamminareSulleAcque
      @CamminareSulleAcque 5 років тому

      @@riccardotalarico4263 carissimo grazie, ma l'errore era un "tab" in più al return, stava sotto il ciclo for.. ti ringrazio

  • @daniellachiche270
    @daniellachiche270 3 роки тому +2

    Non è tanto carino sparire senza spiegazioni ...