Gekissimo.net - Opi ansaitsemaan rahaa webilläsi Internetissä!

Kuinka suorittaa gradienttipohjainen optimointi Autogradilla?

Seuraava artikkeli auttaa sinua: Kuinka suorittaa gradienttipohjainen optimointi Autogradilla?

Ennustavan mallin testaaminen on ratkaisevassa roolissa koneoppimisessa. Yleensä arvioimme näitä malleja optimoimalla joitain häviöfunktioita suhteessa mallin määrittelemiin parametreihin. Syvällisesti voimme optimoida nämä häviöfunktiot käyttämällä gradienttilaskua. Autograd on python-paketti, joka voi auttaa meitä optimoimaan erilaisia ​​toimintoja riippumatta siitä, liittyvätkö ne koneoppimismalleihin tai ydinmatematiikkaan. Tämä paketti voi myös korvata suositun NumPy-kirjaston useissa tapauksissa. Tässä artikkelissa keskustelemme Autograd-paketista ja ymmärrämme, kuinka voimme käyttää sitä. Tärkeimmät tässä artikkelissa käsiteltävät kohdat on lueteltu alla.

Sisällysluettelo

  1. Mikä on Autograd?
  2. Autogradin käyttöönotto
    1. Hyperbolisen tangentin funktion gradientin arviointi
    2. Tappiofunktioiden optimointi logistisessa regressiossa

Aloitetaan esittelystä Autogradin kanssa.

Mikä on Autograd?

Autograd on python-paketti, joka voi tarjota meille tavan erottaa Numpy- ja Python-koodit. Se on kirjasto gradienttipohjaista optimointia varten. Tämän paketin avulla voimme työskennellä suuren python-ominaisuuksien osajoukon kanssa, mukaan lukien silmukat, if:t, rekursio ja sulkemiset. Tämä paketti pystyy myös ottamaan useita vaiheittaisia ​​funktioiden johdannaisia. Suurimman osan ajasta huomaamme, että tämä paketti tukee backpropagation ja eteenpäin etenemismenetelmiä, joita voidaan kutsua myös käänteismuotoiseksi differentiaatioksi ja eteenpäin muodon differentiaatioksi matematiikassa, mikä tarkoittaa, että tämä paketti pystyy poimimaan gradientteja funktiosta, jolla on skalaariarvot.

Tämän paketin avulla voimme laatia nämä kaksi menetelmää mielivaltaisesti. Pohjimmiltaan tämä paketti on tarkoitettu tarjoamaan meille mahdollisuus gradienttipohjaiseen optimointiin. Tämän paketin avulla voimme hyödyntää gradientteja seuraaviin toimintoihin ja toimintoihin:

  • Matemaattiset operaatiot – useimpien matemaattisten operaatioiden optimoimiseksi toteutetaan erilaisia ​​gradientteja.
  • Liukuvärit erilaisten taulukkokäsittelyjen suorittamiseen ovat saatavilla.
  • Gradientit erilaisten matriisikäsittelyjen suorittamiseen ovat pakkauksessa.
  • Paketissa on erilaisia ​​gradientteja joillekin lineaarialgebra- ja Fourier-muunnosrutiineille.
  • Moduulit ovat olemassa N-ulotteisia konvoluutioita varten.
  • Täysi tuki kompleksiluvuille.

Voimme asentaa tämän paketin käyttämällä seuraavia koodirivejä:

🔥 Empfohlen:  Kuinka ansaita rahaa matkailuautossa matkustaessasi

!pip install autograd

Kun tämä paketti on asennettu ympäristöön, olemme valmiita käyttämään tätä pakettia työssämme.

Etsitkö täydellistä arkistoa tietotieteessä käytettävistä Python-kirjastoista, katso tästä.

Autogradin toteutukset

Tässä artikkelin osassa tarkastellaan joitain toimintoja, joita voidaan seurata Autograd-paketin avulla.

Hyperbolisen tangentin funktion gradientin arviointi

Tässä toteutuksessa tarkastelemme, kuinka voimme arvioida Tanh-funktion gradientin. Määritellään funktio.

tuo autograd.numpy muodossa agnp def tanh(x): y = agnp.exp(-2.0 * x) return (1.0 – y) / (1.0 + y)

