12.4 Stochastinis gradientinis nusileidimas

Ankstesniuose skyriuose apmokymo procedūroje nuolat naudojome stochastinį gradientinį nusileidimą, tačiau nepaaiškinome, kodėl jis veikia. Kad tai nušviestume, 12.3 skyrelis ką tik aprašėme pagrindinius gradientinio nusileidimo principus. Šiame skyrelyje toliau išsamiau aptarsime stochastinį gradientinį nusileidimą.

%matplotlib inline
from d2l import mxnet as d2l
import math
from mxnet import np, npx
npx.set_np()
%matplotlib inline
from d2l import torch as d2l
import math
import torch
%matplotlib inline
from d2l import tensorflow as d2l
import math
import tensorflow as tf

12.4.1 Stochastiniai gradiento atnaujinimai

Giliajame mokymesi tikslo funkcija paprastai yra kiekvieno apmokymo duomenų rinkinio pavyzdžio nuostolio funkcijų vidurkis. Turėdami nn pavyzdžių apmokymo duomenų rinkinį, tarkime, kad fi(x)f_i(\mathbf{x}) yra nuostolio funkcija indekso ii apmokymo pavyzdžiui, kur x\mathbf{x} yra parametrų vektorius. Tada gauname tikslo funkciją

f(x)=1n∑i=1nfi(x).f(\mathbf{x}) = \frac{1}{n} \sum_{i = 1}^n f_i(\mathbf{x}).

Tikslo funkcijos gradientas taške x\mathbf{x} apskaičiuojamas taip:

∇f(x)=1n∑i=1n∇fi(x).\nabla f(\mathbf{x}) = \frac{1}{n} \sum_{i = 1}^n \nabla f_i(\mathbf{x}).

Jei naudojamas gradientinis nusileidimas, kiekvienos nepriklausomo kintamojo iteracijos skaičiavimo kaina yra O(n)\mathcal{O}(n), kuri auga tiesiškai su nn. Todėl kai apmokymo duomenų rinkinys didesnis, gradientinio nusileidimo kaina kiekvienai iteracijai bus didesnė.

Stochastinis gradientinis nusileidimas (SGD) sumažina skaičiavimo kainą kiekvienoje iteracijoje. Kiekvienoje stochastinio gradientinio nusileidimo iteracijoje atsitiktinai tolygiai atrenkame duomenų pavyzdžių indeksą i∈{1,…,n}i\in\{1,\ldots, n\} ir apskaičiuojame gradientą ∇fi(x)\nabla f_i(\mathbf{x}), kad atnaujintume x\mathbf{x}:

x←x−η∇fi(x),\mathbf{x} \leftarrow \mathbf{x} - \eta \nabla f_i(\mathbf{x}),

kur η\eta yra mokymosi greitis. Matome, kad skaičiavimo kaina kiekvienai iteracijai sumažėja nuo gradientinio nusileidimo O(n)\mathcal{O}(n) iki pastovios O(1)\mathcal{O}(1). Be to, norime pabrėžti, kad stochastinis gradientas ∇fi(x)\nabla f_i(\mathbf{x}) yra nepaslinktas viso gradiento ∇f(x)\nabla f(\mathbf{x}) įvertis, nes

Ei∇fi(x)=1n∑i=1n∇fi(x)=∇f(x).\mathbb{E}_i \nabla f_i(\mathbf{x}) = \frac{1}{n} \sum_{i = 1}^n \nabla f_i(\mathbf{x}) = \nabla f(\mathbf{x}).

Tai reiškia, kad vidutiniškai stochastinis gradientas yra geras gradiento įvertis.

Dabar palyginsime jį su gradientiniu nusileidimu, prie gradiento pridėdami atsitiktinį triukšmą su nuliniu vidurkiu ir vienetine dispersija, kad imituotume stochastinį gradientinį nusileidimą.

def f(x1, x2):  # Objective function
    return x1 ** 2 + 2 * x2 ** 2

def f_grad(x1, x2):  # Gradient of the objective function
    return 2 * x1, 4 * x2
def sgd(x1, x2, s1, s2, f_grad):
    g1, g2 = f_grad(x1, x2)
    # Simulate noisy gradient
    g1 += d2l.normal(0.0, 1, (1,))
    g2 += d2l.normal(0.0, 1, (1,))
    eta_t = eta * lr()
    return (x1 - eta_t * g1, x2 - eta_t * g2, 0, 0)
def sgd(x1, x2, s1, s2, f_grad):
    g1, g2 = f_grad(x1, x2)
    # Simulate noisy gradient
    g1 += torch.normal(0.0, 1, (1,)).item()
    g2 += torch.normal(0.0, 1, (1,)).item()
    eta_t = eta * lr()
    return (x1 - eta_t * g1, x2 - eta_t * g2, 0, 0)
def sgd(x1, x2, s1, s2, f_grad):
    g1, g2 = f_grad(x1, x2)
    # Simulate noisy gradient
    g1 += d2l.normal([1], 0.0, 1)
    g2 += d2l.normal([1], 0.0, 1)
    eta_t = eta * lr()
    return (x1 - eta_t * g1, x2 - eta_t * g2, 0, 0)
def constant_lr():
    return 1

eta = 0.1
lr = constant_lr  # Constant learning rate
d2l.show_trace_2d(f, d2l.train_2d(sgd, steps=50, f_grad=f_grad))

Kaip matome, kintamųjų trajektorija stochastiniame gradientiniame nusileidime yra daug triukšmingesnė nei ta, kurią stebėjome gradientiniame nusileidime 12.3 skyrelis. Tai lemia stochastinė gradiento prigimtis. Tai yra, net kai atsiduriame netoli minimumo, vis tiek veikia momentinio gradiento per η∇fi(x)\eta \nabla f_i(\mathbf{x}) įnešama neapibrėžtis. Net po 50 žingsnių kokybė vis dar nėra tokia gera. Dar blogiau, ji nepagerės ir po papildomų žingsnių (skatiname eksperimentuoti su didesniu žingsnių skaičiumi, kad tai patvirtintumėte). Tai palieka vienintelę alternatyvą: keisti mokymosi greitį η\eta. Tačiau jei pasirinksime per mažą, iš pradžių nepadarysime jokios prasmingos pažangos. Kita vertus, jei pasirinksime per didelį, negausime gero sprendinio, kaip matyti aukščiau. Vienintelis būdas išspręsti šiuos prieštaringus tikslus yra dinamiškai mažinti mokymosi greitį optimizavimui vykstant.

Tai taip pat priežastis, kodėl į sgd žingsnio funkciją pridėjome mokymosi greičio funkciją lr. Aukščiau pateiktame pavyzdyje bet kokios mokymosi greičio planavimo funkcijos „miega“, nes susijusią funkciją lr nustatėme pastovią.

12.4.2 Dinaminis mokymosi greitis

Pakeitus η\eta nuo laiko priklausančiu mokymosi greičiu η(t)\eta(t), padidėja optimizavimo algoritmo konvergavimo valdymo sudėtingumas. Visų pirma turime išsiaiškinti, kaip greitai η\eta turėtų mažėti. Jei per greitai, sustosime optimizuoti per anksti. Jei mažiname per lėtai, per daug laiko gaištame optimizavimui. Toliau pateikiamos kelios pagrindinės strategijos, naudojamos koreguojant η\eta laikui bėgant (pažangesnes strategijas aptarsime vėliau):

η(t)=ηi if ti≤t≤ti+1piecewise constantη(t)=η0⋅e−λtexponential decayη(t)=η0⋅(βt+1)−αpolynomial decay\begin{aligned} \eta(t) & = \eta_i \textrm{ if } t_i \leq t \leq t_{i+1} && \textrm{piecewise constant} \\ \eta(t) & = \eta_0 \cdot e^{-\lambda t} && \textrm{exponential decay} \\ \eta(t) & = \eta_0 \cdot (\beta t + 1)^{-\alpha} && \textrm{polynomial decay} \end{aligned}

Pirmajame dalimis pastovaus mokymosi greičio scenarijuje mokymosi greitį mažiname, pavyzdžiui, kai tik optimizavimo pažanga sustoja. Tai įprasta giliųjų tinklų apmokymo strategija. Arba galime jį mažinti daug agresyviau eksponentiniu mažėjimu. Deja, tai dažnai lemia pernelyg ankstyvą sustojimą, kol algoritmas dar nesukonvergavo. Populiarus pasirinkimas yra polinominis mažėjimas su α=0.5\alpha = 0.5. Iškiliojo optimizavimo atveju yra nemažai įrodymų, rodančių, kad tokia sparta elgiasi gerai.

Pažiūrėkime, kaip eksponentinis mažėjimas atrodo praktikoje.

def exponential_lr():
    # Global variable that is defined outside this function and updated inside
    global t
    t += 1
    return math.exp(-0.1 * t)

t = 1
lr = exponential_lr
d2l.show_trace_2d(f, d2l.train_2d(sgd, steps=1000, f_grad=f_grad))

Kaip ir tikėtasi, parametrų dispersija gerokai sumažėja. Tačiau tai daroma ant nekonvergavimo į optimalų sprendinį x=(0,0)\mathbf{x} = (0, 0) aukos. Net po 1000 iteracijos žingsnių vis dar esame labai toli nuo optimalaus sprendinio. Iš tiesų algoritmas visai nekonverguoja. Kita vertus, jei naudojame polinominį mažėjimą, kai mokymosi greitis mažėja atvirkščiai proporcingai žingsnių skaičiaus kvadratinei šakniai, konvergavimas pagerėja jau po 50 žingsnių.

def polynomial_lr():
    # Global variable that is defined outside this function and updated inside
    global t
    t += 1
    return (1 + 0.1 * t) ** (-0.5)

t = 1
lr = polynomial_lr
d2l.show_trace_2d(f, d2l.train_2d(sgd, steps=50, f_grad=f_grad))

Yra daug daugiau mokymosi greičio nustatymo pasirinkimų. Pavyzdžiui, galėtume pradėti nuo mažo greičio, paskui greitai jį padidinti ir vėl mažinti, nors ir lėčiau. Galėtume net kaitalioti mažesnius ir didesnius mokymosi greičius. Yra didelė tokių grafikų įvairovė. Kol kas sutelkime dėmesį į mokymosi greičio grafikus, kuriems galima išsami teorinė analizė, t. y. į mokymosi greičius iškiliojoje aplinkoje. Bendriems neiškiliesiems uždaviniams labai sunku gauti prasmingas konvergavimo garantijas, nes apskritai netiesinių neiškiliųjų uždavinių minimizavimas yra NP sudėtingas. Apžvalgos ieškokite, pvz., puikiuose Tibshirani 2015 m. paskaitų užrašuose.

12.4.3 Konvergavimo analizė iškiliosioms tikslo funkcijoms

Toliau pateikta iškiliųjų tikslo funkcijų stochastinio gradientinio nusileidimo konvergavimo analizė yra neprivaloma ir daugiausia padeda geriau perprasti problemą. Apsiribosime viena paprasčiausių įrodymų (Nesterov ir Vial, 2000). Egzistuoja gerokai pažangesnės įrodymo technikos, pavyzdžiui, kai tikslo funkcija yra ypač gerai besielgianti.

Tarkime, kad tikslo funkcija f(ξ,x)f(\boldsymbol{\xi}, \mathbf{x}) yra iškiloji x\mathbf{x} atžvilgiu visiems ξ\boldsymbol{\xi}. Konkrečiau, nagrinėkime stochastinio gradientinio nusileidimo atnaujinimą:

xt+1=xt−ηt∂xf(ξt,x),\mathbf{x}_{t+1} = \mathbf{x}_{t} - \eta_t \partial_\mathbf{x} f(\boldsymbol{\xi}_t, \mathbf{x}),

kur f(ξt,x)f(\boldsymbol{\xi}_t, \mathbf{x}) yra tikslo funkcija apmokymo pavyzdžiui ξt\boldsymbol{\xi}_t, paimtam iš tam tikro skirstinio žingsnyje tt, o x\mathbf{x} yra modelio parametras. Pažymėkime

R(x)=Eξ[f(ξ,x)]R(\mathbf{x}) = E_{\boldsymbol{\xi}}[f(\boldsymbol{\xi}, \mathbf{x})]

tikėtiną riziką, o R∗R^* – jos minimumą x\mathbf{x} atžvilgiu. Galiausiai tegul x∗\mathbf{x}^* yra minimizuotojas (darome prielaidą, kad jis egzistuoja srityje, kurioje apibrėžtas x\mathbf{x}). Šiuo atveju galime sekti atstumą tarp dabartinio parametro xt\mathbf{x}_t laiko momentu tt ir rizikos minimizuotojo x∗\mathbf{x}^* ir stebėti, ar jis laikui bėgant gerėja:

∥xt+1−x∗∥2=∥xt−ηt∂xf(ξt,x)−x∗∥2=∥xt−x∗∥2+ηt2∥∂xf(ξt,x)∥2−2ηt⟨xt−x∗,∂xf(ξt,x)⟩.(12.4.1)\begin{aligned} &\|\mathbf{x}_{t+1} - \mathbf{x}^*\|^2 \\ =& \|\mathbf{x}_{t} - \eta_t \partial_\mathbf{x} f(\boldsymbol{\xi}_t, \mathbf{x}) - \mathbf{x}^*\|^2 \\ =& \|\mathbf{x}_{t} - \mathbf{x}^*\|^2 + \eta_t^2 \|\partial_\mathbf{x} f(\boldsymbol{\xi}_t, \mathbf{x})\|^2 - 2 \eta_t \left\langle \mathbf{x}_t - \mathbf{x}^*, \partial_\mathbf{x} f(\boldsymbol{\xi}_t, \mathbf{x})\right\rangle. \end{aligned} \tag{12.4.1}

Darome prielaidą, kad stochastinio gradiento ∂xf(ξt,x)\partial_\mathbf{x} f(\boldsymbol{\xi}_t, \mathbf{x}) ℓ2\ell_2 norma yra aprėžta kokia nors konstanta LL, taigi turime, kad

ηt2∥∂xf(ξt,x)∥2≤ηt2L2.(12.4.2)\eta_t^2 \|\partial_\mathbf{x} f(\boldsymbol{\xi}_t, \mathbf{x})\|^2 \leq \eta_t^2 L^2. \tag{12.4.2}

Mus daugiausia domina, kaip atstumas tarp xt\mathbf{x}_t ir x∗\mathbf{x}^* kinta vidutiniškai. Iš tikrųjų, konkrečiai žingsnių sekai atstumas gali ir padidėti, priklausomai nuo to, kokį ξt\boldsymbol{\xi}_t sutinkame. Todėl turime aprėžti skaliarinę sandaugą. Kadangi bet kuriai iškiliajai funkcijai ff galioja f(y)≥f(x)+⟨f′(x),y−x⟩f(\mathbf{y}) \geq f(\mathbf{x}) + \langle f'(\mathbf{x}), \mathbf{y} - \mathbf{x} \rangle visiems x\mathbf{x} ir y\mathbf{y}, iš iškilumo turime

