Press "Enter" to skip to content

GOTO 2018 • Build a Q&A bot with DeepLearning4J • Willem Meints


[Musica]
buongiorno benvenuti nel mio parlare di
creare un bug Q & A usando l’apprendimento profondo
per Jay prima del nostro inizio alzare le mani
chi sta sviluppando applicazioni java su a
base giornaliera buona trovi la parola giusta
è solo Java oggi, di solito faccio molto
di Python parla così solo per avvertirti che lo sono
cattive banche Sono un Evangelista Tecnico
e ingegnere AI non abbiamo un funzionario
titolo per me ancora, ma ci arriveremo
un giorno faccio un sacco di lavoro in artificiale
aiuto per l’apprendimento automatico delle intelligenze
in particolare, aiuta i clienti a iniziare
con la costruzione di cose come chat BOT
risolvere i problemi di riconoscimento dell’immagine che
tipo di cose così che è quello che normalmente
faccio oggi sto parlando di apprendimento profondo
per Jay se hai domande durante
questa sessione per favore chiedi loro di fare app
abbiamo ancora del tempo alla fine di
questa sessione per discutere le domande
e torni da te e tu no
otterrà una risposta tramite Twitter o il mio
sito web che funziona pure, quindi il mio discorso è
fondamentalmente in tre parti il mio obiettivo per
oggi non è insegnarti tutto
c’è da sapere sull’apprendimento profondo
perché ci vorrebbe un paio di giorni
per imparare e anche allora non sei un
esperto ho fatto questo per un bel
pochi anni e sto ancora imparando
ogni giorno è un argomento molto complicato
che un sacco di grandi aziende come
Google e Facebook e Microsoft sono
facendo un sacco di ricerche in te puoi ottenere un
PhD per quello e io non ho questo
solo per essere chiari e io non sono solo un
sviluppatore che fa questo genere di cose io
capito questo da solo
con molto aiuto da altre persone
per prima cosa parleremo di apprendimento profondo
cos’è a livello concettuale allora?
parleremo di come puoi usarli
concetti in combinazione con il tuo
imparare per Jay a costruire un modello che è
capace di rispondere a mostri
abbiamo fatto domande che probabilmente hai sentito
su questo quasi ogni sito web che vai
in un negozio online o qualcosa del genere vai a
Berlino o forse Netflix ha spesso
pagina domande poste fanno un ottimo lavoro
ma ho pensato bene , trasformiamolo
intorno e costruisci qualcos’altro
costruiamo un chatbot che sia in grado di
comprendendo le tue domande e poi
trova la risposta nel database di
domande frequenti che potresti essere
pensando ormai è una ricerca
problema sì, di solito è, ma io sono
andando a prendere un approccio alternativo a
che quindi useremo una rete neurale che
in pratica codifica la tua domanda in
qualcosa che è riconoscibile per il
computer e troverà il giusto
rispondere alla fine del mio discorso lo farò
passare un po ‘ di tempo allora
spiegando bene abbiamo costruito questo modello
ci siamo allenati sul nostro computer come stanno
lo userai in un tipico java
applicazione che ti mostrerò a
un po ‘di codice in stivali primaverili
in particolare perché molte persone
tendono ad usare quello su come usare in profondità
imparare per J in una situazione di produzione
sarà molto piccolo che mostrerò
un sacco di cose su di apprendimento profondo
per J e non necessariamente tutto
che c’è da sapere su questa integrazione
una specie di roba ma non preoccuparti di tutto
il codice è su github puoi scaricarlo
un sacco di persone lo hanno fatto e tu puoi
sfogliarlo e vedere cosa ho fatto e
forse lo uso per il tuo progetto
Ho messo su una piccola animazione della mia chat
bot questo è il framework di Microsoft bot di
il modo in cui sto usando posso chiedere a
domanda al mio bot dove posso trovare di più
informazioni sulla digitazione delle sessioni
errore Oh altro
e il bot risponderà e lui dice bene
Non posso darti alcunché specifico
informazioni ma c’è qualcosa in ballo
il sito Web in modo che sia fondamentalmente il
idea di ciò che stiamo costruendo oggi prima
Ho intenzione di parlare di mia chat bot
iniziamo a tuffarci in ciò che è profondo
imparando esattamente e prima di farlo a
razza di mano quante persone stanno usando
l’apprendimento automatico oggi fa chiunque
in produzione
pochissimi ancora chi ne ha più che in
Amsterdam c’era una persona dentro
Amsterdam che stava facendo la macchina
imparare sulla produzione quindi quando parlo
sull’intelligenza artificiale c’è a
molte differenti definizioni nel
campo di cui possiamo parlare c’è il
definizione scientifica ufficiale che è
non quello che voglio seguire oggi quando
Parlo di intelligenza artificiale sono
parlando di programmi per computer che
mostra un comportamento simile a quello di noi
gli umani sono capaci di apparente
intelligenza umana non significa questo
il tuo computer sta imparando tutto ciò che è
fare qualcosa che sia molto intelligente e
sembra quasi che stia facendo magia
per te e per questo è più umano
esempio molto presto artificiale
le applicazioni di intelligence erano circa
computer di scacchi che giocano a scacchi quelli
i computer non hanno imparato nulla e tu
potrebbe batterli molto facilmente ma ancora a
io e così altri che hanno giocato a scacchi
sul loro computer penso che sarete d’accordo
con me che mi sentivo come qualcun altro
sta giocando a scacchi con te, quindi è così
questo è ciò a cui penso in termini di
intelligenza artificiale una zona in
l’ intelligenza artificiale riguarda la macchina
imparando questi sono il tipo di
algoritmi di cui hai sentito parlare
molto oggi questi sono algoritmi
consentire al computer di imparare cose che noi
dai esempi al computer di cose
che abbiamo visto in passato abbiamo noi
dare al computer un risultato atteso
con quegli esempi e imparerà
le regole
in pratica non imparerà cosa sia
la connessione è tra quell’input e il
l’ output atteso ce l’ abbiamo fatta
apprendimento automatico ad un livello molto alto
quindi quando guardi l’apprendimento automatico
erano in grado di esplorare molto semplice
relazioni tra input e output
quelli sono molto molto semplici ancora molto
potente ma non abbastanza potente più
quando guardi le immagini e le suoni
diventa impossibile fare qualsiasi cosa con
quello con l’apprendimento automatico di base
gli scienziati hanno scoperto questo problema e
hanno detto bene che abbiamo bisogno di qualcosa che sia
più intelligente per questo è meglio
e la morte è diventata il campo di
Approfondimento e apprendimento profondo
reti neurali che utilizzano modelli complicati
che sono in grado di capire molto
strutture dati complesse e sensate
di quella struttura dati, quindi cosa fa a
la rete neurale sembra che tu abbia probabilmente
visto questo da qualche parte su internet
nessuno ha mai visto questa foto prima
o qualcosa di simile nessuno è bello questo
una rete neurale e lì la nostra rete
è costruito su diversi livelli e questi
gli strati eseguono tutti un semplice
trasformazione il primo strato è un
livello di input è qui che accettiamo il
dati nella rete neurale questo livello
non fa niente è solo un concettuale
cosa può l’input di una rete neurale
essere pixel codificati binari che può essere
numeri per qualsiasi tipo di cosa fino a quando
possiamo tradurlo in un valore numerico
alla fine della rete neurale che abbiamo
uno strato di output produce il finale
fondamentalmente rispondi alla tua domanda
gli strati intermedi eseguono
calcoli trasformano il tuo input
in modo tale che alla fine si ottiene un
output che probabilmente ti aspetti o forse
Non dipende da quanto bene stiamo facendo in
tra questo out input layer e output
strato ce ne sono uno o più nascosti
strati e questo è dove il potere di a
la rete neurale vive in realtà quando io
avere una rete neurale a singolo strato
fondamentalmente una macchina antiquata
algoritmo di apprendimento lo fa
trasformazione quando ne ho diversi
strati poi comincio a ottenere il
capacità di imparare cose che noi
normalmente non sarei in grado di farlo se tu
mai vedere una rete nil senza un nascosto
strato non è una rete neurale che ha
avere uno strato nascosto almeno tutto
queste note che vedi in questo grafico sono
i neuroni e questo è dove la magia
succede in una rete neurale
Nonnie zoom in un neurale in un neurone
un neurone nella mia rete neurale sembra
simile a questo è una rete neurale
modellato il nostro cervello Il nostro cervello ha
tutte queste cellule cerebrali che ne hanno diverse
input e output e quando ottengono
stimolazione sufficiente sotto forma di un
segnale elettrico attivano il
uscita e questo è come un proprio neurone
Funziona anche ma questo è tutto ma questo
è dove il confronto tra la biologia
e l’informatica smette di parlare
su di esso sempre più quello che succede dentro
un neurone è che accettiamo uno o più
segnali di input sulla sinistra e applichiamo
questo segnale da un certo peso e questo
produce numeri che sono in alcuni casi
molto grandi in alcuni casi molto piccoli noi
aggiungi quei numeri in un unico grande numero
e abbiamo passato questo attraverso un’attivazione
funzione e questo produce un segnale sul
l’output che possiamo usare fondamentalmente
quello che succede qui è che eseguiamo a
moltiplicazione matematica dell’input
numeri e questo produce un nuovo numero
in pratica ciò che trasforma
i tuoi dati e questo è tutto ciò che fa così
parlato di questa funzione di attivazione
qualcosa di veramente strano accade dentro
il neurone se solo ne moltiplicassi alcuni
segnale di input ma per esempio se voglio
per prevedere qualcosa su una casa il
prezzo di una casa direi numero di
i bagni sono un input per lo spazio abitativo
numero di bagni un garage vorrei
prendere tutti quei numeri per moltiplicarli
determinati pesi e aggiungerli e
è tutto ciò che succede ma non è così
dammi un comportamento intelligente tu
bisogno di questa funzione di attivazione che sembra
in questo modo, fondamentalmente, cosa succede dentro
un neurone è se ho un input molto alto
nel caso di un’attivazione sigmoidea I
otterrebbe un 1 sull’uscita ha un molto
bassa attivazione negativa e non funzionerà
nulla
diremo che è uno zero e in mezzo
c’è una curva molto ripida lungo la quale
i valori sono una sorta di attraversamento così
fondamentalmente una rete neurale non è nulla
più che prendere in cifre la trasformazione
quei numeri in questo modo usando questo
tecnica per produrre un numero che significa
qualcosa sull’output e questo è ciò
tu definisci come uno sviluppatore che definisci
quali numeri metti in un neurone
rete e tu definisci il numero
che esce da una rete neurale significa
quindi fondamentalmente quando costruisci un neurale
rete sembra che questo abbia un
inserire diversi livelli con allenabile
parametri quelli sono i pesi che noi
può imparare e produrre un output innocente
così quando vogliamo ottimizzare un neurone
rete per fare qualcosa correttamente voi
devo farlo in questo modo il primo passo
abbiamo questa struttura e ci stratifichiamo
abbiamo questi parametri che scegliamo a caso
i valori per questi parametri non lo facciamo
sapere qual è la trasformazione corretta
per i nostri dati per prevedere il prezzo di una casa
per esempio non facciamo una iniziale
predizione che è ovviamente molto molto
sbagliato ma facciamolo comunque vedere dove
noi stiamo e prendiamo questo risultato e
immetterlo completamente in un’ultima funzione
perché se vuoi allenare il tuo neurone
rete per imparare tutto ciò che devi
dargli un campione che sta per
produrre la tua previsione e un bersaglio
valore per ciò che stai per ottimizzare
e l’ultima funzione fondamentalmente
calcola la differenza tra il
due tra il nostro obiettivo e l’input
che inseriamo nella rete neurale il
la predizione la usiamo per nutrire un
ottimizzatore e questo ottimizzatore è un
funzione che è in grado di ridurre il
quantità di errore che è la distanza
tra il mio obiettivo e la mia previsione di a
livello in cui è accettabile non lo è mai
sta per essere zero è accettabile e
questo ottimizzatore quindi produce
nuovi valori per questi parametri nel mio
strati che si spera miglioreranno
a predire la cosa giusta, quindi se io
applicherebbe questo a un molto concreto
esempio per esempio il prezzo di una casa
Inserirò le proprietà del mio
casa in termini di numeri in virgola mobile
nella mia rete neurale fai una predizione
questo produrrà un prezzo per la mia casa a
prezzo previsto, tuttavia, so che cosa
il prezzo è di quella particolare casa
perché l’ho venduto prima di usare una perdita
funzione per calcolare la differenza
tra i due e poi chiedo il
ottimizzatore hey il loro ottimizzatore che ho
questa grande differenza puoi essere sicuro
che questo diventa più piccolo e lo farebbe
aggiorna i parametri per ognuno di questi
proprietà della mia casa in tal modo
che migliora nel prevedere il
prezzo di una casa questo si ripete molti
migliaia di volte lo farà molto
piccoli passi non ha il diritto
rispondi direttamente perché è no
la rete è troppo complicata per questo e
ogni volta che mostriamo l’intero set di dati di
campioni miglioreremo nel prevedere
il prezzo di una casa o la classificazione di a
domanda che fai – ne faremo una conoscenza
rete questo è esattamente come la maggior parte del
i quadri di deep learning funzionano no
definisci da solo i neuroni che non conosci
definire le formule matematiche voi
non perdere tempo a ottimizzare le cose
te stesso non è quello che fai come a
sviluppatore che è tutto fatto per te e
parlando di quest’ultima funzione tu
non pensare a te non c’è bisogno di
pensa a questo è molto
giusta formula complicata mi sembra di vedere
qualcuno dice hmm tu sei il primo
dicendo che personalmente ritengo questo
è molto complicato questo è un
formula che calcola fondamentalmente il
distanza tra una categoria prevista
e una vera e propria categoria di bene fresco, ma questo è
tutto quello che devo capire un sacco di questi
funzioni di perdita che la gente usa nel
base giornaliera sono definiti dagli scienziati
negli anni ’60 quando Conway fu il primo
iniziando a fare informatica e
possiamo ancora usarli oggi, quindi non farlo
preoccupati se non capisci un singolo
parola di quello che sta dicendo qui
non ho bisogno di fondamentalmente come costruisco
le reti neurali oggi sono ciò che penso
oh ho bisogno di prevedere il prezzo di a
casa che significa che ho bisogno di avere una perdita
funzione che può calcolare la distanza
tra il prezzo effettivo e il
prezzo previsto e deve essere un
valore assoluto se per esempio sto provando
per prevedere se qualcuno è è è
causando problemi nel mio sistema
perché sta facendo un falso
transazione o non voglio rilevare
frode quindi devo fare qualcosa oh
è una frode di categoria o non ho bisogno di
avere una funzione di perdita che sostanzialmente dice
oh qual è la vera categoria e a
categoria prevista e qual è il
la differenza tra loro è un binario
funzione di entropia incrociata per coloro che lo sono
interessato a questo, ma è così che io
pensarci mi guardo in su in un manuale
e dire oh questa è la funzione di perdita I
bisogno e questo è tutto quello che c’è ma
nel caso in cui sei curioso di sapere come funziona
sotto le coperte quindi supponiamo
che posso disegnare un grafico che sulla
l’asse x mostra tutti i pesi del mio
rete neurale e sull’asse y voi
vedrà la perdita l’uscita della perdita
la funzione potrebbe non effettuare una previsione
usando la mia rete neurale ad un certo punto
ci sarà un ottimo ci sarà
la migliore previsione possibile che puoi ottenere
nella tua vita è in fondo a questo
curva a sinistra ea destra di
questa curva a questo pulsante inferiore lì
sono due colline che li chiamo questi sono i
le piste che devo scendere per arrivare
al punto più basso e quando inizialmente
scegliere un set di parametri da un neurone
rete sarà da qualche parte su questo
curva ma non so dove sia
in piedi su una montagna con una benda
e non sapendo dove andare e l’unico
cosa che puoi fare è provare a impostare la
calpestare il pavimento e in pratica provare
a sentire anche se non si è in
pendenza o sul punto piatto è tutto
può fare ed è così che funziona il computer
così pure
ma lo fa in un modo molto intelligente perché
quello che possiamo fare è quando lo trasformiamo
rete neurale in una matematica
formula e lo mettiamo in perdita
funzione possiamo fondamentalmente derivare a
funzione da questa formula molto grande che
fondamentalmente mi dice hey sei in piedi
qui su questo pendio e questa è la velocità
abbiamo bisogno di andare verso il basso per raggiungere l’optimum
dato che siamo qui oggi e cosa io
faccio è seguire questa pendenza semplicemente
usando questa formula derivata e io posso
fare un piccolo passo verso la montagna di
Certo, non è nelle linee dirette messe in scena
quindi devo ripetere questo processo più
e ancora e ancora e ancora 10.000
volte milioni di volte che può accadere
ma alla fine lo so che ad un certo punto
Scenderò in questa valle e questa
è come un computer calcola il migliore
ho dei modi per la tua rete neurale
preoccuparsi di questo no ma è anche
utile sapere che ti ho appena mostrato un
versione molto semplice di ciò che accade in a
rete neurale se si chiede una media
rete neurale hey puoi tracciare il tuo
peso e uscita persa per quello che ottieni
qualcosa come questo è un himalaya
chiama questo cosa succede ad un certo punto
vicino ai punti rossi al centro
del quadro vorrei iniziare la mia neurale
rete molto schiacciante
parametri e proverà a scendere
questa catena montuosa in un punto in cui
dice che ora funziona, ora lo è
bello ma come ti ho detto prima che sia
come avere una benda davanti
i tuoi occhi non riesci a vedere dove sei
andando così cosa succede in alcuni casi
si arriva a una valle che sembra buono a
prima, ma sappiamo che c’è un’altra valle
questo è molto più profonde pesi molto più bassi
ma i parametri migliori per un neurone
rete questo succede molto in neurale
reti perché è molto complicato
roba così potresti essere sfortunata ogni volta
Devo insegnare alla gente riguardo alla macchina
imparando dico sempre l’apprendimento automatico
è sbagliato c’è sempre un problema con
machine learning perché
mai perfetto è per questo
tipo di cose che sta accadendo è molto
triste ma molto vero uno dei modi migliori
per contrastare questo problema è parlare con
la tua persona d’affari e chiedigli come
molto miglioramento vuoi di solito noi
come scienziati di data parliamo di sì io
avere una precisione del 95% cool di quante
ore hai passato sì qualche migliaio
va bene è molto utile ma quanto è utile
lo hai chiesto ai tuoi clienti
perché viceversa se tu
non raggiungere una precisione del 95 percento
solo sulle previsioni della rete neurale
allora cos’è che non ha
essere perché se puoi prevedere il 60% di
i casi giusti e che migliora ancora
il loro processo aziendale o la loro qualità
della vita è ancora una buona cosa
quindi se inizi con la costruzione neurale
le reti non mirano al massimo
le metriche possibili non lo aiutano
te stesso intelligente iniziare piccolo così ho appena
ti ha mostrato alcuni concetti di base senza
troppa bocca su ciò che è profondo
il modello di apprendimento è e quanto è neurale
le reti funzionano esploriamo come questo
lavora in deep learning per J così profondo
imparare per J è un apprendimento profondo
framework per Java ed è l’unico
per Java di solito le persone lavorano in R o
poitain
quando fanno l’ apprendimento automatico questo fa
questo quadro molto singolare penso
perché ora puoi farlo come uno sviluppatore Java
iniziare l’uso iniziare a utilizzare l’ apprendimento profondo come
beh, personalmente ritengo che sia molto bello
se inizi appena non lo vuoi
imparare una nuova lingua si vuole solo
apprendere l’apprendimento automatico o l’ apprendimento approfondito
invece e forse passerai a
veleno perché tensorflow è molto di più
up-to-date, ma sì, se si inizia
fuori con il tuo primo modello, allora questo è un
ottima soluzione questa struttura è
originariamente sviluppato da una società chiamata
le miniere del cielo l’ hanno sviluppato per una coppia
di anni penso tre o quattro anni
e al giorno d’oggi fa parte di Eclipse
Fondazione quindi è completamente open source
è gratis puoi usarlo sul tuo
computer funziona con entrambi basati su CPU
formazione e addestramento basato su GPU perché
se guardi una rete neurale c’è
un sacco un sacco di roba che avete bisogno di
calcola che ho costruito reti neurali
che hanno cinque milioni e mezzo
parametri che devono essere ottimizzati e
ognuno dei parametri deve essere
ottimizzando 10.000 passi o più come te
posso immaginare che ci sia un sacco di calcoli
il potere ti serve per fortuna anche se ho un
portatile che ha una GPU piuttosto buona
e accelererà il mio processo di allenamento
di cento volte quindi è abbastanza un
grande miglioramento se si inizia a utilizzare
profondo di apprendimento per JI lo consiglio
questa è una sorta di panoramica globale di
che apprendimento profondo 4j non sto andando
nel dettaglio di tutte le parti che sono
là fondamentalmente ciò che accade sono loro
si sono sviluppati in una biblioteca chiamata nd
per Jade è una libreria che fa vettoriale
la matematica e questo è tutto ciò che fa perché
le reti neurali sono interamente basate sul vettore e
moltiplicazione della matrice hanno fatto così dentro
in modo tale che usano il potere di
la CPU o se vuoi che la potenza di una GPU
calcola tutte le cose è nativo
libreria è costruita in C ++ e c’è a
Strato di Java per di più perché Java
non è abbastanza veloce per questo tipo
di lavoro in modo ciò che si vedrà è che se
corri su Linux, hai un altro
binario della tua applicazione allora quando tu
gira su Windows, aggiusta tutto ciò che loro
includi tutti i file jar strani e poi
quel genere di cose ma è qualcosa
si deve pensare se si se si
costruire su Windows probabilmente funziona solo
su Windows in cima a questa matematica vettoriale
biblioteca c’è un apprendimento profondo 4j
di per sé questa è fondamentalmente la biblioteca
che definisce gli strati che abbiamo visto
la nostra immagine precedente per l’apprendimento profondo
Jeff lavora con gli strati e sopra
che ci sono alcune utilità che tu
può usare per fare cose tipiche con neurali
Rete
diamo un’occhiata a come possiamo usare in profondità
imparare per J a costruire una rete neurale
è un processo in tre fasi che abbiamo prima
pensare all’architettura dei nostri
rete neurale come appare
quindi il secondo passo è assicurarsi
che gli diamo dati che capisce
e che siamo in grado di capire e ci arriveremo
a quello in un minuto
e alla fine addestreremo il neurale
rete per capire fondamentalmente cosa
stiamo dicendo al bot della chat e lo farà
trova la risposta giusta alla nostra domanda così
il primo passo è definire un
architettura che ci aiuterà a imparare il
caratteristiche da una domanda che cosa fa a
la domanda significa che codificheremo
domande in modo tale che il
la rete neurale può capirlo
fondamentalmente tradurremo le parole
ai numeri e ritorno e finalmente lo farò
scegli i parametri più ottimali da fare
quindi il primo passo è definire un
architettura per una rete neurale quando io
pensa alla ricerca, ecco di cosa si tratta
in realtà una FAQ ma fondamentalmente che cosa
se faccio una domanda , cercherà
per questo nel mio database è quello che io
farebbe normalmente e lo faremo
che anche qui, ma in un po ‘di
un modo diverso e come fa una ricerca
funziona bene potrei ovviamente trovarli tutti
singola parola nella mia lista di possibili
risponde e prova a calcolare quale
è il più rilevante è quello che Google
è così che fa la ricerca elastica
questo è quello che fanno tutti i motori di ricerca
avere un approccio leggermente diverso cosa
Ho intenzione di fare è ho intenzione di costruire un
rete neurale che praticamente comprime
i miei dati in un formato molto più piccolo
crea un’impronta digitale dei dati e io
fai questo usando prima un layer con a
molti neuroni pari al numero di
parole che ho nel mio vocabolario e
quindi uno strato con una quantità minore di
neuroni per comprimere i dati in a
rappresentazione che è più piccola e
un altro e un altro e un altro
uno e poi arriva una cosa divertente perché
alla fine di questa forma di freccia che ottiene
più piccolo inizierò ad allargarlo di nuovo
e questo è un po ‘strano cosa sono io
facendo ho intenzione di addestrare questo neurale
rete dicendo hey questo input
rappresentazione di queste parole ho bisogno di loro
di nuovo all’altro capo grazie
molto e oh tra l’altro nel mezzo io
Li voglio compressi e questo è un trucco
noi chiamiamo questo un codificatore automatico di
mettendo le parole all’inizio e
aspettandomi di nuovo quelle stesse parole
in pratica l’insegnamento del computer come
comprimere i dati e ripristinare di nuovo i dati
alla sua forma originale è fondamentalmente a
algoritmo zip ma molto più complicato
e molto più costoso in pratica è così
un trucco molto interessante perché se ho questo
presentazione di una breve presentazione in
medio posso cercare molto velocemente devo
confronta meno parametri con la mia ricerca
indice è fondamentalmente ciò che accade così
quello che faccio dopo è che mi alleno questo
prima parte della mia rete neurale e poi
Collego molto una seconda rete neurale
classico al centro del mio livello
impostare che fondamentalmente dice dammi questo
rappresentazione compressa e classificare
a una delle risposte che so perché
faccio questo se hai per esempio a
dizionario nella tua applicazione di circa
due e mezzo migliaio di parole diverse
questo è molto difficile da classificare se io
Dagli due e mezzo e mezzo
proprietà di qualcosa in
descrizione di un oggetto saresti
in grado di dirmi esattamente quale oggetto
probabilmente non è molto difficile
fare lo stesso vale per un computer in
reti neurali è per questo che comprimiamo
questo giù per un formato che funziona per
noi e forniamo questo formato in un secondo
rete neurale che fondamentalmente
classificare i miei dati quindi è molto di più
avanzato rispetto a quello che ho mostrato nel
diapositive precedenti ma questo è ciò che normalmente
succede questo è quello che facciamo io non sono venuto
con questa idea io stesso sono io
tirato fuori da internet qualcuno lo ha fatto
fatto questo prima e scoperto quello
questo funziona davvero bene per la ricerca
problemi in che modo funziona
Apprendimento profondo per J bene inizia
con una configurazione di rete neurale I
spero che tu possa leggere questo se
è abbastanza grande, fantastico, e allora?
facciamo è costruiamo un multi-strato
configurazione per una rete neurale usando
un costruttore che è classico per cui penso
Sviluppo Java mi manca la fabbrica
e il configuratore ma credo che loro
sono internamente e ho impostato un seme casuale
questo è per aiutare il computer a sistemare il mio
generatore di numeri casuali così genera
gli stessi numeri casuali ogni volta che sono
addestrando la mia rete neurale otterremo
di nuovo a quello in un minuto poi quello che faccio
Devo dire bene in questa configurazione
della mia rete neurale
Voglio un livello a indice zero e questo è
questo è nell’encoder automatico variabile
in pratica la parte che ho mostrato
prima questa è la parte sinistra qui
sembra complicato nella foto il
il codice non è ancora molto piccolo, ma posso farlo
fallo in un solo passaggio, posso solo dire hey
il caro computer mi ha prodotto un automatico
encoder voglio iniziare con 1024 input
i nodi e l’output è anche 1024
elementi grandi e voglio averne uno due
tre quattro
strati di codifica e uno due tre quattro
i livelli di decodifica sono fondamentalmente la freccia
in fila poi dico al computer
come ottimizzare questa funzione di perdita
voglio per questa parte del mio neurone
rete questa è chiamata la funzione di perdita
funzione fondamentalmente dico al al
bene il computer voglio questa attivazione
funzione rettificata unità lineare e I
voglio usare un errore quadrato medio e una perdita
funzione
che cosa fa l’errore quadratico medio?
la funzione di perdita misura fondamentalmente il
distanza tra la mia uscita prevista di
questi strati e l’output reale e it
è una distanza relativa che voglio essere come
il più preciso possibile non è un get a
problema di correlazione è fondamentalmente io
voglio riprodurre il nell’input del mio
rete neurale e poi un mucchio di altri
impostazioni che posso
più grandi che sono più pollici alla fine
di tutto questo dico che mi ha costruito questo strato
e questo è tutto, è il primo
parte della mia rete neurale va bene al
parte successiva ho aggiungere un po ‘più di codice lo farò
dimmi hmm costruisci un secondo strato il
livello di output della rete neurale e
questo deve essere 1024 note grandi come input
e l’output è la dimensione del livello di output che è
il numero di risposte che posso dare
questo è un problema di classificazione
Assegno una posizione unica sul neurale
rete ogni neurone sul mio livello di output
rappresenta una risposta che posso dare
e questo è quanto sarà grande il mio livello di output
sii e quello che faccio è che dirò che lo dò
io una funzione di attivazione softmax e
questa volta non voglio misurare il
la distanza che voglio misurare è la
risposta giusta che sto dando questo è il
probabilità di perdita negativa e ancora a
build freddo per costruire questo strato nel mio
foto precedente quando ho spiegato il
struttura di una rete neurale e come essa
funziona c’è un ottimizzatore in basso
di questa immagine in deep learning 4j I
posso dire una buona configurazione multi-livello I
vuoi un aggiornamento o un ottimizzatore di a
tipo specifico per ottimizzare la sua neurale
rete in modo sostanzialmente quello che stai facendo
Ecco strati si sta costruendo e
scegliere i blocchi logici per costruire il tuo
rete neurale non c’è matematica
qualsiasi cosa in questo e puoi guardare tutti
nel manuale cosa significa e
come fare compiti specifici con profondità
imparando per J allora gli diremo che lo farò
utilizzare pre allenamento e back propagation
fondamentalmente ottimizzare la mia rete neurale in
in un certo modo e poi costruisci il
configurazione cosa ho a questa fine di
questo è un pezzo di codice piuttosto grande
fondamentalmente la configurazione da a
rete neurale che cosa assomiglia
e devo aver gentilmente diviso così
andiamo avanti
cosa succede dopo, devo costruire un
rete neurale stessa dirò hey
dammi una rete multistrato cara
computer e inserire la mia configurazione e
questo passo compila una piccola rete neurale
in tal modo che funziona sul mio
CPU o la mia GPU c’è tutto il cattivo C ++
morde tutti i mestieri che non vuoi
vedere
Ci chiamerò e questo è tutto
va bene così ora ho una struttura che è
fondamentalmente in grado di comprimere il mio
dati in un formato comprensibile
e quindi classificare questo formato compresso
in modo tale che io sappia
oh digiti questa domanda che significa
che è questa risposta, ma ora come faccio io
codifica i dati in modo che possa allenarmi
rete neurale bene quando si pensa
una rete neurale è per puro numerico
valori con cui stiamo lavorando tristemente
tuttavia se scrivo qualcosa in inglese
o in tedesco o in olandese non è nessuno di
che non è nuovo numerico, quindi come sto
andando a prendere da queste parole a un pezzo
a un insieme di numeri bene questo ha
prima facciamo tre passi per creare un vettore
fondamentalmente una tabella che è uguale alla
dimensione del numero di parole che voglio
per capire di solito qualche migliaio e
ogni volta che voglio memorizzare qualcosa
entra in una rete neurale che dividerò
il testo in parole separate e guarda
ogni parola e dici oh questa è una parola
ciao trovare in questa tabella con la parola
ciao è e assegna il numero uno ad esso
se incontro di nuovo la parola ciao
aumenterà quel numero così che tu
alla fine è fondamentalmente questo è il mio semplice
i dati non sono altro che un grande vettore
dove ogni indice in questo vettore
rappresenta una singola parola che facciamo
senso giusto
bello, quindi, come funziona in profondità
imparare per Jay non è molto
complicato prima ho bisogno di un tokenizer
che è in grado di dividere il mio testo
in parole separate, quindi ho bisogno
qualcosa che è in grado di convertire
questo in un vettore un vettore Iser
e in fondo quello che dico è hey the
effettrice Iser voglio tokenize il
texas in questo modo in questo modo particolare
e utilizzare un file CSV come input in modo sostanziale
quello che ho sul mio computer è un file CSV
con un sacco di domande che possono essere
codificato in numeri così è il sinistro
lato coperto questo strato questo livello di input
ora ci sono duemilacinquecento parole
lungo così ci sono due e mezzo e mezzo
i neuroni in questo strato sono piuttosto grandi
non sul lato destro del mio neurone
rete ciò che succede qui è ciò che voglio
fare con la mia rete neurale è uno dire
per esempio la risposta numero uno è possibile
trova informazioni sugli oratori
la pagina del relatore ora quando chiedo dove
posso trovare informazioni sugli altoparlanti I
voglio che quel neurone produca il numero
uno e tutti gli altri neuroni il numero
zero perché questo mi darebbe il
risposta giusta quindi come faccio a farlo
bene posso prendere un altro file CSV con
tutte le possibili risposte e leggerlo
nell’utilizzo di un lettore di record CSV i
inizializza questo con un file di input e
poi la prossima cosa succede prima io
costruire una mappa di risposte che è fondamentalmente
andando a mappare un numero a uno specifico
pezzo di testo quindi posso leggere tutto il
record dal mio lettore e ogni record
conterrà un’unica risposta e cosa
lo farò, dirò oh dammi il numero
dei record di questo file e uso
che, come l’indice con il quale posso trovare
la risposta giusta
niente di più che un dizionario va bene così
abbiamo il si
struttura della rete neurale pronta noi
avere l’input pronto abbiamo l’output
pronto cerchiamo di ottimizzare la rete neurale
e questo è il pezzo di codice che fa
che in fondo quello che succede qui è quello
Voglio ripetere su tutti i campioni
che ho tutte le domande del campione e
le risposte che accompagnano e
spingere quello attraverso la mia rete neurale e
ottimizzare la rete in modo che ottenga il
risposta giusta e posso farlo usando il
la funzione fit and fit prende in un set di
caratteristiche e un set di etichette e lo farò
quindi fai un solo passaggio in avanti e poi
indietro per aggiornare il peso ma non lo è
abbastanza per assorbire la mia rete neurale
ricorda il grafico in cui la grande pendenza
Stavo solo facendo un passo indietro
la pendenza inizialmente e ho intenzione di fare
quello per il mio intero set di dati e lo farai
vedere un sacco di gente usa il termine epoche
in questo caso un’epoca è un singolo passaggio
su tutto il set di dati e si deve
fai diverse epoche di allenamento prima di te
ottenere qualcosa che funzioni perché il
i pesi sono aggiornati con molto piccoli
incrementi, ecco perché è il ciclo for
qui in pratica quello che faccio è iterare
tutti i dati richiedono l’aggiornamento fino a quel momento
come posso ottenere e poi fare tutto
ancora un centinaio di volte in questo caso a
Alla fine di questo avrai un neurone
rete che funziona in qualche modo nel mio
caso ho una precisione di circa
ottantacinque ottantasei per cento in modo che
significa che 86 dell’86 percento
delle domande che ho chiesto alla mia
la rete neurale riceverà una risposta
correttamente, quindi è abbastanza buono
Penso ora all’ultima parte che ho
allenato la mia rete neurale è tutto
beh e vero, è bello poterlo salvare
su disco anche se voglio a quale è
utile perché non vuoi allenarti
ogni volta che qualcuno ci ha chiesto un
domanda, ma ora come come usarlo cosa
Ho fatto per la mia chat BOTS è fondamentalmente
questo ho un front-end web che ha un
piccola casella di chat in esso non ho intenzione di
mostralo oggi io uso l’emulatore per mostrare
all’inizio della presentazione
ma normalmente avresti un
piccola finestra di chat che si può chiedere
domande nella finestra di chat era
collegato tramite chiamate Ajax a a
servlet sul mio server web che fondamentalmente
mi permette di costruire un pod di chat un bot di chat
non è altro che un’API che accetta
testi e uscite testo è molto molto
noioso se me lo chiedi, puoi farlo
più più eccitante se si desidera utilizzare
qualcosa come il flusso di dialogo o come il tuo
bot server ma questo è oltre il punto
Penso che questo servlet bot quindi accetta
questa chiamata HTTP dal front-end web
e tradurlo in un messaggio per la mia chat
bot come chat bot userà il mio
classificatore di domande che è un wrapper
intorno alla mia rete neurale che fondamentalmente
fa questo codifica l’input che
arriva dal messaggio di chat in
numeri lo tira attraverso il neurale
rete trova la risposta a cui appartiene
quello e lo rimette in testo e
lo invia indietro per l’utente che è
fondamentalmente ciò che accade così in questo giusto
Safari fondamentalmente quello che faccio è che dico
classificare mi preannuncia la risposta che io
bisogno di inviarci un testo di risposta prendendo
il testo dal messaggio in arrivo
è a livello di bot quando guardi
la rete neurale al suo interno ciò che io
faccio è prima io uso l’effetto Arizer
per trasformare il mio testo in numeri poi io
dirò la mia rete neurale che produce
un output basato su ciò che produce
un nuovo vettore nel set di numeri e
tutto quello che devo fare è trovare quello con
il più alto valore è la risposta che sono
andando a dare perché anche se mi sono allenato
con i vettori che hanno un perfetto uno
nel resto è zero, non viene emesso
che non sa che produce una serie
di numeri e uno di loro è il
più alto ed è probabilmente la risposta
voglio che sia tutto basato sul probabilistico
programmazione quindi quello che faccio è prendere il
il più alto e dirò che è il
indice della risposta che voglio dare e
questo è quello che ho intenzione di tornare al
utente
questo è tutto ciò che devi fare io personalmente
sento che è ancora molto si tratta di un veloce
la tecnologia è onesta ma non lo è
che è impossibile imparare ecco come
puoi iniziare
regalo di apprendimento profondo per J suo Fri
scaricalo provalo sulla tua macchina se
anche se non hai una grafica
la carta compatibile è ancora funzionante
per piccoli scenari per cose semplici
e ci sono fondamentalmente tre cose
devi tenere a mente in questo caso
puoi pensare a qualsiasi tipo di
architettura per reti neurali il
la gamma di possibilità è infinita che vedo
nuove cose accadono ogni giorno
ma siamo onesti se sei normale
sviluppatore che non fa per te se vuoi
per avere successo domani stai meglio
dai un’occhiata alle modelle ooh c’è un
sito web standard per questo, ma per raccontare
tu per quale architettura lavori meglio
che tipo di problema stai provando
risolvere è un grande aiuto è ancora un
un grande aiuto per me e molti altri
persone che sono molto più avanti
termini di conoscenza dell’apprendimento profondo e
anche iniziare con piccoli esperimenti no
costruire qualcosa di molto molto complicato
inizia con qualcosa di piccolo come a
chatbot e vedere come funziona e poi
andare avanti da lì e anche quello che ho
il tensore del cervello apprese è molto interessante
quadro è molto bello ma lo è
anche molto molto complicato non lo fa
nascondere tutte le formule matematiche per
tu che lo rende molto potente ma anche
Tuttavia, l’ apprendimento approfondito problematico per J
pensa in termini di funzioni perse negli strati
questi elementi costitutivi che ho mostrato
prima e lo rende molto più facile se
conosci quei blocchi e te
sapere che tipo di cosa stai cercando
risolvi puoi costruire una rete neurale in
Java quindi se vuoi saperne di più se tu
voglio scoprire per cosa è il mio codice
esempio è possibile scaricare per il mio alzarsi
conto che contiene tutto incluso
l’ annuncio ha acquistato cosa di servizio che se
siete interessati a che un modello Sue
è anche molto utile se vuoi provare
qualcosa per te stesso e per l’apprendimento profondo
J ha una serie impressionante di documentazione
ti aiuta a iniziare in modo molto piccolo
aumenta di
tutto sul computer e sulla costruzione
il tuo primo modello e se pensi ancora
è fantastico voglio saperne di più
c’è un ragazzo su YouTube che fa un
ottimo lavoro per l’apprendimento automatico delle macchine
che è libero ha circa cento o
più video sull’apprendimento automatico I
vorrei aggiungere vorrei ringraziare per
la vostra attenzione se avete domande
inoltre oggi puoi ancora raggiungermi
Twitter tramite email LinkedIn qualunque sia
tu vuoi

Please follow and like us: