1. ProgrammeringStore dataData-videnskabData-videnskab Programmering Alt-i-ett til dummies snyderi
Begrebet datavidens programmeringskode
  1. ProgrammeringBig DataData ScienceMachine Learning vs. Deep Learning: Forklaring af Deep Learning forskelle fra andre former for AI

Af John Paul Mueller, Luca Mueller

I betragtning af forlegenheden over rigdomme, der vedrører AI som helhed, såsom store mængder data, ny og kraftfuld beregningsmæssig hardware tilgængelig for alle, og masser af private og offentlige investeringer, er du måske skeptisk til teknologien bag dyb læring, der består af neurale netværk, der har flere neuroner og skjulte lag end tidligere. Dybe netværk står i kontrast til de enklere, lavere grunde netværk fra fortiden, der i det bedste indeholdt et eller to skjulte lag. Mange løsninger, der muliggør dyb læring i dag, er slet ikke nye, men dyb læring bruger dem på nye måder.

Dyb læring er ikke blot en omlægning af en gammel teknologi, perceptron, opdaget i 1957 af Frank Rosenblatt ved Cornell Aeronautical Laboratory. Dyb læring fungerer bedre på grund af den ekstra sofistikering, den tilføjer gennem fuld brug af magtfulde computere og tilgængeligheden af ​​bedre (ikke bare flere) data. Dyb læring indebærer også en dybtgående kvalitativ ændring i teknologiens muligheder sammen med nye og forbløffende applikationer. Tilstedeværelsen af ​​disse evner moderniserer gamle, men gode neurale netværk, og omdanner dem til noget nyt. Den følgende artikel beskriver, hvordan dyb læring udfører sin opgave.

Tilføjelse af flere lag til dyb læring

Du kan undre dig over, hvorfor dyb læring først har blomstret, da teknologien, der blev brugt som grundlaget for dyb læring, eksisterede for længe siden. Computere er mere magtfulde i dag, og dyb læring kan få adgang til store mængder data. Disse svar peger imidlertid kun på vigtige problemer med dyb læring i fortiden, og lavere computerkraft sammen med mindre data var ikke de eneste uovervindelige hindringer. Indtil for nylig led dyb læring også af et vigtigt teknisk problem, der forhindrede neurale netværk fra at have nok lag til at udføre virkelig komplekse opgaver.

Fordi det kan bruge mange lag, kan dyb læring løse problemer, der er uden for rækkevidde af maskinlæring, såsom billedgenkendelse, maskinoversættelse og talegenkendelse. Når det kun er udstyret med nogle få lag, er et neuralt netværk en perfekt universalfunktionskonimator, som er et system, der kan genskabe enhver mulig matematisk funktion. Når det er udstyret med mange flere lag, bliver et neuralt netværk i stand til inden for sin interne kæde af matrixmultiplikationer at skabe et sofistikeret system med repræsentationer for at løse komplekse problemer. For at forstå, hvordan en kompleks opgave som billedgenkendelse fungerer, skal du overveje denne proces:

  1. Et dybt læringssystem, der er trænet til at genkende billeder (såsom et netværk, der er i stand til at skelne fotos af hunde fra dem, der indeholder katte) definerer interne vægte, der har evnen til at genkende et billedemne. Efter at have registreret hver enkelt kontur og hjørne i billedet, samler det dybe læringsnetværk alle sådanne grundlæggende træk til sammensatte karakteristiske træk. Netværket matcher sådanne funktioner til en ideel repræsentation, der giver svaret.

Med andre ord kan et dybt læringsnetværk skelne hunde fra katte ved hjælp af dets indre vægt til at definere en repræsentation af hvad, ideelt set, en hund og en kat skal ligne. Den bruger derefter disse interne vægte til at matche ethvert nyt billede, du leverer det med.

En af de tidligste resultater af dyb læring, der gjorde offentligheden opmærksom på dens potentiale, er katteuronet. Google Brain-teamet, der blev kørt på det tidspunkt af Andrew Ng og Jeff Dean, sammensatte 16.000 computere til at beregne et dybt læringsnetværk med mere end en milliard vægt, hvilket muliggør uovervåget læring fra YouTube-videoer. Computernetværket kunne endda bestemme af sig selv uden nogen menneskelig indgriben, hvad en kat er, og Google-forskere formåede at grave ud af netværket en repræsentation af, hvordan netværket i sig selv forventede, at en kat skulle se ud (se artiklen Wired, der diskuterer neurale netværk) .

I løbet af den tid, hvor forskere ikke kunne stable flere lag i et neuralt netværk på grund af grænserne for computerhardware, forblev teknologiens potentiale begravet, og forskere ignorerede neurale netværk. Manglen på succes føjede til den dybe skepsis, der opstod omkring teknologien i løbet af den sidste AI-vinter. Hvad der virkelig forhindrede forskere i at skabe noget mere sofistikeret var problemet med forsvindende gradueringer.

En forsvindende gradient opstår, når du prøver at transmittere et signal gennem et neuralt netværk, og signalet falmer hurtigt til næsten nulværdier; det kan ikke komme igennem aktiveringsfunktionerne. Dette sker, fordi neurale netværk er kædede multiplikationer. Hver multiplikation under nul nedsætter de indgående værdier hurtigt, og aktiveringsfunktioner har brug for store nok værdier til at lade signalet passere. Jo længere neuronlag er fra output, jo større er sandsynligheden for, at de bliver låst uden for opdateringer, fordi signalerne er for små, og aktiveringsfunktionerne stopper dem. Derfor ophører dit netværk med at lære som en helhed, eller det lærer i et utroligt langsomt tempo.

Hvert forsøg på at sammensætte og teste komplekse netværk endte i en fiasko, fordi backpropagation-algoritmen ikke kunne opdatere lagene tættere på input, hvilket således gjorde enhver læring fra komplekse data, selv når sådanne data var tilgængelige på det tidspunkt, næsten umuligt. I dag er dybe netværk mulige takket være undersøgelser af lærde fra University of Toronto i Canada, såsom Geoffrey Hinton, som insisterede på at arbejde på neurale netværk, selv når de mest syntes at være en gammeldags maskinslæringsmetode.

Professor Hinton, en veteran inden for området neurale netværk (han bidrog til at definere bagpropagationsalgoritmen), og hans team i Toronto udarbejdede et par metoder til at omgå problemet med forsvindende gradueringer. Han åbnede feltet for at genoverveje nye løsninger, der gjorde neurale netværk til et vigtigt redskab i maskinlæring og AI igen.

Professor Hinton og hans team er også mindeværdige for at være blandt de første til at teste GPU-brug for at fremskynde træningen i et dybt neuralt netværk. I 2012 vandt de en åben konkurrence, arrangeret af lægemiddelfirmaet Merck og Kaggle (sidstnævnte et websted til datavidenskonkurrencer) ved hjælp af deres seneste opdagelser om dyb læring. Denne begivenhed gjorde opmærksom på deres arbejde. Du kan læse alle detaljer om Hinton-holdets revolutionære præstation med neurale netværkslag fra dette Geoffrey Hinton-interview.

Ændring af aktiveringer til dyb læring

Geoffrey Hintons team var i stand til at tilføje flere lag til en neural arkitektur på grund af to løsninger, der forhindrede problemer med bagpropagering:

  • De forhindrede problemet med eksploderende gradienter ved at bruge smartere netværksinitialisering. En eksploderende gradient adskiller sig fra en forsvindende gradient, fordi den kan få et netværk til at sprænge, ​​når den eksploderende gradient bliver for stor til at håndtere. Dit netværk kan eksplodere, medmindre du korrekt initialiserer netværket for at forhindre, at det beregner store vægtnumre. Derefter løser du problemet med forsvindende gradueringer ved at ændre netværksaktiveringer. Holdet indså, at passering af et signal gennem forskellige aktiveringslag havde en tendens til at dæmpe bagpropagationssignalet, indtil det bliver for svagt til at passere længere efter at have undersøgt, hvordan en sigmoid-aktivering fungerede. De brugte en ny aktivering som løsningen på dette problem. Valget af hvilken algoritme, der skal bruges, faldt hen imod en gammel aktiveringstype af ReLU, der står for korrigerede lineære enheder. En ReLU-aktivering stoppede det modtagne signal, hvis det var under nul, hvilket sikrer ikke-linearitetskarakteristikken for neurale netværk og lader signalet passere, som det var, hvis det var over nul. (Brug af denne type aktivering er et eksempel på at kombinere gammel, men stadig god teknologi med nuværende teknologi.) Billedet herunder viser, hvordan denne proces fungerer.
ReLU aktiveringsfunktion i dyb læring

ReLU arbejdede utroligt godt og lod bagpropagationssignalet ankomme til de indledende dybe netværkslag. Når signalet er positivt, er dets derivat 1. Du kan også finde bevis på, at ReLU-derivatet ser ud. Bemærk, at ændringshastigheden er konstant og ækvivalent med en enhed, når indgangssignalet er positivt (mens signalet er negativt, er derivatet 0, hvilket forhindrer signalet i at passere).

Du kan beregne ReLU-funktionen ved hjælp af f (x) = max (0, x). Brugen af ​​denne algoritme øgede træningshastigheden meget, hvilket tillader hurtig træning af endnu dybere netværk uden at pådrage sig døde neuroner. En død neuron er en, som netværket ikke kan aktivere, fordi signalerne er for svage.

Tilføjelse af regularisering ved frafald til dyb læring

Den anden introduktion til dyb læring foretaget af Hintons team for at færdiggøre den indledende løsning til dyb læring med det formål at regulere netværket. Et reguleret netværk begrænser netværksvægtene, hvilket forhindrer netværket i at huske inputdataene og generalisere de vidne datamønstre.

Husk, at visse neuroner husker specifik information og tvinger de andre neuroner til at stole på denne stærkere neuron, hvilket får de svage neuroner til at opgive at lære noget nyttigt selv (en situation kaldet co-adaptation). For at forhindre ko-tilpasning slukker koden midlertidigt for aktiveringen af ​​en tilfældig del af neuroner i netværket.

Som du ser fra venstre side af billedet nedenfor, fungerer vægtene normalt ved at multiplicere deres input til output for aktiveringerne. For at deaktivere aktivering multiplicerer koden en maske lavet af en tilfældig blanding af enere og nuller med resultaterne. Hvis neuronet ganges med et, overfører netværket sit signal. Når en neuron ganges med nul, stopper netværket sit signal og tvinger andre neuroner til ikke at stole på det i processen.

dyb læringsfald

Frafald fungerer kun under træning og berører ikke nogen del af vægterne. Det maskerer og skjuler blot en del af netværket og tvinger den umaskede del til at tage en mere aktiv rolle i indlæring af datamønstre. I løbet af forudsigelsestid fungerer frafaldet ikke, og vægterne omklassificeres numerisk for at tage højde for det faktum, at de ikke arbejdede sammen under træning.

  1. ProgrammeringBig DataData Science Brug af AI til sentimentanalyse

Af John Paul Mueller, Luca Mueller

Sentimentanalyse stammer beregningsmæssigt fra en skrevet tekst ved hjælp af forfatterens holdning (hvad enten det er positivt, negativt eller neutralt) over for tekstemnet. Denne form for analyse viser sig at være nyttig for folk, der arbejder inden for markedsføring og kommunikation, fordi den hjælper dem med at forstå, hvad kunder og forbrugere synes om et produkt eller en tjeneste og således handle passende (f.eks. Ved at prøve at gendanne utilfredse kunder eller beslutte at bruge en anden salgsstrategi ). Alle udfører følelsesanalyse. For eksempel, når man læser tekst, prøver folk naturligvis at bestemme, hvilket holdning der bevægede den, der skrev den. Når antallet af tekster, der skal læses og forstås, er for stort, og teksten konstant akkumuleres, som i sociale medier og kundemails, er det vigtigt at automatisere følelsesanalyse.

AI-følelsesanalyse

Det kommende eksempel er en testkørsel af RNN'er ved hjælp af Keras og TensorFlow, der bygger en følelsesanalysealgoritme, der er i stand til at klassificere de holdninger, der udtrykkes i en filmanmeldelse. Dataene er en prøve af IMDb-datasættet, der indeholder 50.000 anmeldelser (fordelt i to mellem tog- og testsæt) af film ledsaget af en etiket, der udtrykker følelsen af ​​anmeldelsen (0 = negativ, 1 = positiv). IMDb er en stor online database, der indeholder information om film, tv-serier og videospil. Oprindeligt vedligeholdt af en fanbase og drives nu af et Amazon-datterselskab. På IMDb finder folk de oplysninger, de har brug for om deres foretrukne show, så de indsender deres kommentarer eller skriver en anmeldelse, som andre besøgende kan læse.

Keras tilbyder et downloadbart indpakning til IMDb-data. Du forbereder, blander og arrangerer disse data i et tog og et testsæt. Især renses de IMDb-tekstdata, der tilbydes af Keras, for tegnsætning, normaliseres til små bogstaver og omdannes til numeriske værdier. Hvert ord kodes til et tal, der repræsenterer dets rangordning i frekvens. De hyppigste ord har lave tal; mindre hyppige ord har højere antal.

Som startpunkt importerer koden imdb-funktionen fra Keras og bruger den til at hente dataene fra Internettet (ca. en 17,5 MB download). Parametrene, som eksemplet bruger, omfatter kun de top 10.000 ord, og Keras skal blande dataene ved hjælp af et specifikt tilfældigt frø. (At kende frøet gør det muligt at gengive shufflen efter behov.) Funktionen returnerer to tog- og testsæt, begge lavet af tekstsekvenser og følelsesresultatet.

fra keras.datasets import imdb
top_words = 10000
((x_train, y_train),
(x_test, y_test)) = imdb.load_data (num_words = top_words,
frø = 21)

Når den forrige kode er afsluttet, kan du kontrollere antallet af eksempler ved hjælp af følgende kode:

print ("Træningseksempler:% i"% len (x_train))
print ("Testeksempler:% i"% len (x_test))

Efter undersøgelse af antallet af sager, der er tilgængelige til brug i trænings- og testfasen i det neurale netværk, udsender koden et svar på 25.000 eksempler for hver fase. (Dette datasæt er relativt lille til et sprogproblem; klart er datasættet hovedsageligt til demonstrationsformål.) Derudover bestemmer koden, om datasættet er afbalanceret, hvilket betyder, at det har et næsten lige antal positive og negative følelseseksempler.

import numpy som np
print (np.unique (y_train, return_counts = True))

Resultatet, array ([12500, 12500]), bekræfter, at datasættet er jævnt fordelt mellem positive og negative resultater. En sådan balance mellem responsklasser skyldes udelukkende datasættets demonstrative karakter. I den virkelige verden finder du sjældent afbalancerede datasæt. Det næste trin opretter nogle Python-ordbøger, der kan konvertere mellem koden, der bruges i datasættet, og de rigtige ord. Faktisk er datasættet, der bruges i dette eksempel, forbehandlet og tilvejebringer sekvenser af tal, der repræsenterer ordene, ikke ordene i sig selv. (LSTM- og GRU-algoritmer, som du finder i Keras, forventer sekvenser af tal som tal.)

word_to_id = {w: i ​​+ 3 for w, i i imdb.get_word_index (). items ()}
id_to_word = {0: '', 1: '', 2: ''}
id_to_word.update ({i + 3: w for w, i in imdb.get_word_index (). items ()})
def convert_to_text (sekvens):
return '' .join ([id_to_word [s] for s i rækkefølge hvis s> = 3])
udskrives (convert_to_text (x_train [8]))

Det forrige kodestykket definerer to konverteringsordbøger (fra ord til numeriske koder og vice versa) og en funktion, der oversætter datasæteksemplerne til læsbar tekst. Som et eksempel udskriver koden det niende eksempel: "denne film var som et dårligt togvrag så forfærdeligt som det var ...". Fra dette uddrag kan du let forudse, at stemningen for denne film ikke er positiv. Ord som dårligt, vrag og forfærdeligt overfører en stærk negativ følelse, og det gør det lettere at gætte det korrekte stemning.

I dette eksempel modtager du de numeriske sekvenser og vender dem tilbage til ord, men det modsatte er almindeligt. Normalt får du sætninger, der består af ord, og omdanner dem til sekvenser af heltal, der skal fodres til et lag af RNN'er. Keras tilbyder en specialiseret funktion, Tokenizer, der kan gøre det for dig. Den bruger metoderne fit_on_text til at lære, hvordan man kortlægger ord til heltal fra træningsdata, og tekster_til_matrix, til at omdanne tekst til en rækkefølge.

I andre sætninger kan du dog ikke finde sådanne afslørende ord til følelsesanalysen. Følelsen udtrykkes på en mere subtil eller indirekte måde, og det er muligvis ikke muligt at forstå følelsen tidligt i teksten, fordi afslørende sætninger og ord kan optræde meget senere i diskursen. Af denne grund skal du også beslutte, hvor meget af den sætning, du vil analysere.

Konventionelt tager du en indledende del af teksten og bruger den som repræsentativ for hele gennemgangen. Undertiden har du bare brug for et par indledende ord - for eksempel de første 50 ord - for at få mening; nogle gange har du brug for mere. Især lange tekster afslører ikke deres orientering tidligt. Det er derfor op til dig at forstå den type tekst, du arbejder med, og beslutte, hvor mange ord du skal analysere ved hjælp af dyb læring. Dette eksempel betragter kun de første 200 ord, som burde være tilstrækkelige.

Du har bemærket, at koden begynder at give kode til ord, der begynder med nummeret 3, og derved efterlade koder fra 0 til 2. Lavere tal bruges til specielle tags, såsom signalering af starten af ​​sætningen, udfyldning af tomme mellemrum for at have sekvensen fast på en bestemt længde og markere de ord, der er udelukket, fordi de ikke er hyppige nok. Dette eksempel henter kun de hyppigste 10.000 ord. Brug af tags til at påpege start, slut og bemærkelsesværdige situationer er et trick, der fungerer med RNN'er, især til maskinoversættelse.

fra keras.preprocessing.sequence import pad_sequences
max_pad = 200
x_train = pad_sequences (x_train,
maxlen = max_pad)
x_test = pad_sequences (x_test,
maxlen = max_pad)
print (x_train [0])

Ved at bruge pad_sequences-funktionen fra Keras med max_pad indstillet til 200, tager koden de første to hundrede ord i hver anmeldelse. I tilfælde af at gennemgangen indeholder færre end 200 ord, er der så mange nulværdier som nødvendigt forud for sekvensen for at nå det krævede antal sekvenselementer. At skære sekvenserne til en bestemt længde og fylde hulrummet med nulværdier kaldes input padding, en vigtig behandlingsaktivitet, når man bruger RNN'er som dyb indlæringsalgoritmer. Nu designer koden arkitekturen:

fra keras.models import Sequential
fra keras.layers importerer Bidirectional, Dense, Dropout
fra keras.layers importerer GlobalMaxPool1D, LSTM
fra keras.layers.embeddings import Embedding
embedding_vector_length = 32
model = Sekventiel ()
model.add (indlejring (top_words,
embedding_vector_length,
input_length = max_pad))
model.add (Bidirectional (LSTM (64, return_sequences = True)))
model.add (GlobalMaxPool1D ())
model.add (Tæt (16, aktivering = "relu"))
model.add (Tæt (1, aktivering = "sigmoid"))
model.compile (tab = 'binary_crossentropy',
optimizer = 'adam',
metrics = [ 'nøjagtighed'])
print (model.summary ())

Det forrige kodestykker definerer formen på den dybe indlæringsmodel, hvor den bruger et par specialiserede lag til naturlig sprogbehandling fra Keras. Eksemplet har også krævet et resumé af kommandoen model (model.summary ()) for at bestemme, hvad der sker med arkitektur ved hjælp af forskellige neurale lag.

Du har Embedding-laget, der omdanner de numeriske sekvenser til et tæt indlejring af ord. Denne type ordindlejring er mere velegnet til at blive lært af et lag af RNN'er. Keras leverer et Embedding-lag, som bortset fra nødvendigvis at være det første lag i netværket, kan udføre to opgaver:

  • Anvendelse af forudbestemt ordindlejring (som Word2vec eller GloVe) på sekvensindtastningen. Du skal bare sende matrixen, der indeholder indlejringen, til dens parametervægte. Oprettelse af et indlejring af ord fra bunden af ​​de input, det modtager.

I dette andet tilfælde skal Embedding bare vide:

  • input_dim: Størrelsen på det ordforråd, der forventes fra data output_dim: Størrelsen på det indlejringsrum, der vil blive produceret (de såkaldte dimensioner) input_length: Sekvensstørrelsen, som du kan forvente

Når du har bestemt parametrene, finder Embedding de bedre vægte til at omdanne sekvenserne til en tæt matrix under træning. Den tætte matrixstørrelse er angivet af længden af ​​sekvenser og dimensioneringen af ​​indlejringen.

Hvis du bruger Embedding-laget leveret af Keras, skal du huske, at funktionen kun giver en vægtmatrix af størrelsen på ordforrådet efter dimensionen af ​​den ønskede indlejring. Det kortlægger ordene til matrixens kolonner og indstiller derefter matrixvægtene til de medfølgende eksempler. Selv om denne løsning er praktisk til ikke-standardiserede sprogproblemer, er det ikke analogt med de ordindlejringer, der er omtalt tidligere, som er trænet på en anden måde og på millioner af eksempler.

Eksemplet bruger tovejsindpakning - et LSTM-lag på 64 celler. Tovejs transformerer et normalt LSTM-lag ved at fordoble det: På første side anvender det den normale række af input, du leverer; på det andet passerer det modsat sekvens. Du bruger denne tilgang, fordi du undertiden bruger ord i en anderledes passende rækkefølge, og at opbygge et tovejslag fanger ethvert ordmønster, uanset rækkefølgen. Implementeringen af ​​Keras er faktisk ligetil: Du anvender den bare som en funktion på det lag, du vil gengive tovejs.

Den tovejs LSTM er indstillet til at returnere sekvenser (return_sequences = True); for hver celle returnerer det det leverede resultat efter at have set hvert element i sekvensen. Resultaterne for hver sekvens er en outputmatrix på 200 x 128, hvor 200 er antallet af sekvenselementer, og 128 er antallet af LSTM-celler, der er anvendt i laget. Denne teknik forhindrer RNN i at tage det sidste resultat af hver LSTM-celle. Tip om tekstens stemning kan faktisk vises hvor som helst i den indlejrede ordesekvens.

Kort sagt er det vigtigt ikke at tage det sidste resultat af hver celle, men snarere det bedste resultat af det. Koden er derfor afhængig af følgende lag, GlobalMaxPool1D, for at kontrollere hver sekvens af resultater leveret af hver LSTM-celle og kun beholde det maksimale resultat. Det skal sikre, at eksemplet vælger det stærkeste signal fra hver LSTM-celle, som forhåbentlig er specialiseret ved dens træning til at vælge nogle meningsfulde signaler.

Efter at de neurale signaler er filtreret, har eksemplet et lag på 128 udgange, en for hver LSTM-celle. Koden reducerer og blander signalerne ved hjælp af et successivt tæt lag med 16 neuroner med ReLU-aktivering (hvilket kun får positive signaler til at passere). Arkitekturen slutter med en endelig knude ved hjælp af sigmoid-aktivering, som vil skubbe resultaterne ind i området 0–1 og få dem til at ligne sandsynligheder.

Når du har defineret arkitekturen, kan du nu træne netværket til at udføre følelsesanalyse. Tre epoker (ved at videregive dataene tre gange gennem netværket for at få dem til at lære mønstre) vil være tilstrækkelige. Koden bruger batches på 256 anmeldelser hver gang, hvilket gør det muligt for netværket at se nok variation af ord og følelser hver gang, før de opdateres dens vægt ved hjælp af backpropagation. Endelig fokuserer koden på resultaterne leveret af valideringsdataene (som ikke er en del af træningsdataene). At få et godt resultat fra valideringsdataene betyder, at det neurale net behandler input korrekt. Koden rapporterer om valideringsdata lige efter hver epoke er afsluttet.

historie = model.fit (x_train, y_train,
validation_data = (x_test, y_test),
epoker = 3, batch_størrelse = 256)

Det tager et stykke tid at få resultaterne, men hvis du bruger en GPU, afsluttes det i den tid, du tager at drikke en kop kaffe. På dette tidspunkt kan du evaluere resultaterne igen ved hjælp af valideringsdata. (Resultaterne skal ikke have nogen overraskelser eller forskelle fra, hvad koden blev rapporteret under træning.)

tab, metrisk = model.evaluere (x_test, y_test, verbose = 0)
print ("Testnøjagtighed:% 0,3f"% metrisk)

Den endelige nøjagtighed, som er procentdelen af ​​de rigtige svar fra det dybe neurale netværk, vil være en værdi på omkring 85-86 procent. Resultatet ændres lidt, hver gang du kører eksperimentet på grund af randomisering, når du bygger dit neurale netværk. Det er helt normalt i betragtning af den lille størrelse af de data, du arbejder med. Hvis du starter med de rigtige heldige vægte, vil indlæringen være lettere i en så kort træningssession.

I sidste ende er dit netværk en følelsesanalysator, der kan gætte, hvad der er udtrykt i en filmanmeldelse korrekt omkring 85 procent af tiden. Givet endnu flere træningsdata og mere sofistikerede neuralarkitekturer kan du få resultater, der er endnu mere imponerende. I markedsføring bruges et lignende værktøj til at automatisere mange processer, der kræver læsning af tekst og handling. Igen kan du parre et netværk som dette med et neuralt netværk, der lytter til en stemme og omdanner det til tekst. (Dette er en anden anvendelse af RNN'er, der nu tager Alexa, Siri, Google Voice og mange andre personlige assistenter til rådighed.) Overgangen giver applikationen mulighed for at forstå stemningen, selv i vokale udtryk, såsom et telefonopkald fra en kunde.

  1. ProgrammeringBig DataData Science10 Typer af job, der bruger dyb læring

Af John Paul Mueller, Luca Mueller

Der er mange forskellige anvendelser til dyb læring - alt fra din stemmeaktiverede funktioner i din digitale assistent til selvkørende biler. Det er selvfølgelig rart at bruge dyb læring til at forbedre din daglige liv, men de fleste mennesker har brug for andre grunde til at omfavne en teknologi, såsom at få et job. Heldigvis påvirker dyb læring ikke bare din evne til at lokalisere information hurtigere, men tilbyder også nogle virkelig interessante jobmuligheder, og med den "wow" -faktor, som kun dyb læring kan give. Denne artikel giver dig et overblik over ti interessante erhverv, der i nogen grad er afhængige af dyb læring. Dette materiale repræsenterer dog kun toppen af ​​isbjerget; flere erhverv opstår, der bruger dyb læring hurtigt, og der tilføjes flere hver dag.

Dyb læring kan hjælpe, når man styrer mennesker

En skræmmende film kaldet The Circle ville få dig til at tro, at moderne teknologi vil være endnu mere invasiv end Big Brother i bogen 1984 af George Orwell. En del af filmens historie involverer installation af kameraer overalt - også i soveværelser. Hovedpersonen vågner op hver morgen for at hilse på alle, der ser på hende. Ja, det kan give dig vilje, hvis du lader det.

Virkelig dyb læring handler dog ikke for det meste om at overvåge og bedømme mennesker. Det er mere som Oracle's Global Human Resources Cloud. Langt fra at være skræmmende kan denne særlige teknologi få dig til at se smart og ud over alle dine aktiviteter i din dag. Videoen er lidt over toppen, men den giver dig en god idé om, hvordan dyb læring i øjeblikket kan gøre dit job lettere.

Tanken bag denne teknologi er at gøre succes lettere for mennesker. Hvis du ser på Oracle's video og tilknyttede materialer, finder du ud af, at teknologien hjælper ledelsen med at foreslå potentielle stier til medarbejdernes mål i organisationen. I nogle tilfælde kan medarbejderne lide deres nuværende situation, men softwaren kan stadig foreslå måder at gøre deres arbejde mere spændende og sjove på. Softwaren forhindrer, at medarbejderne går tabt i systemet og hjælper med at styre medarbejderen på et tilpasset niveau, så hver medarbejder får individualiseret input.

Dyb læring forbedrer medicinen

Dyb læring påvirker praktiseringen af ​​medicin på mange måder, som du kan se, når du går til lægen eller tilbringer tid på et hospital. Dyb læring hjælper med at diagnosticere sygdomme og finde deres rigtige kur. Dyb indlæring bruges endda til at forbedre diagnosticeringsprocessen for problemer, der er vanskelige at opdage, inklusive øjet. En af de vigtigste anvendelser til dyb læring i medicin er imidlertid inden for forskning.

Den tilsyneladende enkle handling med at finde de rigtige patienter til at bruge til forskningsformål er egentlig ikke så enkel. Patienterne skal opfylde strenge kriterier, ellers kan testresultaterne vise sig at være ugyldige. Forskere er nu afhængige af dyb læring til at udføre opgaver som at finde den rigtige patient, designe forsøgskriterierne og optimere resultaterne. Naturligvis har medicin brug for mange mennesker, der er uddannet både i medicin og i brugen af ​​dyb læringsteknikker til medicin for at fortsætte med at opnå fremskridt i deres nuværende tempo.

Dyb læring hjælper med at udvikle nye enheder

Innovation inden for nogle områder af computerteknologi, såsom det grundlæggende system, der nu er en vare, er aftaget gennem årene. Innovation inden for områder, der først for nylig blev bæredygtige, er imidlertid steget meget. En opfinder har i dag flere mulige forretninger til nye enheder end nogensinde før. Et af disse nye områder er midlerne til at udføre dybe læringsopgaver. For at skabe potentialet for at udføre dybe læringsopgaver med større kompleksitet bruger mange organisationer nu specialiseret hardware, der overskrider GPU'ers kapacitet - den i øjeblikket foretrukne behandlingsteknologi til dyb læring.

Dyb indlæringsteknologi er i sin vorden, så en smart opfinder kunne komme med noget interessant uden virkelig at arbejde så hårdt. Denne artikel fortæller om nye AI-teknologier, men selv disse teknologier begynder ikke at dyppe dybderne af, hvad der kunne ske.

Dyb læring tiltrækker både opfindernes og investorers opmærksomhed på grund af dets potentiale til at hæve den nuværende patentret og den måde, hvorpå folk skaber nye ting. En interessant del af de fleste af disse artikler er, at de forudsiger en markant stigning i job, der drejer sig om forskellige former for dyb læring, hvoraf de fleste involverer at skabe noget nyt. I det væsentlige kan du, hvis du kan gøre brug af dyb læring på en eller anden måde og parre det med en nuværende pulserende besættelse, finde et job eller udvikle en egen virksomhed.

Deep learning kan yde kundesupport

Mange dybdegående diskussioner refererer til chatbots og andre former for kundesupport, herunder oversættelsestjenester. Hvis du er nysgerrig, kan du få en interaktiv oplevelse med en chatbot på Pandorabots.com. Brugen af ​​chatbots og andre kundesupportteknologier har imidlertid skabt bekymring.

Nogle forbrugergrupper, der siger, at menneskelig kundesupport er dømt, som i denne Forbes-artikel. Men hvis du nogensinde har været nødt til at beskæftige dig med en chatbot for at udføre noget komplekst, ved du, at oplevelsen er mindre end tiltalende. Så det nye paradigme er den menneskelige og chatbot-kombination.

Meget af den teknologi, du ser brugt i dag, erstatter angiveligt et menneske, men i de fleste tilfælde kan det ikke. For tiden skal du forvente at se mange situationer, der har mennesker og bots, der arbejder sammen som et team. Bot reducerer belastningen ved at udføre fysisk intense opgaver såvel som de verdslige, kedelige opgaver. Mennesket vil gøre de mere interessante ting og give kreative løsninger på uventede situationer. Derfor er folk nødt til at få den uddannelse, der kræves for at arbejde i disse områder, og føler sig sikre på, at de fortsat har en beskæftigelse.

Deep learning kan hjælpe dig med at se data på nye måder

Se på en række websteder og andre datakilder, og du bemærker en ting: De præsenterer alle data forskelligt. En computer forstår ikke forskelle i præsentation og er ikke svajet af et eller andet look. Det forstår faktisk ikke data; det ser efter mønstre. Deep learning gør det muligt for applikationer at indsamle flere data på egen hånd ved at sikre, at applikationen kan se passende mønstre, selv når disse mønstre adskiller sig fra, hvad applikationen har set før. Selvom dyb læring vil forbedre og fremskynde indsamling af data, er det imidlertid nødvendigt, at et menneske fortolker dataene. Faktisk er mennesker stadig nødt til at sikre, at applikationen indsamler gode data, fordi applikationen virkelig ikke forstår noget om data.

En anden måde at se data på nye måder er at udføre dataforøgelse. Igen gør applikationen grynt arbejde, men det tager et menneske at bestemme, hvilken slags forstærkning der skal leveres. Med andre ord, det menneskelige gør den kreative, interessante del, og applikationen trækker sig bare sammen og sikrer, at tingene fungerer.

Disse to første brug af dyb læring er interessante, og de vil fortsætte med at generere job, men den mest interessante anvendelse af dyb læring er til aktiviteter, der endnu ikke findes. Et kreativt menneske kan se på måder, som andre bruger dyb læring og komme med noget nyt på. Tjek nogle interessante anvendelser af AI, maskinlæring og dyb læring, der lige nu bliver praktisk.

Dyb læring kan udføre analyse hurtigere

Når de fleste taler om analyse, tænker de på en forsker, en slags videnskabsmand eller en specialist. Imidlertid er dyb læring forankret på nogle interessante steder, der kræver menneskelig deltagelse for at se fuld brug, såsom forudsigelse af trafikulykker.

Forestil dig en politiafdeling, der tildeler ressourcer baseret på trafikflowmønstre, så en officer allerede venter på stedet for en forventet ulykke. Politiets løjtnant ville have brug for at vide, hvordan man bruger en applikation af denne art. Naturligvis er denne særlige anvendelse ikke sket endnu, men det kan meget sandsynligt være, fordi det allerede er muligt at bruge eksisterende teknologi. Så at udføre analyse vil ikke længere være et job for dem med "Dr." foran deres navne; det vil være for alle.

Analyse er i sig selv ikke så nyttig. Det er handlingen om at kombinere analysen med et specifikt behov i et bestemt miljø, der bliver nyttigt. Hvad du laver med analyse definerer effekten af ​​denne analyse på dig og dem omkring dig. Et menneske kan forstå begrebet analyse med et formål; en dyb læringsløsning kan kun udføre analysen og give et output.

Dyb læring kan hjælpe med at skabe et bedre arbejdsmiljø

Dyb læring vil gøre dit liv bedre og din beskæftigelse sjovere, hvis du tilfældigvis har færdigheder, der giver dig mulighed for at interagere med en AI. Denne artikel beskriver, hvordan AI kunne ændre arbejdspladsen i fremtiden. Et vigtigt element i denne diskussion er at gøre arbejdet mere indbydende.

På et tidspunkt i menneskets historie var arbejde faktisk sjovt for de fleste mennesker. Det er ikke, at de løb rundt og sang og griner hele tiden, men mange mennesker så frem til at starte hver dag. Senere, under den industrielle revolution, anbragte andre mennesker druden i arbejde, hvilket gjorde hver dag væk fra arbejdet til den eneste glæde, som nogle mennesker nød. Problemet er blevet så alvorligt, at du kan finde populære sange om det, som "Arbejde i weekenden." Ved at fjerne ruske fra arbejdspladsen har dyb læring potentialet til at gøre arbejdet underholdende igen.

Dyb læring vil påvirke arbejdsmiljøet stærkt på en række måder og ikke kun den faktiske udførelse af arbejdet. For eksempel har teknologier, der er baseret på dyb læring, potentialet til at forbedre dit helbred og derfor din produktivitet. Det er en sejr for alle, fordi du vil nyde livet og arbejde mere, mens din chef får mere af det skjulte potentiale fra din indsats.

En af de ting, som du ikke ser nævnt ofte, er virkningen på produktiviteten af ​​en faldende fødselsrate i udviklede lande. Denne McKinsey-artikel tager dette spørgsmål i nogen grad videre og giver et diagram, der viser den potentielle indvirkning af dyb læring på forskellige brancher. Hvis den nuværende tendens fortsætter, vil færre disponible arbejdstagere betyde et behov for udvidelse på arbejdspladsen.

Du kan dog undre dig over din fremtid, hvis du bekymrer dig for, at du muligvis ikke kan tilpasse dig den nye virkelighed. Problemet er, at du muligvis ikke ved, om du er sikker. I kunstig intelligens til dummies af John Paul Mueller og Luca Massaron [Wiley] ser du diskussioner om AI-sikre erhverv og nye erhverv, som AI vil skabe. Du kan endda opdage, hvordan du på et tidspunkt kan ende med at arbejde i rummet. Desværre er det ikke alle, der ønsker at foretage den slags bevægelse, ligesom Ludditerne ikke gjorde det under den industrielle revolution. Bestemt, hvad AI lover, vil få konsekvenser endnu større end den industrielle revolution gjorde (læs om virkningerne af den industrielle revolution) og vil være endnu mere forstyrrende. Nogle politikere, såsom Andrew Wang, ser allerede på kortvarige rettelser som grundlæggende universel indkomst. Disse politikker, hvis de blev vedtaget, ville hjælpe med at reducere virkningen af ​​AI, men de giver ikke en langsigtet løsning. På et tidspunkt vil samfundet blive markant anderledes end det er i dag som et resultat af AI - ligesom den industrielle revolution allerede har ændret samfundet.

Dyb læring kan hjælpe med at undersøge uklar eller detaljeret information

Computere kan gøre en ting - mønstermatchning - usædvanligt godt (og meget bedre end mennesker. Hvis du nogensinde har haft en fornemmelse af, at du flyder i information, og intet af det vedrører dit nuværende behov, er du ikke alene). overbelastning har været et problem i mange år og forværres hvert år. Du kan finde en masse råd om håndtering af informationsoverbelastning. Problemet er, at du stadig drukner i information. Dyp læring giver dig mulighed for at finde nålen i en høstak, og i en rimelig mængde tid. I stedet for måneder kunne en god dyb læringsløsning finde de oplysninger, du har brug for i løbet af timer i de fleste tilfælde.

Imidlertid er det normalt ikke tilstrækkeligt at vide, at oplysningerne findes. Du har brug for oplysninger, der er detaljerede nok til fuldt ud at besvare dit spørgsmål, hvilket ofte betyder at finde mere end en kilde og konsolidere informationen. Igen kunne en dyb læringsløsning finde mønstre og mash dataene sammen for dig, så du ikke behøver at kombinere input fra flere kilder manuelt.

Når AI finder dataene og kombinerer de flere kilder til en samlet sammenhængende rapport (håber du), har den gjort alt, hvad det kan for dig. Det er stadig op til det menneskelige at give mening om informationen og bestemme en måde at bruge dem med succes. Computeren fjerner ikke den kreative del af opgaven; det fjerner dumfinden ved at finde de ressourcer, der kræves for at udføre den kreative del af opgaven. Når informationen fortsætter med at stige, kan du forvente at se en stigning i antallet af mennesker, der er specialiserede i at finde detaljerede eller uklare oplysninger.

Informationsmægleren er ved at blive en væsentlig del af samfundet og repræsenterer en interessant karrierevej, som mange mennesker ikke engang har hørt om. Denne artikel giver en god oversigt over, hvad informationsmæglere gør.

Dyb læring kan hjælpe med at designe bygninger

De fleste mennesker ser arkitektur som en kreativ handel. Forestil dig at designe den næste Empire State Building eller en anden bygning, der vil det stå tidens prøve. Tidligere tog design af en sådan bygning år. Mærkeligt nok byggede entreprenøren faktisk Empire State Building på lidt over et år, men dette er normalt ikke tilfældet. Dyb læring og computerteknologi kan hjælpe med at reducere tiden til at designe og bygge bygninger betydeligt ved at tillade ting som virtuelle gennemgangsgange. Faktisk forbedrer brugen af ​​dyb læring arkitektenes liv på betydelige måder.

At omdanne et design til en virtuel tour er ikke engang den mest imponerende bedrift med dyb læring på dette felt. Brug af dyb læring gør det muligt for designere at lokalisere potentielle tekniske problemer, udføre stresstest og sikre sikkerhed på andre måder, før designet nogensinde forlader tegnebrættet. Disse muligheder minimerer antallet af problemer, der opstår, efter at en bygning er taget i drift, og arkitekten kan nyde laurbærene af en succes snarere end den hån og potentielle tragedie ved en fiasko.

Dyb læring kan forbedre sikkerheden

Ulykker sker! Imidlertid kan dyb læring hjælpe med at forhindre ulykker i at ske - i det mindste for det meste. Ved at analysere komplekse mønstre i realtid kan dyb læring hjælpe mennesker, der er involveret i forskellige aspekter af sikkerhedsgaranti. For eksempel ved at spore forskellige trafikmønstre og forudsige potentialet for en ulykke i god tid kan en dyb læringsløsning give sikkerhedseksperter forslag til at forhindre ulykken i det hele taget. Et menneske kunne ikke udføre analysen på grund af for mange variabler. Imidlertid kan en dyb læringsløsning udføre analysen og derefter levere output til et menneske til potentiel implementering.

Som med alle andre erhverv, der involverer dyb læring, fungerer det menneskelige som den forstående del af løsningen. Forskellige former for ulykker trodser evnen til enhver dyb læringsløsning til at levere præcise løsninger hver gang. Mennesker er ikke forudsigelige, men andre mennesker kan reducere oddsen for noget forfærdeligt, i betragtning af de rigtige oplysninger. Den dybe læringsløsning giver den korrekte information, men den kræver menneskelig fremsyn og intuition for at tolke informationen korrekt.

  1. ProgrammeringBig DataData Science10-applikationer, der kræver dyb læring

Af John Paul Mueller, Luca Mueller

Denne artikel er for kort. Det kan ikke engang begynde at beskrive de måder, hvorpå dyb læring vil påvirke dig i fremtiden. Overvej denne artikel til at tilbyde en forfriskende bidet - en forretter, der kan få din appetit til at udforske den dybe lærings verden yderligere.

Disse dybe læringsapplikationer er allerede almindelige i nogle tilfælde. Du har sandsynligvis brugt mindst en af ​​dem i dag, og sandsynligvis mere end bare en. Selvom teknologien er begyndt at se udbredt brug, er det virkelig bare begyndelsen. Vi er i begyndelsen af ​​noget, og AI er faktisk ganske umodent på dette tidspunkt.

gendanne farve til fotos med dyb læringsapplikationer

Denne artikel diskuterer ikke dræberobotter, dystopiske futures, AI-køre-amok eller nogen af ​​de sensationelle scenarier, du måtte se i filmene. De oplysninger, du finder her, handler om det virkelige liv, eksisterende AI-applikationer, som du kan interagere med i dag.

Dyb indlæring kan bruges til at gendanne farve til sort / hvide videoer og billeder

Du har sandsynligvis nogle sort / hvide videoer eller billeder af familiemedlemmer eller specielle begivenheder, som du ville elske at se i farve. Farve består af tre elementer: farvetone (den faktiske farve), værdi (farvets mørke eller lyshed) og mætning (farveintensiteten). Mærkeligt nok er mange kunstnere farveblinde og bruger stærk farveværdi i deres skabelser. Så at have farvetone mangler (det element, som sort / hvid kunst mangler), er ikke verdens ende. Tværtimod ser nogle kunstnere det som en fordel.

Når du ser på noget i sort / hvid, ser du værdi og mætning men ikke farvetone. Farvelægning er processen med at tilføje farvetone tilbage i. Kunstnere udfører generelt denne proces ved hjælp af et omhyggeligt valg af individuelle farver. AI har dog automatiseret denne proces ved hjælp af konvolutional neurale netværk (CNN'er).

Den nemmeste måde at bruge CNN til farvelægning er at finde et bibliotek, der kan hjælpe dig. Algorithmia-webstedet tilbyder et sådant bibliotek og viser et eksempel på en kode. Du kan også prøve applikationen ved at indsætte en URL i det medfølgende felt. Denne Petapixel.com-artikel beskriver, hvor godt denne applikation fungerer. Det er helt fantastisk!

Dyb læring kan omtrentlige personpositioner i realtid

Personopstillinger fortæller dig ikke, hvem der er i en videostrøm, men snarere hvilke elementer af en person der er i videostrømmen. For eksempel kan brug af en personpose fortælle dig, om personens albue vises i videoen, og hvor den vises. Denne artikel fortæller dig mere om, hvordan hele denne visualiseringsteknik fungerer. Faktisk kan du se, hvordan systemet fungerer gennem en kort animation af en person i det første tilfælde og tre personer i det andet tilfælde.

Personposeringer kan have alle mulige nyttige formål. For eksempel kan du bruge en personpose til at hjælpe folk med at forbedre deres form til forskellige sportsgrene - alt fra golf til bowling. En person, der udgør, kunne også muliggøre nye slags videospil. Forestil dig at være i stand til at spore en persons position for et spil uden det sædvanlige sortiment af besværlige gear. Teoretisk set kan du bruge personposer til at udføre analyse af kriminalitet eller til at bestemme muligheden for, at en person begår en forbrydelse.

En anden interessant anvendelse af pose-detektion er til medicinske og rehabiliteringsmæssige formål. Software drevet af dyb læring kan fortælle dig, om du laver dine øvelser korrekt og sporer dine forbedringer. En sådan anvendelse kan understøtte en professionel rehabiliterings arbejde ved at passe dig, når du ikke er på en medicinsk facilitet (en aktivitet kaldet telerehabilitering).

Heldigvis kan du i det mindste begynde at arbejde med personposeringer i dag ved hjælp af biblioteket tfjs-models (PoseNet). Du kan se det i handling med et webcam, komplet med kildekode. Eksemplet tager et stykke tid at indlæse, så du skal være tålmodig.

Dyb læring kan udføre realtidsanalyse

Adfærdsanalyse går et skridt ud over, hvad personen udgør analyse gør. Når du udfører adfærdsanalyse, er spørgsmålet stadig ikke et spørgsmål om hvem, men hvordan. Denne særlige AI-applikation påvirker, hvordan leverandører designer produkter og websteder. Artikler som denne fra Amplitude går meget langt for fuldt ud at definere og karakterisere brugen af ​​adfærdsanalyse. I de fleste tilfælde hjælper adfærdsanalyse dig med at se, hvordan den proces, som produktdesigneren forventede, at du fulgte, ikke stemmer overens med den proces, du rent faktisk bruger.

Adfærdsanalyse har også en rolle at spille på andre livsområder. F.eks. Kan adfærdsanalyse hjælpe folk i lægefaget til at identificere potentielle problemer med mennesker, der har specifikke medicinske tilstande, såsom autisme, og hjælpe patienten med at overvinde disse problemer. Adfærdsanalyse kan også hjælpe lærere i fysisk kunst med at vise studerende, hvordan de kan finpudse deres evner. Du kan også se det brugt i den juridiske profession til at hjælpe med at konstatere motiv. (Skylden er indlysende, men hvorfor en person gør noget, er essentielt for en retfærdig afhjælpning af en uønsket opførsel.)

Heldigvis kan du allerede begynde at udføre adfærdsanalyse med Python.

Dyb indlæring kan bruges til at oversætte sprog

Internettet har skabt et miljø, der kan forhindre dig i at vide, hvem du virkelig taler med, hvor personen er, eller nogle gange endda når personen taler til dig. Én ting er dog ikke ændret: behovet for at oversætte et sprog til et andet, når de to parter ikke taler et fælles sprog. I nogle få tilfælde kan mistildeling være humoristisk, hvis man antager, at begge parter har en sans for humor.

Mistranslation har imidlertid også ført til alle mulige alvorlige konsekvenser, herunder krig. Selvom oversættelsessoftware er ekstremt tilgængelig på Internettet, er det derfor vigtigt med omhyggeligt valg af det produkt, der skal bruges. En af de mest populære af disse applikationer er Google Translate, men mange andre applikationer er tilgængelige, såsom DeepL. Ifølge Forbes er maskinoversættelse et område, hvor AI udmærker sig.

Oversættelsesapplikationer er generelt afhængige af tovejs-tilbagevendende neurale netværk (BRNN'er). Du behøver ikke at oprette din egen BRNN, fordi du har mange eksisterende API'er at vælge imellem. For eksempel kan du få Python-adgang til Google Translate API ved hjælp af biblioteket. Pointen er, at oversættelse muligvis er en af ​​de mere populære dyb læringsapplikationer, og en, som mange mennesker bruger uden engang at tænke over det.

Dyb læring kan bruges til at estimere solbesparelsespotentialet

Det er vanskeligt at prøve at afgøre, om solenergi faktisk fungerer på dit sted, medmindre mange andre mennesker også bruger den. Derudover er det endnu sværere at vide, hvilket besparelsesniveau du kan få. Selvfølgelig ønsker du ikke at installere solenergi, hvis den ikke opfylder dine mål for at bruge den, hvilket muligvis ikke rent faktisk inkluderer langsigtede omkostningsbesparelser (selvom det generelt gør det). Nogle dybe forstærkende læringsprojekter hjælper dig nu med at tage gætteriet ud af solenergi, herunder Project Sunroof. Heldigvis kan du også få støtte til denne form for forudsigelse i din Python-applikation.

AI kan slå folk ved computerspil

Konkurrencen AI-kontra-folk tiltrækker fortsat interesse. Fra at vinde i skak til at vinde på Go ser AI ud til at være blevet uovervindelig - i det mindste uovervindelig på et spil. I modsætning til mennesker er AI specialiseret, og det er usandsynligt, at en AI, der kan vinde ved Go, klarer sig godt i skak. Alligevel hyldes 2017 ofte som begyndelsen på slutningen for mennesker over AI i spil. Naturligvis har konkurrencen været i gang i nogen tid, og du kan sandsynligvis finde konkurrencer, som AI vandt langt tidligere end 2017. Faktisk placerer nogle kilder datoen for en Go-sejr allerede i oktober 2015. Artiklen på Interesting Engineering beskriver 11 andre gange, som AI vandt.

Problemet er at brugerdefineret oprette en AI, der kan vinde et bestemt spil og indse, at AI ved specialisering i dette spil muligvis ikke klarer sig godt i andre spil. Processen med at opbygge en AI til kun et spil kan se vanskelig ud. Denne artikel beskriver, hvordan man opbygger en simpel skak AI, som faktisk ikke vil besejre en skakmester, men kunne gøre det godt med en mellemspiller.

Men det er faktisk lidt snart at sige, at folk er ude af spillet. I fremtiden kan folk konkurrere mod AI med mere end et spil. Eksempler på denne form for konkurrence er allerede overflod, såsom mennesker, der udfører i et triatlon af spil, der består af tre sportsbegivenheder snarere end et. Konkurrencen ville derefter blive en af ​​fleksibilitet: AI kunne ikke blot jagte ned og lære kun et spil, så mennesket ville have en fleksibilitet. Denne form for AI-anvendelse demonstrerer, at mennesker og AI muligvis er nødt til at samarbejde i fremtiden, hvor AI er specialiseret i specifikke opgaver og den menneskelige giver den fleksibilitet, der er nødvendig for at udføre alle nødvendige opgaver.

Dyb læring kan bruges til at generere stemmer

Din bil taler muligvis allerede til dig; mange biler taler regelmæssigt med folk nu. Mærkeligt nok er stemmegenerering ofte så god, at det er svært at fortælle den genererede stemme fra en rigtig. Nogle artikler taler om, hvordan oplevelsen af ​​at finde computerstemmer, der lyder ganske rigtigt, bliver mere almindelige. Problemet tiltrækker opmærksomhed nu, når mange callcentre fortæller dig, at du snakker med en computer snarere end en person.

Selvom opkaldsoutput er afhængig af scriptede svar, hvilket gør det muligt at generere svar med en ekstremt høj grad af selvtillid, er stemmegenkendelse lidt sværere at udføre (men det er meget forbedret). Hvis du vil arbejde med stemmegenkendelse med succes, skal du ofte begrænse dit input til specifikke nøgleudtryk. Ved at bruge nøgleord, som stemmegenkendelsen er designet til at forstå, undgår du behovet for, at en bruger gentager en anmodning. Dette behov for specifikke udtryk giver det væk, at du taler til en computer - bare bede om noget uventet, og computeren ved ikke, hvad de skal gøre med det.

Den nemme måde at implementere dit eget talesystem på er at stole på et eksisterende API, som f.eks. Cloud Speech to Text. Selvfølgelig har du muligvis brug for noget, du kan tilpasse. I dette tilfælde vil det være nyttigt at bruge en API. Denne artikel fortæller, hvordan du bygger din egen stemmebaserede applikation ved hjælp af Python.

Dyb læring kan bruges til at forudsige demografi

Demografi, disse vitale eller sociale statistikker, der grupperer mennesker efter bestemte egenskaber, har altid været en del kunst og en del videnskab. Du kan finde et vilkårligt antal artikler om, hvordan du får din computer til at generere demografi til klienter (eller potentielle klienter). Brugen af ​​demografi er vidtgående, men du kan se dem bruges til ting som forudsigelse af hvilket produkt en bestemt gruppe vil købe (i forhold til konkurrenceevnen). Demografi er et vigtigt middel til at kategorisere mennesker og derefter forudsige nogle handlinger fra deres side baseret på deres gruppeforeninger. Her er de metoder, som du ofte ser citeret til AI'er, når du indsamler demografi:

  • Historisk: Baseret på tidligere handlinger generaliserer en AI, hvilke handlinger du muligvis udfører i fremtiden. Nuværende aktivitet: Baseret på den handling, du udfører nu og måske andre egenskaber, såsom køn, forudsiger en computer din næste handling. Egenskaber: Baseret på de egenskaber, der definerer dig, såsom køn, alder og område, hvor du bor, forudsiger en computer de valg, du sandsynligvis vil tage.

Du kan finde artikler om AIs forudsigelsesfunktioner, der synes næsten for godt til at være sandt. For eksempel siger denne Medium-artikel, at AI nu kan forudsige din demografi udelukkende baseret på dit navn. Virksomheden i denne artikel, Demografy, hævder at give køn, alder og kulturel tilknytning udelukkende baseret på navn. Selvom webstedet hævder, at det er 100 procent nøjagtigt, er denne statistik meget usandsynlig, fordi nogle navne er køn tvetydige, såsom Renee, og andre er tildelt et køn i nogle lande og et andet køn i andre. Ja, demografisk forudsigelse kan fungere, men pas på, før du tror på alt det, som disse websteder fortæller dig.

Hvis du vil eksperimentere med demografisk forudsigelse, kan du finde et antal API'er online. For eksempel lover DeepAI API at hjælpe dig med at forudsige alder, køn og kulturel baggrund baseret på en persons udseende i en video. Hver af de online API'er specialiserer sig, så du er nødt til at vælge API med øje for den type inputdata, du kan levere.

AI kan skabe kunst fra billeder fra den virkelige verden

Dyb læring kan bruge indholdet af et billede i den virkelige verden og en eksisterende master til stil til at skabe en kombination af de to. Faktisk er nogle kunstværker, der genereres ved hjælp af denne fremgangsmåde, høje priser på auktionsblokken. Du kan finde alle mulige artikler om denne bestemte kunstgeneration, f.eks. Denne Wired-artikel.

Selvom billeder er dejlige til at hænge på væggen, kan det være en god ide at fremstille andre former for kunst. For eksempel kan du oprette en 3D-version af dit billede ved hjælp af produkter som Smoothie 3-D. Det er ikke det samme som at skabe en skulptur; snarere bruger du en 3D-printer til at opbygge en 3D-version af dit billede. Tjek et eksperiment, som du kan udføre for at se, hvordan processen fungerer.

Outputtet fra en AI behøver heller ikke at bestå af noget visuelt. For eksempel giver dyb læring dig mulighed for at oprette musik baseret på indholdet af et billede. Denne kunstform gør den metode, der bruges af AI, klarere. AI transformerer indhold, som den ikke forstår fra en form til en anden. Som mennesker ser og forstår vi transformationen, men alle computere ser er numre, der skal behandles ved hjælp af kloge algoritmer skabt af andre mennesker.

Dyb læring kan bruges til at forudsige naturkatastrofer

Folk har forsøgt at forudsige naturkatastrofer, så længe der har været mennesker og naturkatastrofer. Ingen ønsker at være en del af et jordskælv, tornado, vulkanudbrud eller anden naturkatastrofe. At være i stand til at komme væk hurtigt er den overvejende betragtning i dette tilfælde, da mennesker ikke kan kontrollere deres miljø godt nok til at forhindre enhver naturkatastrofe.

Dyb læring giver midlerne til at lede efter ekstremt subtile mønstre, der svirrer menneskers sind. Disse mønstre kan hjælpe med at forudsige en naturlig katastrofe ifølge artiklen om Googles løsning. At softwaren overhovedet kan forudsige enhver katastrofe, er simpelthen forbløffende. Denne artikel advarer dog om, at det kun er en fejl at stole på sådan software.

Overtilfredshed med teknologi er et konstant tema, så du skal ikke undre dig over, at dyb læring er mindre end perfekt til at forudsige naturlige katastrofer.

  1. ProgrammeringBig DataData ScienceDeep Learning og tilbagevendende neurale netværk

Af John Paul Mueller, Luca Mueller

Neurale netværk giver en transformation af dit input til en ønsket output. Selv i dyb læring er processen den samme, selvom transformationen er mere kompleks. I modsætning til et enklere neuralt netværk bestående af få lag, bygger dyb læring på flere lag for at udføre komplekse transformationer. Outputet fra en datakilde opretter forbindelse til det neurale netværks inputlag, og inputlaget begynder at behandle dataene. De skjulte lag kortlægger mønstrene og relaterer dem til en bestemt output, som kan være en værdi eller en sandsynlighed. Denne proces fungerer perfekt til enhver form for input, og den fungerer især godt til billeder.

Når hvert lag har behandlet sine data, udsendes det de transformerede data til det næste lag. Det næste lag behandler dataene med fuldstændig uafhængighed fra de foregående lag. Brugen af ​​denne strategi indebærer, at hvis du fodrer en video til dit neurale netværk, vil netværket behandle hvert billede enkeltvis, den ene efter den anden, og resultatet ændres overhovedet ikke, selvom du blandede rækkefølgen af ​​de medfølgende billeder . Når du kører et netværk på en sådan måde, får du ikke nogen fordel af rækkefølgen af ​​informationsbehandlingen.

Imidlertid lærer erfaringerne også, at man nogle gange er nødt til at observere begivenheder i rækkefølge for at forstå en proces. Når du bruger erfaringerne fra et tidligere trin til at udforske et nyt trin, kan du reducere læringskurven og mindske den tid og kræfter, der er nødvendige for at forstå hvert trin.

Gentagne neurale netværk: Modellerer sekvenser ved hjælp af hukommelse

Nogle neurale arkitekturer tillader ikke dig at behandle en række af elementer samtidig ved hjælp af en enkelt input. Når du for eksempel har en række månedlige produktsalg, imødekommer du salgstallene ved hjælp af tolv input, en for hver måned, og lader det neurale netværk analysere dem ad gangen. Det følger, at når du har længere sekvenser, skal du rumme dem ved hjælp af et større antal input, og dit netværk bliver ret stort, fordi hvert input skal forbinde med hver anden input. Du ender med at have et netværk, der er kendetegnet ved et stort antal forbindelser (som oversættes til mange vægte), også.

Tilbagevendende neurale netværk (RNN'er) er et alternativ til perceptron og CNN'er. De optrådte først i 1980'erne, og forskellige forskere har arbejdet for at forbedre dem, indtil de for nylig fik popularitet takket være udviklingen inden for dyb læring og computerkraft.

Ideen bag RNN'er er enkel, de undersøger hvert element i sekvensen en gang og beholder hukommelsen til det, så de kan genbruge det, når de undersøger det næste element i sekvensen. Det svarer til, hvordan det menneskelige sind fungerer, når man læser tekst: en person læser bogstav for bogstav teksten, men forstår ord ved at huske hvert bogstav i ordet. På lignende måde kan et RNN knytte et ord til et resultat ved at huske rækkefølgen af ​​bogstaver, det modtager. En udvidelse af denne teknik gør det muligt at bede en RNN om at afgøre, om en sætning er positiv eller negativ - en meget anvendt analyse kaldet sentimentanalyse. Netværket forbinder et positivt eller negativt svar til bestemte ordsekvenser, det har set i træningseksempler.

Du repræsenterer et RNN grafisk som en neural enhed (også kendt som en celle), der forbinder et input til et output, men også forbinder til sig selv. Denne selvforbindelse repræsenterer begrebet rekursion, som er en funktion, der anvendes på sig selv, indtil den opnår en bestemt output. Et af de mest almindeligt anvendte eksempler på rekursion er beregning af en faktorial. Billedet herunder viser et specifikt RNN-eksempel ved hjælp af en bogstavsekvens til at fremstille ordet jazz. Højre side af billedet herunder viser en repræsentation af RNN-enhedsadfærden, der modtager jazz som input, men der er faktisk kun den ene enhed, som vist til venstre.

dyb læring og tilbagevendende neurale netværk

Dette billede viser en rekursiv celle til venstre og udvider den som en udfoldet række enheder, der modtager de enkelte bogstaver i ordet jazz til højre. Det starter med j, efterfulgt af de andre bogstaver. Når denne proces opstår, udsender RNN et output og ændrer dets interne parametre. Ved at ændre sine interne parametre lærer enheden af ​​de data, den modtager, og fra hukommelsen til de foregående data. Summen af ​​denne læring er tilstanden for RNN-cellen.

Når du diskuterer neurale netværk, vil du høre en masse diskussion om vægte. Med RNN'er skal du også kende udtrykket tilstand. Vægtene hjælper med at behandle input til et output i et RNN, men staten indeholder sporene af de oplysninger RNN har set indtil videre, så staten påvirker funktionen af ​​RNN. Tilstanden er en slags korttidshukommelse, der nulstilles, når en sekvens er afsluttet. Når en RNN-celle får stykker af en sekvens, gør den følgende:

  1. Behandler dem og skifter tilstand med hver input. Udsender et output. Efter at have set den sidste output lærer RNN de bedste vægte til at kortlægge input til den rigtige output ved hjælp af bagpropagering.

Gentagne neurale netværk: Genkendelse og oversættelse af tale

Evnen til at genkende og oversætte mellem sprog bliver vigtigere for hver dag, efterhånden som økonomier overalt bliver stadig mere globaliserede. Sprogoversættelse er et område, hvor AI har en klar fordel i forhold til mennesker - så meget, at artikler fra Digitalist Magazine og Forbes begynder at stille spørgsmålstegn ved, hvor længe den menneskelige oversætter vil forblive levedygtig.

Naturligvis skal du gøre oversættelsesprocessen levedygtig ved hjælp af dyb læring. Fra et neuralt arkitekturperspektiv har du et par valg:

  • Opbevar alle output leveret af RNN-cellen Behold den sidste RNN-celleudgang

Den sidste output er output fra hele RNN, fordi den er produceret efter afsluttet sekvensundersøgelse. Du kan dog bruge de foregående output, hvis du har brug for at forudsige en anden sekvens, eller hvis du har til hensigt at stable flere RNN-celler efter den nuværende, f.eks. Når du arbejder med Convolutional Neural Networks (CNN'er). At sætte RNN'er lodret gør det muligt for netværket at lære komplekse sekvensmønstre og blive mere effektive til at producere forudsigelser.

Du kan også stable RNN'er vandret i det samme lag. At lade flere RNN'er lære af en sekvens kan hjælpe det med at få mere ud af dataene. Brug af flere RNN'er ligner CNN'er, hvor hvert enkelt lag bruger dybder af vindinger til at lære detaljer og mønstre fra billedet. I det multiple RNN-tilfælde kan et lag gribe fat i forskellige nuancer i den sekvens, de undersøger.

Designe raster af RNN'er, både vandret og lodret, forbedrer forudsigelige præstationer. At bestemme, hvordan man bruger output, afgør imidlertid, hvad en dyb læringsarkitektur, der er drevet af RNNs, kan opnå. Nøglen er antallet af elementer, der bruges som input og den forventede sekvenslængde som output. Når det dybe læringsnetværk synkroniserer RNN-output, får du det ønskede resultat.

Du har et par muligheder, når du bruger flere RNN'er, som afbildet på billedet herunder:

  • En til én: Når du har en input og forventer en output. De tager én sag, der består af et vist antal informative variabler, og giver et skøn, såsom et antal eller sandsynlighed. En til mange: Her har du et input, og du forventer en række af output som resultat. Automatisk overskrift af neurale netværk bruger denne fremgangsmåde: Du indtaster et enkelt billede og producerer en sætning, der beskriver billedindhold. Mange til én: Det klassiske eksempel for RNN'er. For eksempel indtaster du en tekstsekvens og forventer et enkelt resultat som output. Du ser denne fremgangsmåde brugt til at fremstille et estimat for en følelsesanalyse eller en anden klassificering af teksten. Mange til mange: Du angiver en sekvens som input og forventer en resulterende sekvens som output. Dette er kernearkitekturen i mange af de mest imponerende AI-applikationer med dyb læring. Denne fremgangsmåde bruges til maskinoversættelse (såsom et netværk, der automatisk kan oversætte en sætning fra engelsk til tysk), chatbots (et neuralt netværk, der kan besvare dine spørgsmål og argumentere med dig), og sekvensmærkning (klassificering af hver af billederne i en video).
tilbagevendende neurale netværksindgang og -udgang

Maskinoversættelse er en maskins evne til at oversætte, korrekt og meningsfuldt, et menneskeligt sprog til et andet. Denne kapacitet er noget, som forskere har bestræbt sig på at opnå i lang tid, især til militære formål. Du kan læse den fascinerende historie om alle forsøg på at udføre maskinoversættelse af amerikanske og russiske forskere i artiklen af ​​Vasily Zubarev. Det virkelige gennembrud skete først efter at Google lancerede sin Google Neural Machine Translation (GNMT), som du kan læse mere om på Google AI-bloggen. GNMT er afhængig af en række RNN'er (ved hjælp af mange-til-mange-paradigme) for at læse ordets sekvens på det sprog, du vil oversætte fra (kaldet kodelaget) og returnere resultaterne til et andet RNN-lag (dekoderlaget), som omdanner det til oversat output.

Neural maskinoversættelse har brug for to lag, fordi grammatikken og syntaks på det ene sprog kan være anderledes end et andet. Et enkelt RNN kan ikke fatte to sprogsystemer på samme tid, så det er nødvendigt at indkode-dekoderparret for at håndtere de to sprog. Systemet er ikke perfekt, men det er et utroligt spring fremad fra de tidligere løsninger beskrevet i Vasily Zubarevs artikel, hvilket reducerer fejl i ordrækkefølge, leksikale fejl (det valgte oversættelsesord) og grammatik (hvordan ord bruges).

Yderligere afhænger ydeevnen af ​​træningssættet, forskellene mellem de involverede sprog og deres specifikke egenskaber. På grund af hvordan sætningstruktur er opbygget på japansk, investerer den japanske regering nu i en stemmetidsoversætter i realtid til at hjælpe under de olympiske lege i Tokyo i 2020 og for at øge turismen ved at udvikle en avanceret neuralt netværksløsning.

RNN'er er grunden til, at din stemmeassistent kan svare dig, eller din automatiske oversætter kan give dig en fremmedsproglig oversættelse. Fordi en RNN simpelthen er en tilbagevendende operation af multiplikation og summering, kan dybe læringsnetværk ikke rigtig forstå nogen betydning; de behandler blot ord og sætninger baseret på hvad de lærte under træning.

Gentagne neurale netværk: Placer den korrekte billedtekst på billeder

En anden mulig anvendelse af RNN'er ved hjælp af mange-til-mange-fremgangsmåden er billedtekstgenerering, som involverer at give et billede til et neuralt netværk og modtage en tekstbeskrivelse, der forklarer, hvad der sker i billedet. I modsætning til chatbots og maskinoversættere, hvis output forbruges af mennesker, fungerer billedtekstgenerering med robotik. Det genererer mere end blot at generere billed- eller videobeskrivelser.

Generering af billedtekst kan hjælpe mennesker med nedsat syn med at opfatte deres omgivelser ved hjælp af enheder som Horus bærbar eller bygge en bro mellem billeder og videnbaser (som er tekstbaseret) for robotter - så de kan forstå deres omgivelser bedre. Du starter fra specielt udtænkte datasæt, som f.eks. Pascal Sentence-datasæt; Flickr 30K, der består af Flickr-billeder, der er kommenteret af crowd sourcing; eller MS Coco datasættet. I alle disse datasæt indeholder hvert billede en eller flere sætninger, der forklarer billedindholdet. I MS Coco-datasæteksemplet 5947 ser du for eksempel fire flyvende fly, som du kunne bruge billedtekst korrekt:

  • Fire fly i himlen overhead på en overskyet dag Fire enmotors fly i luften på en overskyet dag En gruppe på fire fly, der flyver i formation En gruppe af fly, der flyver gennem himlen En flåde af fly, der flyver gennem himlen

Et veluddannet neuralt netværk skal være i stand til at fremstille analoge sætninger, hvis de præsenteres for et lignende foto. Google offentliggjorde først et papir om løsningen på dette problem, navngivet Show and Tell-netværket eller Neural Image Caption (NIC), i 2014, og opdaterede det derefter et år senere.

Google har siden åbnet sourcing af NIC og tilbudt det som en del af TensorFlow-rammen. Som et neuralt netværk består det af en foruddrevet CNN (som Google LeNet, 2014-vinderen af ​​ImageNet-konkurrencen), der behandler billeder på lignende måde for at overføre læring.

Et billede omdannes til en sekvens af værdier, der repræsenterer de billedfunktioner på højt niveau, der er registreret af CNN. Under træning passerer det indlejrede billede til et lag RNN'er, der husker billedegenskaberne i deres interne tilstand. CNN sammenligner resultaterne produceret af RNN'erne med alle de mulige beskrivelser, der er angivet til træningsbilledet, og der beregnes en fejl. Fejlen bagpropagates derefter til RNNs del af netværket for at justere RNNs vægte og hjælpe den med at lære, hvordan man billedtekst korrekt. Efter at have gentaget denne proces mange gange med forskellige billeder, er netværket klar til at se nye billeder og give dets beskrivelse af disse nye billeder.

Gentagne neurale netværk giver muligheder for mere avanceret innovation og kan hjælpe med at automatisere nogle nødvendige opgaver.

  1. ProgrammeringBig DataData ScienceDeep Learning og Natural Language Processing

Af John Paul Mueller, Luca Mueller

Som en forenkling kan du se sproget som en række ord, der er lavet af bogstaver (samt tegnsætningstegn, symboler, humørikoner osv.). Dyb indlæring behandler sprog bedst ved hjælp af lag af RNN'er, såsom LSTM eller GRU. At vide at bruge RNN'er fortæller dig dog ikke, hvordan du bruger sekvenser som input; skal du bestemme typen af ​​sekvenser. Faktisk accepterer dybe læringsnetværk kun numeriske inputværdier. Computere koder for bogstavsekvenser, som du forstår i tal i henhold til en protokol, såsom Unicode Transformation Format-8 bit (UTF-8). UTF-8 er den mest anvendte kodning.

Dyb indlæring kan også behandle tekstdata ved hjælp af konvolutional neurale netværk (CNN'er) i stedet for RNN'er ved at repræsentere sekvenser som matrixer (svarende til billedbehandling). Keras understøtter CNN-lag, såsom Conv1D, der kan fungere på ordrede funktioner i tid - det vil sige ordssekvenser eller andre signaler. 1D-konvolutionsudgangen følges normalt af et MaxPooling1D-lag, der opsummerer output. CNN'er anvendt på sekvenser finder en grænse i deres ufølsomhed over for den globale rækkefølge af sekvensen. (De har en tendens til at se lokale mønstre.) Derfor bruges de bedst i sekvensbehandling i kombination med RNN'er, ikke som deres erstatning.

Natural Language Processing (NLP) består af en række procedurer, der forbedrer behandlingen af ​​ord og sætninger til statistisk analyse, maskinlæringsalgoritmer og dyb læring. NLP skylder sine rødder til datalingvistik, der drev AI-regelbaserede systemer, såsom ekspertsystemer, der tog beslutninger baseret på en computeroversættelse af menneskelig viden, erfaring og måde at tænke på. NLP fordøjede tekstinformation, som er ustruktureret, i mere strukturerede data, så ekspertsystemer let kunne manipulere og evaluere den.

Dyb læring har taget overhånd i dag, og ekspertsystemer er begrænset til specifikke applikationer, hvor fortolkningsevne og kontrol af beslutningsprocesser er altafgørende (for eksempel i medicinske applikationer og beslutningssystemer for køreadfærd på nogle selvkørende biler). Alligevel er NLP-pipeline stadig meget relevant for mange applikationer med dyb læring.

Natural Language Processing: Definition af forståelse som tokenization

I en NLP-pipeline er det første trin at få rå tekst. Normalt gemmer du det i hukommelsen eller får adgang til det fra disken. Når dataene er for store til at passe ind i hukommelsen, opretholder du en markør til dem på disken (f.eks. Katalognavnet og filnavnet). I det følgende eksempel bruger du tre dokumenter (repræsenteret af strengvariabler) gemt på en liste (dokumentbeholderen er corpus in nat

import numpy som np
tekster = ["Min hund kommer sammen med katte",
"Den kat er ondskabsfuld",
"Min hund er glad, når det er frokost"]

Når du har fået teksten, behandler du den. Når du behandler hver sætning, udtrækker du de relevante funktioner fra teksten (du opretter normalt en taske-med-ord-matrix) og overfører alt til en læringsmodel, såsom en dyb indlæringsalgoritme. Under tekstbehandling kan du bruge forskellige transformationer til at manipulere teksten (med tokenisering som den eneste obligatoriske transformation):

  • Normalisering: Fjern store bogstaver. Rengøring: Fjern ikke-tekstuelle elementer som tegnsætning og tal. Tokenisering: Opdel en sætning i individuelle ord. Stop ordfjernelse: Fjern almindelige, uinformative ord, der ikke tilføjer mening til sætningen, f.eks. Artiklerne og a. Fjernelse af negationer som ikke kunne være skadeligt, hvis du vil gætte stemningen. Stemming: Reducer et ord til dets stamme (som er ordformen, før du tilføjer bøjningsaffikser). En algoritme, kaldet en stammer, kan gøre dette baseret på en række regler. Lemmatisering: Transformer et ord til dets ordbogsform (lemmaet). Det er et alternativ til at stamme, men det er mere kompliceret, fordi du ikke bruger en algoritme. I stedet bruger du en ordbog til at konvertere hvert ord til dets lemma. Pos-tagging: Mærk hvert ord i en sætning med dens grammatiske rolle i sætningen (f.eks. At mærke et ord som et verb eller som et substantiv). N-gram: Tilknyt hvert ord til et bestemt antal (n i n-gram) ved at følge ord og behandle dem som et unikt sæt. Normalt fungerer bi-gram (en serie af to tilstødende elementer eller tegn) og tri-gram (en serie med tre tilstødende elementer eller symboler) det bedste til analyseformål.

For at opnå disse transformationer har du muligvis brug for en specialiseret Python-pakke, såsom NLTK eller Scikit-learning. Når du arbejder med dyb læring og et stort antal eksempler, har du kun brug for grundlæggende transformationer: normalisering, rengøring og tokenisering. De dybe læringslag kan bestemme, hvilke oplysninger der skal udtrækkes og behandles. Når du arbejder med få eksempler, er du nødt til at levere så meget NLP-behandling som muligt for at hjælpe det dybe læringsnetværk med at bestemme, hvad de skal gøre på trods af den lille vejledning, der er leveret af de få eksempler.

Keras tilbyder en funktion, keras.preprocessing.text.Tokenizer, der normaliserer (ved hjælp af den nedre parameter indstillet til True), renser (filterparameteren indeholder en streng med de tegn, der skal fjernes, normalt disse: '! ”# $% & ( ) * +, -. /:; <=>? @ [\] ^ _ `{|} ~ ') og symboliserer.

Natural Language Processing: Læg alle dokumenter i en pose

Efter at have behandlet teksten, skal du udpakke de relevante funktioner, hvilket betyder at omdanne den resterende tekst til numerisk information for det neurale netværk, der skal behandles. Dette gøres almindeligvis ved hjælp af taske-med-ord-fremgangsmåden, som opnås ved frekvenskodning eller binær kodning af teksten. Denne proces svarer til at omdanne hvert ord til en matrixsøjle så bredt som det antal ord, du har brug for at repræsentere. Følgende eksempel viser, hvordan man opnår denne proces, og hvad den indebærer. Som et første trin forbereder du en grundlæggende normalisering og tokenisering ved hjælp af et par Python-kommandoer til at bestemme ordets ordforrådsstørrelse til behandling:

unique_words = sæt (word.lower () til sætning i tekster til
ord i sætning.split ("")
print (f "Der er {len (unique_words)} unikke ord")

Koden rapporterer 14 ord. Du fortsætter nu med at indlæse Tokenizer-funktionen fra Keras og indstille den til at behandle teksten ved at tilvejebringe den forventede ordforrådstørrelse:

fra keras.preprocessing.text import Tokenizer
vocabulary_size = len (unique_words) + 1
tokenizer = Tokenizer (num_words = vokabular_størrelse)

Brug af et ordforråd_størrelse, der er for lille, kan udelukke vigtige ord fra læringsprocessen. En, der er for stor, kan unyttigt forbruge computerhukommelse. Du skal give Tokenizer et korrekt estimat af antallet af forskellige ord, der findes på listen over tekster. Du tilføjer også altid 1 til vokabularet_størrelse for at give et ekstra ord til starten af ​​en sætning (et udtryk, der hjælper det dybe læringsnetværk). På dette tidspunkt kortlægger Tokenizer ordene, der findes i teksterne, til indekser, som er numeriske værdier, der repræsenterer ordene i teksten:

tokenizer.fit_on_texts (tekster)
print (tokenizer.index_word)

De resulterende indekser er som følger:

{1: 'er', 2: 'min', 3: 'hund', 4: 'får', 5: 'sammen',
6: 'med', 7: 'katte', 8: 'den', 9: 'med kat', 10: 'ondskabsfuld',
11: 'glad', 12: 'når', 13: 'det', 14: 'frokost'}

Indekserne repræsenterer kolonnenummeret, der indeholder ordinformation:

print (tokenizer.texts_to_matrix (tekster))

Her er den resulterende matrix:

[[0. 0. 1. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 1. 0. 0. 0. 0.]
[0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1.]]

Matrixen består af 15 kolonner (14 ord plus starten på sætningspekeren) og tre rækker, der repræsenterer de tre behandlede tekster. Dette er tekstmatrixen, der skal behandles ved hjælp af et lavt neuralt netværk (RNN'er kræver et andet format, som diskuteret senere), som altid er dimensioneret som ordforrådstørrelse med antallet af tekster. Tallene inde i matrixen repræsenterer antallet af gange, der vises et ord i sætningen. Dette er dog ikke den eneste repræsentation, der er mulig. Her er de andre:

  • Frekvenskodning: Tæller antallet af ordforekomster i sætningen. one-hot kodning eller binær kodning: bemærker tilstedeværelsen af ​​et ord i en sætning, uanset hvor mange gange det vises. Termfrekvens - Inverse Document Frequency (TF-IDF) score: Koder for et mål i forhold til hvor mange gange et ord vises i et dokument i forhold til det samlede antal ord i matrixen. (Ord med højere score er mere karakteristiske; ord med lavere score er mindre informative.)

Du kan bruge TF-IDF-transformationen direkte fra Keras. Tokenizer tilbyder en metode, tekster_til_matrix, som som standard koder din tekst og omdanner den til en matrix, hvor kolonnerne er dine ord, rækkerne er dine tekster, og værdierne er ordfrekvensen i en tekst. Hvis du anvender transformationen ved at specificere mode = 'tfidf', bruger transformationen TF-IDF i stedet for ordfrekvenser til at udfylde matrixværdierne:

udskrive (np.round (tokenizer.texts_to_matrix (tekster,
tilstand = 'tfidf'), 1))

Bemærk, at ved hjælp af en matrixrepræsentation, uanset om du bruger binær, frekvens eller den mere sofistikerede TF-IDF, har du mistet enhver følelse af ordrækkefølge, der findes i udtrykket. Under behandlingen spreder ordene sig i forskellige kolonner, og det neurale netværk kan ikke gætte ordrækkefølgen i en sætning. Denne manglende orden er grunden til, at du kalder det en taske-med-ord-tilgang.

Bag-med-ord-metoden bruges i mange maskinlæringsalgoritmer, ofte med resultater fra god til fair, og du kan anvende den til et neuralt netværk ved hjælp af tætte arkitekturlag. Transformationer af ord, der er kodet til n_grams (diskuteret i det foregående afsnit som en NLP-behandlingstransformation) giver nogle flere oplysninger, men igen kan du ikke fortælle ordene.

RNN'er holder styr på sekvenser, så de bruger stadig en hot kodning, men de koder ikke hele frasen, snarere koder de individuelt for hvert token (som kan være et ord, et tegn eller endda et stykke tegn). Af denne grund forventer de en række indekser, der repræsenterer sætningen:

print (tokenizer.texts_to_sequences (tekster))

Når hver sætning går til et neuralt netværksinput som en sekvens af indeksnumre, omdannes antallet til en en-kodet vektor. De ene-varme kodede vektorer føres derefter ind i RNN's lag ad gangen, hvilket gør dem lette at lære. For eksempel er her transformationen af ​​den første sætning i matrixen:

[[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]]

I denne repræsentation får du en markant matrix for hvert stykke tekst. Hver matrix repræsenterer de individuelle tekster som forskellige ord ved hjælp af kolonner, men nu repræsenterer rækkerne ordets udseende. (Den første række er det første ord, den anden række er det andet ord osv.)

Ved hjælp af denne grundlæggende tilgang er dataforskere i stand til at bruge dyb læring til Natural Language Processing.

  1. ProgrammeringBig DataData ScienceNeural Networks and Deep Learning: Neural Network Differentiation

Af John Paul Mueller, Luca Mueller

Når du ved, hvordan neurale netværk dybest set fungerer, har du brug for en bedre forståelse af, hvad der adskiller dem for at forstå deres rolle i dyb læring. Ud over de forskellige neurale netværksarkitekturer kan valget af aktiveringsfunktioner, optimizers og det neurale netværks indlæringshastighed gøre forskellen. At kende basale operationer er ikke nok, fordi du ikke får de ønskede resultater. At se under hætten på et neuralt netværk hjælper dig med at forstå, hvordan du kan indstille din løsning til at modellere specifikke problemer. Derudover vil forståelse af de forskellige algoritmer, der bruges til at oprette et neuralt netværk, hjælpe dig med at opnå bedre resultater med mindre kræfter og på kortere tid. Den følgende artikel fokuserer på tre områder af differentieret neuralt netværk.

Valg af den rigtige aktiveringsfunktion til dit neurale netværk

En aktiveringsfunktion er den del af et neuralt netværk, der blot definerer, når en neuron affyres. Betragt det som en slags vippepunkt: input af en bestemt værdi får ikke neuronet til at skyde, fordi det ikke er nok, men bare lidt mere input kan få neuronet til at skyde. En neuron defineres på en enkel måde som følger:

y = ∑ (vægt * input) + bias

Outputet, y, kan være en hvilken som helst værdi mellem + uendelig og - uendelig. Problemet er derfor at beslutte, hvilken værdi af y er skydeværdien, som er, hvor en aktiveringsfunktion kommer i spil i dit neurale netværk. Aktiveringsfunktionen bestemmer, hvilken værdi er høj eller lav nok til at reflektere et beslutningspunkt i det neurale netværk for en bestemt neuron eller gruppe af neuroner.

Som med alt andet i neurale netværk, har du ikke kun en aktiveringsfunktion. Du bruger den aktiveringsfunktion, der fungerer bedst i et bestemt scenario. Med dette i tankerne kan du opdele aktiveringsfunktionerne i disse kategorier:

  • Trin: En trinfunktion (også kaldet en binær funktion) er afhængig af en bestemt tærskel til beslutningstagning om aktivering eller ej. Brug af en trinfunktion betyder, at du ved, hvilken specifik værdi der vil forårsage en aktivering. Trinfunktioner er dog begrænset, da de enten er fuldt aktiverede eller fuldstændigt deaktiverede - der findes ingen grå nuancer. Når man forsøger at bestemme, hvilken klasse der sandsynligvis er korrekt baseret på et givet input, fungerer en trinfunktion derfor ikke. Lineær: En lineær funktion (A = cx) giver en lineær bestemmelse af aktivering baseret på input. Brug af en lineær funktion hjælper dig med at bestemme, hvilket output der skal aktiveres, baseret på hvilket output der er mest korrekt (som udtrykt ved vægtning). Lineære funktioner fungerer imidlertid kun som et enkelt lag. Hvis du stabler flere lineære funktionslag, ville output være det samme som at bruge et enkelt lag, som besejrer formålet med at bruge neurale netværk. Følgelig kan en lineær funktion vises som et enkelt lag, men aldrig som flere lag. Sigmoid: En sigmoid-funktion (A = 1/1 + e-x), der producerer en kurve formet som bogstavet C eller S, er ikke-lineær. Det begynder med at se slags ud som trinfunktionen, bortset fra at værdierne mellem to punkter faktisk findes på en kurve, hvilket betyder, at du kan stable sigmoidfunktioner for at udføre klassificering med flere output. Området for en sigmoid-funktion er mellem 0 og 1, ikke - uendelig til + uendelig som med en lineær funktion, så aktiveringerne er bundet inden for et specifikt område. Sigmoid-funktionen lider imidlertid af et problem, der kaldes forsvindingsgradient, hvilket betyder, at funktionen nægter at lære efter et bestemt punkt, fordi den udbredte fejl krymper til nul, når den nærmer sig langt væk lag. Tanh: En tanh-funktion (A = (2/1 + e-2x) - 1) er faktisk en skaleret sigmoid-funktion. Det har en række fra 1 til 1, så igen, det er en præcis metode til at aktivere neuroner. Den store forskel mellem sigmoidfunktioner og tanh-funktioner er, at tanh-funktionsgradienten er stærkere, hvilket betyder, at detektering af små forskelle er lettere, hvilket gør klassificeringen mere følsom. Ligesom sigmoid-funktionen lider tanh af forsvindende gradientproblemer. ReLU: En ReLU eller korrigerede lineære enheder, funktion (A (x) = max (0, x)) giver et output i området fra 0 til uendelig, så det ligner den lineære funktion bortset fra at det også er ikke-lineært, hvilket gør det muligt for dig til at stack ReLU-funktioner. En fordel ved ReLU er, at det kræver mindre behandlingskraft, fordi færre neuroner affyres. Manglen på aktivitet, når neuronet nærmer sig 0-delen af ​​linjen, betyder, at der er færre potentielle output at se på. Denne fordel kan imidlertid også blive en ulempe, når du har et problem kaldet den døende ReLU. Efter et stykke tid giver de neurale netværksvægte ikke længere den ønskede effekt (det holder bare med at lære), og de berørte neuroner dør - de svarer ikke på noget input.

ReLU har også nogle varianter, som du skal overveje:

  • ELU (eksponentiel lineær enhed): Afviger fra ReLU, når input er negative. I dette tilfælde går output ikke til nul, men falder i stedet langsomt til –1 eksponentielt. PReLU (Parametrisk berigtiget lineær enhed): adskiller sig fra ReLU, når input er negative. I dette tilfælde er output en lineær funktion, hvis parametre læres ved hjælp af den samme teknik som alle andre parametre på netværket. LeakyReLU: Ligner PReLU, men parameteren for den lineære side er fast.

Stole på en smart optimizer til dit neurale netværk

En optimizer tjener til at sikre, at dit neurale netværk udfører hurtige og korrekte modeller, uanset hvilket problem du vil løse, ved at ændre det neurale netværks forspændinger og vægte (se denne artikel for mere om forbedring af dine maskinlæringsmodeller). Det viser sig, at en algoritme udfører denne opgave, men du skal vælge den rigtige algoritme for at få de resultater, du forventer. Som med alle neurale netværksscenarier har du et antal valgfri algoritmetyper, som du kan vælge fra:

Stokastisk gradientafstigning (SGD)

  • RMSProp AdaGrad AdaDelta AMSGrad Adam og dens varianter, Adamax og Nadam

En optimizer fungerer ved at minimere eller maksimere output fra en objektiv funktion (også kendt som en fejlfunktion) repræsenteret som E (x). Denne funktion er afhængig af modellens interne indlærbare parametre, der bruges til at beregne målværdierne (Y) fra prediktorerne (X). To interne indlærbare parametre er vægte (W) og bias (b). De forskellige algoritmer har forskellige metoder til at håndtere objektivfunktionen.

Du kan kategorisere optimeringsfunktionerne efter den måde, de behandler derivatet (dy / dx), som er den øjeblikkelige ændring af y i forhold til x. Her er de to niveauer af afledt håndtering:

  • Første rækkefølge: Disse algoritmer minimerer eller maksimerer objektivfunktionen ved hjælp af gradientværdier med hensyn til parametrene. Anden ordre: Disse algoritmer minimerer eller maksimerer objektfunktionen ved hjælp af andenordens derivatværdier med hensyn til parametrene. Det andet ordens derivat kan give et tip om, hvorvidt den første ordens derivat stiger eller falder, hvilket giver information om linjens krumning.

Du bruger ofte førsteordens optimeringsteknikker i neurale netværk, såsom Gradient Descent, fordi de kræver færre beregninger og har en tendens til at konvergere til en god løsning relativt hurtigt, når du arbejder med store datasæt.

Indstilling af en arbejdsindlæringshastighed i dit neurale netværk

Hver optimizer har helt forskellige parametre, som du kan indstille dit neurale netværk. En konstant er at fastlægge indlæringshastigheden, som repræsenterer den hastighed, hvormed koden opdaterer netværkets vægte (f.eks. Alfaparameteren). Læringshastigheden kan påvirke både den tid, det neurale netværk tager for at lære en god løsning (antallet af epoker) og resultatet. Faktisk, hvis indlæringshastigheden er for lav, tager dit netværk evigt at lære. Indstilling af værdien for høj forårsager ustabilitet ved opdatering af vægtene, og netværket konvergerer aldrig nogensinde til en god løsning.

Det er skræmmende at vælge en indlæringshastighed, der fungerer og træne dit neurale netværk, fordi du effektivt kan prøve værdier i området fra 0,000001 til 100. Den bedste værdi varierer fra optimizer til optimizer. Den valgte værdi afhænger af, hvilken type data du har. Teori kan være til lidt hjælp her; skal du teste forskellige kombinationer, før du finder den mest passende læringshastighed til at træne dit neurale netværk med succes.

På trods af al den matematik, der omgiver dem, er det hovedsageligt et spørgsmål om empirisk indsats for at prøve forskellige kombinationer af arkitekturer og parametre, at indstille neurale netværk og få dem til at fungere bedst.

Tag dig tid til at evaluere indlæringshastigheden og indstil den passende for at sikre, at dit neurale netværk fungerer optimalt.

  1. ProgrammeringBig DataData Science Hvordan fungerer maskinlæring?

Af John Paul Mueller, Luca Mueller

Maskinlæring er en applikation af AI, der automatisk kan lære og forbedre erfaringerne uden at være eksplicit programmeret til at gøre det. Maskinindlæring sker som et resultat af analyse af stadigt stigende datamængder, så de grundlæggende algoritmer ændres ikke, men kodens interne vægte og forudindstillinger, der bruges til at vælge et bestemt svar, gør. Intet er naturligvis helt så enkelt. Den følgende artikel diskuterer mere om, hvad maskinlæring er, så du kan forstå dens plads i AI-verdenen og hvad dyb læring får fra den.

Dataforskere refererer ofte til den teknologi, der bruges til at implementere maskinlæring som algoritmer. En algoritme er en række trin-for-trin-operationer, som regel beregninger, der kan løse et defineret problem i et begrænset antal trin. I maskinlæring bruger algoritmerne en række begrænsede trin til at løse problemet ved at lære af data.

At forstå, hvordan maskinlæring fungerer

Maskinlæringsalgoritmer lærer, men det er ofte svært at finde en præcis betydning for udtrykket indlæring, fordi der findes forskellige måder at udtrække oplysninger fra data, afhængigt af hvordan maskinlæringsalgoritmen er bygget. Generelt kræver læringsprocessen enorme mængder data, der giver et forventet svar i betragtning af bestemte input. Hvert input / responspar repræsenterer et eksempel, og flere eksempler gør det lettere for algoritmen at lære. Det skyldes, at hvert input / responspar passer inden for en linje, klynge eller anden statistisk repræsentation, der definerer et problemdomæne.

Maskinindlæring er handlingen med at optimere en model, som er en matematisk, sammenfattet repræsentation af dataene i sig selv, så den kan forudsige eller på anden måde bestemme et passende svar, også når det modtager input, som de ikke har set før. Jo mere nøjagtigt modellen kan komme med rigtige svar, jo bedre har modellen lært af de leverede dataindgange. En algoritme passer modellen til dataene, og denne passende proces er træning.

Billedet herunder viser en ekstremt enkel graf, der simulerer, hvad der sker i maskinlæring. I dette tilfælde, startende med inputværdier på 1, 4, 5, 8 og 10 og parring dem med deres tilsvarende output på 7, 13, 15, 21 og 25, bestemmer maskinlæringsalgoritmen, at den bedste måde at repræsentere forholdet mellem input og output er formlen 2x + 5. Denne formel definerer modellen, der bruges til at behandle inputdataene - selv nye, usete data - for at beregne en tilsvarende outputværdi. Trendlinjen (modellen) viser det mønster, der er dannet af denne algoritme, således at et nyt input på 3 giver et forudsagt output på 11. Selvom de fleste maskinlæringsscenarier er meget mere komplicerede end dette (og algoritmen ikke kan oprette regler, der nøjagtigt kortlægger hvert input til en præcis output), eksemplet giver giver dig en grundlæggende idé om, hvad der sker. I stedet for at skulle programmere et svar til et input på 3 individuelt, kan modellen beregne det rigtige svar baseret på input / responspar, som den har lært.

grundlæggende maskinlæringsscenarie

At forstå, at maskinlæring er ren matematik

Den centrale idé bag maskinlæring er, at du kan repræsentere virkeligheden ved at bruge en matematisk funktion, som algoritmen ikke kender på forhånd, men som den kan gætte efter at have set nogle data (altid i form af parrede indgange og output). Du kan udtrykke virkeligheden og al dens udfordrende kompleksitet med hensyn til ukendte matematiske funktioner, som maskinlæringsalgoritmer finder og gør tilgængelige som en ændring af deres interne matematiske funktion. Det vil sige, at enhver maskinlæringsalgoritme er bygget op omkring en modificerbar matematikfunktion. Funktionen kan ændres, fordi den har interne parametre eller vægte til et sådant formål. Som et resultat kan algoritmen skræddersy funktionen til specifik information hentet fra data. Dette koncept er kerneideen for alle slags maskinlæringsalgoritmer.

Læring i maskinlæring er rent matematisk, og det ender med at knytte visse input til bestemte output. Det har intet at gøre med at forstå, hvad algoritmen har lært. (Når mennesker analyserer data, bygger vi en forståelse af dataene i en vis grad.) Læringsprocessen beskrives ofte som træning, fordi algoritmen er trænet til at matche det rigtige svar (output) til ethvert spørgsmål, der tilbydes (input). (Machine Learning For Dummies, af John Paul Mueller og Luca Massaron, beskriver, hvordan denne proces fungerer detaljeret.)

På trods af manglende bevidst forståelse og at være en matematisk proces, kan maskinlæring vise sig at være nyttig i mange opgaver. Det giver mange AI-applikationer magten til at efterligne rationel tænkning, der er givet en bestemt kontekst, når indlæring sker ved at bruge de rigtige data.

Forskellige strategier for maskinlæring

Maskinlæring tilbyder en række forskellige måder at lære af data på. Afhængigt af dit forventede output og den type input, du leverer, kan du kategorisere algoritmer efter indlæringstil. Den stil, du vælger, afhænger af den slags data, du har, og det resultat, du forventer. De fire læringsformer, der bruges til at oprette algoritmer, er:

  • Overvåget maskinlæring Uovervåget maskinlæring Selvledd maskinlæring Forstærkning af maskinlæring

De følgende afsnit diskuterer disse maskinlæringsstile.

Overvåget maskinlæring

Når man arbejder med overvågede maskinlæringsalgoritmer, er inputdataene mærket og har et specifikt forventet resultat. Du bruger træning til at oprette en model, som en algoritme passer til dataene. Efterhånden som træningen skrider frem, bliver forudsigelserne eller klassificeringerne mere nøjagtige. Her er nogle eksempler på overvågede maskinlæringsalgoritmer:

  • Lineær eller logistisk regression Support vektormaskiner (SVM'er) Naive Bayes K-nærmeste naboer (KNN)

Du skal skelne mellem regressionsproblemer, hvis mål er en numerisk værdi, og klassificeringsproblemer, hvis mål er en kvalitativ variabel, såsom en klasse eller et mærke. En regressionsopgave kunne bestemme gennemsnitspriserne på huse i Boston-området, mens et eksempel på en klassificeringsopgave er at skelne mellem slags irisblomster baseret på deres sepal og kronbladstiltag. Her er nogle eksempler på overvåget maskinlæring:

Uovervåget maskinlæring

Når du arbejder med uovervåget maskinlæringsalgoritmer, mærkes inputdataene ikke, og resultaterne er ikke kendte. I dette tilfælde producerer analyse af strukturer i data den krævede model. Den strukturelle analyse kan have et antal mål, såsom at reducere redundans eller gruppere lignende data. Eksempler på uovervåget maskinlæring er

  • clustering Anomali påvisning Neurale netværk

Selvbetjent maskinlæring

Du finder alle mulige former for læring beskrevet online, men selvovervåget læring er i en kategori for sig selv. Nogle mennesker beskriver det som autonom overvåget læring, hvilket giver dig fordelene ved overvåget læring, men uden alt det arbejde, der kræves for at mærke data.

Teoretisk set kunne selvkontrol løse problemer med andre former for læring, som du i øjeblikket kan bruge. Følgende liste sammenligner selvbetjent læring med andre former for læring, som folk bruger.

  • Overvåget maskinlæring: Den nærmeste form for læring, der er forbundet med selvledd læring, er overvåget maskinlæring, fordi begge former for læring er afhængige af par input og mærkede output. Derudover er begge former for læring forbundet med regression og klassificering. Forskellen er dog, at selvledd læring ikke kræver en person til at mærke output. I stedet er det afhængigt af korrelationer, indlejrede metadata eller domæneviden, der er indlejret i inputdataene, for at kontekstuelt finde udgangsmærket. Ikke-overvåget maskinlæring: Ligesom ikke-overvåget maskinlæring, kræver selvkontroleret læring ingen datamærkning. Uovervåget læring fokuserer dog på datastruktur - det vil sige mønstre i dataene. Derfor bruger du ikke selvbetjent læring til opgaver som gruppering, gruppering, dimensionalitetsreduktion, anbefalingsmotorer eller lignende. Semi-overvåget maskinlæring: En semi-overvåget læringsløsning fungerer som en uovervåget læringsløsning, idet den ser efter datamønstre. Semi-overvåget læring er dog afhængig af en blanding af mærkede og umærkede data for at udføre sine opgaver hurtigere end muligt med strengt umærkede data. Selvstyret læring kræver aldrig etiketter og bruger kontekst til at udføre sin opgave, så det ville faktisk ignorere etiketterne, når de leveres.

Forstærkning af maskinlæring

Du kan se forstærkningslæring som en forlængelse af selvledd læring, fordi begge former bruger den samme tilgang til læring med umærkede data for at nå lignende mål. Forstærkningslæring tilføjer imidlertid en feedback-loop til blandingen. Når en forstærkningslæringsløsning udfører en opgave korrekt, får den positiv feedback, hvilket styrker modellen ved at forbinde målindgange og output. Ligeledes kan det modtage negativ feedback for forkerte løsninger. I nogle henseender fungerer systemet stort set det samme som at arbejde med en hund baseret på et belønningssystem.

Træning, validering og test af data til maskinlæring

Maskinlæring er en proces, ligesom alt er en proces i computerenes verden. For at opbygge en succesrig maskinlæringsløsning udfører du disse opgaver efter behov og så ofte som nødvendigt:

  • Træning: Maskinlæring begynder, når du træner en model ved hjælp af en bestemt algoritme mod specifikke data. Træningsdataene er adskilt fra andre data, men de skal også være repræsentative. Hvis træningsdataene ikke virkelig repræsenterer problemdomænet, kan den resulterende model ikke give nyttige resultater. Under træningsprocessen ser du, hvordan modellen reagerer på træningsdataene og foretager om nødvendigt ændringer til de algoritmer, du bruger, og den måde, hvorpå du masserer dataene inden input til algoritmen. Validering: Mange datasæt er store nok til at opdeles i en træningsdel og en testdel. Du træner først modellen vha. Træningsdataene, og derefter validerer du den ved hjælp af testdataene. Naturligvis skal testdataene igen repræsentere problemdomænet nøjagtigt. Det skal også være statistisk kompatibelt med træningsdataene. Ellers ser du ikke resultater, der reflekterer, hvordan modellen faktisk fungerer. Test: Når en model er trænet og valideret, skal du stadig teste den ved hjælp af data fra den virkelige verden. Dette trin er vigtigt, fordi du er nødt til at kontrollere, at modellen faktisk fungerer på et større datasæt, som du ikke har brugt til hverken træning eller test. Som med træning og valideringstrin, skal alle data, du bruger i dette trin, afspejle det problemdomæne, du vil interagere med, ved hjælp af maskinlæringsmodellen.

Træning giver en maskinlæringsalgoritme med alle mulige eksempler på de ønskede input og output forventet fra disse input. Maskinlæringsalgoritmen bruger derefter dette input til at oprette en matematikfunktion. Med andre ord er træning den proces, hvor algoritmen fungerer, hvordan man skræddersy en funktion til dataene. Outputet fra en sådan funktion er typisk sandsynligheden for en bestemt output eller blot en numerisk værdi som output.

For at give en idé om, hvad der sker i træningsprocessen, forestil dig et barn, der lærer at skelne træer fra genstande, dyr og mennesker. Før barnet kan gøre det på en selvstændig måde, præsenterer en lærer barnet et vist antal træbilleder, komplet med alle fakta, der gør et træ, der kan skelnes fra andre objekter i verden. Sådanne kendsgerninger kan være træk, såsom træets materiale (træ), dets dele (bagagerum, grene, blade eller nåle, rødder) og placering (plantet i jorden). Barnet bygger en forståelse af, hvordan et træ ser ud ved at kontrastere visningen af ​​træfunktioner med billederne af andre, forskellige eksempler, såsom møbler, der er lavet af træ, men deler ikke andre egenskaber med et træ.

En klasselærer til maskinlæring fungerer det samme. En klassificeringsalgoritme giver dig en klasse som output. For eksempel kunne det fortælle dig, at det foto, du leverer som input, matcher træklassen (og ikke et dyr eller en person). For at gøre det bygger det sine kognitive evner ved at oprette en matematisk formulering, der inkluderer alle de givne inputfunktioner på en måde, der skaber en funktion, der kan skelne en klasse fra en anden.

På udkig efter generalisering inden for maskinlæring

For at være nyttig skal en maskinlæringsmodel repræsentere en generel oversigt over de leverede data. Hvis modellen ikke følger dataene tæt nok, er den underudstyret - det vil sige ikke monteret nok på grund af mangel på træning. På den anden side, hvis modellen følger dataene for tæt, er den alt for god, og følger datapunkterne som en handske på grund af for meget træning. Underfitting og overfitting giver begge problemer, fordi modellen ikke er generaliseret nok til at give nyttige resultater. Givet ukendte inputdata vil de resulterende forudsigelser eller klassifikationer indeholde store fejlværdier. Kun når modellen er korrekt monteret på dataene, giver den resultater inden for et rimeligt fejlområde.

Hele dette spørgsmål om generalisering er også vigtigt i beslutningen om hvornår man skal bruge maskinlæring. En maskinlæringsløsning generaliserer altid fra specifikke eksempler til generelle eksempler af samme slags. Hvordan den udfører denne opgave afhænger af orienteringen af ​​maskinlæringsløsningen og de algoritmer, der bruges til at få den til at fungere.

Problemet for datavidenskabsmænd og andre, der bruger maskinlæring og dyb indlæringsteknikker, er, at computeren ikke viser et tegn, der fortæller dig, at modellen passer korrekt til dataene. Ofte er det et spørgsmål om menneskelig intuition at beslutte, hvornår en model trænes nok til at give et godt generaliseret resultat. Derudover skal løsningsskaberen vælge den rigtige algoritme ud af de tusinder, der findes. Uden den rigtige algoritme, der passer til modellen til dataene, vil resultaterne være skuffende. For at få udvælgelsesprocessen til at fungere skal dataforskeren besidde

  • En stærk viden om de tilgængelige algoritmer til maskinlæring Erfaring med at behandle den type data, det drejer sig om En forståelse af det ønskede output Et ønske om at eksperimentere med forskellige maskinlæringsalgoritmer

Det sidste krav er det vigtigste, fordi der ikke er nogen hurtige og hurtige regler, der siger, at en bestemt algoritme vil arbejde med alle slags data i enhver mulig situation. Hvis dette var tilfældet, ville så mange algoritmer ikke være tilgængelige. For at finde den bedste algoritme tager dataforskeren ofte ud til at eksperimentere med et antal algoritmer og sammenligne resultaterne.

Læring af grænserne for bias

Din computer har ingen bias. Det har intet mål om verdensherredømme eller at gøre dit liv vanskeligt. Faktisk har computere ikke nogen mål af nogen art. Det eneste, en computer kan levere, er output baseret på input og behandlingsteknik. Imidlertid kommer partiskhed stadig ind i computeren og farver de resultater, den giver på flere måder:

  • Data: Selve data kan indeholde mistillid eller simpelthen forkert gengivelse. For eksempel, hvis en bestemt værdi vises dobbelt så ofte i dataene, som den gør i den virkelige verden, er output fra en maskinlæringsløsning besmittet, selvom selve dataene er korrekte. Algoritme: Brug af den forkerte algoritme vil få maskinlæringsløsningen til at passe modellen til dataene forkert. Træning: For meget eller for lidt træning ændrer, hvordan modellen passer til dataene og derfor resultatet. Menneskelig fortolkning: Selv når en maskinlæringsløsning giver et korrekt resultat, kan det menneske, der bruger dette output, fejlagtigt fortolke det. Resultaterne er lige så dårlige som og måske værre end, når maskinlæringsløsningen ikke fungerer som forventet.

Du skal overveje virkningerne af bias uanset hvilken slags maskinlæringsløsning du opretter. Det er vigtigt at vide, hvilke slags grænser disse forspændinger sætter på din maskinlæringsløsning, og om løsningen er pålidelig nok til at give nyttig output.

Husk modelkompleksitet i maskinlæring

Enklere er altid bedre, når det kommer til maskinlæring. Mange forskellige algoritmer kan give dig nyttig output fra din maskinlæringsløsning, men den bedste algoritme, du kan bruge, er den, der er nemmest at forstå og giver de mest enkle resultater. Occam's Razor er generelt anerkendt som den bedste strategi at følge. Grundlæggende fortæller Occam's Razor dig at bruge den enkleste løsning, der vil løse et bestemt problem. Efterhånden som kompleksiteten øges, gør potentialet for fejl det samme.

Den vigtigste vejledende faktor ved valg af en algoritme skal være enkelhed.