Tutto sulle auto a guida autonoma spiegate per i non ingegneri

Ti prometto che non dovrai utilizzare Google o un dizionario durante la lettura di questo. In questo post ti insegnerò i concetti chiave di tutto, dal "deep learning" alla "visione artificiale". Usando l'inglese semplice morto.

Probabilmente sai già cosa sono le auto a guida autonoma e che sono considerate la merda di droga in questi giorni, quindi se non ti dispiace, salterò qualsiasi saggio di introduzione al liceo. :)

Ma non sto saltando la mia introduzione: ciao sono Aman, sono un ingegnere e ho una bassa tolleranza per le discussioni inutilmente "sofisticate". Scrivo saggi su Medium per semplificare le cose difficili. La semplicità è sottovalutata.

Come funzionano le auto a guida autonoma?

Chiamate anche auto autonome, lavorano sulla combinazione di 3 fantastici campi della tecnologia. Ecco una breve introduzione a ciascuno di essi, e poi andremo in profondità. Entro la fine di questo saggio, saprai abbastanza su tutte queste tecnologie per essere in grado di tenere una conversazione intelligente con un ingegnere o un investitore in questi campi. Cose come "reti neurali artificiali" non suoneranno più come incantesimi o parole di film di fantascienza.

A proposito, ho classificato alcune cose in "sistemi" approssimativamente separati, ma ovviamente in pratica questi sistemi sono tutti altamente interconnessi senza confini chiaramente definiti.

Computer Vision (ooooooohhhhh suona così bene): la tecnologia che consente all'auto di "vedere" l'ambiente circostante. Questi sono gli occhi e le orecchie della macchina. L'intero sistema si chiama percezione. Fondamentalmente usiamo:
1. Buone vecchie fotocamere, che sono le più importanti (le semplici fotocamere da 2 megapixel possono funzionare bene),
2. radar, che sono i secondi più importanti. Lanciano onde radio e come gli ultrasuoni rilevate le onde che rimbalzano sugli oggetti e ritornano,
3. e laser, che sono belli da avere ma sono piuttosto costosi al giorno d'oggi, e non funzionano quando piove o nebbioso. Chiamato anche "lidar". Puoi dire che sono come un radar, ma offrono una qualità dell'immagine leggermente migliore e i laser possono andare abbastanza lontano in modo da avere una maggiore visuale. I laser di solito sono posizionati in una ruota che gira sulla parte superiore della macchina in modo da girare molto velocemente, osservando l'ambiente che li circonda. Qui puoi vedere un Lidar posto in cima alla macchina di Google:

Dai un'occhiata al sensore Lidar in alto. È un raggio laser rotante.

Apprendimento profondo: è una tecnologia che consente all'auto di prendere le decisioni di guida da sola, sulla base delle informazioni raccolte attraverso le informazioni sulla visione computerizzata sopra descritte. Questo è ciò che allena il "cervello" della macchina. Ne parleremo nel dettaglio tra un minuto.

Combinando i due anche a livello base, puoi fare alcune cose interessanti. Ecco un progetto che ho realizzato, rilevando le corsie e altre auto sulla strada utilizzando solo un feed della telecamera.

Robotica: puoi vedere tutto, puoi pensare e prendere decisioni. Ma se le decisioni del tuo cervello (ad esempio: sollevare la gamba sinistra) non riescono a raggiungere i muscoli della gamba, la tua gamba non si muoverà e non sarai in grado di camminare. Allo stesso modo, se la tua auto ha un "cervello" (= un computer con software di apprendimento profondo), il computer deve connettersi con le parti della tua auto per poter controllare l'auto. In parole povere, queste connessioni e le relative funzioni costituiscono la "robotica". Ti consente di prendere le decisioni del cervello del software e utilizzare macchinari per girare effettivamente lo sterzo, premere e rilasciare l'acceleratore, i freni ecc.

Navigazione: anche dopo aver ricevuto tutto quanto sopra, alla fine devi ancora capire "dove" ti trovi sul pianeta e le indicazioni per dove vuoi andare. Ci sono diversi aspetti a questo proposito, come il GPS (il tuo buon vecchio dispositivo di navigazione, che prende le informazioni sulla posizione dai satelliti) e le mappe memorizzate, ecc. Puoi anche mescolare i dati di visione del computer.

Quindi l'auto controlla il suo sterzo, i suoi freni ecc. In base alle decisioni prese dal suo cervello, e queste decisioni si basano sulle informazioni ricevute attraverso telecamere, radar e laser e sulle direzioni che riceve dai programmi di navigazione. Questo completa l'intero sistema di un'auto a guida autonoma.

Tidbit (sentiti libero di saltare)
Le auto a guida autonoma sono disponibili in molti "livelli", dal livello 1 al livello 5, in base alla loro indipendenza e alla scarsa assistenza umana necessaria durante la guida. Oh, e c'è anche il livello 0, che è la tua buona vecchia macchina manuale.

Il livello 5 indica che l'auto sarà al 100% a guida autonoma. Non avrà uno sterzo o freni, perché non è pensato per essere guidato da persone. Queste auto non esistono ancora e le auto all'avanguardia sono ancora al livello 3 e al massimo al livello 4.

Deep Learning Spiegato per scimpanzé come me stesso

Supponiamo che tu fossi un appassionato di safari nella natura e io fossi il tuo amico super-idiota. Vado a fare un safari in Africa la prossima settimana. E tu mi dai un consiglio: "Aman, stai lontano dai fottuti elefanti."

E ti chiedo di rispondere: "Che cos'è un elefante?"

Molto probabilmente dirai: "Stupido idiota, gli elefanti sono ... ok non importa, ecco una fotografia di un elefante, ecco come appare. Stai lontano da loro. "

E poi vado a fare un safari.

La prossima settimana scoprirai che sono ancora riuscito a imbattermi in un elefante e ho quasi finito per farmi calpestare. Mi chiedi cosa è successo.

Rispondo: "Non lo so, ho visto questo enorme animale ma non assomigliava per niente alla foto che mi hai mostrato, quindi ho pensato che fosse sicuro giocare con me e sono andato avanti e ho tirato la piccola cosa scodinzolante. Ecco la fotografia dell'animale che ho scattato prima ... "

Tu: ……….

Tu: “Va bene, Aman. Mi dispiace, mia cattiva. Mi aspettavo troppo dal tuo cervello. Lascia che ti dia un "cheat code" che devi seguire la prossima volta che sarai nel safari. Se vedi qualcosa che sembra marrone scuro da tutti gli angoli, sembra avere quattro gambe coriacee come pilastri, grandi orecchie che sbattono e un naso lungo e spesso che esce dalla sua faccia come un grosso tubo, ed è grasso e più grande di te, allora quello è un elefante e devi stare lontano. ”

Il mese prossimo torno di nuovo al safari (ehi, è la mia ipotetica storia e posso andare al safari tutte le volte che voglio) e questa volta non mi imbatto in nessun elefante, perché il tuo "cheat code" funziona bene.

Come ti è venuto in mente quel "cheat code"? È perché hai già visto un elefante da tutti i lati diversi e hai scelto alcune caratteristiche di un elefante che rimangono piuttosto uguali indipendentemente dall'angolazione da cui vedi l'elefante. Quindi avevi molti dati sugli elefanti a cui pensare, e questo ti ha aiutato a formare un quadro mentale dei segni più ovvi di un elefante, e me li ha dati come un cheat code. Renditi conto che non devo davvero "sapere" esattamente cosa sia un elefante, ho solo un cheat code che mi aiuta a riconoscere un elefante. Ma quel cheat code funziona quasi allo stesso modo di sapere cosa sono gli elefanti!

Ma perché non era giusto mostrarmi solo una fotografia (quella che hai mostrato in precedenza) e supporre che mi fosse bastata l'idea? Dato che io (essendo un idiota ovviamente) ho preso quella fotografia come la "santa verità" - ho pensato che ogni elefante apparirà * esattamente * uguale a quella fotografia, e sarà una corrispondenza quasi perfetta.

Il Deep Learning funziona in modo MOLTO simile.

Ecco le basi del deep learning: reti neurali artificiali, che spiegherò ora. Sono anche chiamate reti neurali profonde.

Innanzitutto, suppongo che tu conosca un po 'di matematica al liceo. Sai cos'è una matrice, vero? E che puoi moltiplicare una matrice con qualche altra matrice? Questo è letteralmente l'unico pezzo di matematica che ho bisogno che tu sappia per questo saggio. Ecco un aggiornamento:

Ricorda cos'è una matrice.

Una rete neurale artificiale (ANN) è davvero roba fantastica, ma ti accompagnerò nel viaggio con piccoli passi. Vedete, il cervello umano è costituito da una rete di molte cellule chiamate "neuroni", che è l'ispirazione per le ANN. Ecco come appare sulla carta:

Un ANN è una scatola magica, che accetta un input ed emette un output. Ad esempio, supponiamo di volere un ANN magico che contiene una fotografia e può dire se la fotografia è di un elefante o no. Metti una foto nella scatola e esce una risposta "sì" o "no".

Oppure, metti una fotografia della strada e vuoi che l'ANN ti dica se dovresti rallentare o accelerare. E la risposta viene fuori, "accelera!"

Come succede? Come puoi creare questa ANN?

In parole povere, un ANN è come una versione semplice di un cervello umano. Per prima cosa ti alleni con i dati. Quando dai dati a un ANN, crea un "cheat code" che lo aiuta a prendere decisioni la prossima volta. (Fornirò un esempio dettagliato in un secondo) Questo "cheat code" è chiamato "pesi" della RNA. Hai visto quella "matrice" prima? Puoi dire che la prima matrice [x y] matrice è un input e la seconda matrice [u w] matrice è l'insieme di pesi o cheat code. Quando si moltiplica l'input per i pesi, si ottiene una risposta.

La RNA può essere di molte varietà diverse e, in base a come la si progetta, può dare una risposta "sì o no" o, ad esempio, può dare un numero specifico o un elenco di numeri diversi, ecc. può scegliere quale tipo di output fornirà e che tipo di input riceverà, e quanto sarà grande e complesso, il che lo rende estremamente versatile. Puoi costruire reti neurali che catturano video come input, campioni vocali, immagini o paragrafi di testo, ecc. Naturalmente, tutti questi vengono convertiti automaticamente in numeri su un computer e ci sarà una matrice enorme di "pesi" che sarà moltiplicato per quell'input, generando un output che è la tua risposta.

Ma sono sicuro che ancora non capisci completamente. Come si "allena" l'ANN per darti risultati significativi?

Supponiamo che tu voglia addestrare un ANN per riconoscere gli elefanti.

Quindi si crea una nuova ANN che accetta un certo tipo di input e fornisce un determinato tipo di output. All'inizio, questo ANN non sa davvero nulla del problema che sta cercando di risolvere. È proprio come me dall'esempio originale dell'elefante - prima che tu mi mostrassi la prima fotografia di un elefante, non avevo idea di cosa fosse un elefante. Se mi avessi chiesto proprio lì e poi di cercare un elefante in una fotografia, probabilmente avrei scelto qualcosa a caso. Quindi puoi dire che inizialmente avevo un po 'di trucchi casuali, giusto? Ma nel momento in cui mi mostri UN elefante e mi dici che è un elefante, improvvisamente aggiorno il mio cheat code casuale e ora ho un'idea di cosa siano gli elefanti. Il mio cheat code non è più casuale, e se vedessi un elefante dalla parte anteriore probabilmente sceglierei la risposta giusta! Quindi ho aggiornato il mio cheat code quando mi hanno dato ulteriori informazioni. E più sono diverse le fotografie di elefanti che ho, migliore è il mio codice cheat nel dare la risposta giusta. Ancora non so "cosa sia" un elefante, ma ho visto abbastanza correlazione in diverse fotografie per riconoscere le caratteristiche più speciali di un elefante e stare lontano da loro.

Allo stesso modo, quando crei per la prima volta un ANN, inizi a dargli un insieme casuale di pesi (= cheat code) per iniziare. Quindi gli mostri un'immagine di input (fotografia di un elefante) e gli dici anche l'output che ti aspetti (rispondi "sì"). La bellezza di ANNs è che se gli dai un esempio di input e il suo output corrispondente, regolerà il suo cheat code in modo che possa ripetere quella risposta corretta la prossima volta. Cambierà i numeri in quella matrice di pesi più dati gli darai, per essere in grado di abbinare le tue risposte. Ecco perché, puoi iniziare con una serie casuale di pesi e con il tempo l'ANN li regolerà in modo che funzionino bene come cheat code! Va bene vero? È così che "ANN" impara. Più dati vengono forniti, più regola i suoi pesi e più accurati diventano.

Come ho già spiegato in precedenza, come ciò avvenga è attraverso la moltiplicazione della matrice. La matrice di pesi per questo ANN avrà valori tali che se lo moltiplichi con l'immagine di input (l'immagine verrà convertita in numeri), puoi ottenere una risposta. Di solito, non esiste solo una matrice di pesi, ma una serie di matrici che si moltiplicano una dopo l'altra. Ma il concetto è lo stesso che vedi nell'immagine qui sotto:

Rappresentazione della matrice approssimativa (ho realizzato questo diagramma da sola) :)

Ma questo non è abbastanza. Ricorda che la RNA non è intelligente, dopotutto funziona con i cheat code. Se gli hai dato solo fotografie di elefanti da guardare e continui a dire "sì" per ogni foto, cosa pensi che farà?

Sarà pigro e supponiamo che ogni fotografia sia un elefante! Adatterà i suoi pesi (cheat code) in modo tale che indipendentemente dalla foto che viene data, emetterà sempre un "sì". Questo si chiama "underfitting", il che significa sostanzialmente che hai fatto l'errore di pensare che il tuo amico idiota sia intelligente. Il tuo ANN è diventato distorto verso una risposta particolare. Per evitare ciò, è necessario fornire anche contro-esempi che hanno la risposta "no". Quindi mescoli anche molte foto di esempio che non sono di elefanti, ma anche leoni, mucche, esseri umani, scoiattoli, pikachus e bulbasaurs, cavallucci marini e ... (scusami, sono stato portato via) e ora l'ANN sarà costretta a regola il suo cheat code più attentamente. Ora stai aumentando la sua precisione e rendendola più affidabile! Oppure, puoi anche avere un "overfitting", quando il cheat code dell'ANN è ancora pigro ma ora è così super intelligente che inizia a memorizzare tutti i dati di allenamento che gli dai! Questo accade spesso quando la tua ANN è molto grande e profonda, quindi in un certo senso inizia a memorizzare tutte le informazioni che gli dai. Diventa super bravo a rispondere ai tuoi dati di allenamento ma fallisce quando viene dato un nuovo esempio che non ha mai incontrato prima. Non funziona più come un cheat code, ma piuttosto è diventato come un dizionario di immagini. Puoi evitarlo riducendo le dimensioni del tuo modello (facendo cadere casualmente alcuni dei pesi) o aumentando la varietà di dati. Il primo si chiama "dropout" (piuttosto semplice ma un'idea molto folle), e il secondo si chiama "bilanciamento del set di dati".