f(ξt,x∗)≥f(ξt,xt)+⟨x∗−xt,∂xf(ξt,xt)⟩.(12.4.3)f(\boldsymbol{\xi}_t, \mathbf{x}^*) \geq f(\boldsymbol{\xi}_t, \mathbf{x}_t) + \left\langle \mathbf{x}^* - \mathbf{x}_t, \partial_{\mathbf{x}} f(\boldsymbol{\xi}_t, \mathbf{x}_t) \right\rangle. \tag{12.4.3}

Įstatę abi nelygybes (12.4.2) ir (12.4.3) į (12.4.1), gauname atstumo tarp parametrų laiko momentu t+1t+1 rėžį:

∥xt−x∗∥2−∥xt+1−x∗∥2≥2ηt(f(ξt,xt)−f(ξt,x∗))−ηt2L2.(12.4.4)\|\mathbf{x}_{t} - \mathbf{x}^*\|^2 - \|\mathbf{x}_{t+1} - \mathbf{x}^*\|^2 \geq 2 \eta_t (f(\boldsymbol{\xi}_t, \mathbf{x}_t) - f(\boldsymbol{\xi}_t, \mathbf{x}^*)) - \eta_t^2 L^2. \tag{12.4.4}

Tai reiškia, kad darome pažangą, kol skirtumas tarp dabartinio nuostolio ir optimalaus nuostolio viršija ηtL2/2\eta_t L^2/2. Kadangi šis skirtumas neišvengiamai konverguoja į nulį, iš to išplaukia, kad mokymosi greitis ηt\eta_t taip pat turi nykti.

Toliau skaičiuojame (12.4.4) vidurkius. Gauname

E[∥xt−x∗∥2]−E[∥xt+1−x∗∥2]≥2ηt[E[R(xt)]−R∗]−ηt2L2.E\left[\|\mathbf{x}_{t} - \mathbf{x}^*\|^2\right] - E\left[\|\mathbf{x}_{t+1} - \mathbf{x}^*\|^2\right] \geq 2 \eta_t [E[R(\mathbf{x}_t)] - R^*] - \eta_t^2 L^2.

Paskutinis žingsnis yra nelygybių sumavimas t∈{1,…,T}t \in \{1, \ldots, T\}. Kadangi suma teleskopinė, ir praleidę apatinį narį, gauname

∥x1−x∗∥2≥2(∑t=1Tηt)[E[R(xt)]−R∗]−L2∑t=1Tηt2.(12.4.5)\|\mathbf{x}_1 - \mathbf{x}^*\|^2 \geq 2 \left (\sum_{t=1}^T \eta_t \right) [E[R(\mathbf{x}_t)] - R^*] - L^2 \sum_{t=1}^T \eta_t^2. \tag{12.4.5}

Atkreipkite dėmesį, kad pasinaudojome tuo, kad x1\mathbf{x}_1 yra duotas, todėl vidurkį galima atmesti. Galiausiai apibrėžkime

xˉ=def∑t=1Tηtxt∑t=1Tηt.\bar{\mathbf{x}} \stackrel{\textrm{def}}{=} \frac{\sum_{t=1}^T \eta_t \mathbf{x}_t}{\sum_{t=1}^T \eta_t}.

Kadangi

E(∑t=1TηtR(xt)∑t=1Tηt)=∑t=1TηtE[R(xt)]∑t=1Tηt=E[R(xt)],E\left(\frac{\sum_{t=1}^T \eta_t R(\mathbf{x}_t)}{\sum_{t=1}^T \eta_t}\right) = \frac{\sum_{t=1}^T \eta_t E[R(\mathbf{x}_t)]}{\sum_{t=1}^T \eta_t} = E[R(\mathbf{x}_t)],

pagal Jenseno nelygybę (nustačius i=ti=t, αi=ηt/∑t=1Tηt\alpha_i = \eta_t/\sum_{t=1}^T \eta_t (12.2.1)) ir RR iškilumą, išplaukia, kad E[R(xt)]≥E[R(xˉ)]E[R(\mathbf{x}_t)] \geq E[R(\bar{\mathbf{x}})], taigi

∑t=1TηtE[R(xt)]≥∑t=1TηtE[R(xˉ)].\sum_{t=1}^T \eta_t E[R(\mathbf{x}_t)] \geq \sum_{t=1}^T \eta_t E\left[R(\bar{\mathbf{x}})\right].

Įstatę tai į nelygybę (12.4.5), gauname rėžį

[E[xˉ]]−R∗≤r2+L2∑t=1Tηt22∑t=1Tηt,\left[E[\bar{\mathbf{x}}]\right] - R^* \leq \frac{r^2 + L^2 \sum_{t=1}^T \eta_t^2}{2 \sum_{t=1}^T \eta_t},

kur r2=def∥x1−x∗∥2r^2 \stackrel{\textrm{def}}{=} \|\mathbf{x}_1 - \mathbf{x}^*\|^2 yra atstumo tarp pradinio parametrų pasirinkimo ir galutinio rezultato rėžis. Trumpai tariant, konvergavimo greitis priklauso nuo to, kaip aprėžta stochastinio gradiento norma (LL) ir kaip toli nuo optimumo yra pradinė parametro reikšmė (rr). Atkreipkite dėmesį, kad rėžis pateiktas xˉ\bar{\mathbf{x}}, o ne xT\mathbf{x}_T atžvilgiu. Taip yra todėl, kad xˉ\bar{\mathbf{x}} yra išglostyta optimizavimo trajektorijos versija. Kai tik žinomi r,Lr, L ir TT, galime pasirinkti mokymosi greitį η=r/(LT)\eta = r/(L \sqrt{T}). Tai duoda viršutinį rėžį rL/TrL/\sqrt{T}. Tai yra, į optimalų sprendinį konverguojame sparta O(1/T)\mathcal{O}(1/\sqrt{T}).

12.4.4 Stochastiniai gradientai ir baigtinės imtys

Iki šiol gana laisvai kalbėjome apie stochastinį gradientinį nusileidimą. Teigėme, kad iš tam tikro skirstinio p(x,y)p(x, y) atrenkame pavyzdžius xix_i, paprastai su žymenimis yiy_i, ir tai naudojame modelio parametrams tam tikru būdu atnaujinti. Visų pirma baigtiniam imties dydžiui tiesiog teigėme, kad diskretusis skirstinys p(x,y)=1n∑i=1nδxi(x)δyi(y)p(x, y) = \frac{1}{n} \sum_{i=1}^n \delta_{x_i}(x) \delta_{y_i}(y) su tam tikromis funkcijomis δxi\delta_{x_i} ir δyi\delta_{y_i} leidžia atlikti stochastinį gradientinį nusileidimą jo atžvilgiu.

Tačiau iš tikrųjų taip nedarėme. Šio skyrelio pavyzdžiuose tiesiog pridėjome triukšmo prie kitaip nestochastinio gradiento, t. y. apsimetėme, kad turime poras (xi,yi)(x_i, y_i). Paaiškėja, kad čia tai pagrįsta (išsamų aptarimą žr. pratimuose). Labiau nerimą kelia tai, kad visuose ankstesniuose aptarimuose taip aiškiai nedarėme. Vietoj to iteravome per visus pavyzdžius lygiai vieną kartą. Kad pamatytume, kodėl tai geriau, panagrinėkime priešingą atvejį, būtent kad iš diskrečiojo skirstinio atrenkame nn stebėjimų su grąžinimu. Tikimybė atsitiktinai pasirinkti elementą ii yra 1/n1/n. Taigi tikimybė jį pasirinkti bent kartą yra

P(choose i)=1−P(omit i)=1−(1−1/n)n≈1−e−1≈0.63.P(\textrm{choose~} i) = 1 - P(\textrm{omit~} i) = 1 - (1-1/n)^n \approx 1-e^{-1} \approx 0.63.

Panašus samprotavimas rodo, kad tikimybė pasirinkti tam tikrą pavyzdį (t. y. apmokymo pavyzdį) lygiai vieną kartą yra

(n1)1n(1−1n)n−1=nn−1(1−1n)n≈e−1≈0.37.{n \choose 1} \frac{1}{n} \left(1-\frac{1}{n}\right)^{n-1} = \frac{n}{n-1} \left(1-\frac{1}{n}\right)^{n} \approx e^{-1} \approx 0.37.

Atranka su grąžinimu lemia padidėjusią dispersiją ir sumažėjusį duomenų efektyvumą, palyginti su atranka be grąžinimo. Todėl praktikoje atliekame pastarąją (ir tai yra numatytasis pasirinkimas visoje šioje knygoje). Galiausiai atkreipkite dėmesį, kad pakartotiniai apmokymo duomenų rinkinio perėjimai jį apeina skirtinga atsitiktine tvarka.

12.4.5 Santrauka

  • Iškiliesiems uždaviniams galime įrodyti, kad esant plačiam mokymosi greičių pasirinkimui stochastinis gradientinis nusileidimas konverguos į optimalų sprendinį.
  • Giliajam mokymuisi taip paprastai nėra. Tačiau iškiliųjų uždavinių analizė suteikia naudingų įžvalgų, kaip žiūrėti į optimizavimą, būtent: palaipsniui mažinti mokymosi greitį, nors ir ne per greitai.
  • Problemų kyla, kai mokymosi greitis yra per mažas arba per didelis. Praktikoje tinkamas mokymosi greitis dažnai randamas tik po kelių eksperimentų.
  • Kai apmokymo duomenų rinkinyje yra daugiau pavyzdžių, kiekvienos gradientinio nusileidimo iteracijos skaičiavimas kainuoja daugiau, todėl tokiais atvejais pirmenybė teikiama stochastiniam gradientiniam nusileidimui.
  • Stochastinio gradientinio nusileidimo optimalumo garantijų neiškiliuoju atveju apskritai nėra, nes tikrintinų lokaliųjų minimumų skaičius gali būti eksponentinis.

12.4.6 Pratimai

  1. Eksperimentuokite su skirtingais stochastinio gradientinio nusileidimo mokymosi greičio grafikais ir skirtingu iteracijų skaičiumi. Visų pirma nubraižykite atstumą nuo optimalaus sprendinio (0,0)(0, 0) kaip iteracijų skaičiaus funkciją.
  2. Įrodykite, kad funkcijai f(x1,x2)=x12+2x22f(x_1, x_2) = x_1^2 + 2 x_2^2 normaliojo triukšmo pridėjimas prie gradiento yra ekvivalentus nuostolio funkcijos f(x,w)=(x1−w1)2+2(x2−w2)2f(\mathbf{x}, \mathbf{w}) = (x_1 - w_1)^2 + 2 (x_2 - w_2)^2 minimizavimui, kur x\mathbf{x} imamas iš normaliojo skirstinio.
  3. Palyginkite stochastinio gradientinio nusileidimo konvergavimą, kai atrenkate iš {(x1,y1),…,(xn,yn)}\{(x_1, y_1), \ldots, (x_n, y_n)\} su grąžinimu ir kai atrenkate be grąžinimo.
  4. Kaip pakeistumėte stochastinio gradientinio nusileidimo sprendiklį, jei kuris nors gradientas (tiksliau, kuri nors su juo susijusi koordinatė) nuolat būtų didesnis nei visi kiti gradientai?
  5. Tarkime, kad f(x)=x2(1+sin⁡x)f(x) = x^2 (1 + \sin x). Kiek lokaliųjų minimumų turi ff? Ar galite pakeisti ff taip, kad ją minimizuojant reikėtų įvertinti visus lokaliuosius minimumus?

Diskusijos

Diskusijos

Diskusijos