Gradient nedstigningen i pyton

Gradient nedstigningen i pyton
Gradient nedstigningen er en algoritme som hjelper oss å finne minimumsfeilen eller hvor tapsverdien er mindre. Vi velger et hvilket som helst punkt på funksjonen og beveger oss sakte mot negativ retning slik at vi kan oppnå minimumsfeil. Men mens vi beveger oss, bryr vi oss også om feilverdien, som er verdien som trekkes fra prediksjon og sannhetsverdi. Det skal heller ikke bli negativt.

Vi kan bedre forstå det fra følgende eksempel:

La oss anta at en maskin konverterer kilometerne til miles.

Men vi har ikke formelen til å konvertere kilometerne til miles. Vi vet at begge verdiene er lineære, noe som betyr at hvis vi dobler milene, så dobler kilometerne også.

Formelen presenteres på denne måten:

Miles = kilometer * c

Her er C en konstant, og vi vet ikke den nøyaktige verdien av konstanten.

Vi har en viss universell sannhetsverdi som ledetråd. Sannhetstabellen er gitt nedenfor:

Vi skal nå bruke en tilfeldig verdi av C og bestemme resultatet.

Så vi bruker verdien av C som 0.5, og verdien av kilometer er 100. Det gir oss 50 som svaret. Som vi vet veldig godt, i henhold til sannhetstabellen, bør verdien være 62.137. Så feilen vi må finne ut som nedenfor:

Feil = sannhet - beregnet

= 62.137 - 50

= 12.137

På samme måte kan vi se resultatet i bildet nedenfor:


Nå har vi en feil på 12.137. Som tidligere diskutert, er forholdet mellom miles og kilometer lineært. Så hvis vi øker verdien av den tilfeldige konstanten C, får vi kanskje mindre feil.

Denne gangen endrer vi bare verdien av C fra 0.5 til 0.6 og nå feilverdien på 2.137, som vist på bildet nedenfor:

Nå forbedres feilraten vår fra 12.317 til 2.137. Vi kan fremdeles forbedre feilen ved å bruke flere gjetninger på verdien av C. Vi antar at verdien av C vil være 0.6 til 0.7, og vi nådde utgangsfeilen på -7.863.

Denne gangen krysser feilen sannhetstabellen og den faktiske verdien. Deretter krysser vi minimumsfeilen. Så fra feilen kan vi si at resultatet av 0.6 (feil = 2.137) var bedre enn 0.7 (feil = -7.863).

Hvorfor prøvde vi ikke med de små endringene eller læringsraten for den konstante verdien av C? Vi skal bare endre C -verdien fra 0.6 til 0.61, ikke til 0.7.

Verdien av c = 0.61, gir oss en mindre feil på 1.137 som er bedre enn 0.6 (feil = 2.137).


Nå har vi verdien av C, som er 0.61, og det gir en feil på 1.137 bare fra riktig verdi på 62.137.

Dette er gradient nedstigningsalgoritmen som hjelper til med å finne ut minimumsfeilen.

Python -kode:

Vi konverterer ovennevnte scenario til Python -programmering. Vi initialiserer alle variabler som vi trenger for dette Python -programmet. Vi definerer også metoden Kilo_mile, der vi passerer en parameter C (konstant).


I koden nedenfor definerer vi bare stoppforhold og maksimum iterasjon. Som vi nevnte, vil koden stoppe enten når den maksimale iterasjonen er oppnådd eller feilverdien større enn presisjonen. Som et resultat oppnår den konstante verdien automatisk verdien av 0.6213, som har en mindre feil. Så vår gradient nedstigning vil også fungere slik.

Gradient nedstigning i python

Vi importerer de nødvendige pakkene og sammen med Sklearn-innebygde datasett. Så setter vi læringsraten og flere iterasjoner som vist nedenfor på bildet:

Vi har vist sigmoidfunksjonen i bildet ovenfor. Nå konverterer vi det til en matematisk form, som vist i bildet nedenfor. Vi importerer også Sklearn innebygd datasett, som har to funksjoner og to sentre.

Nå kan vi se verdiene til x og form. Formen viser at det totale antall rader er 1000 og de to kolonnene som vi setter før.

Vi legger til en kolonne på slutten av hver rad x for å bruke skjevheten som en trenbar verdi, som vist nedenfor. Nå er formen på X 1000 rader og tre kolonner.

Vi omformer også Y, og nå har den 1000 rader og en kolonne som vist nedenfor:

Vi definerer vektmatrisen også ved hjelp av formen på X som vist nedenfor:

Nå opprettet vi derivatet av sigmoidet og antok at verdien av x ville være etter å ha passert gjennom sigmoidaktiveringsfunksjonen, som vi har vist før.

Så sløyer vi til antall iterasjoner som vi allerede har satt, er nådd. Vi finner ut spådommene etter å ha passert gjennom sigmoidaktiveringsfunksjonene. Vi beregner feilen, og vi beregner gradienten for å oppdatere vektene som vist nedenfor i koden. Vi lagrer også tapet på hver epoke på historielisten for å vise tapsgrafen.

Nå kan vi se dem på hver epoke. Feilen synker.

Nå kan vi se at verdien av feil reduserer kontinuerlig. Så dette er en gradient nedstigningsalgoritme.