Redigerer
Kunstig nevralt nettverk
(avsnitt)
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
==Enkelt lag forovermatet nevralt nettverk== Et nettverk der alle input er koblet direkte til output blir kalt et ettlagsnettverk (''single layer network'') eller perceptron nettverk. Igjen er bruk av ''perceptron'' litt uklart, for normaltolkingen vil være at hver node også har egenskapene til en ren thresholdfunksjon. Når nodene implementerer en 'treshold' funksjon så kan vi se på perceptronene som en representasjon av en [[boolsk funksjon]].<ref name="Russell 2003">{{cite book|last=Russell|first=Stuart J.|title=Artificial intelligence : a modern approach ; [the intelligent agent book]|url=https://archive.org/details/artificialintell0000russ_f6n5|year=2003|publisher=Prentice Hall|location=Upper Saddle River, NJ [u.a.]|isbn=0130803022|edition=2. ed., internat. ed.|coauthors=Norvig, Peter}}</ref> Det er en del boolske funksjoner et slikt ettlags ''perceptron nettverk'' ikke kan representere. [[Image:Perceptron_nettverk.svg|thumb|alt=A perceptron network|Fig. 3: Et perceptron nettverk med innganger, vekter og utganger.]] ===Læringsalgoritme=== For et perceptron nettverk kan det brukes en enkel læringsalgoritme for å trene vektene utfra et datasett. For flerlagsnettverk må en bruke tilbakepropageringsalgoritmer for læring. Læringsalgoritmen som blir presentert her er den samme for alle output-nevroner, derfor blir algoritmen beskrevet for ett enkelt nevron i isolasjon. ;Vi definerer noen variabler :<math>y = f(\mathbf{z}) \,</math> funksjon for ''output'' fra en perceptron med input vektor <math>\mathbf{z}</math>. :<math>b \,</math> er ''bias'' termen. :<math>D = \{(\mathbf{x}_1,d_1),\dots,(\mathbf{x}_s,d_s)\} \,</math> er ''treningsdatasettet'' bestående av <math>s</math> verdier, der <math>\mathbf{x}_j</math> er den <math>n</math>-dimensionale input vektoren og <math>d_j \,</math> er den ønskede utgangsverdien for den gitte inngangsvektoren. ;Vi gir pådraget på nodene slik at :<math>x_{j,i} \,</math> er verdien av for inngangsnode <math>i</math> og [[løpenummer]] <math>j</math> i treningssettet. :<math>x_{j,0} = 1 \,</math> er tilsvarende pådraget for bias i datasettet. ;For å representere vektene :<math>w_i \,</math> er verdien for nummer <math>i</math>i ''vektvektoren'', som skal multipliseres med input node nummer <math>i</math>, eller for et fullt lag så vil dette være matrisen alle innganger vektes med. En ekstra dimensjon, med indeks <math>n+1</math>, kan bli lagt til alle input vektorer, med <math>x_{j,n+1}=1 \,</math>, i så fall vil <math>w_{n+1} \,</math> erstatte bias termen.<!-- her er det vel lagt til en ekstra bias --> For å vise hvordan <math>\mathbf{w}</math> endres over iterasjonen som en løpetid brukes :<math>w_i(t) \,</math> som er vekten <math>i</math> på tidspunktet <math>t</math>. :<math>\alpha \,</math> som er ''læringsraten'', der <math>0 < \alpha \leq 1</math>. Med for høy læringsrate vil perceptronet periodisk variere over og under løsningen. En mulig forbedring for å få det til å konvergere er å bruke <math>LR^n</math> med n=1 i begynnelsen og inkrementere med 1 når en loop i læringen blir funnet. Dette implementerer et fall (''decay'') i læreraten for å sikre konvergens. ====Stegene i læringsalgoritmen==== 1. Initialisering av vekter og 'threshold'. Vekter kan initialiseres ved å sette hver vekt node <math>w_i(0) \,</math> til 0 eller til en lav tilfeldig verdi. :2a. Kalkuler det faktiske output: ::<math>y_j(t) = f[\mathbf{w}(t)\cdot\mathbf{x}_j] = f[w_0(t) + w_1(t)x_{j,1} + w_2(t)x_{j,2} + \dotsb + w_n(t)x_{j,n}]</math> :2b. Tilpass vektene: ::<math>w_i(t+1) = w_i(t) + \alpha (d_j - y_j(t)) x_{j,i} \,</math>, for all nodes <math>0 \leq i \leq n</math>. Steg 2 er repetert til feilen i en iterasjon <math>d_j - y_j(t) \,</math> er mindre enn en brukerspesifisert grense <math>\gamma \,</math>, eller etter at et predefinert nummer av iterasjoner har blitt gjennomført. Legg merke til at algoritmen tilpasser vektene øyeblikkelig etter at steg 2a og 2b er utført på et par i treningsdatasett istedenfor å vente på at alle parene i et treningsdatasett har blitt evaluert. ====Separerbarhet og konvergering==== Novikoff (1962) beviste at perceptron algoritmen vist ovenfor konvergerer etter et endelig nummer av iterasjoner hvis datasettet er lineært separerbart. Hvis datasettet ikke er lineært separerbart vil ikke algoritmen overfor konvergere.
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Denne siden er medlem av 3 skjulte kategorier:
Kategori:Artikler som trenger språkvask
Kategori:CS1-vedlikehold: Ekstra tekst
Kategori:Språkvask 2024-08
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon