Recentemente è uscito , che mostra abbastanza bene la tendenza nell'apprendimento automatico degli ultimi anni. In breve: il numero di startup nel campo dell'apprendimento automatico è crollato drasticamente negli ultimi due anni.

Bene. Analizziamo «se la bolla è scoppiata», «come andare avanti» e parliamo di dove sia venuto tutto questo.
Per cominciare, parliamo di cosa è stato il motore di questa curva. Da dove è nata. Probabilmente tutti ricorderanno dell'apprendimento automatico nel 2012 al concorso ImageNet. Dopotutto, questo è il primo grande evento! Ma in realtà non è così. E anche la crescita della curva inizia qualche anno prima. Io la suddividerei in diversi momenti.
- Il 2008 è l'anno in cui viene coniato il termine “big data”. I veri prodotti hanno iniziato dal 2010. I big data sono direttamente collegati all'apprendimento automatico. Senza big data, non è possibile il funzionamento stabile degli algoritmi che esistevano all'epoca. E non si tratta di reti neurali. Fino al 2012, le reti neurali erano appannaggio di una minoranza marginale. Tuttavia, allora hanno iniziato a funzionare algoritmi completamente diversi, che esistevano già da anni, se non decenni: (1963, 1993), (1995), (2003),... Le startup di quegli anni erano principalmente legate all'elaborazione automatica di dati strutturati: casse, utenti, pubblicità, e molto altro.
La derivata di questa prima ondata è un insieme di framework, come XGBoost, CatBoost, LightGBM, ecc.
- Nel 2011-2012 hanno vinto diversi concorsi di riconoscimento delle immagini. Il loro utilizzo reale è stato un po' ritardato. Direi che le startup e le soluzioni consapevoli di massa hanno iniziato a comparire dal 2014. Ci sono voluti due anni per metabolizzare che le reti neurali funzionano davvero, per creare framework comodi da installare e avviare in tempi ragionevoli, sviluppare metodi che stabilizzassero e accelerassero il tempo di convergenza.
Le reti convoluzionali hanno permesso di affrontare le sfide della visione artificiale: classificazione delle immagini e degli oggetti sulle immagini, rilevamento degli oggetti, riconoscimento di oggetti e persone, miglioramento delle immagini, ecc., e così via.
- Anni 2015-2017. Boom di algoritmi e progetti legati a reti ricorrenti o loro analoghi (LSTM, GRU, TransformerNet, ecc.). Sono emersi algoritmi ben funzionanti per la “trascrizione vocale”, sistemi di traduzione automatica. In parte si basano su reti convoluzionali per l'estrazione delle caratteristiche di base. In parte sul fatto che sono riusciti a raccogliere set di dati veramente grandi e di alta qualità.

“La bolla è scoppiata? L'hype è surriscaldato? Sono morti come il blockchain?”
E già! Domani Siri smetterà di funzionare nel tuo telefono e dopodomani Tesla non distinguerà una curva da un canguro.
Le reti neurali sono già in azione. Sono presenti in decine di dispositivi. Permettono davvero di guadagnare, modificano il mercato e il mondo circostante. L'hype appare in un modo leggermente diverso:

Semplicemente, le reti neurali hanno smesso di essere qualcosa di nuovo. Sì, molte persone hanno aspettative eccessive. Ma un gran numero di aziende ha imparato ad applicare le reti neurali e a realizzare prodotti su quella base. Le reti neurali offrono nuove funzionalità, consentono di ridurre posti di lavoro e abbattere i costi dei servizi:
- Le aziende manifatturiere integrano algoritmi per l'analisi dei difetti nella catena di montaggio.
- Le aziende zootecniche acquistano sistemi di monitoraggio delle mucche.
- Mietitrebbiatrici automatiche.
- Call center automatizzati.
- Filtri in SnapChat. (almeno qualcosa di utile!)
Ma la cosa principale, e non così ovvia: “Non ci sono più idee nuove, o non porteranno capitale immediato”. Le reti neurali hanno risolto decine di problemi. E ne risolveranno ancora di più. Tutte le idee ovvie che c'erano hanno dato vita a molte startup. Ma tutto ciò che era a livello superficiale è già stato raccolto. Negli ultimi due anni non ho incontrato nemmeno una nuova idea per l'uso delle reti neurali. Nessun nuovo approccio (ok, ci sono alcune complicazioni con i GAN).
Ogni nuova startup è sempre più complessa. Non richiede più solo due ragazzi che allenano una rete neurale con dati aperti. Richiede programmatori, server, un team di annotatori, supporto complesso, ecc.
Il risultato è che le startup stanno diventando meno. Ma la produzione aumenta. Vuoi implementare il riconoscimento delle targhe automobilistiche? Ci sono centinaia di specialisti sul mercato con esperienza pertinente. Puoi assumere qualcuno e in pochi mesi il tuo dipendente realizzerà un sistema. Oppure puoi comprare uno già pronto. Ma realizzare una nuova startup?.. È follia!
È necessario creare un sistema di tracciamento dei visitatori: perché pagare per un sacco di licenze quando puoi creare il tuo in 3-4 mesi, adattandolo al tuo business?
Attualmente, le reti neurali stanno seguendo lo stesso percorso che hanno già attraversato decine di altre tecnologie.
Ricordate come è cambiato il concetto di 'sviluppatore di siti' dal 1995? Finché il mercato non sarà saturo di specialisti. I professionisti sono molto pochi. Ma posso scommettere che tra 5-10 anni non ci sarà molta differenza tra un programmatore Java e uno sviluppatore di reti neurali. Ci saranno abbastanza specialisti di entrambi sul mercato.
Ci sarà semplicemente una classe di compiti per i quali si risolveranno con le reti neurali. È emerso un problema — assumi uno specialista.
“E poi? Dove è l'intelligenza artificiale promessa?”
E qui c'è un piccolo, ma interessante mistero:)
Il stack tecnologico attuale, a quanto pare, non ci porterà all'intelligenza artificiale. Le idee, la loro novità — in gran parte si sono esaurite. Parliamo di cosa mantiene l'attuale livello di sviluppo.
Limitazioni
Iniziamo con le auto a guida autonoma. Sembra chiaro che costruire automobili completamente autonome con le tecnologie attuali è possibile. Ma dopo quanti anni succederà — non è chiaro. Tesla pensa che accadrà tra un paio d'anni —

Ci sono molti altri , che lo valutano in 5-10 anni.
Probabilmente, a mio avviso, tra 15 anni l'infrastruttura delle città cambierà così tanto che l'arrivo delle auto autonome diventerà inevitabile, sarà un prolungamento di essa. Ma questo non può essere considerato intelligenza. La moderna Tesla è un complesso sistema di filtraggio dei dati, ricerca e riaddestramento. Sono regole-regole-regole, raccolta di dati e filtri su di essi (ecco ne ho scritto più dettagliatamente, o guarda da questa annotazione).
Il primo problema
Ed è proprio qui che vediamo il primo problema fondamentale. Big data. È esattamente ciò che ha generato l'attuale ondata di reti neurali e apprendimento automatico. Ora, per fare qualcosa di complesso e automatico, servono molti dati. Non solo molti, ma veramente tanti. Sono necessari algoritmi automatizzati per la raccolta, l'annotazione e l'utilizzo. Se vogliamo far vedere alla macchina i camion contro il sole, prima dobbiamo raccogliere un numero sufficiente. Se vogliamo che la macchina non impazzisca per una bicicletta attaccata al portapacchi, servono più campioni.
E uno solo esempio non basta. Centinaia? Migliaia?

Il secondo problema
Il secondo problema è la visualizzazione di ciò che la nostra rete neurale ha compreso. È un compito molto non banale. Finora sono in pochi a capire come visualizzarlo. Questi articoli sono piuttosto recenti, sono solo alcuni esempi, anche se piuttosto distanti:
il focus sulle texture. Mostra bene su cosa la rete neurale tende a concentrarsi e cosa percepisce come informazione di partenza.

