Press "Enter" to skip to content

GOTO 2018 • Machine Learning on Source Code • Francesc Campoy


[Musica]
cool, quindi per favore vota la sessione
è stato un ottimo discorso dal modo in cui io
in quel modo, in realtà, non posso trollarmi
mi è piaciuto
risultato quindi si prega di valutare il
sessione e utilizzare l’app per chiedere qualsiasi
domande alla fine ne avremo alcune
tempo di rispondere a quelli così tanti di voi
ho mai letto questa frase okay
fondamentalmente per lo più tutti lo sanno
famoso software è nel mondo e il
è che mi piace aver letto questo
prima e credo sia giusto ma lo è
a volte difficile da capire
fino a che punto e non solo di più e
più aziende continuano a scrivere di più e
più software ma anche quei pezzi
del software continua a ottenere di più e
più complesso e ci sono molti modi di
misurare la complessità uno di loro che
non è necessario un proxy per la complessità
è il numero di righe di codice e così via
quello che ho deciso di fare era andare un po ‘
un po ‘sopra, tu conosci la storia del mi piace
il software che ricordo e
cercando di capire quante linee di
codice
aveva ed e cercando di capire
se sta crescendo o sta accelerando
esponenziale o no o forse rimane dentro
lo stesso per Adobe Photoshop pre-colore
cosa questi pre -vecchio stile
questo dal 1989 e aveva 128 mila
righe di codice 128 mila righe di codice
per me in realtà mi sento molto piccolo
al giorno d’oggi se hai hai NPM e così via
di tutto ciò che già passi per quello
certo, quindi questo è davvero carino
piccolo e questo è molto molto utile
pezzo di software che tutti erano
usando così sai che forse sono 128 mila
abbastanza poi andiamo al 1993 con Windows
3.1 e questo era un pezzo serio di
ingegneria perché ero in grado di giocare
giochi su di esso incluso Prince of Persia
quello vecchio
ed è stato bello ed era già il 4 a
5 milioni di linee di codice in questi sistemi operativi
giusto così, nessun OS 4 5 milioni di Dio si raffredda
noi siamo là noi non andiamo lontano più lontano
che ben OpenOffice non è io so s
è solo un pezzo di software che noi
corri a scrivere alcuni per eseguire i documenti nove
milioni di luci di codice cromato 18 milioni
linee di codice che ricorda questa finestra
questa casa continuo a dire Windows
Vista Windows XP Windows XP aveva 45
milioni di righe di codice e ed è a
sacco di codice giusto questa è un’auto sì e
è un pickup Ford e corre 150
milioni di righe di codice sulla macchina, quindi se
pensi di essere in questa macchina con
siamo tutti ingegneri che conosciamo
conoscere 4 milioni di righe di codice
c’è un bug di lista, siamo onesti
significa che hai 150 bug in esecuzione
la tua macchina che mi spaventa molto e il
la parte peggiore è che tutti conosciamo quel codice
è come il modo in cui scriviamo il codice
in realtà non evolvono così tanto giusto così
dall’inizio sin da quando eravamo
scrivere da quando qualcuno ha scritto Photoshop
fino a quella macchina che è molto 150
milioni di righe di codice sì, c’è stato un
molti cambiamenti nel modo in cui eseguiamo il
codice sul modo in cui lo compiliamo anche il
le lingue premier ci sono state modifiche
su continua integrazione continua
spiegamento di tutte queste cose erano
grandi sono stati alcuni cambiamenti nel
modo in cui scriviamo il codice che abbiamo
editori migliori, ma direi che lo è
gli editori di cambiamento pre incrementale sono
sta migliorando ma non è non è 150
milioni di volte meglio di Photoshop
giusto è in aumento un po ‘ma
non è ancora arrivato Google
1 miliardo di righe di codice e Google è
interessante per il modo in cui Google scrive
il codice è in realtà abbastanza diverso il
quantità di strumenti che un ingegnere di Google
ha quando stanno scrivendo il codice che è
simile a quello di un facebook
l’ingegnere potrebbe avere è enorme per il
Indica che se hai mai lavorato
Google che ho fatto ero un anziano
software engineer presso Google quando
ti lasci sei come oh cosa non faccio
ho fiamme, non ho crock, no
Mi piace che ce ne siano così tanti diversi
strumenti che internamente a Google sono
ottimo e ti rende un programmatore migliore
che quando te ne vai ti mancano così
la lavorazione degli utensili è la cosa più importante
pensa agli ingegneri proprio come noi
scrivendo il codice usiamo gli strumenti che dobbiamo essere
padroni di quegli strumenti e del problema
è che quegli strumenti non hanno davvero
si è evoluto così bene creando qualcosa
ancora possibile e sicuramente fattibile è
porta molto ci vuole un grande sforzo
giusto se vuoi costruire qualcosa
come questo assolutamente tu sarai
in grado di usare il martello e cose simili
che bene non sarò personalmente in grado
per farlo perché sono bravo a costruire
case ma se vuoi costruire questo tu
conosci con una certa abilità che sarai in grado di
fallo ma usando quegli stessi strumenti
se vuoi costruire qualcosa di simile
ora è diverso anche pianificando
per questo questo è un enorme pezzo di
ingegneria e se abbiamo dato l’architetto
Calatrava gli abbiamo dato solo il martello
che avevamo prima e nessun computer o
qualcosa del genere sarebbe molto
cosa interessante da vedere, ecco perché
Parlerò oggi della macchina
imparare sul codice sorgente cosa siamo
provare a fare è usare l’apprendimento automatico
migliorare gli strumenti che gli sviluppatori
già uso quindi sono Francis campoy e
se tu fossi qui prima che fossi qui
prima – questa è la mia seconda chiacchierata del
giorno e sono molto jet-lagged il I vp
delle relazioni tra prodotto e sviluppatore a
fonte e quello che facciamo è macchina
apprendimento per l’ analisi del codice su larga scala
e io sono su Twitter se vuoi trovare
io faccio domande così saremo
parlando di apprendimento automatico alla fonte
codice quindi prima definirò cosa è cosa
è l’apprendimento automatico su codice sorgente
qual è il campo come sono i corpi
fermo tra macchina e codice sorgente e
tutti i campi del machine learning che cosa
è la ricerca che sta facendo ricerche sulla
questi e qual è il collegamento ascendente si applicano
oggi e quel lavoro e poi lo faremo
Vediamo come possiamo effettivamente utilizzare quelli che
ricerca per migliorare i nostri strumenti e
ci sarà un sacco di diversi
demo live Oh
sulla strada e non sono in grado di aprire il
bottiglia così machine learning così Scott cosa
è in realtà semplicemente una macchina
apprendimento per il quale l’input è fonte
codice questo è tutto
quindi se pensi all’apprendimento automatico
che sta imparando da video o immagini
o testi naturali tutte queste cose sono
diversi campi leggermente diversi di
apprendimento automatico che non è possibile chiamare a
visione artificiale e LP tutti questi
il codice sorgente della macchina è semplicemente il
uno in cui l’input è il codice sorgente e
è legato a molti campi diversi
uno di questi è il data mining perché come
qualsiasi tipo di problema di apprendimento automatico noi
abbiamo bisogno di molti dati, abbiamo bisogno di una grande quantità
di dati e fortunatamente abbiamo ragione
come quella macchina corre 150 milioni
linee di codice su quanto codice c’è
Github ho fatto questa domanda e loro
Non lo so, ma io assumiamo che
è da qualche parte eseguire tre miliardi di righe
di codice su github ma questo è il nostro
supposizione non github quindi penseremo
alla fine
anche l’elaborazione del linguaggio naturale quando
stai facendo l’elaborazione del linguaggio naturale
stai lavorando con cose molto simili
come i linguaggi di programmazione che hai
sintassi si hanno alberi di sintassi tranne quello
sono alberi di sintassi astratti che hai
token ma quelli sono parole quindi c’è un
molte delle stesse tecniche che erano
usando per la PNL che puoi effettivamente fare
applicali e traducili piuttosto
facilmente a lavorare con il codice sorgente
ci sono limitazioni e le differenze delle
il principale non è totalmente corretto naturale
il linguaggio è comprensibile non totalmente
i programmi corretti non vengono compilati correttamente
il momento in cui generiamo le cose è
in realtà è più difficile da fare ma ancora
dovrebbe essere fattibile e poi c’è molto
di apprendimento automatico basato su grafico e I
Metti questo perché questa è la parte più difficile
di apprendimento automatico che ho fatto in modo
l’ apprendimento lontano dalle sequenze è una specie di
fattibile è abbastanza facile imparare da
i grafici in realtà richiedono comprensione
come tagliare un grafico in modo significativo
pezzi e vedremo un po ‘come
persone diverse lo fanno
quindi, cosa hai bisogno di fare bene questo?
di dati come lotti, molti dati e
poi gli algoritmi di posta elettronica fantasiosi che
discuteremo che ti mostrerò un
un po ‘il tipo di modelli diversi
che possiamo usare le reti neurali e il
diversi tipi di reti neurali che
siamo gonna uso e anche po ‘di
fortuna quando si sta allenando un algoritmo
ci sono molti fattori differenti
questo potrebbe portare il tuo successo o fallimento
così spesso quando stai facendo ricerche
vedrai persone correre allo stesso modo
modelli con molti diversi meta
parametri e cercando di capire
quale funziona meglio non è solo
la logica non è che non puoi prevedere quale
sta andando a lavorare meglio è necessario
allenarlo molte volte finché non lo trovi
qualcosa che funziona davvero per te
per il vostro problema quindi cerchiamo di parlare del
prima sfida che è come stavo dicendo
recupero dei dati ci sono molti dati in
il mondo così quando pensiamo a ml su
codice e parliamo di dati normalmente
tutti pensano all’archivio di gah-gah
formaggio
github archive e in pratica contiene
i metadati di Github vanno bene così la lista
della lista dei repository i loro nomi
i loro URL e anche un numero di stelle
ma non contiene il codice giusto
quindi non è una cosa enorme perché
finalmente sono solo i metadati ma ciò che noi
il bisogno è in realtà il codice sorgente, così noi
creato questo set di dati è chiamato pubblico
archivia e quello che abbiamo fatto è noi
scaricato tutto il codice sorgente per
tutte le revisioni per tutto il
repository con 50 o più stelle
su github e cioè circa 3 terabyte
del codice sorgente che abbiamo fatto papà
quest’anno il nostro ok per il prossimo anno è
in realtà lo faccio per tutti i repository e
se abbiamo finito con quello allora stiamo andando
inizia ad aggiungere tutte le cose da fare pressioni
secchio ma anche la Fondazione Eclipse
Linux Foundation tutti questi diversi
mangiare server in tutto il mondo che vogliamo
scarica tutto di quella cosa per averlo
dati disponibili per i ricercatori è
molto più grande di qualsiasi insieme di dati del
lo stesso stile che è stato creato prima
quindi abbiamo 182.000 progetti rispetto a
Iran 1/10 e la dimensione è tre
terabyte che è molto che puoi
scaricalo
non provare a farlo sul Wi-Fi no
prendi un sacco di tempo ma noi questo è il
tipo di dati che useremo
addestrare i nostri modelli e che sta andando
per informare i modelli di apprendimento automatico
come scrivere il codice uno dei
cose che dobbiamo fare per poter fare
questo va bene vogliamo minimizzare il
quantità di dati che abbiamo e uno dei
modi per farlo è trovare tutto
repository che hanno copie di ciascuno
altro e lo facciamo identificando
diversi commit che sono esattamente il
lo stesso se trovi due alberi diversi
che hanno la stessa radice che tu sai
che quelli erano in realtà eventi
originariamente lo stesso in modo da poter unificare
questo e riduce al minimo il numero di
copie dello stesso blob possono avere noi
ho appena pubblicato un post sul blog, quindi se lo sei
interessato a saperne di più su
questi grandi set di dati e come abbiamo creato
e perché l’ho creato lo puoi trovare su
blog dot source no tech è stato pubblicato
ieri se qualcuno volesse prendere un
foto così qualcuno va bene il prossimo passo è
ora che abbiamo tutti questi dati cosa
facciamo con essa dobbiamo analizzarlo
e cosa significa per analizzare fonte
codice bene ciò che è codice sorgente proprio questo
è come andare in fretta programma sì ciao
Copenaghen e tu puoi interpretarlo come
una sequenza di byte proprio così fondamentalmente P
ACK ecc. E questo è un modo di
rappresenta la cosa e funziona e
puoi allenare una rete neurale con questo
morde e puoi già farlo
cose interessanti vedremo effettivamente un
esempio di qualcosa che impara
direttamente da byte per byte il problema
è che quando stai facendo questo sei
in realtà avendo un sacco di informazioni
che abbiamo già dal programma
giusto sappiamo che quegli spazi in realtà
sono significativi e PA ki PA ck AG e
è in realtà pacchettizzata e questo è un token
e dovremmo considerarlo come una cosa
piuttosto che una sequenza di cose così tu
può fare anche da token ed è a
cosa diversa
e ora parliamo ancora piuttosto che
sequenze di personaggi di cui parliamo ancora
sulle sequenze ma ci sono sequenze
di token e piuttosto avere come
più insieme di possibili valori che abbiamo
in realtà un enorme insieme di valori possibili
il numero di lettere il numero di
i caratteri in a in un dato programma sono
in realtà piuttosto piccolo il numero di
identificatori possibili è in realtà
infinito quindi abbiamo un sacco di problemi
si riferiscono a ciò che è in realtà un po ‘
gli stessi problemi che troverai in
PNL quando lavori con le parole uno
più modo per farlo è sintassi astratta
alberi quando prendi un programma e tu
parse che a proposito del reale
l’albero di sintassi a sinistra non corrisponde
il codice a destra non provare a
abbinarli è l’albero sintattico astratto
tipo di andare un livello più alto e
in realtà ne sta portando più di quello
struttura del programma al modello
il problema è che ovviamente lo siamo
non imparando dalle sequenze che siamo
imparare dagli alberi e questo è molto
molto più difficile e duraturo ma decisamente no
meno perché questi erano tutti i
la ricerca è basata su se inizi
creando collegamenti extra su quell’albero cosa
ottieni è un grafico quindi c’è un sacco di
diversi tipi di grafici che possiamo imparare
da lì ci sono riferimenti incrociati di dove
questa cosa è stata definita hai il controllo
diagrammi di flusso abbiamo tutti diversi
tipi di modi di interpretare ciò che a
il programma fa
puoi farlo e imparare da quelli
grafici e ci sono molti documenti su
come farlo in molti modi diversi
così possiamo imparare dalle sequenze di
alberi e da grafici e, naturalmente
le sequenze sono gli alberi più facili a
un po ‘più difficile e il grafico è dove
inizia a diventare interessante quindi cosa facciamo
bisogno anche di creare quei grafici in
gli alberi ci sono in realtà un sacco di
cose diverse che ho bisogno di farti sapere
che, al fine di analizzare un programma che si
bisogno di sapere prima cosa prom linguaggio
è così che hai bisogno di uno strumento che te lo dirà
quale linguaggio di ballo un file è brynan e
questa sembra una cosa facile perché andare
vai vai a Java Java che cos’è dot M bene
MATLAB o Objective C o qualcos’altro
giusto così in realtà devi anche guardare
dentro abbiamo scritto un prompt abbiamo un
honoree è un progetto che fa questo allora
devi passare il programma e quando
si passa il programma è necessario
Ho creato un’astrazione di lusso e questo
astrazione esente da tasse che vogliamo fare
sicuro che sia utilizzabile da qualsiasi modello no
importa la lingua così noi in realtà
creare questo concetto di universale
albero sintattico astratto e universale
l’albero sintattico astratto è semplicemente un
albero sintattico astratto per il quale siamo d’accordo
in un formato per memorizzarlo e lo ha anche
annotazioni agnostiche del linguaggio quindi è così
dicendo la funzione visto c’è una variabile
questa è una stringa quelle cose sono le
lo stesso, non importa quale lingua prom sia
scrivere correttamente se si tratta di Python o
Haskell o compagnia aerea è una stringa così
questo è il tipo di lingua della lingua
annotazioni agnostiche universali con esso
quindi dobbiamo anche fare l’estrazione di token
se dico hey voglio estrarne un sacco
i nomi delle funzioni ho bisogno di farlo bene io
bisogno di analizzare e ottenere l’albero andare a
tutti i token che corrispondono a marzo
descrizione che voglio due dei
cose che voglio estrarre e fare un po ‘
infine analisi della storia perché la maggior parte di
il tempo che cosa si vuole fare è prevedere
il futuro e se vuoi prevederlo
il futuro hai bisogno di capire il
passato
Fortunatamente per noi fortunatamente per noi tutte le
il passato è in realtà codificato nella Guida
Passa albero hai tutto il possibile
le revisioni di quel progetto così puoi
in realtà impariamo da questo e c’è un
molta analisi su quella parte e infine
risoluzione di riferimento in quel codice quando I
dì da println println è un
funzione che definisce un altro pacchetto chiamato
il tipo di carattere in realtà sta figurando quelli
le cose sono abbastanza difficili per noi
Google l’aveva già fatto e c’è un
progetto open source chiamato kite ok yo
e sfortunatamente la documentazione è
non eccezionale è piuttosto difficile da usare così
quello che abbiamo fatto è assumere il creatore di
il progetto è fatto è facile lui solo
aderito di recente abbiamo messo tutto questo
insieme tutti i diversi strumenti che
facciamo per l’analisi dei dati del codice sorgente
in uno strumento chiamato il motore la fonte
motore e Apache v2 open source di Ruby
è gratis da usare quindi divertiti con esso e
Volevo fare una demo molto veloce di
alcuni dei concetti che ho mostrato
quindi questa babele fa questa cosa
sta per fare l’agnostico della lingua
analizzando così sul lato sinistro che hai acceso
il lato destro che hai
Java e sul lato sinistro hai un
albero di sintassi assoluto, quindi dì che vuoi
questo dirà che questo è un
nodo di tipo USD stringa che tu ast
stringa proprio lì fammi evidenziare
più che la tua stringa SC è universale
annotazione questa è la stessa norma di
la lingua e l’estrazione del token
significa che puoi usare XPath per estrarre
quei token in modo da poter fare una stringa USD
ora ottieni le due stringhe in questo
programma la cosa interessante e perché
questo è qualcosa che usiamo è che se
si utilizza qualsiasi altra lingua prominente dire
vai anche a prendere qualcosa del genere
sembra lo stesso sul lato destro è il
stesso formato e puoi usare lo stesso
annotazioni per estrarre i token così ora
è possibile vedere tutte le stringhe anche
essendo evidenziato lì giusto, così è
un progetto che abbiamo creato per essere in grado
per imparare dalle tracce che non vogliamo
impara dal risultato di analizzare un go
programma e poi dover rifare il
tutto da imparare da Java, quindi è così
perché stiamo imparando dagli alberi a
livello più alto quindi mettiamo tutto questo
all’interno del bambino quindi ora puoi selezionare
stella dai repository e ora puoi
corri che dicono che quelli sono i repository
puoi fare da limite di codifica live dei file
andiamo limite al cuz sto seconda
il Wi-Fi e quindi puoi fare le cose
come voglio la lingua del file
percorso e il contenuto del blob e quando tu
fai questo, userà uno dei
progetti precedenti per dirti davvero
che lingua di ballo è anche possibile
usa la tua ast per la funzione
estrai le pedine che ti interessano
quel programma in modo da poter fare cose come
dammi tutte le funzioni che hanno
stato modificato da questa persona durante il
il mese scorso scrivi tutte queste cose
storia più i metadati del plasma di analisi
può anche essere unito in un singolo
sequel query
e finalmente tutto questo è il mio sequel
quindi se si sa come utilizzare il mio sequel con
Python o qualsiasi bene o qualsiasi altra cosa
puoi anche farlo così qui non lo farò
mostra tutto ma eccoti qui
con questa query stiamo estraendo il
lingua e quindi estraendo tutto il
nomi di funzioni in quel programma, non importa
quale programma è che non mi interessa il primario
linguaggio che abbiamo appena analizzato, estrae il
cose e contale e poi con a
un po ‘di mio
Python e qual è il nome impatto numpy
molte cose siamo in grado di generare cose
nuvole di lavoro e cose del genere
questi lavori amore, ad esempio, sono i più
parole comuni che abbiamo trovato la matematica
i nomi delle funzioni di comando che abbiamo trovato
python che è underscore underscore in
per ragazza per Java per PHP
la cosa interessante è che tutti questi
l’analisi è fatta in un agnostico linguistico
modo e questo il punto più importante è
tutti gli strumenti che vogliamo fare
deve essere indipendente dal linguaggio perché noi
voglio essere in grado di migrare a più recenti
le lingue come sono come vengono
senza dover riqualificare tutto il
cose che abbiamo fatto allenandoci su tre
terabyte di dati è un sacco di formazione
Va bene così sfida numero tre ora noi
abbiamo un sacco di codice sorgente che abbiamo analizzato
abbiamo alberi sintassi astratti come fanno
impariamo da questo usiamo le reti al neon
e non entrerò nel dettaglio di
ciò che una rete neurale è il numero di
hai usato una rete neurale come o
implementalo bene, quindi ne conosciamo tutti uno
il tuo vicino dice che è grandioso perché
altrimenti non avrei il tempo di
spiegarlo ma per coloro che non hanno mai
l’ho usato mi piace pensare al neurale
reti semplicemente come un oggetto matematico
che ti permette di imparare dall’esempio di te
continua a dire hey se ti do questo
inserisci questo output e tieni
ripetere che più e più e più
e finchè non impara e chiamiamo
quella formazione quindi se ci pensate
è come se tu avessi un animale domestico e
quel pad continui ad allenarti e
addestramento e addestramento e addestramento a
Alla fine l’ animale farà tutto ciò che tu
voglio e l’animale domestico potrebbe essere utile
alla fine giusto ma all’inizio
sono gratis inutili
reti neurali non ci sono animali domestici
un esempio così tipico è l’amnistia che è
il ciao mondo del machine learning
in fondo e quello che stiamo facendo è
imparare a predire un numero è in un
immagine che immagine è se ricordo
correttamente 28 per 28 pixel e fondamentalmente
stai passando tutti quei pixel come
input sulla tua rete e poi anche tu
avere l’etichetta è fondamentalmente che è un
otto poi lo alleni in allenatore e
allenarlo e il modo in cui è il tuo allenatore
in pratica, provi a prevedere di averlo
sbagliato e poi lo cambi facendo
pendenza in discesa che non otterrò
nei dettagli ma facendo così
e oltre i diversi pesi in quelli
i neuroni all’interno stanno per cambiare fino a quando
crei qualcosa di interessante quindi cosa
possiamo farlo bene nel codice se noi
ho dei token che puoi dire che prenderò
dieci gettoni a destra cercherò di dire se
Ti do dieci token che predicono il prossimo
uno che è la cosa che puoi fare
con l’ apprendimento automatico e in realtà
qualcosa che ho fatto funziona bene
quindi per esempio qui per I uguale a zero I
meno di dieci io che bene sta andando
prevedere più plus la cosa interessante
è che in realtà se torniamo qui voi
vedere che lo zero non è in realtà lo zero
da qualche parte intorno allo zero e quello è
da qualche parte intorno a uno e questo è
qualcosa che useremo in seguito
e se invece di lavorare con dieci
token Voglio davvero lavorare con tutti
dei token una sequenza e noi no
conosciamo la lunghezza di quella sequenza che possiamo
utilizzare reti neurali ricorrenti e a
rete neurale ricorrente che puoi pensare
su di esso come ricorsione è fondamentalmente a
rete neurale per la quale uno dei
input è una delle uscite dal
passo precedente quindi è in grado di saperne di più
cose interessanti su sequenze e
questo il tipo di me sulla rete che
userete per gamberi come
traduzione o sentimento nella lingua umana
l’analisi è questo testo positivo o
negativo bene non sappiamo davvero come
il testo sarà lungo così com’è
il tipo di rete che farai
useranno e possiamo anche usarlo
per noi perché di nuovo abbiamo sequenze
ovunque così queste sequenze funzionano
davvero bene una delle cose che puoi fare
è
la cosa tradizionale è imparare a
parla come Shakespeare e questo funziona
davvero bene perché quando sei
generare Shakespeare quando generi
strano Shakespeare è ancora Shakespeare
perché Shakespeare è strano giusto
se crei un nome strano potrebbe essere
Shakespeariano davvero non lo sai
a meno che non avete letto l’intera cosa giusta
quindi ho provato a fare la stessa cosa con
codice sorgente
Ho nutrito piuttosto che l’intero lavoro di
Shakespeare per l’intero lavoro
squadra che è la biblioteca del suono giusto
la comunità di go direttamente nella squadra
in realtà e sono riuscito a raggiungere il 61%
sulla predizione in modo sostanziale se tu
mi stavano dicendo un dato numero di vedere a
sequenza di personaggi che ero in grado di
dirti quale era il prossimo
correttamente il 61% del tempo che è orribile
in realtà è davvero brutto e lo è
normale perché stiamo imparando da
sequenze non alberi o grafici a destra
stiamo dando dati di qualità piuttosto bassa
ecco perché otteniamo una qualità piuttosto bassa
previsioni di bassa qualità così prima
allenandoti ottieni qualcosa del genere se
chiedi quindi la tua rete ehi genera
alcuni lo fanno e questo non lo è
non sarò no, sto solo scherzando
solo no, okay, quindi non è così
questi nessuno Erlang, ma dopo uno
dopo un’intera epoca che è fondamentalmente
dicendo che l’intero set di dati è in grado di farlo
generare cose come questa e c’è una
molte cose che sono davvero
interessante qui non è questo
non verrà compilato ma ce ne sono molti
cose che sembrano molto familiari se
uno di questi è se l’errore non è Neil
errore di ritorno ed è quello che chiamo
idiomatico che è in giro se l’aria è no
errore di ritorno dell’ago è qualcosa che
vedi dappertutto, quindi ha senso
che il neonato è stato effettivamente appreso
abbastanza veloce se continui ad allenarti
continui a migliorare un po ‘
ma ancora questi non si compilano come se
si guarda a questo che se non quella ERS
Ier che getteranno in un composto I
non pensare che sia mai un buco del genere
davvero ma tu sai che sembra
come potrebbe essere se guardi da lontano
lontano
continui ad allenare le tazze che sto ricevendo
un po ‘meglio ma non proprio quello
tanto che riguardo ai grafici
anche imparare dai grafici è molto difficile
in realtà la migliore carta che raccomando
è aspettare ho pensato oh sì, imparando a
rappresentano programmi con l’artigianato che c’è
una quantità di carta di Microsoft e
questi sono ottimi documenti e ne introducono uno
problema che mi piace davvero molto
perché penso che questo problema abbia chiamato
L’uso improprio di VAR potrebbe diventare la base
punto di riferimento dell’apprendimento automatico sulla fonte
codice se pensi a un computer
visione che hai dimenticato il nome
dati detto con tutte le immagini che
usiamo tutto il tempo che qualcun altro conosce
è il set di dati con tutto il
le persone mi dispiace, sì immagine, ci vai
così l’immagine è morta l’intera cosa è che abbiamo
un enorme set di dati con immagini e
anche etichette su ciò che puoi vedere in quelle
le foto e la sfida è quella di
in realtà combacia con quello che possiamo fare
è immaginare che il set di dati è tutto
pubblicamente okay 3 terabyte di codice sorgente
e il problema è che ti darò un
programma e sto per rimuovere uno dei
identificatori del programma necessario
indovina qual è stato il bello
cosa su questo programma è su questo
il problema è che ti ha già etichettato
non c’è bisogno di prevedere qualsiasi cosa tu semplicemente
Bisogna pronosticare la cosa che è stata
già lì lo rimuovi giusto
quindi creare questo è davvero molto
semplice e questo in realtà questo
ottiene una discreta quantità di accuratezza decente
che ancora non è perfetto questo è in realtà
qualcosa che è stato usato per trovare problemi
con intelligenza su base di codice Microsoft
sulla base di codice core dotnet se io
ricorda correttamente e sono stati in grado di
trova centinaia di dollari, quindi è così
in realtà davvero molto interessante e
vedremo come possiamo utilizzare in un secondo momento anche
anche se questo è abbastanza ovvio
un altro che mi piace davvero
è chiamato codice da vuoto e codice da vuoto
quello che fa è appreso dai grafici no
alberi più ma in realtà grafici di
in realtà trovare i percorsi che sono in
tra ogni singolo nodo in un albero e
allora impariamo da quei percorsi e noi
prova a capire quali sono i più
rilevante o problema alla nostra previsione
problema e puoi vedere come quelli
più scura quella linea più ampia
dovrebbe essere il più rilevante
percorsi in modo da poter vedere che questi
elementi restituiscono Alan return true return
Io quelli sembrano molto simili ma in realtà
ognuna di queste funzioni è a
cosa completamente diversa e vorremmo
nominali in modo completamente diverso, quindi se
vuoi sapere di più tutto il
ricerca abbiamo questi dati impostati bene
è un repository con tutto il
ricerca che abbiamo letto alla fonte e
anche alcune delle ricerche che abbiamo scritto
noi stessi siamo un sacco di cose quindi se
vuoi divertirti a iniziare a leggere
alcuni di loro hanno un’etichetta che dice di essere
sono buoni per i principianti che vorrei
sicuramente iniziare con quelli perché questo
diventa davvero complicato davvero veloce okay
quindi cosa possiamo costruire con questo e ho avuto
una demo in realtà che volevo mostrare
stai bene così ho scritto questo codice ed è
già fatto perché la formazione prende
abbastanza decente quantità di tempo, ma quello che io
è stato fatto per ottenere la codifica
che è uno dei nostri pacchetti e mi alleno
una rete neurale con esso il modo in cui io
trend non è molto importante, lo sono
usando Cara c’è la rete neurale
che io uso è una rete neurale con 50
entrate 50 punti di ingresso e poi da
quei 50 punti di entrata ci dispiace non 50
i punti di ingresso sono dimenticati come loro
sì, se 50 punti di ingresso vanno da 50 a
20 e quindi sostanzialmente riduce quella
in quale è quale è il prossimo
token e lo fa solo su specifici
lunghezza dei caratteri quindi non c’è
la rete neurale ricorrente è a
rete neurale tradizionale che funziona
con n token solo per renderlo semplice
dopo l’allenamento puoi vedere che il
la precisione inizia a salire piuttosto velocemente
raggiunge 68 68 69 69 69 70 70 70 it
in realtà non andare più in alto di quello ancora
se continui ad allenarlo ma anche con
questo in realtà possiamo fare abbastanza
cose interessanti così qui per esempio
puoi dire hey
Ho questi token sulla sinistra, quindi questo
la parola sta facendo è cinque token a sinistra
cinque token e sulla destra indovina il
uno nel mezzo
quindi questi fare.i due punti equivalgono a zero i
qualcosa di dieci poi i plus più e
le pause e tu corri e questo dice
tu che c’è il 91% delle probabilità che
è meno di destra e questo è fantastico ma
la cosa interessante è che non lo facciamo
voglio usare quel numero che vogliamo usare
il resto dei numeri non lo è
prevedere quali sono le possibilità di meno
di quelli che predicono ciò che è il
possibilità per ognuno dei
possibili personaggi che abbiamo che
significa che se trovi effettivamente nel file
programma più grande di quanto tu possa
Calcola le possibilità di avere questo e
è meno di due meno di zero
3% giusto quindi è molto molto molto basso
possibilità in modo che possiamo effettivamente dire che è
probabilmente vale la pena mettere un avvertimento
stanno dicendo che volevi dire meno di
giusto questo è qualcosa che puoi fare
già oggi quindi cosa possiamo costruire così come
Stavo dicendo che hai quelle neurali
reti e stanno usando
stanno creando previsioni su ciò che siamo
provare a fare è piuttosto che usare quelli
previsioni per prevedere le cose che siamo
cercando di utilizzare il resto del
le previsioni per trovare le anomalie proprio così
piuttosto che essere interessato dal
quelli che stanno dicendo che questi sono i
i più alti possibili quello che stiamo provando
fare è che hai scritto questo come possibile o
quanto è probabile che questo sia il
cosa giusta e una volta raggiunta l’altezza
livello abbastanza in basso abbastanza in questo
caso quindi possiamo dire che questo è sospetto
e possiamo commercializzare quindi usiamo questo e noi
aggiunto a github e questo è un esperimento
non è ancora pubblico ma quello che abbiamo fatto è stato
di avere una revisione del codice piuttosto ampia
immagina se invece di dover leggere
ogni singola riga di codice uno dopo il
altri si è in grado di dire hey dirmi
ciò che è interessante qui qualsiasi segno
qualcosa di simile e questo è quello
interessante è che non lo è
è sbagliato significa solo che lo eravamo
non è in grado di prevederlo facilmente
il che significa che ce n’è molta
entropia quindi è interessante così tu
dovrebbe assolutamente rivederlo prima o a
almeno avere uno sguardo migliore a quella di
il resto
spero che tu sia un grande fantastico
recensore che significa che lo farai
rivedere ogni singolo personaggio dopo
l’altro ma probabilmente non lo farai
che così avendo qualcosa che sta andando
per puntare a fare in modo si guarda a
questo prima di continuare sarebbe
davvero molto utile quindi il più grande
la differenza è ciò che stavo dicendo
prevedere la previsione contro
aspettativa proprio qui c’è un errore
c’è un errore si c’è un errore
giusto se vedi questo codice in natura
probabilmente non presterai attenzione a
sembra abbastanza normale ma in realtà
oh, c’è stata animazione quella
via che io sono – – dovrei essere più positivo
giusto se tu fossi in grado di evidenziarlo
andare avanti come forse questi sono molto
programma interessante ed esotico che
in realtà dovrebbe farlo, ma tu sei
certo, che dire dell’abuso di var quando noi
usare un uso improprio di var possiamo rilevare un ballo di fine anno
succede molto spesso perché il software
gli sviluppatori siamo pigri, il che è fantastico
che noi usiamo copia incolla e usiamo
copia incolla quando incolliamo che dobbiamo
modificare le cose e a volte ci dimentichiamo di
modifichiamo alcuni di loro così qui che cosa sono
facendo è che sto venendo dal file di un file
B e lo sto facendo e poi vado
cosa fai apri un file e poi tu
dire differiscono chiusura che significa allo
fine di questa funzione chiudila per favore
c’è un errore in qui i due file
non sarà mai chiuso proprio perché noi
copia incollata ovviamente e questo è quello che
dovresti farlo davvero
ma copiare incollare può essere pericoloso e
puoi inserire immagini come questa così
il cattivo uso può essere un modo per trovare
questo tipo di errori nella fonte
codice e fornirgli una revisione del codice
tempo
per quanto riguarda il codice Tuvok, andiamo al retro
la cosa è davvero interessante perché lo è
andando a permetterci di capire se
il nome di una funzione corrisponde a
cosa ci aspettiamo e più di questo è
significa che stiamo andando ad essere
capire le funzioni non da a
punto di vista sintattico da un punto di vista semantico
punto di vista siamo in grado di pareggiare
generare cose come dato una funzione
creare una descrizione naturale che abbiamo fatto
qualcosa che è una pessima idea, quindi lo farò
nemmeno ti mostra il codice sorgente ma
è qualcosa di cui scrive
documentazione dei tuoi programmi da sola
è un tipo di lavoro e genera cose
come frasi complete che assomigliano a te
sapere che potrebbe essere scritto da uno sviluppatore
se davvero fai attenzione a quello che è
dicendo che la maggior parte delle volte non è facile
davvero non significa nulla che
a seconda degli sviluppatori che conosci
è quello che succede ma qui tu hai
contiene e ha per quello sul
il lato destro va bene e indicizza a destra il
la cosa interessante è a causa del modo
codice a parole vaghe e il modo in cui il modo
stiamo facendo delle nozze per quello che siamo
in grado di trovare due pezzi diversi di
codice che sono molto simili perché loro
un aspetto molto simili tra loro, ma
in realtà danno completamente diverso
predizioni e un’altra cosa che noi
usato è che abbiamo deciso di creare un
splitter di identificazione deep-learning che cosa
abbiamo fatto qui era e c’è un blog blog
pubblicare su tutti i dettagli di questo, ma noi
abbiamo usato il motore per generare una lista
di tutti gli identificatori di tutti
archivio di aiuti pubblici e poi archiviamo
quelli e poi usiamo alcuni ben noti
modi di dividere le cose che diciamo andiamo
java usare caso di cammello quindi se si vede che
differenza nel venire nell’involucro che
significa che quelle due cose potrebbero essere
diviso a destra se è per Python anche
più semplice sottolineatura destra e poi cosa
facciamo è rimuovere tali informazioni così
facciamo tutto in minuscolo e rimuoviamo
tutti i trattini bassi e provare a
prevedere quale era il rivestimento precedente e
in questo modo erano effettivamente in grado di farlo
prevedere cose come qualcuno ha scritto
scrivi la mia variabile con la legge con a
V minuscola che sta effettivamente andando
contro le linee guida del modo in cui noi
scrivere codice in modo Non ho intenzione di mostrarvi il
imparare andare perché è già quello
Ho mostrato ma condividerò il
collegamenti in modo da poter dare un’occhiata al modo
Ho fatto per generarlo
versione confusa di go e poi come funziona
inizia a migliorare nel codice temporale
Tuvok è qualcosa che non abbiamo fatto noi
non creare ma questi sono fantastici demo
c’è qualcosa che è stato creato a
l’Università Tecnica in Israele e
ciò che è in grado di dire è dato questo
funziona con tutto questo codice che cos’è
il nome di questa funzione è ciò che facciamo
passiamo a noi otteniamo l’albero che identifichiamo
quali sono i percorsi più rilevanti?
e quindi siamo in grado di dedurre o
prevedere che questo dovrebbe essere chiamato sort
qui abbiamo iterando su un array di
elementi e una volta l’elemento che noi
trovare corrisponde a quello che eravamo
cercando noi restituiamo albero vero ciò che è
il nome di questo contiene sicuramente ma
cosa succede se invece hai restituito il bersaglio o
no e si restituisce oggetto oggetto
beh, viene preso di mira o get o lookup
giusto così cambiando il codice che siamo in grado
per trovare nomi diversi l’interessanti
La cosa su questo è quello che stavo dicendo
non si tratta solo di nominare una funzione
perché tutti noi chiamiamo le funzioni, ma è così
in realtà trovando quanto diverso
combinazioni di funzioni potrebbero essere nominate
quindi di ‘di contare quello che è il
massificare quali sono le cose più vicine da contare
e questi sono tutti i diversi nomi
che sono stati incorporati in un simile
simile spazio simile punto nel
sistema nello spazio dell’inclusione così
contare ottenere dimensioni di conteggio nella roba x max
così tutte queste cose sono belle
correlati quindi se ne stai cercando uno
forse non vuoi trovare solo il
quelle le funzioni chiamate contare ma anche
se qualcosa è chiamato anche la dimensione
qualcosa che potresti voler tornare
combinazioni
ciò che è uguale a destra e due in basso a destra
equivale a ignorare la certezza se lo fai
inferiore e poi fai lo stesso
equivalente la cosa interessante sei tu
può farlo anche se anche nell’altro modo
in giro quindi se ti dico hey a uno I
vuoi che trovi una funzione chiamata
è uguale al tuo caso o hai descritto in
linguaggio naturale
ciò che equivale a ignorare il caso corrisponde a
sarai in grado di dire hey no
avere la funzione ma abbiamo questi due
funziona quando li metti
insieme è lo stesso, forse tu
voglio usare quelli e poi questi miei
favorito questo analogo embeddings in
NLP l’esempio tradizionale di
gli embeddings sono se ottieni il vettore
l’uomo alla donna e si aggiunge al re te
prendi la regina, quindi l’uomo è donna come
La regina è la regina più magrissima e riceve bene
per scaricare come peccato è quello di caricare a destra
puoi fare la stessa cosa qui trovare
che sono il contrario o che sono gentili
dello stesso ma in passato tutti questi
cose come quelle tutto ciò
l’informazione è in realtà codificata nel
incorporamento e infine il neurale
splitter e sto effettivamente usando questo Co
Co ora collabare una collaborazione è incredibile che faccio
non funziona più su Google, quindi non lo faccio
ho bisogno di venderlo ma questo è fantastico per te
ricevi TP gratuitamente, quindi usalo qui
Ho intenzione di scaricare il nostro pre già
modello addestrato
ok allora avremo che lo faremo
carica il modello e poi lo saremo
in grado di fare cose come questa, quindi se tu
prova a dividere penso che questa sia una variabile
in realtà dirà che so quale
le parole sono qui non lo divideranno
se dici che sono di nuovo ehi, penso di nuovo
è davvero brutto, voglio dire oh, non va bene
quell’esempio è molto duro, io sono in Danimarca
Danimarca no
oh wow, questo è male
allora puoi usare le stesse cose
stessi concetti come una volta che hai
separati puoi effettivamente rimetterli
con Camelcase o qualsiasi altra cosa tu potessi
ad esempio, se qualcuno ha scritto io
penso che il mio tempo sia finito ma hanno dimenticato
la capitale del corso si può effettivamente
prevedi questo e dì in realtà che non lo è
come lo scrivi così che cosa stiamo facendo
con questo stiamo cercando di potenziare
gli sviluppatori di rivedere il codice meglio perché lo sono
facciamo codice vista perché dare
feedback agli sviluppatori prima che lo siano
pronto per questo è in realtà abbastanza pericoloso
se hai qualcosa che crea
avvisi sul tuo editor e continua
ottenere che sbagliato sarà
Davvero fastidioso e anche se lo capisce
giusto ma ci vuole più di un secondo
è anche molto fastidioso, quindi cosa siamo
fare è piuttosto che cercare di fare
tutto incredibilmente veloce e preciso
se lo stiamo spostando al punto in cui
gli esseri umani stanno per essere la rassegna a
questo punto gli sviluppatori sono pronti per il
feedback e possono ottenere ovvio
per me tutte le informazioni più di
che quando stavo lavorando a Google ero
lavorare nel team di go che significava quello
quando stavo scrivendo il codice andare ho avuto modo di I
ha ottenuto buone recensioni da persone come Rob
Anche Pike è davvero bello
spaventoso ma la cosa buona è che io
è stato in grado di imparare molto ma era vicino
l’ esperienza migliore che ho avuto su Google
stava imparando dagli altri e dal
il problema è che non puoi farlo
scala a tutti nel mondo perché
in realtà la revisione del codice è carina
tempo che stiamo cercando di fare è
per ridurre quel agli utenti abilitati a
fare il loro lavoro più velocemente e meglio così di più
le persone possono godere di quel codice
recensioni quindi mettendo tutto insieme
è guardare fuori con il nostro progetto
funziona già e non lo mostrerò
perché voglio lasciare un po ‘di tempo
in realtà io mostrerò reale veloce a
mostrarti come funziona come ne ho alcuni
tempo quindi se vai a richiederlo loro
erano tutti chiusi ora di nuovo vedrai
che il modo in cui queste parole è
qualcuno crea richieste di esempio e come
appena viene creato il corpo è già
rispondendo con un mucchio di diversi
pezzi di feedback qui per esempio è
dicendo la funzione di Haley qui in realtà
sembrava molto simile a questa altra funzione
utilizzare G RPC Harper lager questi nel
stesso file quindi questo è qualcosa che
probabilmente potrei notare il recensore
e dire che hai creato due funzioni
che sembra molto simile è probabilmente
vale fonderli insieme questi
In realtà , l’apprendimento automatico tra l’altro
perché non è solo cloni effettivi è
è abbastanza vicino che lo consideriamo
vale la pena unirli insieme ma
anche questo fa su tutta la
repository nelle dipendenze quindi se tu
finiscono per scrivere un codice che in realtà
sembra molto simile a una funzione che è
già scritto da qualche altra parte
sarà in grado di rilevare ciò e questo è
qualcosa che i revisori umani non possono fare
o possono farlo se conoscono tutto il
codice base completamente che tu sai che è
piuttosto raro per qualsiasi codice base, quindi cosa
altrimenti stiamo facendo bene la prima cosa
stiamo facendo è in realtà automatizzato
Stargate deve far valere in modo da capire
se il nuovo codice che invii
corrisponde allo stile di al
formattazione del codice che va bene

quindi piuttosto che dover applicare le regole
regole specifiche che possiamo applicare alla nostra formattazione
invece e forza la coerenza e giusto
assicurati che il nuovo codice sia simile
il precedente a destra che è per lo più
cosa vuoi fare in modo che possiamo farlo
automaticamente anche la previsione di ritorno
alla fine vorremmo fare automaticamente
revisione del codice assicurarsi che possiamo solo
dì che il pad dice sì puoi unire chi
sa forse un giorno non oggi di sicuro
generazione di codice se una volta abbiamo tutto
questi matrimoni siamo in grado di farlo
anche selezionare i test da un determinato test
Suite così dire hey voglio voglio
scrivi un test su queste cose trovate
a quale pezzo di codice corrisponde
la cosa che voglio testare e anche
analisi naturale e linguaggio naturale
analisi c’è una cosa c’è un blog
Pubblica dove sono recentemente i miei gitub dove li hanno
trovano pezzi di codice in base a
la descrizione del linguaggio naturale
funziona con la stessa cosa con il codice
ritorno alla fine dell’istruzione mi interessa davvero
a proposito di em
alimentando nuove generazioni di sviluppatori
per imparare il più possibile e il
il problema è che le recensioni del codice non sono il
il modo più efficiente per farlo, ma lo sono
ancora il migliore, quindi vogliamo essere sicuri
quel modo di insegnare che è così
grande diventa ancora più efficiente nel corso
il tempo così vorrà dire che in una coppia
di anni vuoi avere un lavoro no
perché se ci pensi il quando
quando è stato creato CAD, lo pensi
gli architetti lo hanno davvero considerato
perderanno il lavoro, no, in realtà
li ha autorizzati a creare cose migliori
ed è per questo che stiamo cercando di fare con
codice ml se vuoi sapere più fonte
di tecnologia e anche noi stiamo assumendo e anche
ci stiamo nascondendo da qualche parte in un tavolo
dietro a tutto il caffè, quindi se vuoi
per trovarci abbiamo uno stand che è molto
fuoco nascosto puoi anche trovare fantastico
codice lungo di memoria che è tutto il
ricerca che abbiamo usato e anche io ho
adesivi e una e-mail quindi se ne avete
domande extra puoi mandarlo lì
grazie
[Applausi]

Please follow and like us: