Alt om selvkørende biler forklaret til ikke-ingeniører

Jeg lover, at du ikke behøver at bruge hverken Google eller en ordbog, mens du læser dette. I dette indlæg vil jeg lære dig kernekoncepterne om alt fra "dyb læring" til "computersyn". Brug af død simpel engelsk.

Du ved sandsynligvis allerede, hvad selvkørende biler er, og at de betragtes som dumfesten i disse dage, så hvis du ikke har noget imod det, vil jeg springe over en introduktion til gymnasies essay-ish. :)

Men jeg springer ikke over min egen introduktion: Hej jeg er Aman, jeg er ingeniør, og jeg har en lav tolerance for unødvendigt ”sofistikeret” tale. Jeg skriver essays om Medium for at gøre hårde ting enkle. Enkelheden er undervurderet.

Hvordan fungerer selvkørende biler?

Også kaldet autonome biler, de arbejder på kombinationen af ​​3 seje teknologiske felter. Her er en kort introduktion til hver af dem, og så vil vi gå i dybden. I slutningen af ​​dette essay vil du vide nok om alle disse teknologier til at være i stand til at føre en intelligent samtale med en ingeniør eller investor på disse områder. Ting som "kunstige neurale netværk" lyder ikke længere som magiske trylleformularer eller sci-fi-filmord.

For øvrig har jeg kategoriseret nogle ting i nogenlunde separate “systemer”, men i praksis er disse systemer naturligvis alle sammen meget forbundet uden klart definerede grænser.

Computer Vision (ooooooohhhh lyder så sejt): Teknologien, der gør det muligt for bilen at "se" sine omgivelser. Dette er bilens øjne og ører. Hele dette system kaldes Perception. Grundlæggende bruger vi:
1. Gode gamle kameraer, som er de vigtigste (enkle 2 megapixel kameraer kan fungere fint),
2. radarer, der er næstvigtigste. De kaster radiobølger rundt, og som ultralyd registrerer du bølgerne, der springer fra genstande og kommer tilbage,
3. og lasere, som er seje at have, men de er temmelig dyre i dag, og de fungerer ikke, når det regner eller tåget. Også kaldet “lidar”. Du kan sige, at de er som radar, men giver en lidt bedre billedkvalitet, og lasere kan gå temmelig langt, så du får større udsyn. Laserne placeres normalt i et spindehjul øverst på bilen, så de snurrer meget hurtigt rundt og ser på miljøet omkring dem. Her kan du se en Lidar placeret oven på Google-bilen:

Tjek Lidar-sensoren ovenpå. Det er en roterende laserstråle.

Deep Learning: Det er en teknologi, der gør det muligt for bilen at tage beslutninger om kørsel på egen hånd, baseret på information, den har samlet gennem computervisionsspørgsmålene beskrevet ovenfor. Det er dette, der træner bilens 'hjerne'. Vi vil gå nærmere ind på dette om et øjeblik.

Ved at kombinere de to selv på et grundlæggende niveau, kan du gøre nogle interessante ting. Her er et projekt, jeg lavede, og detekterede banelinjer og andre biler på vejen ved kun at bruge et kameraindføring.

Robotik: Du kan se alt, og du kan tænke og tage beslutninger. Men hvis din hjernes beslutninger (f.eks. Løft det venstre ben) ikke kan nå musklerne i benet, bevæger dit ben sig ikke, og du kan ikke gå. På samme måde, hvis din bil har en 'hjerne' (= en computer med dyb læringssoftware), skal computeren oprette forbindelse til din bils dele for at kunne styre bilen. Kort sagt, disse forbindelser og relaterede funktioner udgør 'robotik'. Det giver dig mulighed for at tage softwarehjernens beslutninger og bruge maskiner til faktisk at dreje styringen, trykke og slippe gashåndtaget, bremser osv.

Navigation: Selv efter at have fået alt det ovenstående, er du i sidste ende stadig nødt til at finde ud af ”hvor” du er på planeten og retningerne for, hvor du vil hen. Der er flere aspekter ved dette, f.eks. GPS (din gode gamle navigationsenhed, der tager placeringsoplysninger fra satellitter), og gemte kort osv. Du blander også computervisionsdata ind.

Så bilen styrer dens styring og bremser osv. Baseret på de beslutninger, der er truffet af hjernen, og disse beslutninger er baseret på den information, der modtages gennem kameraer og radarer og lasere, og de retninger, den modtager fra navigationsprogrammerne. Dette afslutter hele systemet med en selvkørende bil.

Tidbit (føl dig fri til at springe over)
Selvkørende biler kommer i mange "niveauer", fra niveau 1 til niveau 5, baseret på hvor uafhængig bilen er, og hvor lidt menneskelig hjælp den har brug for under kørslen. Åh, og der er også niveau 0, som er din gode gamle manuelt betjente bil.

Niveau 5 betyder, at bilen er 100% selvkørende. Det har ikke styring eller bremser, fordi det ikke er beregnet til at blive drevet af mennesker. Disse biler findes ikke endnu, og banebrydende biler er stadig på niveau 3 og højst niveau 4.

Deep Learning forklaret for sjimpanser som mig selv

Lad os sige, at du var en safari-entusiast, og jeg var din super-idiot ven. Jeg tager på safari i Afrika næste uge. Og du giver mig nogle råd: ”Aman, hold dig væk fra de skide elefanter.”

Og jeg spørger dig tilbage, "Hvad er en elefant?"

Du vil sandsynligvis sige: ”Din dumme rykk, elefanter er ... okay husk, her er et fotografi af en elefant, sådan ser det ud. Hold dig væk fra dem. ”

Og så går jeg videre til safari.

I næste uge får du at vide, at jeg stadig formår at løbe ind i en elefant og næsten endte med at blive trampet. Du spørger mig, hvad der skete.

Jeg svarer, ”Jeg ved ikke, jeg så dette enorme dyr, men det lignede ikke det foto, du viste mig, så jeg troede, det var sikkert at lege med, og jeg gik videre og trak den lille svulmende ting. Her er fotografiet af dyret, jeg tog før det… ”

Du: ……….

Du: ”Okay, Aman. Jeg er ked af det, min dårlige. Jeg forventede for meget fra din hjerne. Lad mig give dig en "snydekode", som du skal følge, når du er på safari næste gang. Hvis du ser noget der ser brun ud fra alle vinkler, ser det ud til at have fire læderagtige ben som søjler, store klappende ører og en tyk lang næse, der kommer ud af sit ansigt som et stort rør, og er fedt og større end du er, så er det en elefant, og du er nødt til at holde dig væk. ”

Næste måned går jeg tilbage til safari igen (hey, det er min hypotetiske historie, og jeg kan gå på safari så mange gange jeg vil), og jeg løber ikke ind i nogen elefanter denne gang, fordi din "snyderekode" fungerer godt.

Hvordan kom du på den "snyderikode"? Det skyldes, at du allerede har set en elefant fra alle forskellige sider, og du valgte nogle funktioner i en elefant, som forbliver temmelig ens, uanset hvilken vinkel du ser elefanten fra. Så du havde masser af data om elefanter at tænke på, og det hjalp dig med at danne et mentalt billede af de mest tydelige tegn på en elefant, og gav dem mig som en snyderkode. Indse, at jeg ikke behøver at "vide" nøjagtigt, hvad en elefant er, jeg har bare en snyderkode, der hjælper mig med at genkende en elefant. Men den snydekode fungerer næsten så godt som at vide, hvad elefanter er!

Men hvorfor var det ikke okay at bare vise mig et fotografi (det, du har vist tidligere) og antage, at det var nok for mig at få ideen? Fordi jeg (selvfølgelig som en idiot) tog det fotografi som den "hellige sandhed" - antog jeg, at enhver elefant vil se * nøjagtigt ud * det samme som det fotografi, og vil være en næsten perfekt match.

Deep Learning fungerer på en MEGET lignende måde.

Her er grundlaget for dyb læring: kunstige neurale netværk, som jeg vil forklare nu. De kaldes også dybe neurale netværk.

Først antager jeg, at du kender lidt matematik fra gymnasiet. Ved du hvad en matrix er, ikke? Og at du kan multiplicere en matrix med en anden matrix? Det er bogstaveligt talt det eneste stykke matematik, som jeg har brug for, at du kender til dette essay. Her er en opdatering:

Husk, hvad en matrix er.

Et kunstigt neuralt netværk (ANN) er nogle virkelig smarte ting, men jeg tager dig med på rejsen med babytrin. Ser du, den menneskelige hjerne består af et netværk af mange celler kaldet "neuroner", som er inspiration for ANN'er. Sådan ser det ud på papiret:

En ANN er en tryllekasse, der indtaster et input og giver et output. Antag f.eks., At du ville have en magisk ANN, der tager et fotografi og kan fortælle, om fotografiet er af en elefant eller ej. Du lægger et foto i kassen, og ud kommer et svar "ja" eller "nej".

Eller du lægger et fotografi af vejen frem, og du vil have, at ANN fortæller dig, om du skal bremse eller fremskynde. Og svaret kommer ud, "fremskynd!"

Hvordan sker det? Hvordan kan du oprette denne ANN?

Kort sagt, et ANN er som en simpel version af en menneskelig hjerne. Først træner du det med data. Når du giver data til et ANN, opretter det en "snyderkode", som hjælper den med at tage beslutninger næste gang. (Jeg giver et detaljeret eksempel på et sekund) Denne "snyderkode" kaldes "vægte" af ANN. Du så den 'matrix' tidligere? Du kan sige, at den første matrix [x y] -matrix er en input, og den anden matrix [u w] -matrix er sæt vægt- eller snyderkoder. Når du multiplicerer input med vægtene, får du et svar.

ANN kan være af mange forskellige varianter, og baseret på hvordan du designer det, kan den enten give et "ja eller nej" svar, eller for eksempel kunne det give et specifikt tal eller en liste med forskellige numre osv. Du kan vælge, hvilken type output det vil give, og hvilken type input det vil modtage, og hvor stort og komplekst det vil være, hvilket gør det ekstremt alsidigt. Du kan opbygge neurale netværk, der tager videoer som input, stemmeprøver, billeder eller tekstafsnit osv. Naturligvis konverteres alle disse til tal på en computer automatisk, og der vil være en enorm matrix af "vægte", som vil være ganget med det input, hvilket genererer en output, som er dit svar.

Men jeg er sikker på, at du stadig ikke forstår det helt. Hvordan "træner" du ANN til at give dig meningsfulde output?

Lad os sige, at du vil træne en ANN til at genkende elefanter.

Så du opretter en ny ANN, der tager en bestemt type input og giver en bestemt type output. Først ved denne ANN ikke rigtig noget om det problem, den prøver at løse. Det er ligesom mig fra det originale elefanteksempel - inden du viste mig det første fotografi af en elefant, vidste jeg ikke, hvad en elefant endda var. Hvis du spurgte mig lige der og derefter for at kigge efter en elefant på et fotografi, ville jeg sandsynligvis have valgt noget tilfældigt. Så du kan sige, at jeg oprindeligt havde en tilfældig bullshit snyderi, ikke? Men i det øjeblik du viser mig EN Elefant og fortæller mig, at det er en elefant, pludselig justerer jeg min tilfældige snyderkode, og nu har jeg en idé om, hvad elefanter er. Min snyderkode er ikke tilfældig længere, og hvis jeg så en elefant forfra, ville jeg sandsynligvis vælge det rigtige svar! Så jeg har opdateret min snydekode, da jeg fik mere information. Og jo flere forskellige fotografier af elefanter jeg har, jo bedre bliver min snyderkode til at give det rigtige svar. Jeg ved stadig ikke ”hvad” en elefant er, men jeg har set nok korrelation på forskellige fotografier til at genkende de mest specielle træk ved en elefant og holde sig væk fra dem.

På samme måde, når du først opretter en ANN, starter du med at give den et tilfældigt sæt vægte (= snyderkode) til at begynde med. Derefter viser du det et inputbillede (fotografi af en elefant) og fortæller det også det output, du forventer (svar "ja"). Det smukke ved ANN'er er, at hvis du giver det et eksempel på input og dets tilsvarende output, så justerer det sin snyderkode, så den kan gentage det korrekte svar næste gang. Det vil ændre numrene i den matrix af vægte, jo flere data du giver til den, for at kunne matche dine svar. Derfor kan du starte med et tilfældigt sæt vægte, og med tiden vil ANN justere dem, så de fungerer godt som en snyderkode! Cool ret? Sådan "lærer ANN". Jo flere data du giver det, desto mere justerer de sine vægte, og desto mere nøjagtige bliver det.

Som jeg allerede har forklaret tidligere, hvordan dette sker er gennem matrixmultiplikation. Vægten matrix for dette ANN vil have værdier, så hvis du multiplicerer det med dit inputbillede (billedet konverteres til tal), kan du få et svar. Normalt er der ikke kun den ene matrix af vægte, men en række matrixer, som du multiplicerer den ene efter den anden. Men konceptet er det samme, som du ser på billedet herunder:

Grov matrixrepræsentation (jeg lavede dette diagram selv) :)

Men det er ikke nok. Husk, at ANN ikke er smart - den fungerer trods alt. Hvis du kun gav det elefantfotografier at se på og fortsat sige "ja" for hvert foto, hvad tror du, det vil gøre?

Det vil være doven og antage, at hvert fotografi er en elefant! Den justerer dens vægte (snyderkode) på en sådan måde, at uanset hvilket foto, det er givet, vil det altid udsende et ”ja”. Dette kaldes "underfitting", hvilket dybest set betyder, at du har begået en fejltagelse ved at tro, at din idiot-ven er smart. Dit ANN er blevet partisk over for et bestemt svar. For at forhindre dette skal du også tilføje det modeksempler, der har svaret "nej". Så du blander også masser af eksempler på fotos, der ikke er af elefanter, men endda løver, køer, mennesker, egern, pikachus og bulbasaurer, havheste og ... (undskyld, jeg blev båret væk) og nu vil ANN blive tvunget til at juster sin snyderekode mere omhyggeligt. Nu øger du dens nøjagtighed og gør den mere pålidelig! Eller du kan også have "overfitting", når ANNs snyderkode stadig er doven, men den er nu så super smart, at den begynder at huske hele træningsdataene, du giver det! Dette sker ofte, når din ANN er meget stor og dyb, så på en måde begynder den bare at gemme alle de oplysninger, du giver den. Det bliver super godt til at besvare dine træningsdata, men det mislykkes, når det gives et nyt eksempel, som de ikke har stødt på før. Det fungerer ikke længere som en snydekode, men snarere er det blevet som en ordbog med billeder. Du kan forhindre dette ved at reducere størrelsen på din model (ved tilfældigt at tabe nogle af vægterne) eller ved at øge forskellige data. Førstnævnte kaldes "dropout" (temmelig ligetil, men en meget skør idé), og sidstnævnte kaldes "balance mellem datasættet".

Du har også lært din lektion fra safari-eksemplet tidligere, og nu vil du være forsigtig med at vise det andre fotografier af elefanter fra mange forskellige vinkler, så det ikke gør den samme fejl, som din idiotvend begik. Dette er grunden til, at forskere / ingeniører ofte "forstærker" deres træningsdatasæt til at inkludere spejlreflektioner eller lysere / mørkere versioner af de samme billeder osv. For at øge variationen i deres data. Dette hjælper med at sikre, at ANN kan blive så nøjagtig som det kan. Du ønsker, at snydekoden skal være så super "robust", at den fungerer så godt som rigtige mennesker, eller bedre.

Ved afslutningen af ​​træningen, med nok afbalancerede data og forøgelse osv., Vil du have en trænet ANN (også kaldet trænet model), som kan genkende elefanter på billeder med rimelig nøjagtighed, og også vide, hvornår man ikke skal genkende en elefant.

"Overfitting", det ord, du stød på for kun to afsnit siden (= netværk, der bliver for smart og fungerer som det, lige har gemt dine data), er et meget almindeligt udtryk i Deep Learning-lingo, og du ved nu, hvad det betyder. (Underfitting er et mindre uroligt problem, fordi det er temmelig åbenlyst at diagnosticere og let at tackle.) Nogen kan sige, ”åh mand, min model fungerer ikke så godt med nye data, jeg gætter på, at den er for stor”, og du vil sige, “Prøvede du at udvide træningsdataene?” Og du vil øjeblikkeligt eje natten. Den anden person antager måske endda, at du selv er en dyb læringsingeniør! (Hvis de gør det, så fortæl dem "Åh nej, jeg følger bare Aman på Medium". Når de spørger, hvem jeg er, skal du foregive og sige "Åh, du ved ikke? Han er den sejeste fyr i dette rum!").

Processen med at justere vægte (opdatering af snyderkoden baseret på data) involverer noget, der kaldes backpropagation. Når du træner, hver gang du viser ANN et eksempel på input (lad os sige en killing) og derefter fortælle det svaret ("nej, det er ikke en elefant!"), Vil det først prøve at bruge sin nuværende snyderkode til at komme med sin egen svar. Hvis svaret er RETT, behøver det ikke at justere sin snyderkode, ikke? Den doble ANN opdaterer kun sin snyderkode, når den laver en fejl. Så kun hvis ANNs svar var forkert, bliver det nødt til at justere dens vægte (= snyderkode) med en lille smule og teste vægterne igen. Denne justeringsalgoritme kaldes BACKPROPAGATION. "Fejlen" foretaget af ANN sender rippler gennem matrixen af ​​vægte og ændrer mange af deres værdier. Så du kan sige, at fejlen forplantes tilbage gennem netværket. Igen er det derfor, du oprindeligt altid kan oprette ANN med tilfældige vægte, og med tiden vil den justere dem på egen hånd.

Kort sagt, hvis du tager en snyderkode til en eksamen og får nogle af dine svar forkert, vil du sandsynligvis opgradere dine snyderkoder til den næste eksamen i det emne for at have større nøjagtighed. Processen med at redigere / omskrive din snyderkode efter hver eksamen, baseret på dens karakter, kaldes backpropagation.

Rul nu op til grafbilledet af et “neuralt netværk”, jeg indsatte ovenfor. Ser du den ting, der kaldes det ”skjulte lag”? Nå, ANN er lavet af lag af neuroner, disse neuroner bærer vægterne som værdier. De kaldes "skjulte lag", fordi du ikke behøver at vide de nøjagtige vægte i netværket! Du kan udskrive værdierne med sikkerhed - men det er nytteløst at se på en matrix, der kan løbe ind i millioner eller milliarder af små tal. Det er en snyderkode, og den opdaterer sig selv baseret på de input, du giver den, og det er alt hvad du har brug for at vide.

Dette er grunden til, at dyb læring ofte betragtes som et "black box" -system. Hvis du nogensinde har programmeret før på et hvilket som helst sprog, er du vant til at skrive eksplicitte instruktioner til programmet til alt. Men her kan du ikke se den underliggende 'snyderkode', computeren oprettet til sig selv til at bruge i stedet for en skrevet algoritme.

Når vi vender tilbage til selvkørende biler, lad os sige, at du tog fotos fra forskellige kameraer rundt om bilen på et bestemt millisekund og tog alle de data, der er indsamlet fra radaren og lidaren (= lasere), og kombinerede dem sammen på en liste, og brugte denne liste som input til din bils ANN. Og det output, du forventer fra netværket, er en lang liste over styrevinklen, gashåndtaget / bremseværdien, uanset om du vil tænde forlygterne eller ej, om man skal hylle eller ej osv. Dette er dine "etiketter", der skal forudsiges af ANN.

Den slags dyb læring, hvor du eksplicit træner ANN ved hjælp af specifikke data indsamlet af mennesker, kaldes "overvåget læring". For hver dataprøve har du dataene og du har etiketten.

Så her er et eksempel på, hvordan du "træner" bilens hjerne. Først skal du blot køre bilen normalt af dig selv, men fortsat indsamle inputdataene fra sensorer og kameraer osv. Der er også udstyr, der måler, for hvert millisekund af data, styrevinklen og gastrykket osv., Som du lavede under kørslen. Når du først kommer hjem, kan du derefter begynde at "træne" ANN på alle de data, du har samlet, mens du kørte. ANN vil opdatere sin snyderkode for at tage din computer syn input og forsøge at efterligne dine kørebeslutninger så tæt som muligt. Dette er kendt som adfærdskloning, og det er hvad de fleste bilfirmaer gør i dag - indsamling af kørselsdata og at gøre deres biler 'praktiske'. Efter hver træningstur bliver bilen bedre og bedre til at tage beslutninger. Adfærdsmæssig kloning bruges kun til små dele af køreprocessen.

Alt andet ligner kørselsdata den største vindende faktor i løbet om at udvikle selvkørende biler.

Nu - ved du hvad "Deep Learning" er, og hvad det gør. Du ved, hvad dybe neurale netværk er (= ANN'er), og hvordan de fungerer (vægte = snyde koder, backpropagation = justering af vægtene baseret på en given eksempletest). Du ved også, at du skal have et stort og afbalanceret datasæt, så netværket ikke overmoder (bliver doven eller for smart ved at indstille dens snyderkoder).

Tillykke! Jeg drager dig ikke, dette er mere en præstation end du tror!

Computer Vision

Kan du huske denne scene fra Terminator?

Schwarzenegger kommer nøgent ind i en bar og ser efter nogen at tage tøj fra. Dette må være det, der kommer op i dit sind, når du tænker "computer vision", og du har delvist ret.

Selvkørende biler kan også se verden sådan, men de er stadig ikke i nærheden af ​​den sofistikering, du kan se der. Hovedformålet med computersynsteknikker er at behandle kamerabilleder til at detektere banelinjer, spore andre køretøjer og fodgængere, kigge efter eventuelle ujævnheder eller huller i vejen, måle afstanden mellem bilen og andre genstande osv.

Der er ingen teknik eller underliggende teknologi til computervision - snarere kommer det ofte ned på enkel billedbehandling. Du er kun begrænset af din fantasi og evne til at designe komplekse algoritmer, og hvis du er god til geometri, er det et andet plus. For eksempel involverer en populær måde at behandle kamerabillederne at se på, hvor hurtigt farverne ændrer sig i vandrette og lodrette retninger. Det kaldes en "gradient", og det kan bruges til at finde kanter. Her er et eksempel:

Disse er alle skabt ved hjælp af enkle teknikker ved hjælp af et populært bibliotek med computervisionsfunktioner, kaldet OpenCV. Du skal vide om OpenCV, fordi det er det mest populære bibliotek til dette formål. Enhver robot eller en dyb lærende fyr ved det.

Hvis du tager ovenstående eksempel yderligere, er de billeder, du ser, blot en repræsentation af billeder og nuller på et rektangel. Disse er hvide, og nuller er sorte! Du kan vælge pixels i et hvilket som helst område på billedet og lege med det. Sådan detekterede jeg banelinjer og kom med mit projektoutput, som det blev set i begyndelsen af ​​dette blogindlæg.

En anden almindelig teknik, der bruges i computervision til at detektere objekter, kaldes stereo vision. Lad dig ikke smide af med det tilsyneladende komplekse navn, stereosyn betyder simpelthen at se på noget med mere end et øje (du gør det hele tiden). Når du ser noget med to øjne, har du et bedre skøn over, hvor langt det er, og hvilken form det har. Tilsvarende bruger biler mere end et kamera på hver side og kombinerer billederne for at se verden mere realistisk.

Hvad med ugunstige forhold som sne, regn osv., Når det er svært at se vejen? Nå, lad os ikke glemme, at de to andre sensorer (radar og lasere). Selv når to sensorer ikke fungerer så godt, er systemet designet således, at den tredje stadig skal være ret pålidelig (men det er et igangværende forskningsfelt, og vi er ikke perfekte endnu). Hvis bilens neurale netværk allerede er blevet trænet til at køre under sådanne forhold, burde bilen have en idé om, hvordan man træffer beslutninger. Som jeg sagde tidligere handler først og fremmest om at indsamle nok data. Jo mere du træner, jo bedre bliver bilen. Periode.

Jeg vil ikke gå nærmere ind på computervision, da det er et meget bredt felt. Bare ved, at det ikke er sci-fi, og at der ikke er noget "magisk" ved det. Det handler bare om at bruge din fantasi til at lege med billeder. Der er andre teknikker, som du kan læse om på denne meget korte og enkle side:

Robotik og navigation

Faktisk vil jeg ikke bruge for meget tid her. Robotik er temmelig ligetil (du behøver ikke fancy fantasi for at forstå, hvad der sker) - du har grundlæggende brug for at vide om noget, der kaldes en aktuator.

En aktuator er en enhed, der tager et elektrisk signal som input og konverterer det til en fysisk handling. Det er ikke for kompliceret, ofte har det bare en motor inde i sig, der roterer med en bestemt vinkel baseret på værdien af ​​det signal, det modtager. Aktuatorer findes i alle former og størrelser, der er en i rattet, en til gashåndtaget, bremser, gear, motoren osv. Du får ideen.

Når det gælder navigation, bortset fra GPS / kort / computersynsteknologier, skal du også vide om en rigtig cool teknik kaldet ”død beregning”. Det involverer at beregne din aktuelle position baseret på din hastighed og tilbagelagte afstand og kende historien til alle de vendinger, du lavede indtil i øjeblikket osv. Kan du huske den sugne Sherlock Holmes-film med Robert Downey Jr? Der er en scene, hvor han bliver kidnappet og ført ind i en hestevogn og bind for øjnene, men efter at de ankommer til destinationen ved han magisk præcis, hvor han er. Se de første par minutter af denne scene, så vil du forstå, hvad "død beregning" er. Systemet fungerer stort set som Sherlock Holmes.

I orden! Nu ved du burde have en meget god idé om, hvordan selvkørende biler fungerer. Dette er, hvad vi har lært:

  1. Deep Learning - snyde koder, afbalancere træningsdata, overfitting og andre problemer, hvorfor deep learning er en "sort boks" osv.
  2. Computersyn - kamera-, radar- og lidarsensorer, stereosyn, hvordan du kan behandle billeder kreativt for at udtrække mange forskellige slags oplysninger. Der er et populært programmeringsbibliotek kaldet OpenCV.
  3. Robotik - hvad aktuatorer er.
  4. Navigation - du lærte, at biler bortset fra GPS og gemte kort osv. Bruger en Sherlock Holmes-stil-teknologi kaldet “død beregning”.
Så… føler du dig mere farlig og fantastisk nu end for 20 minutter siden? :)