Yllä olevista koodeista voimme nähdä, että olemme käyttäneet moduulia autograd.numpy, joka on NumPy-kääre autograd-paketissa. Olemme myös määrittäneet funktion rusketukselle. Arvioidaan yllä määritellyn funktion gradientti.

from autograd import grad grad_tanh = grad(tanh) grad_tanh(1.0)

Lähtö:

Täällä yllä olevissa koodeissa olemme käynnistäneet muuttujan, joka voi sisältää tanh-funktion, ja arviointia varten olemme tuoneet funktion nimeltä grad autograd-paketista. Verrataan rajallisen alueen eroa.

(tanh(1,0001) – tanh(0,9998)) / 0,0002

Lähtö:

Meillä on myös mahdollisuus erottaa funktiot niin monta kertaa kuin haluamme, tätä varten meidän tarvitsee vain kutsua moduuli nimeltä elementwise_grad.

from autograd import elementwise_grad x = agnp.linspace(-10, 10, 100)

Yllä olevissa koodeissa olemme kutsuneet moduuliamme ja määrittäneet taulukon, jonka satunnaiset arvot ovat välillä -10 – 10. Tässä yritämme piirtää derivaatta edellä määritellylle funktiolle.

plt.plot(x, agnp.tanh(x), x, elementwise_grad(agnp.tanh)(x), x, elementwise_grad(elementwise_grad(agnp.tanh))(x), x, elementwise_grad(elementwise_grad(elementwise_grad(agnp. tanh)))(x), x, elementwise_grad(elementwise_grad(elementwise_grad(elementwise_grad(agnp.tanh))))(x)) plt.show()

Lähtö:

Tässä näemme kuinka funktio vaihtelee määritellylle x:lle.

Huomio – aivan toteutuksen alussa olemme määritelleet tanh-funktion ja tässä viimeisessä funktiossa olemme käyttäneet autogradin antamaa funktiota.

Yllä olevassa esimerkissä olemme keskustelleet autogradin moduulien käytöstä. Katsotaan kuinka voimme käyttää sitä logistiseen regressioon.

Tappiofunktioiden optimointi logistisessa regressiossa

Määritellään sigmoidifunktio.

def function1(x): paluu 0,5 * (agnp.tanh(x / 2.) + 1)

Ennusteiden funktion määrittäminen:

def-funktio2(w, i): palauttaa funktio1(agnp.piste(i, w))

🔥 Empfohlen:  17 parasta sovellusta, jotka maksavat ilmaisia ​​Visa-lahjakortteja

Harjoittelun häviöfunktion määrittely:

def loss_function(w): preds = funktio2(w, i) nimike_todennäköisyydet = preds * kohteet + (1 – preds) * (1 – kohteet) return -agnp.sum(agnp.log(label_probabilities))

Painot ja syötteet:

i = agnp.array([[0.52, 1.12, 0.77],
[0.88, -1.08, 0.15],
[0.52, 0.06, -1.30],
[0.74, -2.49, 1.39]]) w = agnp.array([0.0, 0.0, 0.0])

Kohteen määrittely:

targets = agnp.array([True, True, False, True])

Gradienttifunktion määrittäminen harjoituksen häviämiselle:

koulutus_gradientti = grad(tappio_funktio)

Painon optimointi gradienttilaskua käyttämällä:

w = np.array([0.0, 0.0, 0.0]) print(“häviö alussa:”, menetys_funktio(w)) i:lle alueella(100): painot -= harjoituskaltevuus(w) * 0,01 print(“häviö harjoituksen jälkeen:”, menetysfunktio(w))

Lähtö:

Tässä olemme nähneet esimerkin logistisesta regressiosta painojen optimointia varten, jonka työnsimme väliin käyttämällä autograd-paketin moduuleja.

Viimeiset sanat

Tässä artikkelissa olemme keskustelleet siitä, mitä Autograd on, joka on paketti eri toimintojen gradienttipohjaiseen optimointiin. Tämän ohella olemme käyneet läpi joitain toteutuksia matematiikkaan ja koneoppimiseen liittyvien toimintojen optimoimiseksi.

Viitteet