1. ProgrammeringStore dataDatavitenskapDatavitenskap Programmering Alt-i-ett for Dummies Cheat Sheet
Begrepet datavitenskap programmeringskode
  1. ProgrammeringBig DataData ScienceMachine Learning vs. Deep Learning: Explaining Deep Learning Differences from Other Forms of AI

Av John Paul Mueller, Luca Mueller

Gitt forlegenheten over rikdommer som angår AI som helhet, for eksempel store datamengder, ny og kraftig beregningsmaskinvare tilgjengelig for alle, og mange private og offentlige investeringer, kan du være skeptisk til teknologien bak dyp læring, som består av nevrale nettverk som har flere nevroner og skjulte lag enn tidligere. Dype nettverk står i kontrast til de enklere, grunnere nettverk fra fortiden, som best inneholdt ett eller to skjulte lag. Mange løsninger som gjør dyp læring i dag mulig er slett ikke nye, men dyp læring bruker dem på nye måter.

Dyp læring er ikke bare en omlegging av en gammel teknologi, perceptronet, oppdaget i 1957 av Frank Rosenblatt ved Cornell Aeronautical Laboratory. Dyp læring fungerer bedre på grunn av den ekstra sofistikerte den gir gjennom full bruk av kraftige datamaskiner og tilgjengeligheten av bedre (ikke bare mer) data. Dyp læring innebærer også en dyp kvalitativ endring i funksjonene som teknologien tilbyr sammen med nye og forbløffende applikasjoner. Tilstedeværelsen av disse mulighetene moderniserer gamle, men gode nevrale nettverk, og forvandler dem til noe nytt. Følgende artikkel beskriver hvor dyp læring oppnår oppgaven sin.

Legge til flere lag for dyp læring

Du lurer kanskje på hvorfor dyp læring først har blomstret opp når teknologien som ble brukt som grunnlag for dyp læring eksisterte for lenge siden. Datamaskiner er kraftigere i dag, og dyp læring får tilgang til enorme datamengder. Disse svarene peker imidlertid bare på viktige problemer med dyp læring i fortiden, og lavere datakraft sammen med mindre data var ikke de eneste uoverkommelige hindringene. Inntil nylig led dyp læring også av et sentralt teknisk problem som forhindret nevrale nettverk fra å ha nok lag til å utføre virkelig komplekse oppgaver.

Fordi den kan bruke mange lag, kan dyp læring løse problemer som er utenfor rekkevidde av maskinlæring, for eksempel bildegjenkjenning, maskinoversettelse og talegjenkjenning. Når det bare er utstyrt med noen få lag, er et nevralt nettverk en perfekt universalfunksjons approximator, som er et system som kan gjenskape alle mulige matematiske funksjoner. Når det er utstyrt med mange flere lag, blir et nevralt nettverk i stand til å skape, innenfor sin interne kjede av matrise-multiplikasjoner, et sofistikert system med representasjoner for å løse komplekse problemer. For å forstå hvordan en kompleks oppgave som bildegjenkjenning fungerer, bør du vurdere denne prosessen:

  1. Et dypt læringssystem som er opplært til å gjenkjenne bilder (for eksempel et nettverk som er i stand til å skille bilder av hunder fra de som inneholder katter), definerer indre vekter som har evnen til å gjenkjenne et bildeemne. Etter å ha oppdaget hver enkelt kontur og hjørne i bildet, samler det dype læringsnettverket alle slike grunnleggende trekk til sammensatte karakteristiske funksjoner. Nettverket matcher slike funksjoner med en ideell representasjon som gir svaret.

Med andre ord kan et dypt læringsnettverk skille hunder fra katter ved å bruke sine indre vekter for å definere en representasjon av hva, ideelt sett, en hund og en katt skal ligne. Den bruker deretter disse interne vektene for å matche ethvert nytt bilde du gir det med.

En av de tidligste prestasjonene ved dyp læring som gjorde publikum oppmerksom på dens potensialitet er katteneuronet. Google Brain-teamet, drevet av den gang av Andrew Ng og Jeff Dean, satte sammen 16 000 datamaskiner for å beregne et dypt læringsnettverk med mer enn en milliard vekt, og muliggjør dermed uovervåket læring fra YouTube-videoer. Datanettverket kunne til og med bestemme av seg selv, uten noen menneskelig inngripen, hva en katt er, og Google-forskere klarte å grave ut av nettverket en representasjon av hvordan nettverket selv forventet at en katt skulle se ut (se artikkelen Wired om nevrale nettverk) .

I løpet av tiden som forskere ikke kunne stable flere lag i et nevralt nettverk på grunn av datamaskinens maskinvare, forble teknologiens potensiale begravet, og forskere ignorerte nevrale nettverk. Mangelen på suksess bidro til den dype skepsisen som oppstod rundt teknologien den siste AI-vinteren. Det som imidlertid virkelig hindret forskere i å skape noe mer sofistikert var problemet med forsvinnende graderinger.

En forsvinnende gradient oppstår når du prøver å overføre et signal gjennom et nevralt nettverk og signalet blekner raskt til nesten nullverdier; den kan ikke komme gjennom aktiveringsfunksjonene. Dette skjer fordi nevrale nettverk er kjedede multiplikasjoner. Hver multiplikasjon under null reduserer de innkomne verdiene raskt, og aktiveringsfunksjoner trenger store nok verdier til å la signalet passere. Jo lenger nevronlag er fra utgangen, desto større er sannsynligheten for at de blir låst ute av oppdateringer fordi signalene er for små og aktiveringsfunksjonene vil stoppe dem. Følgelig slutter nettverket å lære som en helhet, eller det lærer i et utrolig sakte tempo.

Hvert forsøk på å sette sammen og teste komplekse nettverk endte i svikt fordi bakgrunnsforplantningsalgoritmen ikke kunne oppdatere lagene nærmere inngangen, og dermed gjøre læring fra komplekse data, selv når slike data var tilgjengelig den gang, nesten umulig. I dag er dype nettverk mulig takket være studiene fra lærde fra University of Toronto i Canada, for eksempel Geoffrey Hinton, som insisterte på å jobbe på nevrale nettverk selv når de mest virket som en gammeldags maskinlæringsmetode.

Professor Hinton, en veteran innen nevrale nettverk (han bidro til å definere backpropagation-algoritmen), og teamet hans i Toronto utviklet noen få metoder for å omgå problemet med forsvinnende gradienter. Han åpnet feltet for å tenke nytt om nye løsninger som gjorde nevrale nettverk til et avgjørende verktøy i maskinlæring og AI igjen.

Professor Hinton og teamet hans er minneverdig også for å være blant de første som testet GPU-bruk for å få fart på opplæringen i et dypt nevralt nettverk. I 2012 vant de en åpen konkurranse, organisert av legemiddelfirmaet Merck og Kaggle (sistnevnte et nettsted for datavitenskapskonkurranser), ved å bruke sine nyeste funn om dyp læring. Denne hendelsen vakte stor oppmerksomhet på arbeidet deres. Du kan lese alle detaljene om Hinton-teamets revolusjonerende prestasjon med nevrale nettverkslag fra dette Geoffrey Hinton-intervjuet.

Endring av aktiveringene for dyp læring

Geoffrey Hintons team var i stand til å legge flere lag til en nevrell arkitektur på grunn av to løsninger som forhindret problemer med bakpropagering:

  • De forhindret eksplosjonsgradientproblemet ved å bruke smartere nettverksinitiering. En eksploderende gradient skiller seg fra en forsvinnende gradient fordi den kan få et nettverk til å sprenge etter hvert som den eksploderende gradienten blir for stor til å håndtere. Nettverket ditt kan eksplodere med mindre du korrekt initialiserer nettverket for å forhindre at det beregner store vekttall. Deretter løser du problemet med forsvinnende graderinger ved å endre nettverksaktiveringene. Teamet skjønte at det å føre et signal gjennom forskjellige aktiveringslag hadde en tendens til å dempe bakpropagasjonssignalet til det ble for svakt til å passere lenger etter å ha undersøkt hvordan en sigmoid-aktivering fungerte. De brukte en ny aktivering som løsningen på dette problemet. Valget av hvilken algoritme som skal brukes falt mot en gammel aktiveringstype ReLU, som står for utbedrede lineære enheter. En ReLU-aktivering stoppet det mottatte signalet hvis det var under null, og sikret den ikke-linearitetskarakteristikken til nevrale nettverk og lot signalet passere som det var om over null. (Å bruke denne typen aktivering er et eksempel på å kombinere gammel, men fortsatt god teknologi med dagens teknologi.) Bildet nedenfor viser hvordan denne prosessen fungerer.
ReLU aktiveringsfunksjon i dyp læring

ReLU fungerte utrolig bra og lot bakpropagasjonssignalet komme frem til de første dype nettverkslagene. Når signalet er positivt, er detets derivat 1. Du kan også finne bevis på at ReLU-derivatet ser ut. Merk at endringshastigheten er konstant og tilsvarer en enhet når inngangssignalet er positivt (mens når signalet er negativt, er derivatet 0, og dermed forhindrer signalet fra å passere).

Du kan beregne ReLU-funksjonen ved å bruke f (x) = maks (0, x). Bruken av denne algoritmen økte treningshastigheten mye, og tillater rask trening av enda dypere nettverk uten å pådra seg døde nevroner. En død nevron er en som nettverket ikke kan aktivere fordi signalene er for svake.

Legger til regularisering ved frafall for dyp læring

Den andre introduksjonen til dyp læring laget av Hintons team for å fullføre den opprinnelige løsningen for dyp læring rettet mot å regulere nettverket. Et regularisert nettverk begrenser nettverksvektene, noe som hindrer nettverket i å huske inndatadataene og generalisere de vitne datamønstrene.

Husk at visse nevroner lagrer spesifikk informasjon og tvinger de andre nevronene til å stole på denne sterkere nevronen, noe som får de svake nevronene til å gi opp å lære noe nyttig selv (en situasjon som kalles co-adaptation). For å forhindre ko-tilpasning, slår koden midlertidig av aktiveringen av en tilfeldig del av nevronene i nettverket.

Som du ser fra venstre side av bildet nedenfor, fungerer vektene normalt ved å multiplisere inngangene til utganger for aktiveringene. For å slå av aktivering multipliserer koden en maske laget av en tilfeldig blanding av enere og nuller med resultatene. Hvis nevronen multipliseres med en, gir nettverket signalet. Når en nevron multipliseres med null, stopper nettverket signalet, og tvinger andre nevroner til ikke å stole på det i prosessen.

dyp læringsfrafall

Frafall fungerer bare under trening og berører ingen deler av vektene. Den maskerer og skjuler bare en del av nettverket, og tvinger den umaskede delen til å ta en mer aktiv rolle i å lære datamønster. I løpet av prediksjonstiden fungerer ikke frafall, og vektene blir numerisk beregnet for å ta hensyn til det faktum at de ikke jobbet sammen under trening.

  1. ProgrammeringBig DataData Science Bruker AI for sentimentanalyse

Av John Paul Mueller, Luca Mueller

Sentimentanalyse stammer beregningsmessig fra en skrevet tekst ved å bruke forfatterens holdning (enten positiv, negativ eller nøytral) til tekstemnet. Denne typen analyser viser seg å være nyttige for folk som jobber med markedsføring og kommunikasjon fordi den hjelper dem å forstå hva kunder og forbrukere synes om et produkt eller en tjeneste, og dermed handle riktig (for eksempel å prøve å gjenopprette utilfredse kunder eller bestemme seg for å bruke en annen salgsstrategi ). Alle utfører sentimentanalyse. Når du for eksempel leser tekst, prøver folk naturlig nok å bestemme følelsen som beveget personen som skrev den. Når antallet tekster å lese og forstå er for stort og teksten stadig akkumuleres, som i sosiale medier og kunde e-post, er automatisering av følelsesanalyse viktig.

AI sentiment analyse

Det kommende eksemplet er en testkjøring av RNNer som bruker Keras og TensorFlow som bygger en følelsesanalysealgoritme som er i stand til å klassifisere holdningene uttrykt i en filmanmeldelse. Dataene er et utvalg av IMDb-datasettet som inneholder 50 000 anmeldelser (delt i to mellom tog- og testsett) av filmer akkompagnert av en etikett som uttrykker følelsen av anmeldelsen (0 = negativ, 1 = positiv). IMDb er en stor online database som inneholder informasjon om filmer, TV-serier og videospill. Opprinnelig vedlikeholdt av en fanbase, og drives nå av et Amazon-datterselskap. På IMDb finner folk informasjonen de trenger om favorittprogrammet sitt, så kan de legge inn kommentarer eller skrive en anmeldelse som andre besøkende kan lese.

Keras tilbyr en nedlastbar innpakning for IMDb-data. Du forbereder, stokker og ordner disse dataene i et tog og et testsett. Spesielt blir IMDb-tekstdataene som tilbys av Keras renset for tegnsetting, normalisert til små bokstaver og omgjort til numeriske verdier. Hvert ord er kodet til et tall som representerer rangeringen i frekvens. De hyppigste ordene har lave tall; sjeldnere ord har høyere tall.

Som startpunkt importerer koden imdb-funksjonen fra Keras og bruker den til å hente dataene fra Internett (omtrent 17,5 MB nedlasting). Parametrene som eksemplet bruker omfatter bare de 10.000 ordene, og Keras bør blande dataene ved å bruke et bestemt tilfeldig frø. (Å kjenne frøet gjør det mulig å reprodusere blandingen etter behov.) Funksjonen returnerer to tog- og testsett, begge laget av tekstsekvenser og følelsesutfallet.

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

Etter at forrige kode er fullført, kan du sjekke antall eksempler ved å bruke følgende kode:

print ("Treningseksempler:% i"% len (x_train))
print ("Testeksempler:% i"% len (x_test))

Etter å ha spurt om antall tilfeller som er tilgjengelige for bruk i trenings- og testfasen i det nevrale nettverket, gir koden et svar på 25 000 eksempler for hver fase. (Dette datasettet er relativt lite for et språkproblem; tydeligvis er datasettet hovedsakelig for demonstrasjonsformål.) I tillegg bestemmer koden om datasettet er balansert, noe som betyr at det har et nesten like antall positive og negative følelseseksempler.

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

Resultatet, matrise ([12500, 12500]), bekrefter at datasettet er delt jevnt mellom positive og negative utfall. En slik balanse mellom responsklasser skyldes utelukkende datasettets demonstrative karakter. I den virkelige verden finner du sjelden balanserte datasett. Neste trinn lager noen Python-ordbøker som kan konvertere mellom koden som brukes i datasettet og de virkelige ordene. Faktisk er datasettet som brukes i dette eksemplet forbehandlet og gir sekvenser med tall som representerer ordene, ikke ordene i seg selv. (LSTM- og GRU-algoritmer som du finner i Keras forventer sekvenser av tall som tall.)

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 i imdb.get_word_index (). elementer ()})
def convert_to_text (sekvens):
return '' .join ([id_to_word [s] for s i sekvens hvis s> = 3])
ut (convert_to_text (x_train [8]))

Den forrige kodebiten definerer to konverteringsordbøker (fra ord til numeriske koder og omvendt) og en funksjon som oversetter datasetteksemplene til lesbar tekst. Som et eksempel skriver koden det niende eksemplet: "denne filmen var som et dårlig togvrak like fryktelig som det var ...". Fra dette utdraget kan du lett forutse at stemningen for denne filmen ikke er positiv. Ord som dårlig, vrak og fryktelig formidler en sterk negativ følelse, og det gjør det å gjette riktig stemning enkelt.

I dette eksemplet mottar du de numeriske sekvensene og gjør dem om til ord, men det motsatte er vanlig. Vanligvis får du uttrykk som består av ord og gjør dem om til sekvenser med heltall for å mates til et lag med RNN-er. Keras tilbyr en spesialisert funksjon, Tokenizer som kan gjøre det for deg. Den bruker metodene fit_on_text, for å lære å kartlegge ord til heltall fra treningsdata, og tekster_til_matrise, for å transformere tekst til en sekvens.

Imidlertid, i andre setninger, kan det hende du ikke finner slike avslørende ord for følelsesanalysen. Følelsen kommer til uttrykk på en mer subtil eller indirekte måte, og det er ikke mulig å forstå følelsen tidlig i teksten fordi avslørende fraser og ord kan vises mye senere i diskursen. Av denne grunn må du også bestemme hvor mye av setningen du vil analysere.

Konvensjonelt tar du en innledende del av teksten og bruker den som representativ for hele anmeldelsen. Noen ganger trenger du bare noen få innledende ord - for eksempel de første 50 ordene - for å få mening; noen ganger trenger du mer. Spesielt lange tekster avslører ikke deres orientering tidlig. Det er derfor opp til deg å forstå hvilken type tekst du jobber med og bestemme hvor mange ord du skal analysere ved hjelp av dyp læring. Dette eksemplet vurderer bare de første 200 ordene, noe som burde være tilstrekkelig.

Du har lagt merke til at koden begynner å gi kode til ord som begynner med nummeret 3, og dermed overlater koder fra 0 til 2. Lavere tall brukes til spesielle koder, for eksempel å signalisere starten på frasen, fylle tomme mellomrom for å få sekvensen fikset på en viss lengde, og merke ordene som er ekskludert fordi de ikke er hyppige nok. Dette eksemplet henter bare de hyppigste 10.000 ordene. Å bruke tagger for å påpeke start, slutt og bemerkelsesverdige situasjoner er et triks som fungerer med RNN, spesielt for maskinoversettelse.

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 å bruke pad_sequences-funksjonen fra Keras med max_pad satt til 200, tar koden de første to hundre ordene for hver anmeldelse. I tilfelle gjennomgangen inneholder færre enn to hundre ord, går så mange nullverdier som nødvendig foran sekvensen for å nå det nødvendige antall sekvenselementer. Å kutte sekvensene til en viss lengde og fylle tomrommene med null verdier kalles input padding, en viktig prosesseringsaktivitet når du bruker RNN-er som dype læringsalgoritmer. Nå 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
modell = Sekvensiell ()
model.add (-innebygging (top_words,
embedding_vector_length,
input_length = max_pad))
model.add (toveis (LSTM (64, return_sequences = True)))
model.add (GlobalMaxPool1D ())
model.add (Tett (16, aktivering = "relu"))
model.add (Tett (1, aktivering = "sigmoid"))
model.compile (tap = 'binary_crossentropy',
optimerings = 'Adam',
beregninger = [ 'nøyaktighet'])
print (model.summary ())

Den forrige kodebiten definerer formen til den dype læringsmodellen, der den bruker noen få spesialiserte lag for naturlig språkbehandling fra Keras. Eksemplet har også krevd en oppsummering av kommandoen (model.summary ()) for å bestemme hva som skjer med arkitektur ved å bruke forskjellige nevrale lag.

Du har Embedding-laget, som forvandler de numeriske sekvensene til et tett innebygging av ord. Den typen ord innebygging er mer egnet for å bli lært av et lag med RNN-er. Keras gir et Embedding-lag, som bortsett fra at det nødvendigvis må være det første laget i nettverket, kan utføre to oppgaver:

  • Bruke forhåndsbestemt ord innebygging (for eksempel Word2vec eller GloVe) på sekvensinndata. Du trenger bare å sende matrisen som inneholder innebygningen til dens parametervekter. Opprette et innebygging av ord fra bunnen av, basert på inngangene det mottar.

I dette andre tilfellet trenger Embedding bare å vite:

  • input_dim: Størrelsen på ordforrådet som forventes fra data output_dim: Størrelsen på innebygningsrommet som skal produseres (de såkalte dimensjonene) input_length: Sekvensstørrelsen du kan forvente

Etter at du har bestemt parametrene, vil Embedding finne de bedre vektene for å transformere sekvensene til en tett matrise under trening. Den tette matrisestørrelsen er gitt av lengden på sekvenser og dimensjonaliteten til innebygningen.

Hvis du bruker Embedding-laget levert av Keras, må du huske at funksjonen bare gir en vektmatrise av størrelsen på vokabularet etter dimensjonen til ønsket innebygging. Den kartlegger ordene til kolonnene i matrisen og innstiller deretter matriksvektene til de medfølgende eksempler. Selv om denne løsningen er praktisk for ikke-standardiserte språkproblemer, er det ikke analogt med ordembeddlingene som er omtalt tidligere, som er trent på en annen måte og på flere millioner eksempler.

Eksemplet bruker toveisinnpakning - et LSTM-lag på 64 celler. Toveis transformerer et normalt LSTM-lag ved å doble det: På første side bruker det den normale sekvensen med innganger du gir; på den andre passerer det motsatt rekkefølge. Du bruker denne tilnærmingen fordi noen ganger bruker du ord i en forskjellig overordnet rekkefølge, og å bygge et toveis lag vil fange ethvert ordmønster, uansett rekkefølge. Implementeringen av Keras er faktisk grei: Du bruker den bare som en funksjon på det laget du vil gjengi toveis.

Den toveis LSTM er satt til å returnere sekvenser (return_sequences = True); det vil si at for hver celle returnerer det resultatet som gis etter å ha sett hvert element i sekvensen. Resultatene for hver sekvens er en utgangsmatrise på 200 x 128, hvor 200 er antall sekvenselementer og 128 er antall LSTM-celler som brukes i laget. Denne teknikken forhindrer RNN i å ta det siste resultatet av hver LSTM-celle. Tips om tekstens følelse kan faktisk vises hvor som helst i den innebygde ordssekvensen.

Kort sagt er det viktig å ikke ta det siste resultatet av hver celle, men heller det beste resultatet av den. Koden er derfor avhengig av følgende lag, GlobalMaxPool1D, for å sjekke hver sekvens av resultater levert av hver LSTM-celle og bare beholde det maksimale resultatet. Det skal sikre at eksemplet plukker det sterkeste signalet fra hver LSTM-celle, som forhåpentligvis er spesialisert ved sin trening for å velge noen meningsfylte signaler.

Etter at nevrale signaler er filtrert, har eksemplet et lag på 128 utganger, en for hver LSTM-celle. Koden reduserer og blander signalene ved å bruke et suksessivt tett lag på 16 nevroner med ReLU-aktivering (og får dermed bare positive signaler til å passere). Arkitekturen avsluttes med en endelig node ved bruk av sigmoid aktivering, som vil presse resultatene inn i 0–1 området og få dem til å se ut som sannsynligheter.

Etter å ha definert arkitekturen, kan du nå trene nettverket til å utføre sentimentanalyse. Tre epoker (ved å sende dataene tre ganger gjennom nettverket for å få dem til å lære mønstrene) vil være tilstrekkelig. Koden bruker grupper på 256 anmeldelser hver gang, noe som gjør at nettverket kan se nok utvalg av ord og følelser hver gang før oppdatering av vekten ved hjelp av tilbakestillering. Til slutt fokuserer koden på resultatene som gis av valideringsdataene (som ikke er en del av treningsdataene). Å få et godt resultat fra valideringsdataene betyr at nevrale nettet behandler inndata riktig. Koden rapporterer om valideringsdata like etter hver epoke er fullført.

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

Det tar litt tid å få resultatene, men hvis du bruker en GPU, vil den fullføre i løpet av tiden du tar å drikke en kopp kaffe. På dette tidspunktet kan du evaluere resultatene ved å bruke valideringsdataene igjen. (Resultatene skal ikke ha noen overraskelser eller forskjeller fra koden rapportert under trening.)

tap, metrisk = modell.evaluere (x_test, y_test, verbose = 0)
print ("Testnøyaktighet:% 0.3f"% metrisk)

Den endelige nøyaktigheten, som er prosentandelen av riktige svar fra det dype nevrale nettverket, vil være en verdi på rundt 85–86 prosent. Resultatet vil endres litt hver gang du kjører eksperimentet på grunn av randomisering når du bygger ditt nevrale nettverk. Det er helt normalt gitt den lille størrelsen på dataene du jobber med. Hvis du starter med de riktige heldige vektene, vil læringen bli lettere på en så kort treningsøkt.

Til slutt er nettverket ditt en sentimentanalysator som kan gjette sentimentet uttrykt i en filmanmeldelse riktig rundt 85 prosent av tiden. Gitt enda mer treningsdata og mer sofistikerte nevrale arkitekturer, kan du få resultater som er enda mer imponerende. I markedsføring brukes et lignende verktøy for å automatisere mange prosesser som krever lesing av tekst og iverksetting. Igjen, kan du koble et nettverk som dette med et nevralt nettverk som lytter til en stemme og gjør det til tekst. (Dette er en annen applikasjon av RNN-er, som nå driver Alexa, Siri, Google Voice og mange andre personlige assistenter.) Overgangen gjør at applikasjonen kan forstå stemningen selv i vokale uttrykk, for eksempel en telefonsamtale fra en kunde.

  1. ProgrammeringBig DataData Science10 Typer jobber som bruker dyp læring

Av John Paul Mueller, Luca Mueller

Det er mange forskjellige bruksområder for dyp læring - alt fra stemmeaktiverte funksjoner på din digitale assistent til selvkjørende biler. Å bruke dyp læring for å forbedre hverdagen din er selvfølgelig hyggelig, men de fleste trenger andre grunner til å omfavne en teknologi, for eksempel å skaffe seg en jobb. Heldigvis påvirker dyp læring ikke bare din evne til å finne informasjon raskere, men tilbyr også noen virkelig interessante jobbmuligheter, og med "wow" -faktoren som bare dyp læring kan gi. Denne artikkelen gir deg en oversikt over ti interessante yrker som til en viss grad er avhengige av dyp læring. Dette materialet representerer imidlertid bare toppen av isfjellet; flere yrker oppstår som bruker dyp læring raskt, og flere blir lagt til hver dag.

Dyp læring kan hjelpe når du administrerer mennesker

En skremmende film kalt The Circle ville få deg til å tro at moderne teknologi vil være enda mer inngripende enn Big Brother i boken 1984, av George Orwell. En del av filmens historie innebærer å installere kameraer overalt - også på soverom. Hovedpersonen våkner opp hver morgen for å hilse på alle som ser på henne. Ja, det kan gi deg testamenter hvis du lar det.

Imidlertid handler egentlig dyp læring ikke om å overvåke og dømme mennesker, for det meste. Det er mer som Oracle's Global Human Resources Cloud. Langt fra å være skummel, kan denne teknologien få deg til å se smart ut og oppå alle aktivitetene i dagen din. Videoen er litt over toppen, men den gir deg en god ide om hvor dyp læring for øyeblikket kan gjøre jobben din enklere.