Endelig er nogle tanker om ”AI vil tage vores job og derefter dræbe os” diskussion

Jeg vil have dig til at bemærke en interessant ting om det, du lærte lige nu. Du lærte, at ethvert neuralt netværk er designet og trænet til at tage en bestemt type input og derefter give en bestemt type output.

Selv hvis du tager et enormt neuralt netværk og brugte det til at fungere som hjernen i en selvkørende bil, skal du stadig forbinde det til input fra alle sensorer og kameraer omkring bilen, GPS og kort, og også Forbind udgangene fra de neurale netværk til al den hardware og aktuator, der får bilen til at bevæge sig. Som du allerede har lært, er et neuralt netværk en sekvens af matrixer, der multipliceres eller føjes til hinanden. Hvis du ikke forbinder det til et input eller et output, er det et dødt matematisk udtryk ligesom enhver anden.

Men lad os sige, at du uansvarligt tager et dårligt trænet neuralt netværk og bruger det til at køre en farlig maskine som en øjenoperationsrobot. Det fungerer på et øje, der har en meget sjælden tilstand, som hverken lægerne eller det neurale netværk er blevet trænet til at opdage. Roboten laver en fejl, der permanent beskadiger øjet. I dette hypotetiske scenarie er jeg sikker på, at aviser overalt i verden næste dag vil tale om, hvordan AI vågnede op og besluttede at dræbe en person. Men nu, når du har læst hele essayet ovenfor, håber jeg, at du kan se, hvorfor dette er skidt.

Du kan argumentere, at hey - hele universet, selv menneskelige hjerner, i det væsentlige består af matematiske udtryk på det dybeste niveau, og at nogle matrixer er mere onde end andre. Så måske kan et neuralt netværk potentielt være ondt. Måske mens du træner det neurale netværk, har du omarrangeret dens vægte på en sådan måde, at det bliver ondt.

Selv hvis dette kunne være sandt, er det stadig ikke et godt argument. Selv hvis det dårligt fremstillede (eller "onde", som aviser ville kalde det), var AI-software simpelthen aldrig installeret på en rigtig robot, kunne den aldrig have begået nogen fejl.

Jeg føler personligt, at brugen af ​​AI i den virkelige verden bør reguleres for at sikre, at det ikke skader mennesker. Det skal svare til den medicinske industri - folk skal være fri til at udvikle et nyt lægemiddel i deres laboratorium i prøverør. MEN hvis du vil teste dit nye stof på dyr eller mennesker, skal du bede regeringen om tilladelse og bevise, at det er klar til at blive testet.

Det handler om, hvordan du beslutter at bruge en software. Ingeniører skal være ansvarlige for at opbygge software korrekt og også for at beslutte, om deres software er klar til brug i den virkelige verden eller ej.

Og det er det! Hvis du fandt dette nyttigt, så fortæl mig det i kommentarerne. Jeg vil have det godt.

Åh, og hvis du er en videnskabsmand eller teknologivirksomhed og har brug for hjælp til at forklare din videnskab til ikke-tekniske mennesker til marketing, PR eller uddannelse osv., Kan jeg hjælpe dig. Giv mig en besked på Twitter: @mngrwl