Hai anche imparato la tua lezione dall'esempio del safari in precedenza, e ora starai attento a mostrargli altre fotografie di elefanti da molte angolazioni diverse in modo che non commetta lo stesso errore del tuo idiota amico. Questo è il motivo per cui i ricercatori / ingegneri spesso "aumentano" i loro set di dati di addestramento per includere riflessi speculari o versioni più chiare / scure delle stesse immagini, ecc., Per aumentare la varietà dei loro dati. Ciò aiuta a garantire che la RNA possa diventare il più accurata possibile. Volete che il cheat code sia così super "robusto" che funzioni così come i veri umani, o meglio.

Entro la fine dell'addestramento, con dati e aumenti sufficientemente equilibrati, ecc., Avrai un ANN addestrato (chiamato anche modello addestrato) che può riconoscere gli elefanti nelle immagini con ragionevole accuratezza e anche sapere quando non riconoscere un elefante.

"Overfitting", la parola che hai incontrato solo due paragrafi fa (= la rete diventa troppo intelligente e agisce come se avesse appena memorizzato i tuoi dati), è un termine molto comune nel gergo Deep Learning e ora sai cosa significa. (Il underfitting è un problema meno preoccupante perché è abbastanza ovvio da diagnosticare e facile da affrontare.) Qualcuno potrebbe dire: "oh mio Dio il mio modello non funziona così bene su nuovi dati, immagino che sia troppo adatto" e dirai, "Hai provato ad aumentare i dati di allenamento?" E diventerai immediatamente proprietario della notte. L'altra persona potrebbe anche supporre che tu stesso sia un ingegnere del deep learning! (Se lo fanno, dì loro "Oh no, seguo semplicemente Aman su Medium". Quando chiedono chi sono, per favore fingi e dì "oh non lo sai? È il ragazzo più figo in questo spazio!").

Il processo di regolazione dei pesi (aggiornamento del cheat code basato sui dati) comporta qualcosa chiamato backpropagation. Durante l'allenamento, ogni volta che mostri alla ANN un input di esempio (diciamo un gattino) e poi digli la risposta ("no, non è un elefante!"), Proverà prima a usare l'attuale cheat code per trovare il suo risposta. Se la risposta è GIUSTA, non è necessario modificare il codice cheat, giusto? La pigra ANN aggiornerà il suo cheat code solo quando commetterà un errore. Quindi, solo se la risposta dell'ANN era ERRATA, dovrà adattare leggermente i suoi pesi (= cheat code) e testare nuovamente i pesi. Questo algoritmo di regolazione si chiama BACKPROPAGATION. L '"errore" commesso dall'ANN invia increspature attraverso la matrice dei pesi, modificando molti dei loro valori. Quindi puoi dire che l'errore si propaga nuovamente attraverso la rete. Ancora una volta, questo è il motivo per cui puoi sempre creare l'ANN con pesi casuali inizialmente e nel tempo li regolerà da solo.

In parole povere, se porti un cheat code a un esame e sbagli alcune delle tue risposte, allora probabilmente aggiornerai i tuoi cheat code per il prossimo esame in quell'argomento per avere una maggiore precisione. Il processo di modifica / riscrittura del cheat code dopo ogni esame, basato sul suo grado, è chiamato backpropagation.

Ora scorri fino all'immagine grafica di una "rete neurale" che ho incollato sopra. Vedi quella cosa chiamata "strato nascosto"? Bene, l'ANN è composta da strati di neuroni, questi neuroni portano i pesi come valori. Si chiamano "strati nascosti" perché non è necessario conoscere i pesi esatti nella rete! Puoi sicuramente stampare i valori, ma è inutile guardare una matrice che può essere rappresentata da milioni o miliardi di piccoli numeri. È un cheat code e si aggiorna in base agli input che gli dai e questo è tutto ciò che devi sapere.