l'attenzione durante . In effetti, l'attenzione può essere utilizzata proprio per mostrare cosa ha causato tale reazione nella rete. Ho trovato queste cose sia per il debugging che per soluzioni di prodotto. Ci sono molti articoli su questo tema. Ma più complessi sono i dati, più difficile è capire come ottenere una visualizzazione sostenibile.

E sì, il vecchio buon set di 'guarda cosa c'è dentro la rete nei ', queste immagini erano popolari circa 3-4 anni fa, ma tutti si sono resi conto rapidamente che le immagini erano belle, ma il loro significato era scarso.

Non ho menzionato decine di altri strumenti, metodi, hack e ricerche su come visualizzare gli interni della rete. Questi strumenti funzionano? Aiutano a capire rapidamente qual è il problema e a fare debug della rete?.. Estrarre gli ultimi percentuali? Beh, più o meno così:

Puoi guardare qualsiasi competizione su Kaggle. E la descrizione di come la gente realizza le soluzioni finali. Abbiamo creato tra 100-500-800 milioni di modelli e ha funzionato!
Certo, sto esagerando. Ma questi approcci non danno risposte rapide e dirette.
Con un'esperienza adeguata, provando varie opzioni, si può emettere un verdetto su perché il tuo sistema ha preso quella decisione. Ma modificare il comportamento del sistema sarà difficile. Mettere una toppa, spostare la soglia, aggiungere un dataset, utilizzare un'altra rete di backend.
Il terzo problema
Il terzo problema fondamentale — le reti neurali non insegnano logica, ma statistica. Statisticamente questo :

Logicamente — non sembra molto simile. Le reti neurali non apprendono nulla di complesso, a meno che non siano costrette a farlo. Insegnano sempre caratteristiche massimante semplici. Ci sono occhi, naso, testa? Allora è un volto! Oppure porta un esempio in cui gli occhi non significherebbero un volto. E di nuovo — milioni di esempi.
C'è tanto spazio in fondo
Direi che proprio questi tre problemi globali stanno attualmente limitando lo sviluppo delle reti neurali e dell'apprendimento automatico. E dove questi problemi non limitano — è già attivamente utilizzato.
È la fine? Le reti neurali si sono fermate?
Non si sa. Ma, certo, tutti sperano di no.
Esistono molti approcci e direzioni per risolvere quei problemi fondamentali che ho illustrato sopra. Ma finora nessuno di questi approcci ha permesso di fare qualcosa di veramente nuovo, di risolvere qualcosa che non era mai stato risolto prima. Fino ad ora, tutti i progetti fondamentali sono basati su approcci stabili (Tesla), o rimangono progetti sperimentali di istituti o corporazioni (Google Brain, OpenAI).
Se parliamo in termini semplici, la direzione principale è creare una rappresentazione ad alto livello dei dati di input. In un certo senso, una sorta di 'memoria'. L'esempio più semplice di memoria è rappresentato da vari 'Embedding' — rappresentazioni di immagini. Ad esempio, tutti i sistemi di riconoscimento facciale. La rete impara a ottenere da un volto una rappresentazione stabile che non dipende da rotazione, illuminazione, risoluzione. In sostanza, la rete minimizza la metrica 'volti diversi — lontani' e 'uguali — vicini'.

Per un tale apprendimento ci vogliono decine e centinaia di migliaia di esempi. Tuttavia, il risultato presenta alcuni germogli di 'One-shot Learning'. Ora non abbiamo bisogno di centinaia di volti per ricordare una persona. Basta un solo volto, e tutto — noi !
Solo che c'è un problema... La rete può apprendere solo oggetti abbastanza semplici. Cercando di distinguere non i volti, ma ad esempio 'persone in base all'abbigliamento' (task ) — la qualità scende di molte ordine. E la rete non riesce più a imparare cambi di angoli chiaramente evidenti.
Inoltre, imparare su milioni di esempi è anche una forma di intrattenimento un po' noiosa.
Ci sono studi che mirano a ridurre significativamente il campionamento. Ad esempio, posso ricordare subito uno dei primi lavori su OneShot Learning :

Ce ne sono molti, ad esempio o o .
Meno uno: di solito l'apprendimento funziona abbastanza bene su alcuni semplici esempi “MNIST”. Ma quando si passa a compiti più complessi, è necessaria una grande base, un modello di oggetti, o qualche tipo di magia.
In generale, il lavoro sull'apprendimento One-Shot è un tema molto interessante. Si trovano molte idee. Ma la maggior parte delle volte i due problemi che ho elencato (pre-addestramento su un enorme dataset / instabilità su dati complessi) ostacolano notevolmente l'apprendimento.
D'altra parte, al tema dell'Embedding si avvicinano le GAN - reti antagoniste generative. Avete sicuramente letto su Habr un sacco di articoli a riguardo. (, ,)
Una caratteristica delle GAN è la formazione di uno spazio interno di stati (essenzialmente lo stesso Embedding), che consente di generare un'immagine. Queste possono essere , possono essere .

Il problema delle GAN è che più complesso è l'oggetto generato, più difficile è descriverlo nella logica “generatore-discriminatore”. Di conseguenza, tra le applicazioni reali delle GAN, quelle più note sono solo DeepFake, che nuovamente manipola le rappresentazioni dei volti (per le quali esiste una grande base di dati).
Ho trovato molto poche altre applicazioni utili. Di solito, si tratta di qualche cianfrusaglia con l'aggiunta di dettagli nelle immagini.
E di nuovo. Nessuno ha idea di come questo ci permetterà di muoverci verso un futuro luminoso. Rappresentare logiche/spazi in una rete neurale è positivo. Ma è necessaria un'enorme quantità di esempi, non capiamo come la rete neurale rappresenti tutto ciò, non capiamo come costringerla a memorizzare una rappresentazione realmente complessa.
L'apprendimento per rinforzo è un approccio completamente diverso. Sicuramente ricorderete come Google ha battuto tutti a Go. Le recenti vittorie in Starcraft e in Dota. Ma qui le cose non sono affatto così rosee e promettenti. Il meglio riguardo all'apprendimento per rinforzo e le sue complessità lo spiega .
Se riassumiamo brevemente quanto scritto dall'autore:
- I modelli 'out of the box' non funzionano / funzionano male nella maggior parte dei casi.
- I problemi pratici si risolvono più facilmente in altri modi. Boston Dynamics non utilizza l'apprendimento per rinforzo a causa della sua complessità / imprevedibilità / complessità computazionale.
- Affinché l'apprendimento per rinforzo funzioni, è necessaria una funzione complessa. Spesso è difficile crearla / scriverla.
- È difficile addestrare i modelli. Si finisce per spendere tantissimo tempo per farli funzionare e portarli fuori dai minimi locali.
- Di conseguenza, è difficile ripetere il modello, l'instabilità del modello con i minimi cambiamenti.
- Spesso si adatta a qualche tipo di regole irrilevanti, fino al generatore di numeri casuali.
Il punto chiave è che il RL attualmente non funziona in produzione. Google ha alcune esperimenti ( , ). Ma non ho visto nessun sistema di prodotto.
Memoria. Il difetto di tutto ciò che è stato descritto sopra è la mancanza di struttura. Uno degli approcci che si tenta di applicare è fornire all'intelligenza artificiale accesso a una memoria separata. In modo che possa registrare e riscrivere i risultati dei suoi passaggi. Così, l'intelligenza artificiale può essere definita dallo stato attuale della memoria. Questo è molto simile ai processori e computer classici.
La più nota e popolare — di DeepMind:

Sembra che questa sia la chiave per comprendere l'intelligenza? Ma in realtà no. Il sistema ha comunque bisogno di un'enorme mole di dati per l'addestramento. E funziona principalmente con dati tabulari strutturati. Allo stesso tempo, quando Facebook un problema simile, scelsero di dire "basta con la memoria, rendiamo solo la rete neurale più complessa, e mettiamoci più esempi — e lei si allenerà da sola".
Disentanglement. Un altro modo per creare una memoria significativa è prendere gli stessi embedding, ma durante l'addestramento introdurre criteri aggiuntivi che consentano di estrarre in essi "significati". Ad esempio, vogliamo addestrare una rete neurale a distinguere il comportamento delle persone in un negozio. Se seguissero il percorso standard, avremmo dovuto creare una decina di reti. Una cerca la persona, la seconda determina cosa sta facendo, la terza la sua età, la quarta — il sesso. Una logica separata analizza la parte del negozio in cui si trova/si sta addestrando. La terza determina la sua traiettoria, e così via.
Oppure, se ci fossero dati infiniti, si potrebbe addestrare una sola rete su tutti gli esiti possibili (è ovvio che non è possibile raccogliere un tale volume di dati).
L'approccio del disassemblaggio ci dice: alleniamo la rete in modo che possa riconoscere i concetti da sola. In modo che possa formare un embedding dai video, in cui un'area definisce l'azione, un'altra la posizione sul pavimento nel tempo, un'altra ancora l'altezza di una persona, e un'ulteriore area il suo sesso. Durante l'addestramento, sarebbe ideale non fornire alla rete suggerimenti su questi concetti chiave, ma permettere che essa stessa identifichi e raggruppi le aree. Articoli come questi sono piuttosto rari (alcuni di essi , , ) e in generale sono abbastanza teorici.
Tuttavia, questa direzione, almeno teoricamente, dovrebbe risolvere i problemi elencati all'inizio.

Decomposizione dell'immagine per parametri come 'colore delle pareti/colori del pavimento/forma dell'oggetto/colore dell'oggetto/e così via'

Decomposizione del viso per parametri come 'dimensione, sopracciglia, orientamento, colore della pelle, ecc.'
Altro
Esistono molte altre direzioni meno globali, che permettono di ridurre le basi, lavorare con dati più eterogenei, ecc.
Attention. Probabilmente non ha senso evidenziare questo come un metodo a sé stante. È semplicemente un approccio che potenzia gli altri. Ci sono molti articoli dedicati a questo (,,). Il concetto di Attention è quello di rafforzare la reazione della rete proprio sugli oggetti significativi durante l'addestramento. Spesso tramite qualche indicazione esterna o una piccola rete esterna.
Simulazione 3D. Se si sviluppa un buon motore 3D, si possono spesso coprire il 90% dei dati di addestramento (ho persino visto un esempio in cui quasi il 99% dei dati erano coperti da un buon motore). Ci sono molte idee e trucchi per far funzionare una rete addestrata su un motore 3D con dati reali (fine tuning, trasferimento di stile, ecc.). Ma spesso sviluppare un buon motore è di dieci ordini di grandezza più difficile rispetto alla raccolta dei dati. Esempi in cui sono stati sviluppati motori:
Addestramento di robot (, )
Formazione di prodotti nei negozi (ma in due progetti che abbiamo realizzato, siamo riusciti a farne a meno senza problemi).
Addestramento in Tesla (di nuovo, il video sopra).
Conclusioni
L'intero articolo è, in qualche modo, una conclusione. Probabilmente, il messaggio principale che volevo trasmettere è: 'la pacchia è finita, le reti neurali non forniscono più soluzioni semplici'. Ora bisogna rimboccarsi le maniche e costruire soluzioni complesse. Oppure lavorare sodo per fare ricerche scientifiche complesse.
Però, in realtà, il tema è discutibile. Forse i lettori hanno esempi più interessanti?
Fonte: habr.com
