Mallin Koulutus
Neuroverkon kouluttaminen on iteratiivinen prosessi, jossa malli parantaa suoritustaan vähitellen säätämällä painoja ja bias-arvoja minimoidakseen häviöfunktion. Tätä prosessia kutsutaan gradienttipohjaiseksi optimoinniksi, ja se noudattaa jäsenneltyä algoritmia.
Yleinen algoritmi
Aineisto syötetään verkkoon useita kertoja silmukassa, jossa jokaista täyttä läpikäyntiä kutsutaan epookiksi. Jokaisen epookin aikana data sekoitetaan, jotta malli ei opi järjestykseen perustuvia kuvioita harjoitusesimerkeistä. Sekoittaminen lisää satunnaisuutta, mikä johtaa kestävämpään malliin.
Jokaiselle harjoitusesimerkille malli suorittaa eteenpäinlevityksen, jossa syötteet kulkevat verkon läpi kerros kerrokselta tuottaen ulostulon. Tämä ulostulo verrataan todelliseen tavoitearvoon, jotta voidaan laskea häviö.
Seuraavaksi malli soveltaa takaisinkytkentää ja päivittää painot ja bias-arvot jokaisessa kerroksessa pienentääkseen häviötä.
Tämä prosessi toistetaan useiden epookkien ajan, jolloin verkko voi vähitellen hioa parametrejaan. Koulutuksen edetessä verkko oppii tekemään yhä tarkempia ennusteita. Hyperparametrien, kuten oppimisnopeuden, huolellinen säätäminen on kuitenkin ratkaisevan tärkeää, jotta koulutus olisi vakaa ja tehokas.
Oppimisnopeus (α) määrittää askelkoon painojen päivityksissä. Jos arvo on liian suuri, malli voi ohittaa optimaaliset arvot eikä konvergoi. Jos arvo on liian pieni, koulutus hidastuu ja voi jumittua epäoptimaaliseen ratkaisuun. Sopivan oppimisnopeuden valinta tasapainottaa nopeuden ja vakautta koulutuksessa. Tyypilliset arvot vaihtelevat välillä 0.001–0.1 riippuen ongelmasta ja verkon koosta.
Alla oleva kuvaaja havainnollistaa, kuinka sopiva oppimisnopeus mahdollistaa tappion tasaisen pienenemisen optimaalisella tahdilla:
Lopuksi stokastinen gradienttilaskeutuminen (SGD) on keskeisessä roolissa koulutuksen tehokkuudessa. Sen sijaan, että painopäivitykset laskettaisiin koko aineiston jälkeen, SGD päivittää parametrit jokaisen yksittäisen esimerkin jälkeen. Tämä tekee koulutuksesta nopeampaa ja tuo päivityksiin pieniä vaihteluita, jotka voivat auttaa mallia pääsemään pois paikallisista minimeistä ja saavuttamaan paremman kokonaisratkaisun.
fit()-metodi
fit()-metodi Perceptron-luokassa vastaa mallin kouluttamisesta käyttäen stokastista gradienttilaskeutumista.
def fit(self, training_data, labels, epochs, learning_rate):
# Iterating over multiple epochs
for epoch in range(epochs):
# Shuffling the data
indices = np.random.permutation(training_data.shape[0])
training_data = training_data[indices]
labels = labels[indices]
# Iterating through each training example
for i in range(training_data.shape[0]):
inputs = training_data[i, :].reshape(-1, 1)
target = labels[i, :].reshape(-1, 1)
# Forward propagation
output = ...
# Computing the gradient of the loss function w.r.t. output
da = ...
# Backward propagation through all layers
for layer in self.layers[::-1]:
da = ...
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 4
Mallin Koulutus
Pyyhkäise näyttääksesi valikon
Neuroverkon kouluttaminen on iteratiivinen prosessi, jossa malli parantaa suoritustaan vähitellen säätämällä painoja ja bias-arvoja minimoidakseen häviöfunktion. Tätä prosessia kutsutaan gradienttipohjaiseksi optimoinniksi, ja se noudattaa jäsenneltyä algoritmia.
Yleinen algoritmi
Aineisto syötetään verkkoon useita kertoja silmukassa, jossa jokaista täyttä läpikäyntiä kutsutaan epookiksi. Jokaisen epookin aikana data sekoitetaan, jotta malli ei opi järjestykseen perustuvia kuvioita harjoitusesimerkeistä. Sekoittaminen lisää satunnaisuutta, mikä johtaa kestävämpään malliin.
Jokaiselle harjoitusesimerkille malli suorittaa eteenpäinlevityksen, jossa syötteet kulkevat verkon läpi kerros kerrokselta tuottaen ulostulon. Tämä ulostulo verrataan todelliseen tavoitearvoon, jotta voidaan laskea häviö.
Seuraavaksi malli soveltaa takaisinkytkentää ja päivittää painot ja bias-arvot jokaisessa kerroksessa pienentääkseen häviötä.
Tämä prosessi toistetaan useiden epookkien ajan, jolloin verkko voi vähitellen hioa parametrejaan. Koulutuksen edetessä verkko oppii tekemään yhä tarkempia ennusteita. Hyperparametrien, kuten oppimisnopeuden, huolellinen säätäminen on kuitenkin ratkaisevan tärkeää, jotta koulutus olisi vakaa ja tehokas.
Oppimisnopeus (α) määrittää askelkoon painojen päivityksissä. Jos arvo on liian suuri, malli voi ohittaa optimaaliset arvot eikä konvergoi. Jos arvo on liian pieni, koulutus hidastuu ja voi jumittua epäoptimaaliseen ratkaisuun. Sopivan oppimisnopeuden valinta tasapainottaa nopeuden ja vakautta koulutuksessa. Tyypilliset arvot vaihtelevat välillä 0.001–0.1 riippuen ongelmasta ja verkon koosta.
Alla oleva kuvaaja havainnollistaa, kuinka sopiva oppimisnopeus mahdollistaa tappion tasaisen pienenemisen optimaalisella tahdilla:
Lopuksi stokastinen gradienttilaskeutuminen (SGD) on keskeisessä roolissa koulutuksen tehokkuudessa. Sen sijaan, että painopäivitykset laskettaisiin koko aineiston jälkeen, SGD päivittää parametrit jokaisen yksittäisen esimerkin jälkeen. Tämä tekee koulutuksesta nopeampaa ja tuo päivityksiin pieniä vaihteluita, jotka voivat auttaa mallia pääsemään pois paikallisista minimeistä ja saavuttamaan paremman kokonaisratkaisun.
fit()-metodi
fit()-metodi Perceptron-luokassa vastaa mallin kouluttamisesta käyttäen stokastista gradienttilaskeutumista.
def fit(self, training_data, labels, epochs, learning_rate):
# Iterating over multiple epochs
for epoch in range(epochs):
# Shuffling the data
indices = np.random.permutation(training_data.shape[0])
training_data = training_data[indices]
labels = labels[indices]
# Iterating through each training example
for i in range(training_data.shape[0]):
inputs = training_data[i, :].reshape(-1, 1)
target = labels[i, :].reshape(-1, 1)
# Forward propagation
output = ...
# Computing the gradient of the loss function w.r.t. output
da = ...
# Backward propagation through all layers
for layer in self.layers[::-1]:
da = ...
Kiitos palautteestasi!