Tanken bak denne teknologien er å gjøre suksess lettere for mennesker. Hvis du ser på Orakles video og tilhørende materialer, oppdager du at teknologien hjelper ledelsen med å foreslå potensielle veier til de ansattes mål i organisasjonen. I noen tilfeller liker ansatte deres nåværende situasjon, men programvaren kan fremdeles foreslå måter å gjøre arbeidet mer engasjerende og morsomt. Programvaren hindrer ansatte i å gå seg vill i systemet og hjelper med å administrere den ansatte på et tilpasset nivå, slik at hver ansatt får individualiserte innspill.

Dyp læring forbedrer medisin

Dyp læring påvirker medisinutøvelsen på mange måter, som du kan se når du går til legen eller tilbringer tid på et sykehus. Dyp læring hjelper med å diagnostisere sykdommer og finne sin rette kur. Dyp læring brukes til og med for å forbedre diagnoseprosessen for problemer som er vanskelig å oppdage, inkludert øyets øyne. Imidlertid er en av de viktigste bruksområdene for dyp læring i medisin.

Den tilsynelatende enkle handlingen med å finne de riktige pasientene som skal brukes til forskningsformål er egentlig ikke så enkel. Pasientene må oppfylle strenge kriterier, ellers kan testresultater vise seg å være ugyldige. Forskere er nå avhengige av dyp læring for å utføre oppgaver som å finne riktig pasient, utforme prøvekriteriene og optimalisere resultatene. Selvfølgelig vil medisin trenge mange mennesker som er trent både i medisin og i bruk av dyp læringsteknikker for medisin for å fortsette å oppnå fremskritt i sitt nåværende tempo.

Dyp læring hjelper deg med å utvikle nye enheter

Innovasjon på noen områder innen datateknologi, som grunnleggende system, som nå er en vare, har avtatt med årene. Innovasjon på områder som bare nylig ble levedyktig har imidlertid økt kraftig. En oppfinner i dag har flere mulige utsalgssteder for nye enheter enn noen gang før. Et av disse nye områdene er midlene til å utføre dype læringsoppgaver. For å skape potensialet for å utføre dype læringsoppgaver med større kompleksitet, bruker mange organisasjoner nå spesialisert maskinvare som overskrider mulighetene til GPU-er - den for tiden foretrukne prosesseringsteknologien for dyp læring.

Dyp læringsteknologi er i sin spede begynnelse, så en smart oppfinner kunne komme på noe interessant uten å virkelig jobbe så hardt. Denne artikkelen forteller om nye AI-teknologier, men til og med disse teknologiene begynner ikke å tømme dybden i hva som kan skje.

Dyp læring tiltrekker seg både oppfinnere og investorer oppmerksomhet på grunn av potensialet til å oppdatere gjeldende patentrett og måten mennesker skaper nye ting på. En interessant del av de fleste av artiklene av denne art er at de spår en betydelig økning i jobber som dreier seg om ulike typer dyp læring, hvorav de fleste involverer å skape noe nytt. I utgangspunktet kan du finne en jobb eller utvikle en egen virksomhet hvis du kan bruke dyp læring på en eller annen måte og koble den sammen med en nåværende livlig yrke.

Dyp læring kan gi kundestøtte

Mange diskusjoner om dyp læring viser til chatbots og andre former for kundestøtte, inkludert oversettelsestjenester. Hvis du er nysgjerrig, kan du få en interaktiv opplevelse med en chatbot på Pandorabots.com. Bruken av chatbots og andre kundesupport-teknologier har imidlertid vakt bekymring.

Noen forbrukergrupper som sier menneskelig kundestøtte er dømt, som i denne Forbes-artikkelen. Imidlertid, hvis du noen gang har måttet takle en chatbot for å utføre noe komplisert, vet du at opplevelsen er mindre enn tiltalende. Så det nye paradigmet er den menneskelige og chatbot-kombinasjonen.

Mye av teknologien du ser brukt i dag, erstatter visstnok et menneske, men i de fleste tilfeller kan det ikke. Foreløpig bør du forvente å se mange situasjoner som har mennesker og roboter som jobber sammen. Bot reduserer belastningen med å utføre fysisk intense oppgaver så vel som de verdslige, kjedelige oppgavene. Mennesket vil gjøre de mer interessante tingene og gi kreative løsninger på uventede situasjoner. Følgelig må folk få opplæring som kreves for å jobbe i disse områdene og føler seg trygge på at de fortsetter å ha lønnsom jobb.

Dyp læring kan hjelpe deg med å se data på nye måter

Se på en serie nettsteder og andre datakilder, og du legger merke til en ting: De presenterer alle data på en annen måte. En datamaskin forstår ikke forskjeller i presentasjon og blir ikke bevirket av et eller annet blikk. Det forstår faktisk ikke data; det ser etter mønstre. Dyp læring gjør det mulig for applikasjoner å samle inn mer data på egen hånd ved å sikre at applikasjonen kan se passende mønstre, selv når disse mønstrene er forskjellige fra det applikasjonen har sett før. Selv om dyp læring vil forbedre og fremskynde datainnsamling, vil imidlertid et menneske fortsatt trenge å tolke dataene. Faktisk trenger mennesker fortsatt å sikre at applikasjonen samler inn gode data fordi applikasjonen virkelig ikke forstår noe om data.

En annen måte å se data på nye måter er å utføre dataforstørrelse. Igjen gjør applikasjonen gryntarbeidet, men det tar et menneske å bestemme hva slags forstørrelse som skal skaffes. Med andre ord, det menneskelige gjør den kreative, interessante delen, og applikasjonen bare trasker sammen, slik at ting fungerer.

Disse to første dype læringsbrukene er interessante og de vil fortsette å generere arbeidsplasser, men den mest interessante bruken av dyp læring er for aktiviteter som ikke eksisterer ennå. Et kreativt menneske kan se på måter som andre bruker dyp læring og komme på noe nytt. Sjekk ut noen interessante bruksområder for AI, maskinlæring og dyp læring som akkurat nå blir praktisk.

Dyp læring kan utføre analyse raskere

Når folk flest snakker om analyse, tenker de på en forsker, en slags forsker eller en spesialist. Imidlertid er dyp læring forankret på noen interessante steder som vil kreve menneskelig deltakelse for å se full bruk, for eksempel å forutsi trafikkulykker.

Se for deg at en politiavdeling tildeler ressurser basert på trafikkflytmønstre slik at en offiser allerede venter på stedet for en forventet ulykke. Politiets løytnant ville trenge å vite hvordan man bruker en applikasjon av denne typen. Denne spesielle bruken har selvfølgelig ikke skjedd ennå, men det kan sannsynligvis være fordi det allerede er mulig å bruke eksisterende teknologi. Så å utføre analyse vil ikke lenger være en jobb for de med "Dr." foran navnene sine; det vil være for alle.

Analyse er i seg selv ikke så nyttig. Det er handlingen om å kombinere analysen med et spesifikt behov i et bestemt miljø som blir nyttig. Hva du gjør med analyse definerer effekten av den analysen på deg og de rundt deg. Et menneske kan forstå analysebegrepet med et formål; en dyp læringsløsning kan bare utføre analysen og gi et output.

Dyp læring kan bidra til å skape et bedre arbeidsmiljø

Dyp læring vil gjøre livet ditt bedre og sysselsettingen din morsommere hvis du tilfeldigvis har ferdigheter som lar deg samhandle med en AI. Denne artikkelen beskriver hvordan AI kan endre arbeidsplassen i fremtiden. Et viktig element i denne diskusjonen er å gjøre arbeidet mer innbydende.

På et tidspunkt i menneskets historie var arbeidet faktisk hyggelig for de fleste. Det var ikke slik at de løp rundt og sang og lo hele tiden, men mange så frem til å starte hver dag. Senere, under den industrielle revolusjonen, satte andre mennesker rus i arbeid, noe som gjorde hver dag borte fra jobben den eneste gleden som noen mennesker likte. Problemet har blitt så alvorlig at du kan finne populære sanger om det, som "Working for the Weekend." Ved å fjerne rusken fra arbeidsplassen, har dyp læring potensialet til å gjøre arbeidet morsomt igjen.

Dyp læring vil påvirke arbeidsmiljøet sterkt på en rekke måter, og ikke bare den faktiske arbeidsutførelsen. For eksempel har teknologier basert på dyp læring potensialet til å forbedre helsen din og derfor produktiviteten din. Det er en seier for alle fordi du vil glede deg over livet og jobbe mer, mens sjefen din får mer av det skjulte potensialet fra innsatsen din.

Noe av det du ikke ser nevnt ofte er effekten på produktiviteten til en fallende fødselsrate i utviklede land. Denne McKinsey-artikkelen tar dette problemet til en viss grad og gir et diagram som viser potensiell innvirkning av dyp læring på forskjellige bransjer. Hvis den nåværende trenden fortsetter, vil det å ha færre tilgjengelige arbeidere bety et behov for utvidelse på arbeidsplassen.

Imidlertid lurer du kanskje på fremtiden din hvis du bekymrer deg for at du kanskje ikke kan tilpasse deg den nye virkeligheten. Problemet er at du kanskje ikke vet om du er trygg. I Artificial Intelligence For Dummies, av John Paul Mueller og Luca Massaron [Wiley], ser du diskusjoner om AI-sikre yrker og nye yrker som AI vil skape. Du kan til og med oppdage hvordan du kan ende opp med å jobbe i verdensrommet på et tidspunkt. Dessverre er det ikke alle som ønsker å gjøre den slags grep, akkurat som Ludditene ikke gjorde under den industrielle revolusjonen. Det som AI lover vil få konsekvenser enda større enn den industrielle revolusjonen gjorde (les om virkningene av den industrielle revolusjonen) og vil være enda mer forstyrrende. Noen politikere, som Andrew Wang, ser allerede på kortsiktige ordninger som universell grunninntekt. Disse retningslinjene, hvis de blir vedtatt, vil bidra til å redusere virkningen av AI, men de gir ikke en langsiktig løsning. På et tidspunkt vil samfunnet bli betydelig forskjellig fra det det er i dag som et resultat av AI - omtrent som den industrielle revolusjonen allerede har endret samfunnet.

Dyp læring kan bidra til å undersøke obskur eller detaljert informasjon

Datamaskiner kan gjøre en ting - mønstermatching - eksepsjonelt godt (og mye bedre enn mennesker. Hvis du noen gang har hatt en følelse av at du flyter i informasjon og ingenting av det har sammenheng med ditt nåværende behov, er du ikke alene. overbelastning har vært et problem i mange år og forverres hvert år. Du kan finne mange råd om hvordan du håndterer informasjonsoverbelastning. Problemet er at du fortsatt drukner i informasjon. Dyp læring lar deg finne nålen i en høstak, I løpet av måneder kan en god løsning for dyp læring finne informasjonen du trenger i løpet av timer i de fleste tilfeller.

Å vite at informasjonen eksisterer er imidlertid vanligvis ikke tilstrekkelig. Du trenger informasjon som er detaljert nok til å fullstendig svare på spørsmålet ditt, som ofte betyr å finne mer enn en kilde og konsolidere informasjonen. Igjen, en dyp læringsløsning kan finne mønstre og mase dataene sammen for deg slik at du ikke trenger å kombinere innspillene fra flere kilder manuelt.

Etter at AI har funnet dataene og kombinert flere kilder til en samlet sammenhengende rapport (håper du), har den gjort alt den kan for deg. Det er fremdeles opp til menneskene å forstå informasjonen og bestemme en måte å bruke den på. Datamaskinen vil ikke fjerne den kreative delen av oppgaven; det fjerner rus for å finne ressursene som kreves for å utføre den kreative delen av oppgaven. Når informasjonen fortsetter å øke, kan du forvente å se en økning i antall personer som spesialiserer seg på å finne detaljert eller uklar informasjon.

Informasjonsmegleren blir en viktig del av samfunnet og representerer en interessant karrierevei som mange ikke engang har hørt om. Denne artikkelen gir et godt sammendrag av hva informasjonsmeglere gjør.

Dyp læring kan hjelpe med å designe bygninger

De fleste ser på arkitektur som en kreativ handel. Se for deg å utforme den neste Empire State Building eller et annet byggverk som vil stå tidens prøve. Tidligere tok det å designe et slikt bygg år. Merkelig nok bygde entreprenøren faktisk Empire State Building på litt over et år, men dette er ikke vanligvis tilfelle. Dyp læring og datateknologi kan redusere tiden til å designe og bygge bygninger betraktelig ved å tillate ting som virtuelle gjennomganger. Bruken av dyp læring forbedrer faktisk arkitektenes liv på betydelige måter.

Å omgjøre et design til en virtuell omvisning er ikke en gang den mest imponerende bragden med dyp læring på dette feltet. Ved å bruke dyp læring kan designere finne potensielle ingeniørproblemer, utføre stresstesting og sikre sikkerhet på andre måter før designen noen gang forlater tegnebrettet. Disse egenskapene minimerer antall problemer som oppstår etter at en bygning er i drift, og arkitekten kan glede seg over laurbærene til en suksess i stedet for den hån og potensielle tragedie ved en fiasko.

Dyp læring kan forbedre sikkerheten

Ulykker skjer! Imidlertid kan dyp læring bidra til å forhindre ulykker fra å skje - i det minste for det meste. Ved å analysere komplekse mønstre i sanntid, kan dyp læring hjelpe mennesker som er involvert i ulike aspekter av sikkerhetssikring. Ved for eksempel å spore ulike trafikkmønstre og forutsi potensialet for en ulykke i god tid, kan en dyp læringsløsning gi sikkerhetseksperter forslag for å forhindre at ulykken i det hele tatt skulle skje. Et menneske kunne ikke utføre analysen på grunn av for mange variabler. Imidlertid kan en dyp læringsløsning utføre analysen og deretter gi utdata til et menneske for potensiell implementering.

Som med alle andre yrker som involverer dyp læring, fungerer mennesket som den forståelige delen av løsningen. Ulike typer ulykker vil trosse evnen til enhver dyp læringsløsning for å gi presise løsninger hver gang. Mennesker er ikke forutsigbare, men andre mennesker kan redusere sjansen for at noe forferdelig skal skje gitt riktig informasjon. Den dype læringsløsningen gir riktig informasjon, men den krever menneskelig framsyn og intuisjon for å tolke informasjonen riktig.

  1. ProgrammeringStore dataData Science10-applikasjoner som krever dyp læring

Av John Paul Mueller, Luca Mueller

Denne artikkelen er for kort. Det kan ikke engang begynne å beskrive måtene dyp læring vil påvirke deg i fremtiden. Tenk på at denne artikkelen byr på en pirrende luntbit - en forrett som kan gi deg lyst til å utforske verden med dyp læring videre.

Disse dype læringsapplikasjonene er allerede vanlige i noen tilfeller. Du har sannsynligvis brukt minst en av dem i dag, og ganske sannsynlig mer enn bare en. Selv om teknologien har begynt å se utbredt bruk, er det egentlig bare begynnelsen. Vi er i starten av noe, og AI er faktisk ganske umoden på dette tidspunktet.

gjenopprette farge til bilder med dype læringsapplikasjoner

Denne artikkelen diskuterer ikke mordreroboter, dystopiske fremtider, AI-løp amok eller noen av de sensasjonelle scenariene du kan se i filmene. Informasjonen du finner her handler om det virkelige livet, eksisterende AI-applikasjoner som du kan samhandle med i dag.

Dyp læring kan brukes til å gjenopprette farger til svart-hvitt videoer og bilder

Du har sannsynligvis noen svart-hvitt-videoer eller bilder av familiemedlemmer eller spesielle begivenheter du gjerne vil se i farger. Farge består av tre elementer: fargetone (den faktiske fargen), verdien (mørkets eller lyshetens farge) og metning (fargenes intensitet). Merkelig nok er mange kunstnere fargeblinde og bruker sterk verdi av farge i sine kreasjoner. Så å ha fargetone som mangler (elementet som svart-hvitt-kunst mangler) er ikke verdens ende. Tvert imot, noen artister ser på det som en fordel.

Når du ser på noe i sort / hvitt, ser du verdi og metning, men ikke fargetone. Colorization er prosessen med å legge fargen tilbake i. Kunstnere utfører vanligvis denne prosessen ved hjelp av et møysommelig utvalg av individuelle farger. AI har imidlertid automatisert denne prosessen ved hjelp av Convolutional Neural Networks (CNNs).

Den enkleste måten å bruke CNN til fargelegging er å finne et bibliotek som kan hjelpe deg. Algorithmia-nettstedet tilbyr et slikt bibliotek og viser noen eksempler på kode. Du kan også prøve applikasjonen ved å lime inn en URL i det medfølgende feltet. Denne Petapixel.com-artikkelen beskriver hvor bra denne applikasjonen fungerer. Det er helt utrolig!

Dyp læring kan omtrentlige personposisjoner i sanntid

Personposisjoner forteller deg ikke hvem som er i en videostrøm, men snarere hvilke elementer av en person som er i videostrømmen. Å bruke en personpose kan for eksempel fortelle deg om personens albue vises i videoen og hvor den vises. Denne artikkelen forteller deg mer om hvordan hele visualiseringsteknikken fungerer. Faktisk kan du se hvordan systemet fungerer gjennom en kort animasjon av en person i det første tilfellet og tre personer i det andre tilfellet.

Personposisjoner kan ha alle slags nyttige formål. Du kan for eksempel bruke en person som utgjør for å hjelpe folk med å forbedre formen for ulike idretter - alt fra golf til bowling. En person utgjør kan også gjøre nye slags videospill mulig. Se for deg å kunne spore en persons posisjon for et spill uten det vanlige sortimentet av tungvint utstyr. Teoretisk sett kan du bruke personposisjoner til å utføre kriminalitetsanalyse eller for å bestemme muligheten for at en person begår en forbrytelse.

En annen interessant anvendelse av posedeteksjon er for medisinske formål og rehabiliteringsformål. Programvare drevet av dyp læring kan fortelle deg om du gjør øvelsene dine riktig og spore forbedringene dine. En slik applikasjon kan støtte arbeidet til en profesjonell rehabilitator ved å ta vare på deg når du ikke er på et medisinsk anlegg (en aktivitet som kalles telerehabilitering).

Heldigvis kan du i det minste begynne å jobbe med personposisjoner i dag ved å bruke tfjs-models (PoseNet) biblioteket. Du kan se det i aksjon med et webkamera, komplett med kildekode. Eksemplet tar en stund å laste, så du må være tålmodig.

Dyp læring kan utføre sanntids atferdsanalyse

Atferdsanalyse går et skritt utover det personen utgjør analyse gjør. Når du utfører atferdsanalyse, er spørsmålet fremdeles ikke et spørsmål om hvem, men hvordan. Denne spesielle AI-applikasjonen påvirker hvordan leverandører designer produkter og nettsteder. Artikler som denne fra Amplitude legger stor vekt på å definere og karakterisere bruken av atferdsanalyse. I de fleste tilfeller hjelper atferdsanalyse deg med å se hvordan prosessen produktdesigneren forventet at du fulgte ikke stemmer overens med prosessen du faktisk bruker.

Atferdsanalyse har også en rolle å spille på andre livsområder. For eksempel kan atferdsanalyse hjelpe mennesker i medisinfaget å identifisere potensielle problemer med mennesker som har spesifikke medisinske tilstander, for eksempel autisme, og hjelpe pasienten å overvinne disse problemene. Atferdsanalyse kan også hjelpe lærere i fysisk kunst å vise elevene hvordan de skal finpusse ferdighetene sine. Du kan også se at det brukes i det juridiske yrket for å finne ut av motiv. (Skylden er åpenbar, men hvorfor en person gjør noe, er avgjørende for rettferdig utbedring av en uønsket oppførsel.)

Heldigvis kan du allerede begynne å utføre atferdsanalyse med Python.

Dyp læring kan brukes til å oversette språk

Internett har skapt et miljø som kan hindre deg i å vite hvem du virkelig snakker med, hvor personen er, eller noen ganger til og med når personen snakker med deg. En ting har imidlertid ikke endret seg: behovet for å oversette et språk til et annet når de to partiene ikke snakker et felles språk. I noen få tilfeller kan mistenkning være humoristisk, forutsatt at begge parter har en sans for humor.

Mistranslasjon har imidlertid også ført til alle slags alvorlige konsekvenser, inkludert krig. Selv om oversettelsesprogramvare er ekstremt tilgjengelig på Internett, er nøye valg av hvilket produkt som skal brukes viktig. En av de mest populære av disse applikasjonene er Google Translate, men mange andre applikasjoner er tilgjengelige, for eksempel DeepL. I følge Forbes er maskinoversettelse ett område der AI utmerker seg.

Oversettelsesapplikasjoner er vanligvis avhengige av Bidirectional Recurrent Neural Networks (BRNNs). Du trenger ikke å lage din egen BRNN fordi du har mange eksisterende API-er å velge mellom. Du kan for eksempel få Python-tilgang til Google Translate API ved å bruke biblioteket. Poenget er at oversettelse muligens er en av de mer populære applikasjonene for dyp læring og en som mange bruker uten å tenke på det.

Dyp læring kan brukes til å estimere solsparepotensialet

Det er vanskelig å prøve å finne ut om solenergi vil fungere på ditt sted, med mindre mange andre mennesker også bruker den. I tillegg er det enda vanskeligere å vite hvilket besparelsesnivå du kan ha. Selvfølgelig vil du ikke installere solenergi hvis den ikke tilfredsstiller målene dine for å bruke den, noe som kanskje ikke inkluderer langsiktige kostnadsbesparelser (selv om det generelt gjør det). Noen dyptforsterkende læringsprosjekter hjelper deg nå med å ta gjetningene ut av solenergi, inkludert Project Sunroof. Heldigvis kan du også få støtte for denne typen prediksjoner i Python-applikasjonen.

AI kan slå folk på dataspill

AI-kontra-folk-konkurransen tiltrekker fortsatt interesse. Fra å vinne i sjakk til å vinne på Go, AI ser ut til å ha blitt uslåelig - i det minste uslåelig på ett spill. I motsetning til mennesker, spesialiserer AI seg, og en AI som kan vinne på Go vil neppe gjøre det bra med sjakk. Likevel blir 2017 ofte hyllet som begynnelsen på slutten for mennesker over AI i spill. Selvfølgelig har konkurransen pågått i noen tid, og du kan sannsynligvis finne konkurranser som AI vant langt tidligere enn 2017. Noen kilder legger faktisk datoen for en Go-seier allerede i oktober 2015. Artikkelen på Interesting Engineering beskriver 11 andre ganger som AI vant.

Problemet er å tilpasse en AI som kan vinne et bestemt spill og innse at ved å spesialisere seg på det spillet, kan AI kanskje ikke gjøre det bra på andre spill. Prosessen med å bygge en AI for bare ett spill kan se vanskelig ut. Denne artikkelen beskriver hvordan du bygger en enkel sjakk AI, som faktisk ikke vil beseire en sjakkmester, men kan gjøre det bra med en mellomspiller.

Imidlertid er det faktisk litt snart å si at folk er ute av spillet. I fremtiden kan folk konkurrere mot AI med mer enn ett spill. Eksempler på denne typen konkurranser florerer allerede, for eksempel folk som spiller i en triatlon av spill, som består av tre sportsbegivenheter, i stedet for en. Konkurransen ville da blitt en av fleksibilitet: AI kunne ikke bare snakke ned og lære bare ett spill, så mennesket ville ha en fleksibilitet. Denne typen AI-bruk demonstrerer at mennesker og AI kan være nødt til å samarbeide i fremtiden, med AI som spesialiserer seg på spesifikke oppgaver og menneskene gir fleksibiliteten som trengs for å utføre alle nødvendige oppgaver.

Dyp læring kan brukes til å generere stemmer

Bilen din kan allerede snakke til deg. mange biler snakker regelmessig med folk nå. Merkelig nok er stemmegenerasjonen ofte så god at det er vanskelig å fortelle den genererte stemmen fra en ekte. Noen artikler snakker om hvordan opplevelsen av å finne datastemmer som høres ganske ekte ut blir mer vanlig. Problemet vekker nok oppmerksomhet nå som mange telefonsentre forteller deg at du snakker med en datamaskin i stedet for en person.

Selv om samtaleutgang er avhengig av skriptede svar, noe som gjør det mulig å generere svar med ekstremt høyt selvtillit, er stemmegjenkjenning litt vanskeligere å utføre (men det har forbedret seg veldig). For å kunne jobbe med stemmegjenkjenning må du ofte begrense innspillet til bestemte nøkkelord. Ved å bruke nøkkelord som stemmegjenkjenningen er designet for å forstå, unngår du at brukeren trenger å gjenta en forespørsel. Dette behovet for spesifikke begreper gir deg unna at du snakker med en datamaskin - bare spør om noe uventet og datamaskinen vet ikke hva de skal gjøre med den.

Den enkle måten å implementere ditt eget talesystem på er å stole på et eksisterende API, for eksempel Cloud Speech to Text. Selvfølgelig kan det hende du trenger noe du kan tilpasse. I dette tilfellet vil det være nyttig å bruke en API. Denne artikkelen forteller hvordan du bygger din egen stemmebaserte applikasjon ved hjelp av Python.

Dyp læring kan brukes til å forutsi demografi

Demografi, viktige eller sosiale statistikker som grupperer mennesker etter bestemte egenskaper, har alltid vært del av kunst og del av vitenskap. Du kan finne et hvilket som helst antall artikler om hvordan du får datamaskinen din til å generere demografi for klienter (eller potensielle kunder). Bruken av demografi er bred, men du ser dem brukt til ting som å forutsi hvilket produkt en bestemt gruppe vil kjøpe (kontra konkurransen). Demografi er et viktig middel for å kategorisere mennesker og deretter forutsi noe handling fra deres side basert på gruppeforeningene deres. Her er metodene du ofte ser sitert for AI-er når du samler demografi:

  • Historisk: Basert på tidligere handlinger, generaliserer en AI hvilke handlinger du kan utføre i fremtiden. Nåværende aktivitet: Basert på handlingen du utfører nå og kanskje andre egenskaper, som kjønn, spår en datamaskin neste handling. Kjennetegn: Basert på egenskapene som definerer deg, for eksempel kjønn, alder og område der du bor, spår en datamaskin valgene du sannsynligvis vil ta.

Du kan finne artikler om AIs prediktive evner som virker nesten for gode til å være sanne. For eksempel sier denne Medium-artikkelen at AI nå kan forutsi demografien basert utelukkende på navnet ditt. Selskapet i den artikkelen, Demografy, hevder å gi kjønn, alder og kulturell tilhørighet utelukkende basert på navn. Selv om nettstedet hevder at det er 100 prosent nøyaktig, er denne statistikken svært usannsynlig fordi noen navn er kjønn tvetydige, for eksempel Renee, og andre er tildelt ett kjønn i noen land og et annet kjønn i andre. Ja, demografisk prediksjon kan fungere, men vær forsiktig før du tror på alt det som disse nettstedene forteller deg.

Hvis du vil eksperimentere med demografisk prediksjon, kan du finne et antall API-er på nettet. DeepAI API lover for eksempel å hjelpe deg med å forutsi alder, kjønn og kulturell bakgrunn basert på en persons utseende i en video. Hver av de elektroniske APIene spesialiserer seg, så du må velge API med blikket mot den type inndata du kan gi.

AI kan lage kunst fra virkelige bilder

Dyp læring kan bruke innholdet i et virkelighetsbilde og en eksisterende mester for stil for å lage en kombinasjon av de to. Noen kunstverk som er generert ved bruk av denne tilnærmingen, betaler faktisk høye priser på auksjonsblokken. Du kan finne alle slags artikler om denne spesielle typen kunstgenerasjoner, for eksempel denne Wired-artikkelen.

Selv om bilder er fine å henge på veggen, kan det være lurt å produsere andre typer kunst. For eksempel kan du lage en 3D-versjon av bildet ditt ved hjelp av produkter som Smoothie 3-D. Det er ikke det samme som å lage en skulptur; snarere bruker du en 3D-skriver for å lage en 3D-versjon av bildet. Sjekk ut et eksperiment du kan utføre for å se hvordan prosessen fungerer.

Utgangen til en AI trenger heller ikke å bestå av noe visuelt. For eksempel, med dyp læring kan du lage musikk basert på innholdet i et bilde. Denne formen for kunst gjør metoden brukt av AI tydeligere. AI transformerer innhold som den ikke forstår fra en form til en annen. Som mennesker ser og forstår vi transformasjonen, men all datamaskinen ser er tall å behandle ved hjelp av smarte algoritmer laget av andre mennesker.

Dyp læring kan brukes til å forutsi naturkatastrofer

Folk har prøvd å forutsi naturkatastrofer så lenge det har vært mennesker og naturkatastrofer. Ingen vil være del av et jordskjelv, tornado, vulkanutbrudd eller noen annen naturkatastrofe. Å være i stand til å komme seg raskt unna, er den viktigste vurderingen i dette tilfellet gitt at mennesker ikke kan kontrollere miljøet godt nok til å forhindre noen naturkatastrofe.

Dyp læring gir mulighet til å lete etter ekstremt subtile mønstre som svirrer hodet til mennesker. Disse mønstrene kan bidra til å forutsi en naturlig katastrofe, i følge artikkelen om Googles løsning. At programvaren i det hele tatt kan forutsi en eventuell katastrofe, er rett og slett fantastisk. Imidlertid advarer denne artikkelen om at å stole på slik programvare utelukkende ville være en feil.

Overtillit til teknologi er et konstant tema, så ikke bli overrasket over at dyp læring er mindre enn perfekt når det gjelder å forutsi naturkatastrofer også.

  1. ProgrammeringBig DataData ScienceDeep Learning og tilbakevendende nevrale nettverk

Av John Paul Mueller, Luca Mueller

Nevrale nettverk gir en transformasjon av innspillene dine til en ønsket utgang. Selv i dyp læring er prosessen den samme, selv om transformasjonen er mer kompleks. I motsetning til et enklere nevralt nettverk bestående av få lag, er dyp læring avhengig av flere lag for å utføre komplekse transformasjoner. Utgangen fra en datakilde kobles til inngangssjiktet i nevrale nettverket, og inngangslaget begynner å behandle dataene. De skjulte lagene kartlegger mønstrene og relaterer dem til en spesifikk utgang, som kan være en verdi eller en sannsynlighet. Denne prosessen fungerer perfekt for alle slags innspill, og den fungerer spesielt bra for bilder.

Etter at hvert lag har behandlet dataene sine, sender de de transformerte dataene ut til neste lag. Det neste laget behandler dataene med fullstendig uavhengighet fra de forrige lagene. Bruken av denne strategien innebærer at hvis du mater en video til det nevrale nettverket, vil nettverket behandle hvert bilde entall etter hverandre, og resultatet vil ikke endres i det hele tatt selv om du har blandet rekkefølgen på de medfølgende bildene. . Når du driver et nettverk på en slik måte, får du ikke noen fordel av rekkefølgen på informasjonsbehandlingen.

Imidlertid lærer erfaring også at for å forstå en prosess, må du noen ganger observere hendelser i rekkefølge. Når du bruker erfaringene fra et tidligere trinn for å utforske et nytt trinn, kan du redusere læringskurven og redusere tiden og kreftene som trengs for å forstå hvert trinn.

Gjentakende nevrale nettverk: Modellerer sekvenser ved bruk av minne

Noen nevrale arkitekturer lar deg ikke behandle en sekvens av elementer samtidig ved å bruke en enkelt inngang. Når du for eksempel har en serie månedlige produktsalg, rommer du salgstallene med tolv innganger, en for hver måned, og lar nevrale nettverk analysere dem samtidig. Det følger at når du har lengre sekvenser, må du få plass til dem ved hjelp av et større antall innganger, og nettverket ditt blir ganske stort fordi hver inngang skal koble seg til annenhver inngang. Du ender opp med å ha et nettverk preget av et stort antall tilkoblinger (som oversettes til mange vekter), også.

Tilbakevendende nevrale nettverk (RNN) er et alternativ til perceptron og CNN. De dukket opp først på 1980-tallet, og forskjellige forskere har jobbet for å forbedre dem til de nylig fikk popularitet takket være utviklingen innen dyp læring og datakraft.

Ideen bak RNN-er er enkel, de undersøker hvert element i sekvensen en gang og beholder minnet om det, slik at de kan gjenbruke det når de undersøker neste element i sekvensen. Det tilsvarer hvordan menneskesinnet fungerer når du leser tekst: en person leser bokstav for bokstav teksten, men forstår ord ved å huske hver bokstav i ordet. På lignende måte kan en RNN knytte et ord til et resultat ved å huske rekkefølgen på bokstaver det mottar. En utvidelse av denne teknikken gjør det mulig å be en RNN om å bestemme om en setning er positiv eller negativ - en mye brukt analyse kalt sentimentanalyse. Nettverket kobler et positivt eller negativt svar til visse ordsekvenser det har sett i treningseksempler.

Du representerer et RNN grafisk som en nevral enhet (også kjent som en celle) som kobler en inngang til en utgang, men som også kobles til seg selv. Denne selvforbindelsen representerer konsursjonsbegrepet, som er en funksjon som brukes på seg selv inntil den oppnår en bestemt utgang. Et av de mest brukte eksemplene på rekursjon er beregning av et faktorial. Bildet nedenfor viser et spesifikt RNN-eksempel ved å bruke en bokstavsekvens for å lage ordet jazz. Den høyre siden av bildet nedenfor viser en fremstilling av RNN-enhetens oppførsel som mottar jazz som inngang, men det er faktisk bare den ene enheten, som vist til venstre.

dyp læring og tilbakevendende nevrale nettverk

Dette bildet viser en rekursiv celle til venstre og utvider den som en utfoldet serie av enheter som mottar enkle bokstaver i ordet jazz til høyre. Det starter med j, etterfulgt av de andre bokstavene. Når denne prosessen skjer, sender RNN ut en utgang og endrer de interne parametrene. Ved å endre sine interne parametere lærer enheten av dataene den mottar og fra minnet til forrige data. Summen av denne læringen er tilstanden til RNN-cellen.

Når du diskuterer nevrale nettverk, vil du høre mye diskusjon om vekter. Med RNNer må du også kjenne begrepet tilstand. Vektene hjelper til med å bearbeide inndataene til en utgang i et RNN, men staten inneholder sporene til informasjonen RNN har sett så langt, så staten påvirker funksjonen til RNN. Tilstanden er et slags korttidsminne som tilbakestilles etter at en sekvens er fullført. Når en RNN-celle får deler av en sekvens, gjør den følgende:

  1. Behandler dem og endrer tilstand med hver inngang. Avgir en utgang. Etter å ha sett den siste utdata lærer RNN de beste vektene for å kartlegge inngangen til riktig utdata ved hjelp av tilbakepropagering.

Gjentakende nevrale nettverk: Gjenkjenne og oversette tale

Evnen til å gjenkjenne og oversette mellom språk blir viktigere for hver dag som økonomiene overalt blir stadig mer globaliserte. Språkoversettelse er et område der AI har en klar fordel fremfor mennesker - så mye at artikler fra Digitalist Magazine og Forbes begynner å stille spørsmål ved hvor lenge den menneskelige oversetteren vil forbli levedyktig.

Selvfølgelig må du gjøre oversettelsesprosessen levedyktig ved hjelp av dyp læring. Fra et neuralt arkitekturperspektiv har du et par valg:

  • Behold alle outputene som leveres av RNN-cellen Behold den siste RNN-celleutgangen

Den siste utgaven er utdataene fra hele RNN fordi den er produsert etter fullført sekvensundersøkelse. Du kan imidlertid bruke de foregående utgangene hvis du trenger å forutsi en annen sekvens, eller hvis du har tenkt å stable flere RNN-celler etter den gjeldende, for eksempel når du arbeider med Convolutional Neural Networks (CNNs). Å sette RNNs vertikalt gjør det mulig for nettverket å lære komplekse sekvensmønstre og bli mer effektive i å produsere prediksjoner.

Du kan også stable RNNer horisontalt i samme lag. Å tillate flere RNN-er å lære av en sekvens kan hjelpe det med å få mer ut av dataene. Å bruke flere RNN-er ligner CNN-er, der hvert enkelt lag bruker dybder av viklinger for å lære detaljer og mønstre fra bildet. I flere RNN-tilfeller kan et lag fatte forskjellige nyanser av sekvensen de undersøker.

Å designe rutenett av RNN-er, både horisontalt og vertikalt, forbedrer prediktive prestasjoner. Å bestemme hvordan du skal bruke output bestemmer imidlertid hva en dyp læringsarkitektur drevet av RNN kan oppnå. Nøkkelen er antall elementer som brukes som innganger og sekvenslengden som forventes som utgang. Når det dype læringsnettverket synkroniserer RNN-utgangene, får du ønsket resultat.

Du har noen få muligheter når du bruker flere RNN-er, som avbildet på bildet nedenfor:

  • En til én: Når du har en inngang og forventer en utgang. De tar en sak, som består av et visst antall informative variabler, og gir et estimat, for eksempel et antall eller sannsynlighet. Én til mange: Her har du ett innspill og du forventer en sekvens med utganger som resultat. Automatisk overskrift av nevrale nettverk bruker denne tilnærmingen: Du legger inn et enkelt bilde og produserer en setning som beskriver bildeinnhold. Mange til én: Det klassiske eksemplet for RNN-er. For eksempel legger du inn en tekstsekvens og forventer et enkelt resultat som utdata. Du ser denne tilnærmingen brukes til å produsere et estimat for analyser av følelser eller en annen klassifisering av teksten. Mange til mange: Du oppgir en sekvens som input og forventer en resulterende sekvens som output. Dette er kjernearkitekturen for mange av de mest imponerende AI-applikasjonene med dyp læring. Denne tilnærmingen brukes til maskinoversettelse (for eksempel et nettverk som automatisk kan oversette en frase fra engelsk til tysk), chatbots (et nevralt nettverk som kan svare på spørsmålene dine og krangle med deg), og sekvensmerking (klassifisere hvert av bildene i en video).
tilbakevendende nevrale nettverksinngang og -utgang

Maskinoversettelse er en maskins evne til å oversette, riktig og meningsfullt, et menneskespråk til et annet. Denne evnen er noe forskere har bestrebet seg på å oppnå i lang tid, spesielt for militære formål. Du kan lese den fascinerende historien om alle forsøkene på å utføre maskinoversettelse av amerikanske og russiske forskere i artikkelen av Vasily Zubarev. Det virkelige gjennombruddet skjedde først etter at Google lanserte sin Google Neural Machine Translation (GNMT), som du kan lese mer om på Google AI-bloggen. GNMT er avhengig av en serie RNN-er (ved å bruke mange-til-mange-paradigmet) for å lese ordssekvensen på språket du vil oversette fra (kalt kodelaget) og returnere resultatene til et annet RNN-lag (dekoderlaget) som forvandler det til oversatt utgang.

Neural maskinoversettelse trenger to lag fordi grammatikken og syntaks for et språk kan være forskjellig fra et annet. Et enkelt RNN kan ikke fatte to språksystemer samtidig, så koder-dekoderparet er nødvendig for å håndtere de to språkene. Systemet er ikke perfekt, men det er et utrolig spring fremover fra de tidligere løsningene beskrevet i Vasily Zubarevs artikkel, og reduserer feil i ordensrekkefølge, leksikale feil (det valgte oversettelsesordet) og grammatikk (hvordan ord brukes).

Videre avhenger ytelsen av treningssettet, forskjellene mellom språkene som er involvert og deres spesifikke egenskaper. På grunn av hvordan setningsstrukturen er bygd på japansk, investerer den japanske regjeringen nå i en sanntids taleoversetter for å hjelpe under OL i Tokyo i 2020 og for å øke turismen ved å utvikle en avansert neuralt nettverksløsning.

RNN-er er grunnen til at stemmeassistenten din kan svare deg, eller den automatiske oversetteren kan gi deg en fremmedspråklig oversettelse. Fordi en RNN ganske enkelt er en tilbakevendende operasjon av multiplikasjon og summering, kan dype læringsnettverk ikke virkelig forstå noen mening; de behandler ganske enkelt ord og uttrykk basert på hva de lærte under trening.

Gjentagende nevrale nettverk: Plassere riktig bildetekst på bilder

En annen mulig anvendelse av RNN-er ved bruk av mange-til-mange-tilnærmingen er bildetekstgenerering, som innebærer å gi et bilde til et nevralt nettverk og motta en tekstbeskrivelse som forklarer hva som skjer i bildet. I motsetning til chatbots og maskinoversettere, hvis output konsumeres av mennesker, fungerer billedgenerering med robotikk. Det genererer mer enn bare å lage bilde- eller videobeskrivelser.

Bildetekstgenerering kan hjelpe mennesker med nedsatt syn å oppfatte omgivelsene sine ved hjelp av enheter som Horus bærbare eller bygge en bro mellom bilder og kunnskapsbaser (som er tekstbasert) for roboter - slik at de kan forstå omgivelsene bedre. Du tar utgangspunkt i spesiallagde datasett som Pascal Sentence Datasett; Flickr 30K, som består av Flickr-bilder som er kommentert av crowd sourcing; eller MS Coco datasettet. I alle disse datasettene inkluderer hvert bilde en eller flere setninger som forklarer bildeinnholdet. For eksempel, i MS Coco datasettprøvenummer 5947, ser du fire flygende fly som du riktig kan bruke bildetekst som:

  • Fire fly på himmelen overhead på en overskyet dag Fire enmotorsfly i lufta på en overskyet dag En gruppe på fire fly som flyr i formasjon En gruppe fly som flyr gjennom himmelen En flåte med fly som flyr gjennom himmelen

Et godt trent nevralt nettverk skal kunne produsere analoge setninger, hvis de blir presentert med et lignende bilde. Google publiserte først et papir om løsningen på dette problemet, kalt Show and Tell-nettverket eller Neural Image Caption (NIC), i 2014, og oppdaterte det deretter ett år senere.

Google har siden åpnet sourcing av NIC og tilbudt det som en del av TensorFlow-rammeverket. Som et nevralt nettverk består det av en forhåndsutviklet CNN (for eksempel Google LeNet, vinneren av ImageNet i 2014) som behandler bilder på lignende måte for å overføre læring.

Et bilde blir omgjort til en sekvens av verdier som representerer bildefunksjonene på høyt nivå som oppdages av CNN. Under trening passerer det innebygde bildet til et lag med RNN-er som lagrer bildekarakteristikkene i sin indre tilstand. CNN sammenligner resultatene produsert av RNNs med alle mulige beskrivelser gitt for treningsbildet, og det beregnes en feil. Feilen bakpropagneres deretter til RNNs del av nettverket for å justere RNNs vekter og hjelpe den å lære hvordan du tar bildetekster riktig. Etter å ha gjentatt denne prosessen mange ganger med forskjellige bilder, er nettverket klar til å se nye bilder og gi en beskrivelse av disse nye bildene.

Gjentagende nevrale nettverk gir muligheter for mer avansert innovasjon og kan bidra til å automatisere noen nødvendige oppgaver.

  1. ProgrammeringBig DataData ScienceDeep Learning og Natural Language Processing

Av John Paul Mueller, Luca Mueller

Som en forenkling kan du se på språket som en sekvens av ord laget av bokstaver (i tillegg til tegnsettingstegn, symboler, uttrykksikoner og så videre). Dyp læring bearbeider språket best ved å bruke lag med RNN-er, for eksempel LSTM eller GRU. Å vite å bruke RNN-er forteller deg ikke hvordan du bruker sekvenser som innganger. må du bestemme hvilken type sekvenser. Faktisk aksepterer dype læringsnettverk bare numeriske inndataverdier. Datamaskiner koder bokstavsekvenser som du forstår til tall i henhold til en protokoll, for eksempel Unicode Transformation Format-8 bit (UTF-8). UTF-8 er den mest brukte kodingen.

Dyp læring kan også behandle tekstdata ved hjelp av konvolusjonelle nevrale nettverk (CNN) i stedet for RNN ved å representere sekvenser som matriser (ligner på bildebehandling). Keras støtter CNN-lag, for eksempel Conv1D, som kan operere på bestilte funksjoner i tid - det vil si ordssekvenser eller andre signaler. 1D-konvolusjonsutgangen følges vanligvis av et MaxPooling1D-lag som oppsummerer utgangene. CNN-er brukt på sekvenser finner en grense i deres ufølsomhet for sekvensens globale rekkefølge. (De har en tendens til å oppdage lokale mønstre.) Av den grunn er de best brukt i sekvensbehandling i kombinasjon med RNN-er, ikke som erstatning for dem.

Natural Language Processing (NLP) består av en serie prosedyrer som forbedrer behandlingen av ord og uttrykk for statistisk analyse, maskinlæringsalgoritmer og dyp læring. NLP skylder sine røtter til datalinguistikk som drev AI-regelbaserte systemer, for eksempel ekspertsystemer, som tok beslutninger basert på en datamaskinoversettelse av menneskelig kunnskap, erfaring og måte å tenke på. NLP fordøyet tekstinformasjon, som er ustrukturert, til mer strukturerte data slik at ekspertsystemer lett kan manipulere og evaluere den.

Dyp læring har tatt overhånd i dag, og ekspertsystemer er begrenset til spesifikke applikasjoner der tolkbarhet og kontroll av beslutningsprosesser er avgjørende (for eksempel i medisinske applikasjoner og beslutningssystemer for kjøreatferd på noen selvkjørende biler). Likevel er NLP-rørledningen fremdeles ganske relevant for mange applikasjoner med dyp læring.

Natural Language Processing: Definere forståelse som tokenization

I en NLP-rørledning er det første trinnet å skaffe rå tekst. Vanligvis lagrer du det i minnet eller får tilgang til det fra disk. Når dataene er for store til å passe inn i minnet, holder du en peker på den på disken (for eksempel katalognavnet og filnavnet). I eksemplet nedenfor bruker du tre dokumenter (representert med strengvariabler) lagret i en liste (dokumentbeholderen er korpus i nat

importer numpy som np
tekster = ["Hunden min blir sammen med katter",
"Den katten er ondskapsfull",
"Hunden min er glad når det er lunsj"]

Etter å ha fått teksten, behandler du den. Når du behandler hver setning, trekker du ut de aktuelle funksjonene fra teksten (du lager vanligvis en pose-med-ord-matrise) og gir alt videre til en læringsmodell, for eksempel en dyp læringsalgoritme. Under tekstbehandling kan du bruke forskjellige transformasjoner for å manipulere teksten (med tokenisering som den eneste obligatoriske transformasjonen):

  • Normalisering: Fjern store bokstaver. Rengjøring: Fjern ikke-tekstlige elementer som tegnsetting og tall. Tokenisering: Del en setning i individuelle ord. Stopp ordfjerning: Fjern vanlige, uinformative ord som ikke gir mening til setningen, for eksempel artiklene og a. Å fjerne negasjoner som ikke kan være skadelig hvis du vil gjette stemningen. Stemming: Reduser et ord til stilken (som er ordformen før du legger til infeksjonsforbindelser). En algoritme, kalt en stammer, kan gjøre dette basert på en rekke regler. Lemmatisering: Transformer et ord til ordbokform (lemmaet). Det er et alternativ til å stamme, men det er mer sammensatt fordi du ikke bruker en algoritme. I stedet bruker du en ordbok for å konvertere hvert ord til dets lemma. Pos-tagging: Merk hvert ord i en frase med sin grammatiske rolle i setningen (for eksempel å merke et ord som et verb eller som et substantiv). N-gram: Assosier hvert ord med et bestemt antall (n i n-gram), til å følge ord og behandle dem som et unikt sett. Vanligvis fungerer to-gram (en serie med to tilstøtende elementer eller symboler) og tri-gram (en serie med tre tilstøtende elementer eller symboler) det beste for analyseformål.

For å oppnå disse transformasjonene, kan det hende du trenger en spesialisert Python-pakke som NLTK eller Scikit-learning. Når du arbeider med dyp læring og et stort antall eksempler, trenger du bare grunnleggende transformasjoner: normalisering, rengjøring og tokenisering. De dype læringslagene kan bestemme hvilken informasjon som skal pakkes ut og behandles. Når du arbeider med få eksempler, trenger du å tilby så mye NLP-behandling som mulig for å hjelpe det dype læringsnettverket med å bestemme hva du skal gjøre til tross for den lille veiledningen fra de få eksemplene.

Keras tilbyr en funksjon, keras.preprocessing.text.Tokenizer, som normaliserer (ved å bruke den nedre parameteren satt til True), renser (filterparameteren inneholder en streng med tegnene som skal fjernes, vanligvis disse: '! "# $% & ( ) * +, -. /:; <=>? @ [\] ^ _ `{|} ~ ') og symboliserer.

Natural Language Processing: Legge alle dokumentene i en pose

Etter å ha bearbeidet teksten, må du trekke ut de aktuelle funksjonene, som betyr å transformere den gjenværende teksten til numerisk informasjon for det nevrale nettverket som skal behandles. Dette gjøres ofte ved bruk av bag-of-word-tilnærmingen, som oppnås ved frekvenskoding eller binær koding av teksten. Denne prosessen tilsvarer å transformere hvert ord til en matrisk kolonne så bredt som antall ord du trenger å representere. Følgende eksempel viser hvordan du oppnår denne prosessen og hva den innebærer. Som et første trinn utarbeider du en grunnleggende normalisering og tokenisering ved hjelp av noen få Python-kommandoer for å bestemme ordforrådens størrelse for prosessering:

unique_words = set (word.lower () for frase i tekster for
ord i frasen.split ("")
print (f "Det er {len (unique_words)} unike ord")

Koden rapporterer 14 ord. Du fortsetter nå med å laste Tokenizer-funksjonen fra Keras og sette den til å behandle teksten ved å oppgi den forventede vokabularstørrelsen:

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

Hvis du bruker en vokabular_ størrelse som er for liten, kan det utelukke viktige ord fra læringsprosessen. En som er for stor, kan ubrukelig forbruke datamaskinens minne. Du må gi Tokenizer et riktig estimat av antallet tydelige ord i tekstlisten. Du legger alltid til 1 i vokabularet størrelse for å gi et ekstra ord for starten på en frase (et begrep som hjelper det dypt læringsnettverket). På dette tidspunktet kartlegger Tokenizer ordene som er tilstede i tekstene til indekser, som er numeriske verdier som representerer ordene i teksten:

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

De resulterende indeksene er som følger:

{1: 'er', 2: 'min', 3: 'hund', 4: 'blir', 5: 'sammen',
6: 'med', 7: 'katter', 8: 'den', 9: 'katt', 10: 'ondskapsfull',
11: 'lykkelig', 12: 'når', 13: 'det', 14: 'lunsj'}

Indeksene representerer kolonnenummeret som inneholder ordinformasjonen:

print (tokenizer.texts_to_matrix (tekster))

Her er den resulterende matrisen:

[[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.]]

Matrisen består av 15 kolonner (14 ord pluss starten på setningspekeren) og tre rader, som representerer de tre behandlede tekstene. Dette er tekstmatrisen som skal behandles ved hjelp av et grunt nevralt nettverk (RNN-er krever et annet format, som diskutert senere), som alltid er størrelse som vokabular størrelse etter antall tekster. Tallene i matrisen representerer antall ganger et ord vises i uttrykket. Dette er imidlertid ikke den eneste representasjonen. Her er de andre:

  • Frekvenskoding: Teller antall ordopptredener i uttrykket. one-hot-koding eller binær koding: Legg merke til tilstedeværelsen av et ord i en frase, uansett hvor mange ganger det vises. TF-IDF-poengsum for koordinering av frekvens: Inverse Document Frequency: Koder et mål i forhold til hvor mange ganger et ord vises i et dokument i forhold til det totale antallet ord i matrisen. (Ord med høyere score er mer særegne; ord med lavere score er mindre informative.)

Du kan bruke TF-IDF-transformasjonen fra Keras direkte. Tokenizer tilbyr en metode, tekster_til_matrise, som som standard koder teksten din og transformerer den til en matrise der kolonnene er ordene dine, radene er tekstene dine, og verdiene er ordfrekvensen i en tekst. Hvis du bruker transformasjonen ved å spesifisere modus = 'tfidf', bruker transformasjonen TF-IDF i stedet for ordfrekvenser for å fylle matriseverdiene:

print (np.round (tokenizer.texts_to_matrix (tekster,
modus = 'tfidf'), 1))

Legg merke til at ved å bruke en matrise-representasjon, uansett om du bruker binær, frekvens eller den mer sofistikerte TF-IDF, har du mistet noen følelse av ordbestilling som finnes i uttrykket. Under behandlingen sprer ordene seg i forskjellige kolonner, og det nevrale nettverket kan ikke gjette ordens rekkefølge i en frase. Denne mangelen på orden er grunnen til at du kaller det en bag-of-word tilnærming.

Bag-of-word-tilnærmingen brukes i mange maskinlæringsalgoritmer, ofte med resultater fra god til rettferdig, og du kan bruke den på et nevralt nettverk ved hjelp av tette arkitekturlag. Transformasjoner av ord kodet til n_grams (omtalt i forrige avsnitt som en NLP-prosesseringstransformasjon) gir litt mer informasjon, men igjen, du kan ikke relatere ordene.

RNN-er holder rede på sekvenser, slik at de fremdeles bruker en varm koding, men de koder ikke for hele frasen, snarere koder de individuelt for hvert symbol (som kan være et ord, et tegn eller til og med en haug med tegn). Av denne grunn forventer de en sekvens av indekser som representerer uttrykket:

print (tokenizer.texts_to_sequences (tekster))

Når hver frase overføres til en nevral nettverksinngang som en sekvens med indeksnumre, blir tallet omgjort til en en-kodet vektor. De en-varme kodede vektorene mates deretter inn i RNNs lag en om gangen, noe som gjør dem enkle å lære. Her er for eksempel transformasjonen av den første frasen i matrisen:

[[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 representasjonen får du en distinkt matrise for hvert tekststykke. Hver matrise representerer de individuelle tekstene som distinkte ord ved bruk av kolonner, men nå representerer radene ordets utseende. (Den første raden er det første ordet, den andre raden er det andre ordet, og så videre.)

Ved hjelp av denne grunnleggende tilnærmingen er dataforskere i stand til å bruke dyp læring for Natural Language Processing.

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

Av John Paul Mueller, Luca Mueller

Når du vet hvordan nevrale nettverk i utgangspunktet fungerer, trenger du en bedre forståelse av hva som skiller dem for å forstå deres rolle i dyp læring. Utover de forskjellige nevrale nettverksarkitekturene, kan valg av aktiveringsfunksjoner, optimalisatorer og nevrale nettverkets læringsfrekvens utgjøre en forskjell. Å vite grunnleggende operasjoner er ikke nok fordi du ikke får de resultatene du ønsker. Å se under panseret til et nevralt nettverk hjelper deg å forstå hvordan du kan stille inn løsningen din for å modellere spesifikke problemer. I tillegg vil det å forstå de forskjellige algoritmene som brukes til å lage et nevralt nettverk hjelpe deg med å oppnå bedre resultater med mindre krefter og på kortere tid. Følgende artikkel fokuserer på tre områder av nevrale nettverksdifferensiering.

Velge riktig aktiveringsfunksjon for ditt nevrale nettverk

En aktiveringsfunksjon er den delen av et nevralt nettverk som ganske enkelt definerer når en nevron skyter. Betrakt det som et slags tippepunkt: Innspill av en viss verdi vil ikke føre til at nevronen skyter av fordi det ikke er nok, men bare litt mer innspill kan føre til at nevronen skyter på. En nevron defineres på en enkel måte som følger:

y = ∑ (vekt * inngang) + skjevhet

Utgangen, y, kan være en hvilken som helst verdi mellom + uendelig og - uendelig. Problemet er da å bestemme hvilken verdi av y som er skyteverdien, og det er her en aktiveringsfunksjon kommer inn i det nevrale nettverket. Aktiveringsfunksjonen bestemmer hvilken verdi som er høy eller lav nok til å reflektere et beslutningspunkt i det nevrale nettverket for en bestemt nevron eller gruppe nevroner.

Som med alt annet i nevrale nettverk, har du ikke bare en aktiveringsfunksjon. Du bruker aktiveringsfunksjonen som fungerer best i et bestemt scenario. Med dette i bakhodet kan du dele aktiveringsfunksjonene i disse kategoriene:

  • Trinn: En trinnfunksjon (også kalt en binær funksjon) er avhengig av en spesifikk terskel for å ta beslutningen om å aktivere eller ikke. Å bruke en trinnfunksjon betyr at du vet hvilken spesifikk verdi som vil forårsake en aktivering. Trinnfunksjoner er imidlertid begrenset ved at de enten er fullstendig aktivert eller fullstendig deaktivert - ingen gråtoner finnes. Følgelig, når du prøver å bestemme hvilken klasse som mest sannsynlig er riktig basert på en gitt inngang, vil en trinnfunksjon ikke fungere. Lineær: En lineær funksjon (A = cx) gir en lineær bestemmelse av aktivering basert på inngang. Ved å bruke en lineær funksjon hjelper deg å bestemme hvilken utgang du skal aktivere basert på hvilken utgang som er mest korrekt (som uttrykt ved vekting). Imidlertid fungerer lineære funksjoner bare som et enkelt lag. Hvis du skulle stable flere lineære funksjonslag, ville utdataen være den samme som å bruke et enkelt lag, som beseirer formålet med å bruke nevrale nettverk. Følgelig kan en lineær funksjon vises som et enkelt lag, men aldri som flere lag. Sigmoid: En sigmoid-funksjon (A = 1/1 + e-x), som produserer en kurve formet som bokstaven C eller S, er ikke-lineær. Det begynner med å se sånn ut som trinnfunksjonen, bortsett fra at verdiene mellom to punkter faktisk eksisterer på en kurve, noe som betyr at du kan stable sigmoidfunksjoner for å utføre klassifisering med flere utganger. Området for en sigmoid-funksjon er mellom 0 og 1, ikke - uendelig til + uendelig som med en lineær funksjon, så aktiveringene er bundet innenfor et spesifikt område. Sigmoid-funksjonen lider imidlertid av et problem som kalles forsvinningsgradient, noe som betyr at funksjonen nekter å lære etter et bestemt punkt fordi den forplantede feilen krymper til null når den nærmer seg langt borte lag. Tanh: En tanh-funksjon (A = (2/1 + e-2x) - 1) er faktisk en skalert sigmoidfunksjon. Det har et område fra –1 til 1, så igjen, det er en presis metode for å aktivere nevroner. Den store forskjellen mellom sigmoidfunksjoner og tanh-funksjoner er at tanh-funksjonsgradienten er sterkere, noe som betyr at det er lettere å oppdage små forskjeller, noe som gjør klassifiseringen mer følsom. I likhet med sigmoid-funksjonen, lider tanh av forsvinnende gradientproblemer. ReLU: En ReLU, eller rektifiserte lineære enheter, funksjon (A (x) = maks (0, x)) gir en utgang i området 0 til uendelig, så den ligner på den lineære funksjonen bortsett fra at den også er ulineær, noe som gjør det mulig for deg å stable ReLU-funksjoner. En fordel med ReLU er at det krever mindre prosessorkraft fordi færre nevroner avfyrer. Mangelen på aktivitet når nevronen nærmer seg 0-delen av linjen, betyr at det er færre potensielle utganger å se på. Imidlertid kan denne fordelen også bli en ulempe når du har et problem som kalles den døende ReLU. Etter en stund gir ikke nevrale nettverksvekter den ønskede effekten lenger (det slutter bare å lære) og de berørte nevronene dør - de svarer ikke på noen innspill.

ReLU har også noen varianter du bør vurdere:

  • ELU (Eksponentiell lineær enhet): Skiller seg fra ReLU når inngangene er negative. I dette tilfellet går ikke resultatene til null, men reduseres i stedet sakte til –1 eksponentielt. PReLU (Parametric Rectified Linear Unit): Skiller seg fra ReLU når inngangene er negative. I dette tilfellet er utgangen en lineær funksjon hvis parametre læres ved bruk av samme teknikk som alle andre parametere i nettverket. LeakyReLU: Ligner på PReLU, men parameteren for den lineære siden er fast.

Stole på en smart optimizer for ditt nevrale nettverk

En optimaliserer tjener til å sikre at det nevrale nettverket utfører raske og riktige modeller uansett hvilket problem du vil løse ved å endre nevrale nettverkets skjevheter og vekter (se denne artikkelen for mer om å forbedre maskinens læringsmodeller). Det viser seg at en algoritme utfører denne oppgaven, men du må velge riktig algoritme for å oppnå resultatene du forventer. Som med alle nevrale nettverksscenarier, har du en rekke valgfrie algoritmetyper du kan velge mellom:

Stokastisk gradient nedstigning (SGD)

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

En optimizer fungerer ved å minimere eller maksimere resultatet for en objektiv funksjon (også kjent som en feilfunksjon) representert som E (x). Denne funksjonen er avhengig av modellens interne lærbare parametere som brukes til å beregne målverdiene (Y) fra prediktorene (X). To interne lærbare parametere er vekter (W) og skjevhet (b). De forskjellige algoritmene har forskjellige metoder for å håndtere objektivfunksjonen.

Du kan kategorisere optimaliseringsfunksjonene etter måten de håndterer derivatet (dy / dx), som er øyeblikkelig endring av y med hensyn til x. Her er de to nivåene av derivathåndtering:

  • Første ordre: Disse algoritmene minimerer eller maksimerer objektivfunksjonen ved å bruke gradientverdier med hensyn til parametrene. Andre ordre: Disse algoritmene minimerer eller maksimerer objektfunksjonen ved å bruke andreordens deriverte verdier med hensyn til parametrene. Andreordens derivat kan gi et hint om hvorvidt førsteordens derivat øker eller avtar, noe som gir informasjon om linjens krumning.

Du bruker ofte førsteordens optimaliseringsteknikker i nevrale nettverk, for eksempel Gradient Descent, fordi de krever færre beregninger og har en tendens til å konvergere til en god løsning relativt raskt når du jobber med store datasett.

Angi en arbeidsfrekvens i det nevrale nettverket

Hver optimizer har helt forskjellige parametere for å stille inn det nevrale nettverket. En konstant er å fikse læringsfrekvensen, som representerer hastigheten som koden oppdaterer nettverkets vekter (for eksempel alfaparameteren). Læringshastigheten kan påvirke både tiden det nevrale nettverket tar for å lære en god løsning (antall epoker) og resultatet. Hvis læringsfrekvensen er for lav, tar nettverket ditt alltid å lære. Å sette for høy verdi forårsaker ustabilitet når du oppdaterer vektene, og nettverket vil aldri konvergere til en god løsning.

Det er skremmende å velge en læringsfrekvens som fungerer og trene det nevrale nettverket, fordi du effektivt kan prøve verdier i området fra 0,000001 til 100. Den beste verdien varierer fra optimizer til optimizer. Verdien du velger, avhenger av hvilken type data du har. Teori kan være til liten hjelp her; må du teste forskjellige kombinasjoner før du finner den best egnede læringsgraden for å trene det nevrale nettverket.

Til tross for all matematikken som omgir dem, er det meste et spørsmål om empirisk innsats for å prøve forskjellige kombinasjoner av arkitekturer og parametere, å stille inn nevrale nettverk og få dem til å fungere best.

Ta deg tid til å evaluere læringsfrekvensen, og angi den riktig for å sikre at nevrale nettverk fungerer optimalt.

  1. ProgrammeringStore dataData Science Hvordan fungerer maskinlæring?

Av John Paul Mueller, Luca Mueller

Maskinlæring er en applikasjon av AI som automatisk kan lære og forbedre av erfaring uten å være eksplisitt programmert til det. Læringen av maskinen skjer som et resultat av å analysere stadig økende datamengder, så de grunnleggende algoritmene endres ikke, men kodens interne vekter og skjevheter som brukes til å velge et bestemt svar gjør. Ingenting er selvfølgelig ganske så enkelt. Den følgende artikkelen diskuterer mer om hva maskinlæring er, slik at du kan forstå sin plass i AIs verden og hva dyp læring får fra den.

Dataforskere refererer ofte til teknologien som brukes til å implementere maskinlæring som algoritmer. En algoritme er en serie trinnvise operasjoner, vanligvis beregninger, som kan løse et definert problem i et begrenset antall trinn. I maskinlæring bruker algoritmene en serie endelige trinn for å løse problemet ved å lære av data.

Forstå hvordan maskinlæring fungerer

Maskinlæringsalgoritmer lærer, men det er ofte vanskelig å finne en presis betydning for begrepet læring fordi det finnes forskjellige måter å hente ut informasjon fra data, avhengig av hvordan maskinlæringsalgoritmen er bygget. Generelt krever læringsprosessen store mengder data som gir et forventet svar gitt spesielle innganger. Hvert inngangs- / responspar representerer et eksempel, og flere eksempler gjør det lettere for algoritmen å lære. Det er fordi hvert input / svarpar passer innenfor en linje, klynge eller annen statistisk representasjon som definerer et problemdomen.

Maskinlæring er handlingen for å optimalisere en modell, som er en matematisk, oppsummert representasjon av data i seg selv, slik at den kan forutsi eller på annen måte bestemme en passende respons, selv når den mottar innspill som de ikke har sett før. Jo mer nøyaktig modellen kan komme med riktige svar, jo bedre har modellen lært av datainngangene som er gitt. En algoritme passer modellen til dataene, og denne passende prosessen er trening.

Bildet under viser en ekstremt enkel graf som simulerer hva som skjer i maskinlæring. I dette tilfellet, starter med inngangsverdier på 1, 4, 5, 8 og 10 og parer dem med deres tilsvarende utganger på 7, 13, 15, 21 og 25, bestemmer maskinlæringsalgoritmen at den beste måten å representere forholdet mellom inngang og utdata er formelen 2x + 5. Denne formelen definerer modellen som ble brukt til å behandle inndataene - til og med nye, usettede data - for å beregne en tilsvarende utgangsverdi. Trendlinjen (modellen) viser mønsteret som er dannet av denne algoritmen, slik at en ny inngang på 3 vil gi en forutsagt utgang på 11. Selv om de fleste maskinlæringsscenarier er mye mer kompliserte enn dette (og algoritmen ikke kan lage regler som nøyaktig kartlegger hvert innspill til en presis utgang), gir eksemplet en grunnleggende ide om hva som skjer. I stedet for å individuelt måtte programmere et svar for en inngang på 3, kan modellen beregne riktig respons basert på input / responspar som den har lært.

grunnleggende maskinlæringsscenario

Å forstå at maskinlæring er ren matte

Den sentrale ideen bak maskinlæring er at du kan representere virkeligheten ved å bruke en matematisk funksjon som algoritmen ikke vet på forhånd, men som den kan gjette etter å ha sett noen data (alltid i form av sammenkoblede innganger og utganger). Du kan uttrykke virkeligheten og all dens utfordrende kompleksitet når det gjelder ukjente matematiske funksjoner som maskinlæringsalgoritmer finner og gjør tilgjengelig som en modifisering av deres interne matematiske funksjon. Det vil si at hver maskinlæringsalgoritme er bygd rundt en modifiserbar mattefunksjon. Funksjonen kan endres fordi den har interne parametere eller vekter for et slikt formål. Som et resultat kan algoritmen skreddersy funksjonen til spesifikk informasjon hentet fra data. Dette konseptet er kjerneideen for alle slags maskinlæringsalgoritmer.

Læring i maskinlæring er rent matematisk, og det ender med å knytte visse innspill til visse utganger. Det har ingenting å gjøre med å forstå hva algoritmen har lært. (Når mennesker analyserer data, bygger vi en forståelse av dataene til en viss grad.) Læringsprosessen beskrives ofte som trening fordi algoritmen er opplært til å matche riktig svar (output) til alle spørsmål som tilbys (innspillet). (Machine Learning For Dummies, av John Paul Mueller og Luca Massaron, beskriver hvordan denne prosessen fungerer i detalj.)

Til tross for manglende bevisst forståelse og å være en matematisk prosess, kan maskinlæring være nyttig i mange oppgaver. Det gir mange AI-applikasjoner kraften til å etterligne rasjonell tenking gitt en viss kontekst når læring skjer ved å bruke riktige data.

Ulike strategier for maskinlæring

Maskinlæring tilbyr en rekke forskjellige måter å lære av data på. Avhengig av forventet output og hvilken type innspill du gir, kan du kategorisere algoritmer etter læringsstil. Stilen du velger, avhenger av hvilken type data du har og resultatet du forventer. De fire læringsstilene som brukes til å lage algoritmer er:

  • Veiledet maskinlæring Uovervåket maskinlæring Selvledd maskinlæring Forsterkning av maskinlæring

Følgende avsnitt diskuterer disse maskinens læringsstiler.

Veiledet maskinlæring

Når du arbeider med overvåket maskinlæringsalgoritmer, blir inndatadataene merket og har et spesifikt forventet resultat. Du bruker trening for å lage en modell som en algoritme passer til dataene. Når opplæringen går frem, blir prediksjoner eller klassifisering mer nøyaktige. Her er noen eksempler på veiledede maskinlæringsalgoritmer:

  • Lineær eller logistisk regresjon Support Vector Machines (SVMs) Naïve Bayes K-nærmeste naboer (KNN)

Du må skille mellom regresjonsproblemer, hvis mål er en numerisk verdi, og klassifiseringsproblemer, hvis mål er en kvalitativ variabel, for eksempel en klasse eller etikett. En regresjonsoppgave kan bestemme gjennomsnittsprisene på hus i Boston-området, mens et eksempel på en klassifiseringsoppgave er å skille mellom slags irisblomster basert på deres sepal og kronbladstiltak. Her er noen eksempler på veiledet maskinlæring:

Uovervåket maskinlæring

Når du arbeider med uovervåket maskinlæringsalgoritmer, er ikke inndatadataene merket og resultatene er ikke kjent. I dette tilfellet produserer analyse av strukturer i dataen den nødvendige modellen. Strukturanalysen kan ha en rekke mål, for eksempel å redusere redundans eller å gruppere lignende data. Eksempler på maskinlæring uten tilsyn er

  • Gruppering Anomali påvisning Nevrale nettverk

Selvledd maskinlæring

Du finner all slags læring som er beskrevet på nettet, men selvkontrollert læring er i en kategori for seg selv. Noen mennesker beskriver det som autonom veiledet læring, noe som gir deg fordelene med veiledet læring, men uten alt arbeidet som kreves for å merke data.

Teoretisk sett kunne selvkontrollert løse problemer med annen slags læring som du for tiden bruker. Følgende liste sammenligner selvledd læring med andre slags læring som folk bruker.

  • Veiledet maskinlæring: Den nærmeste formen for læring knyttet til selvkontrollert læring er veiledet maskinlæring fordi begge typer læring er avhengige av par innganger og merkede utganger. I tillegg er begge former for læring assosiert med regresjon og klassifisering. Forskjellen er imidlertid at læring med egenkontroll ikke krever at en person skal merke utdataene. I stedet er det avhengig av korrelasjoner, innebygde metadata eller domenekunnskap innebygd i inndatadataene for å oppdage utskriftsetiketten kontekst. Uovervåket maskinlæring: Som ukontrollert maskinlæring, krever ikke-veiledet læring ingen datamerking. Uovervåket læring fokuserer imidlertid på datastruktur - det vil si mønstre i dataene. Derfor bruker du ikke selvkontrollert læring for oppgaver som gruppering, gruppering, dimensjonalitetsreduksjon, anbefalingsmotorer eller lignende. Semi-veiledet maskinlæring: En semi-veiledet læringsløsning fungerer som en uovervåket læringsløsning ved at den ser etter datamønstre. Semi-veiledet læring er imidlertid avhengig av en blanding av merkede og umerkede data for å utføre oppgavene sine raskere enn det som er mulig ved bruk av strengt umerkede data. Selvledd læring krever aldri etiketter og bruker kontekst for å utføre oppgaven sin, så den vil faktisk ignorere etikettene når de leveres.

Forsterkning av maskinlæring

Du kan se forsterkningslæring som en forlengelse av selvledd læring fordi begge skjemaer bruker den samme tilnærmingen til læring med umerkede data for å oppnå lignende mål. Forsterkningsinnlæring gir imidlertid en tilbakemeldingssløyfe til blandingen. Når en forsterkningslæringsløsning utfører en oppgave riktig, får den positiv tilbakemelding, noe som styrker modellen i å koble målinngangene og -utgangen. På samme måte kan den få negative tilbakemeldinger for uriktige løsninger. På noen måter fungerer systemet omtrent det samme som å jobbe med en hund basert på et belønningssystem.

Opplæring, validering og testing av data for maskinlæring

Maskinlæring er en prosess, akkurat som alt er en prosess i datamaskinens verden. For å bygge en vellykket løsning for maskinlæring, utfører du disse oppgavene etter behov, og så ofte som nødvendig:

  • Opplæring: Maskinlæring begynner når du trener en modell som bruker en bestemt algoritme mot spesifikke data. Treningsdataene er atskilt fra andre data, men de må også være representative. Hvis treningsdataene ikke virkelig representerer problemdomenet, kan den resulterende modellen ikke gi nyttige resultater. I løpet av treningsprosessen ser du hvordan modellen reagerer på treningsdataene og gjør endringer, etter behov, til algoritmene du bruker og måten du masserer dataene på før innspill til algoritmen. Validering: Mange datasett er store nok til å dele opp i en treningsdel og en testdel. Du trener først modellen ved å bruke treningsdataene, og deretter validerer du den med testdataene. Testdataene må selvfølgelig igjen representere problemdomenet nøyaktig. Det må også være statistisk kompatibelt med treningsdataene. Ellers vil du ikke se resultater som gjenspeiler hvordan modellen faktisk vil fungere. Testing: Etter at en modell er opplært og validert, må du fortsatt teste den ved å bruke data fra virkeligheten. Dette trinnet er viktig fordi du må bekrefte at modellen faktisk fungerer på et større datasett som du ikke har brukt til verken trening eller testing. Som med opplærings- og valideringstrinnene, må alle dataene du bruker i løpet av dette trinnet gjenspeile problemdomenet du vil samhandle med ved bruk av maskinlæringsmodellen.

Opplæring gir en maskinlæringsalgoritme med alle slags eksempler på ønskede innganger og utganger som forventes fra disse inngangene. Maskinlæringsalgoritmen bruker deretter denne inngangen til å lage en mattefunksjon. Med andre ord, trening er prosessen der algoritmen fungerer hvordan man skreddersyr en funksjon til dataene. Utgangen til en slik funksjon er typisk sannsynligheten for en viss utgang eller ganske enkelt en numerisk verdi som utgang.

For å gi et inntrykk av hva som skjer i treningsprosessen, kan du forestille deg et barn som lærer å skille trær fra gjenstander, dyr og mennesker. Før barnet kan gjøre det på en selvstendig måte, presenterer en lærer barnet et visst antall trebilder, komplett med alle fakta som gjør at et tre kan skilles fra andre gjenstander i verden. Slike fakta kan være trekk, for eksempel treets materiale (tre), dets deler (bagasjerommet, greiner, blader eller nåler, røtter) og beliggenhet (plantet i jorden). Barnet bygger en forståelse av hvordan et tre ser ut ved å kontrastere visningen av trefunksjoner med bilder av andre, forskjellige eksempler, for eksempel møbler som er laget av tre, men deler ikke andre egenskaper med et tre.

En klassifisering av maskinlæring fungerer på samme måte. En klassifiseringsalgoritme gir deg en klasse som utgang. For eksempel kan det fortelle deg at bildet du gir som innspill samsvarer med treklassen (og ikke et dyr eller en person). For å gjøre det bygger det sine kognitive evner ved å lage en matematisk formulering som inkluderer alle de gitte inputfunksjonene på en måte som skaper en funksjon som kan skille en klasse fra en annen.

Ser etter generalisering i maskinlæring

For å være nyttig, må en maskinlæringsmodell representere et generelt syn på dataene som gis. Hvis modellen ikke følger dataene nøye nok, er den underinnredet - det vil si ikke montert nok på grunn av mangel på trening. På den annen side, hvis modellen følger dataene for tett, er den overmoden, og følger datapunktene som en hanske på grunn av for mye trening. Begge montering og overinnredning forårsaker problemer fordi modellen ikke er generalisert nok til å gi nyttige resultater. Gitt ukjente inputdata, vil de resulterende prediksjoner eller klassifiseringer inneholde store feilverdier. Bare når modellen er riktig montert på dataene, vil den gi resultater innenfor et rimelig feilområde.

Hele spørsmålet om generalisering er også viktig når du skal bestemme når du skal bruke maskinlæring. En maskinlæringsløsning generaliserer alltid fra spesifikke eksempler til generelle eksempler av samme slag. Hvordan den utfører denne oppgaven, avhenger av orienteringen til maskinlæringsløsningen og algoritmene som brukes for å få den til å fungere.

Problemet for dataforskere og andre som bruker maskinlæring og teknikker for dyp læring, er at datamaskinen ikke vil vise et tegn som forteller deg at modellen passer riktig i dataene. Ofte er det et spørsmål om menneskelig intuisjon å bestemme når en modell er trent nok til å gi et godt generalisert resultat. I tillegg må løsningsskaperen velge riktig algoritme av de tusenvis som finnes. Uten riktig algoritme som passer modellen til dataene, vil resultatene være skuffende. For å få utvelgelsesprosessen til å fungere, må dataforskeren ha

  • Sterk kunnskap om de tilgjengelige maskinlæringsalgoritmene Erfaring med å håndtere den aktuelle typen data En forståelse av ønsket output Et ønske om å eksperimentere med forskjellige maskinlæringsalgoritmer

Det siste kravet er det viktigste fordi det ikke er noen raske og raske regler som sier at en bestemt algoritme vil fungere med alle slags data i alle mulige situasjoner. Hvis dette var tilfelle, ville ikke så mange algoritmer være tilgjengelige. For å finne den beste algoritmen, benytter dataforskeren ofte til å eksperimentere med en rekke algoritmer og sammenligne resultatene.

Bli kjent grensene for skjevhet

Datamaskinen din har ingen skjevheter. Det har ikke noe mål om verdensherredømme eller å gjøre livet ditt vanskelig. Datamaskiner har faktisk ikke mål av noe slag. Det eneste en datamaskin kan gi er output basert på innganger og prosesseringsteknikk. Imidlertid kommer skjevheter fremdeles inn i datamaskinen og farger resultatene den gir på flere måter:

  • Data: Selve dataene kan inneholde mistillit eller bare feilrepresentasjoner. For eksempel, hvis en bestemt verdi vises dobbelt så ofte i dataene som i den virkelige verden, blir utdataene fra en maskinlæringsløsning besatt, selv om selve dataene er riktige. Algoritme: Å bruke feil algoritme vil føre til at maskinlæringsløsningen tilpasser modellen til dataene feil. Trening: For mye eller for lite trening endrer hvordan modellen passer til dataene og derfor resultatet. Menneskelig tolkning: Selv når en maskinlæringsløsning gir et riktig resultat, kan mennesket som bruker denne utførelsen, feiltolke det. Resultatene er like dårlige som og kanskje verre enn når maskinlæringsløsningen ikke fungerer som forventet.

Du må vurdere effekten av skjevhet uansett hva slags maskinlæringsløsning du lager. Det er viktig å vite hvilke slags grenser disse skjevhetene plasserer på maskinlæringsløsningen din, og om løsningen er pålitelig nok til å gi nyttig effekt.

Å ha modellkompleksitet i tankene for maskinlæring

Enklere er alltid bedre når det kommer til maskinlæring. Mange forskjellige algoritmer kan gi deg nyttig utdata fra maskinlæringsløsningen, men den beste algoritmen du kan bruke er den som er enklest å forstå og gir de mest enkle resultatene. Occam's Razor er generelt anerkjent som den beste strategien å følge. I utgangspunktet forteller Occam's Razor deg å bruke den enkleste løsningen som vil løse et bestemt problem. Når kompleksiteten øker, øker også potensialet for feil.

Den viktigste ledende faktoren når du velger en algoritme bør være enkelhet.