Questo è il motivo per cui l'apprendimento profondo è spesso considerato un sistema di "scatola nera". Se hai mai programmato prima in qualsiasi lingua, sei abituato a scrivere istruzioni esplicite per il programma per tutto. Ma qui, non puoi vedere il "cheat code" sottostante che il computer ha creato per se stesso da usare al posto di un algoritmo scritto.

Tornando alle auto a guida autonoma, supponiamo che tu abbia scattato foto da diverse telecamere intorno all'auto in un particolare millisecondo, e abbia preso anche tutti i dati raccolti dal radar e dal lidar (= laser), e li abbia combinati insieme in un elenco, e usato quell'elenco come input per la ANN della tua auto. E l'output che ti aspetti dalla rete è un lungo elenco dell'angolo di sterzata, il valore dell'acceleratore / frenata, se accendere o meno i fari, se suonare il clacson o meno, ecc. Queste sono le tue "etichette" che devono essere previste da l'ann.

Il tipo di apprendimento profondo in cui si allena esplicitamente la RNA utilizzando dati specifici raccolti dagli esseri umani, è chiamato "apprendimento supervisionato". Per ogni campione di dati, hai i dati e hai l'etichetta.

Ecco un esempio di come "allenerai" il cervello dell'auto. Per prima cosa guiderai semplicemente l'auto normalmente da solo, ma continuerai a raccogliere i dati di input da sensori e telecamere ecc. C'è anche un'apparecchiatura che misura, per ogni millisecondo di dati, l'angolo di sterzata e la pressione dell'acceleratore ecc. Che hai fatto durante la guida. Quindi, una volta tornato a casa, puoi iniziare a "addestrare" l'ANN su tutti i dati raccolti durante la guida. L'ANN aggiornerà il suo codice cheat per prendere l'input di visione del computer e provare a imitare le tue decisioni di guida il più vicino possibile. Questo è noto come clonazione comportamentale ed è ciò che la maggior parte delle case automobilistiche sta facendo al giorno d'oggi: raccogliere dati di guida e rendere le proprie auto "pratiche". Dopo ogni viaggio di allenamento, l'auto diventerà sempre più brava a prendere decisioni. La clonazione comportamentale viene utilizzata solo per piccole parti del processo di guida.

A parità di altre condizioni, i dati di guida sono il principale fattore vincente nella corsa allo sviluppo di auto a guida autonoma.

Ora, sai cos'è il "Deep Learning" e cosa fa. Sai cosa sono le reti neurali profonde (= ANN) e come funzionano (pesi = cheat code, backpropagation = regolazione dei pesi in base a un dato esempio di test). Sai anche che dovresti avere un set di dati ampio ed equilibrato in modo che la rete non si adatti troppo (diventa pigro o troppo intelligente nell'impostare i suoi cheat code).

Congratulazioni! Non ti prendo in giro, questo è più un risultato di quanto pensi!

Visione computerizzata

Ricordi questa scena di The Terminator?

Schwarzenegger entra in un bar nudo e cerca qualcuno da cui prendere i vestiti. Questo deve essere ciò che ti viene in mente quando pensi alla "visione del computer" e hai in parte ragione.

Le auto a guida autonoma possono anche vedere il mondo in quel modo, ma non sono ancora lontane dalla raffinatezza che puoi vedere lì. Lo scopo principale delle tecniche di visione computerizzata è elaborare le immagini della telecamera per rilevare le corsie, tracciare altri veicoli e pedoni, cercare eventuali dossi o buchi nella strada, misurare la distanza tra l'auto e altri oggetti ecc.

Non esiste una sola tecnica o tecnologia di base per la visione artificiale, anzi, spesso si tratta di una semplice elaborazione delle immagini. Sei limitato solo dalla tua immaginazione e dalla tua capacità di progettare algoritmi complessi e se sei bravo in geometria, questo è un altro vantaggio. Ad esempio, un modo diffuso di elaborare le immagini della videocamera prevede di osservare la rapidità con cui i colori cambiano in direzione orizzontale e verticale. Questo si chiama "gradiente" e può essere usato per trovare i bordi. Ecco un esempio:

Questi sono tutti creati utilizzando tecniche semplici che utilizzano una libreria popolare di funzioni di visione artificiale, denominata OpenCV. Dovresti conoscere OpenCV, perché è la libreria più popolare per questo scopo. Ogni robotica o ragazzo di deep learning lo sa.

Prendendo ulteriormente l'esempio sopra, le immagini che vedi sono semplicemente una rappresentazione di uno e zeri su un rettangolo. Quelli sono bianchi e gli zeri sono neri! Puoi selezionare i pixel in una qualsiasi regione dell'immagine e giocarci. Questo è il modo in cui ho rilevato le linee di corsia e ho prodotto il mio progetto come visto all'inizio di questo post sul blog.

Un'altra tecnica comune utilizzata nella visione artificiale per rilevare oggetti è chiamata visione stereo. Non lasciarti scappare dal nome apparentemente complesso, la visione stereo significa semplicemente guardare qualcosa con più di un occhio (lo fai sempre). Quando vedi qualcosa con due occhi, hai una stima migliore di quanto è distante e di che forma ha. Allo stesso modo, le auto usano più di una telecamera su entrambi i lati e combinano le immagini per vedere il mondo in modo più realistico.

Che dire di condizioni avverse come neve, pioggia, ecc. Quando è difficile vedere la strada? Bene, non dimentichiamo che gli altri due sensori (radar e laser). Anche quando due sensori non funzionano così bene, il sistema è progettato in modo tale che il terzo sia comunque abbastanza affidabile (ma è un campo di ricerca in corso e non siamo ancora perfetti). Inoltre, se le reti neurali dell'auto sono già state addestrate per guidare in tali condizioni, l'auto dovrebbe avere un'idea di come prendere decisioni. Ancora una volta, come ho detto prima, la priorità principale è la raccolta di dati sufficienti. Più ti alleni, migliore diventa l'auto. Periodo.

Non approfondirò la visione del computer, in quanto si tratta di un campo molto ampio. Sappi solo che non è fantascienza e non c'è nulla di "magico" al riguardo. Si tratta solo di usare la tua immaginazione per giocare con le immagini. Esistono altre tecniche, di cui puoi leggere in questa pagina molto breve e semplice:

Robotica e navigazione

In realtà, non ho intenzione di passare troppo tempo qui. La robotica è piuttosto semplice (non hai bisogno di immaginazione immaginaria per capire cosa succede) - sostanzialmente devi sapere qualcosa chiamato attuatore.

Un attuatore è un dispositivo che accetta un segnale elettrico come input e lo converte in un'azione fisica. Non è troppo complicato, spesso ha solo un motore al suo interno che ruota di un certo angolo in base al valore del segnale che riceve. Gli attuatori sono disponibili in tutte le forme e dimensioni, ce n'è uno sul volante, uno per l'acceleratore, i freni, le marce, il motore, ecc. L'idea.

Per la Navigazione, oltre alle tecnologie GPS / mappe / computer vision, dovresti anche conoscere una tecnica davvero interessante chiamata "dead reckoning". Implica il calcolo della posizione attuale in base alla velocità e alla distanza percorsa e la conoscenza della storia di tutte le svolte compiute fino al momento presente, ecc. Ricordi il film di Sherlock Holmes sucky con Robert Downey Jr? C'è una scena in cui viene rapito e portato in una carrozza trainata da cavalli e bendato, ma dopo che arrivano a destinazione sa magicamente esattamente dove si trova. Guarda i primi minuti di questa scena e capirai cos'è il "calcolo dei morti". Il sistema funziona praticamente come Sherlock Holmes.

Tutto apposto! Ora sai che dovresti avere un'ottima idea di come funzionano le auto a guida autonoma. Ecco cosa abbiamo imparato:

  1. Deep learning: cheat code, bilanciamento dei dati di training, overfitting e altri problemi, perché il deep learning è una "scatola nera" ecc.
  2. Visione del computer: sensori per telecamere, radar e lidar, visione stereo, come elaborare le immagini in modo creativo per estrarre molti tipi diversi di informazioni, c'è una popolare libreria di programmazione chiamata OpenCV.
  3. Robotica: cosa sono gli attuatori.
  4. Navigazione: hai appreso che, a parte il GPS, le mappe memorizzate, ecc., Le automobili utilizzano una tecnologia in stile Sherlock Holmes chiamata "resa dei conti".
Quindi ... ti senti più pericoloso e fantastico adesso rispetto a 20 minuti fa? :)

Infine, alcune considerazioni sulla discussione "L'IA prenderà il nostro lavoro e poi ci ucciderà"

Voglio che noti qualcosa di interessante su ciò che hai imparato proprio ora. Hai appreso che ogni rete neurale è progettata e formata per accettare un tipo specifico di input e quindi fornire un tipo specifico di output.

Anche se prendi un'enorme rete neurale e la usi come il cervello di un'auto a guida autonoma, dovrai comunque collegarla agli ingressi di tutti i sensori e le telecamere intorno all'auto, il GPS e le mappe, e anche collegare le uscite delle reti neurali a tutto l'hardware e gli attuatori che fanno muovere l'auto. Come hai già appreso, una rete neurale è una sequenza di matrici moltiplicate o aggiunte l'una all'altra. Se non lo colleghi a un input o a un output, è un'espressione matematica morta come qualsiasi altra.

Ma supponiamo che tu prenda irresponsabilmente una rete neurale scarsamente allenata e la usi per far funzionare una macchina pericolosa come un robot per la chirurgia dell'occhio. Sta operando su un occhio che presenta una condizione molto rara che né i medici né la rete neurale sono stati addestrati a rilevare. Il robot commette un errore che danneggia permanentemente l'occhio. Ora, in questo ipotetico scenario, sono sicuro che il giorno dopo i giornali di tutto il mondo parleranno di come l'IA si è svegliata e ha deciso di uccidere una persona. Ma ora che hai letto l'intero saggio sopra, spero che tu possa vedere perché questa è una cazzata.

Potresti argomentare, ehi, l'intero universo, persino i cervelli umani, sono essenzialmente costituiti da espressioni matematiche al livello più profondo, e quindi alcune matrici sono più malvagie di altre. Quindi forse una rete neurale può essere potenzialmente malvagia. Forse durante l'allenamento della rete neurale, hai riorganizzato i suoi pesi in modo tale che diventi malvagio.

Anche se questo potrebbe essere vero, non è ancora un buon argomento. Anche se fosse un prodotto mal fatto (o "malvagio", come lo chiamano i giornali) il software AI non è mai stato installato su un vero robot, non avrebbe mai potuto fare errori.

Personalmente ritengo che l'uso dell'IA nel mondo reale dovrebbe essere regolato, per garantire che non danneggi le persone. Dovrebbe essere simile all'industria medica - le persone dovrebbero essere libere di sviluppare un nuovo farmaco nel loro laboratorio in provette. MA se vuoi testare il tuo nuovo farmaco su animali o esseri umani, devi chiedere il permesso al governo e dimostrare che è pronto per essere testato.

È tutto su come decidi di UTILIZZARE un software. Gli ingegneri dovrebbero essere responsabili della corretta costruzione del software e anche della decisione se il loro software è pronto per essere utilizzato nel mondo reale o meno.

E questo è tutto! Se lo hai trovato utile, fammelo sapere nei commenti. Mi sentirò bene al riguardo.

Oh, e se sei uno scienziato o una società tecnologica e hai bisogno di aiuto per spiegare la tua scienza a persone non tecniche per marketing, pubbliche relazioni o formazione, ecc., Posso aiutarti. Mandami un messaggio su Twitter: @mngrwl