18.2 Gauso procesų apriorinis skirstinys
Gauso procesų (GP) supratimas svarbus samprotaujant apie modelių konstravimą ir apibendrinimą bei siekiant pažangiausio našumo įvairiuose taikymuose, įskaitant aktyvųjį mokymąsi ir hiperparametrų derinimą giliajame mokyme. GP yra visur, ir mūsų interesas yra žinoti, kas jie yra ir kaip galime juos naudoti.
Šiame skyrelyje pristatome Gauso procesų apriorinius skirstinius funkcijoms. Kitoje užrašų knygutėje parodome, kaip naudoti šiuos apriorinius skirstinius aposteriorinei inferencijai atlikti ir prognozėms daryti. Kitą skyrelį galima laikyti „GP trumpai“, kuris greitai pateikia tai, ko reikia Gauso procesams praktiškai taikyti.
from d2l import torch as d2l
import numpy as np
from scipy.spatial import distance_matrix
d2l.set_figsize()
18.2.1 Apibrėžimas
Gauso procesas apibrėžiamas kaip atsitiktinių dydžių rinkinys, kurio bet kuris baigtinis skaičius turi jungtinį Gauso skirstinį. Jei funkcija yra Gauso procesas su vidurkio funkcija ir kovariacijos funkcija arba branduoliu , , tada bet kuris funkcijos reikšmių rinkinys, užklaustas bet kuriame įvesties taškų (laikų, erdvinių vietų, vaizdo pikselių ir kt.) rinkinyje, turi jungtinį daugiamatį Gauso skirstinį su vidurkio vektoriumi ir kovariacijų matrica : , kur ir .
Šis apibrėžimas gali atrodyti abstraktus ir neprieinamas, bet Gauso procesai iš tikrųjų yra labai paprasti objektai. Bet kuri funkcija
:eqlabel:eq_gp-function
kur atrinktas iš Gauso (normaliojo) skirstinio, o yra bet koks bazinių funkcijų vektorius, pavyzdžiui, , yra Gauso procesas. Be to, bet kurį Gauso procesą f(x) galima išreikšti lygties (eq_gp-function) forma. Panagrinėkime kelis konkrečius pavyzdžius, kad pradėtume susipažinti su Gauso procesais, ir tada galėsime įvertinti, kokie paprasti ir naudingi jie iš tikrųjų yra.
18.2.2 Paprastas Gauso procesas
Tarkime, , o , kur visi yra vienmačiai. Šią funkciją galime ekvivalenčiai užrašyti kaip skaliarinę sandaugą . Aukščiau pateiktoje (eq_gp-function) ir .
Bet kuriam yra dviejų Gauso atsitiktinių dydžių suma. Kadangi Gauso skirstiniai yra uždari sudėties atžvilgiu, taip pat yra Gauso atsitiktinis dydis bet kuriam . Iš tikrųjų galime apskaičiuoti, kad bet kuriam konkrečiam yra . Panašiai bet kurio funkcijos reikšmių rinkinio jungtinis skirstinys bet kuriam įvesčių rinkiniui yra daugiamatis Gauso skirstinys. Todėl yra Gauso procesas.
Trumpai tariant, yra atsitiktinė funkcija arba funkcijų skirstinys. Galime šiek tiek geriau suprasti šį skirstinį pakartotinai atrinkdami reikšmes ir vizualizuodami atitinkamas funkcijas , kurios yra tiesės su skirtingais nuolydžiais ir skirtingais laisvaisiais nariais, taip:
def lin_func(x, n_sample):
preds = np.zeros((n_sample, x.shape[0]))
for ii in range(n_sample):
w = np.random.normal(0, 1, 2)
y = w[0] + w[1] * x
preds[ii, :] = y
return preds
x_points = np.linspace(-5, 5, 50)
outs = lin_func(x_points, 10)
lw_bd = -2 * np.sqrt((1 + x_points ** 2))
up_bd = 2 * np.sqrt((1 + x_points ** 2))
d2l.plt.fill_between(x_points, lw_bd, up_bd, alpha=0.25)
d2l.plt.plot(x_points, np.zeros(len(x_points)), linewidth=4, color='black')
d2l.plt.plot(x_points, outs.T)
d2l.plt.xlabel("x", fontsize=20)
d2l.plt.ylabel("f(x)", fontsize=20)
d2l.plt.show()
Jei ir vietoj to atrenkami iš , kaip, jūsų manymu, keitimas veikia funkcijų skirstinį?
18.2.3 Iš svorių erdvės į funkcijų erdvę
Aukščiau pateiktame grafike matėme, kaip modelio parametrų skirstinys indukuoja funkcijų skirstinį. Nors dažnai turime nuojautų apie funkcijas, kurias norime modeliuoti – ar jos glotnios, periodinės, sparčiai kintančios ir pan., – samprotauti apie parametrus, kurie iš esmės neinterpretuojami, yra gana nuobodu. Laimei, Gauso procesai suteikia paprastą mechanizmą samprotauti tiesiogiai apie funkcijas. Kadangi Gauso skirstinį visiškai apibrėžia jo pirmieji du momentai – vidurkis ir kovariacijų matrica, Gauso procesą, platesne prasme, apibrėžia jo vidurkio funkcija ir kovariacijos funkcija.
Aukščiau pateiktame pavyzdyje vidurkio funkcija
Panašiai kovariacijos funkcija yra
Dabar mūsų funkcijų skirstinį galima tiesiogiai nurodyti ir iš jo atrinkti, nereikalaujant atrinkti iš parametrų skirstinio. Pavyzdžiui, norėdami atrinkti iš , galime tiesiog sudaryti daugiamatį Gauso skirstinį, susijusį su bet kuriuo rinkiniu, kurį norime užklausti, ir atrinkti iš jo tiesiogiai. Pradėsime matyti, kokia naudinga yra ši formuluotė.
Pirmiausia pastebime, kad iš esmės tą patį išvedimą, kurį atlikome paprastam tiesės modeliui, galima pritaikyti vidurkio ir kovariacijos funkcijai rasti bet kuriam modeliui su . Šiuo atveju vidurkio funkcija , o kovariacijos funkcija . Kadangi gali atvaizduoti bet kokių netiesinių bazinių funkcijų vektorių, nagrinėjame labai bendrą modelių klasę, įskaitant modelius net su begaliniu parametrų skaičiumi.
18.2.4 Radialiosios bazinės funkcijos (RBF) branduolys
Radialiosios bazinės funkcijos (RBF) branduolys yra populiariausia Gauso procesų, ir apskritai branduolinių mašinų, kovariacijos funkcija. Šio branduolio forma yra , kur yra amplitudės parametras, o yra ilgio skalės hiperparametras.
Išveskime šį branduolį pradėdami nuo svorių erdvės. Panagrinėkime funkciją
yra radialiųjų bazinių funkcijų, kurių plotis , o centrai taškuose , suma, kaip parodyta šiame paveiksle.
Galime atpažinti, kad turi formą , kur , o yra vektorius, kuriame yra kiekviena iš radialiųjų bazinių funkcijų. Šio Gauso proceso kovariacijos funkcija tada yra
Dabar panagrinėkime, kas nutinka, kai parametrų (ir bazinių funkcijų) skaičių nukreipiame į begalybę. Tegu , , o , ir . Kovariacijos funkcija tampa Rymano suma:
Nustatę ir , begalinį skaičių bazinių funkcijų paskleidžiame per visą realiųjų skaičių tiesę, kiekviena vienas nuo kitos atstumu:
Verta akimirką pagalvoti apie tai, ką čia padarėme. Pereidami prie funkcijų erdvės atvaizdavimo, išvedėme, kaip atvaizduoti modelį su begaliniu parametrų skaičiumi naudojant baigtinį skaičiavimų kiekį. Gauso procesas su RBF branduoliu yra universalusis aproksimatorius, gebantis atvaizduoti bet kurią tolydžiąją funkciją savavališku tikslumu. Intuityviai matome, kodėl, iš aukščiau pateikto išvedimo. Kiekvieną radialiąją bazinę funkciją galime sutraukti į taškinę masę imdami ir suteikti kiekvienai taškinei masei bet kokį norimą aukštį.
Taigi Gauso procesas su RBF branduoliu yra modelis su begaliniu parametrų skaičiumi ir daug didesniu lankstumu nei bet kuris baigtinis neuroninis tinklas. Galbūt visas šurmulys dėl perparametrizuotų neuroninių tinklų yra nevietoje. Kaip pamatysime, GP su RBF branduoliais nepersimoko, ir iš tikrųjų užtikrina ypač įtikinamą apibendrinimo našumą mažuose duomenų rinkiniuose. Be to, (Zhang ir kt., 2021) pavyzdžius, pavyzdžiui, gebėjimą tobulai pritaikyti vaizdus su atsitiktinėmis žymėmis, bet vis tiek gerai apibendrinti struktūrizuotuose uždaviniuose, (galima tobulai atkurti naudojant Gauso procesus) (Wilson ir Izmailov, 2020). Neuroniniai tinklai nėra tokie išskirtiniai, kaip juos vaizduojame.
Daugiau intuicijos apie Gauso procesus su RBF branduoliais ir hiperparametrus, pavyzdžiui, ilgio skalę, galime įgyti atrinkdami tiesiogiai iš funkcijų skirstinio. Kaip ir anksčiau, tai apima paprastą procedūrą:
- Pasirinkite įvesties taškus, kuriuose norime užklausti GP: .
- Įvertinkite , , ir , kai , kad atitinkamai sudarytumėte vidurkio vektorių ir kovariacijų matricą ir , kur .
- Atrinkite iš šio daugiamačio Gauso skirstinio, kad gautumėte imties funkcijos reikšmes.
- Atrinkite daugiau kartų, kad vizualizuotumėte daugiau imties funkcijų, užklaustų tuose taškuose.
Šį procesą iliustruojame paveiksle žemiau.
def rbfkernel(x1, x2, ls=4.): #@save
dist = distance_matrix(np.expand_dims(x1, 1), np.expand_dims(x2, 1))
return np.exp(-(1. / ls / 2) * (dist ** 2))
x_points = np.linspace(0, 5, 50)
meanvec = np.zeros(len(x_points))
covmat = rbfkernel(x_points,x_points, 1)
prior_samples= np.random.multivariate_normal(meanvec, covmat, size=5);
d2l.plt.plot(x_points, prior_samples.T, alpha=0.5)
d2l.plt.show()
18.2.5 Neuroninio tinklo branduolys
Gauso procesų tyrimus mašininiame mokymesi paskatino neuroninių tinklų tyrimai. Radfordas Nealas tyrinėjo vis didesnius Bajeso neuroninius tinklus ir galiausiai 1994 m. parodė (vėliau paskelbta 1996 m., nes tai buvo vienas liūdniausiai pagarsėjusių NeurIPS atmetimų), kad tokie tinklai su begaliniu paslėptųjų vienetų skaičiumi tampa Gauso procesais su tam tikromis branduolio funkcijomis (Neal, 1996). Susidomėjimas šiuo išvedimu atgijo, o tokios idėjos kaip neuroninis tangentinis branduolys naudojamos neuroninių tinklų apibendrinimo savybėms tirti (Matthews ir kt., 2018) (Novak ir kt., 2018). Neuroninio tinklo branduolį galime išvesti taip.
Panagrinėkime neuroninio tinklo funkciją su vienu paslėptuoju sluoksniu:
yra poslinkis, yra paslėptųjų į išvesties svoriai, yra bet kuri aprėžta paslėptųjų vienetų perdavimo funkcija, yra įvesties į paslėptuosius svoriai, o yra paslėptųjų vienetų skaičius. Tegu ir yra nepriklausomi su nuliniu vidurkiu ir atitinkamai dispersijomis ir , o turi nepriklausomus vienodus skirstinius. Tada galime naudoti centrinę ribinę teoremą, kad parodytume, jog bet kuris funkcijos reikšmių rinkinys turi jungtinį daugiamatį Gauso skirstinį.
Atitinkamo Gauso proceso vidurkio ir kovariacijos funkcijos yra:
Kai kuriais atvejais šią kovariacijos funkciją galime iš esmės įvertinti uždara forma. Tegu , kur , o . Tada .
RBF branduolys yra stacionarus, tai reiškia, kad jis yra invariantiškas postūmiui, todėl jį galima užrašyti kaip funkciją nuo . Intuityviai stacionarumas reiškia, kad aukšto lygio funkcijos savybės, pavyzdžiui, kitimo sparta, nesikeičia judant įvesčių erdvėje. Tačiau neuroninio tinklo branduolys yra nestacionarus. Žemiau parodome imties funkcijas iš Gauso proceso su šiuo branduoliu. Matome, kad funkcija kokybiškai atrodo kitaip prie pradžios taško.
18.2.6 Santrauka
Pirmasis Bajeso inferencijos atlikimo žingsnis yra apriorinio skirstinio nurodymas. Gauso procesus galima naudoti visą apriorinį funkcijų skirstinį nurodyti. Pradėdami nuo tradicinio modeliavimo „svorių erdvės“ požiūrio, galime indukuoti funkcijų apriorinį skirstinį pradėdami nuo modelio funkcinės formos ir įvesdami jo parametrų skirstinį. Taip pat galime apriorinį skirstinį nurodyti tiesiogiai funkcijų erdvėje su savybėmis, kurias valdo branduolys. Funkcijų erdvės požiūris turi daug privalumų. Galime kurti modelius, kurie iš tikrųjų atitinka begalinį parametrų skaičių, bet naudoja baigtinį skaičiavimų kiekį! Be to, nors šie modeliai turi daug lankstumo, jie taip pat daro stiprias prielaidas apie tai, kokio tipo funkcijos yra apriori tikėtinos, o tai lemia gana gerą apibendrinimą mažuose duomenų rinkiniuose.
Funkcijų erdvės modelių prielaidas intuityviai valdo branduoliai, kurie dažnai koduoja aukštesnio lygio funkcijų savybes, pavyzdžiui, glotnumą ir periodiškumą. Daugelis branduolių yra stacionarūs, tai reiškia, kad jie yra invariantiški postūmiui. Funkcijos, atrinktos iš Gauso proceso su stacionariu branduoliu, turi maždaug tas pačias aukšto lygio savybes (pavyzdžiui, kitimo spartą) nepriklausomai nuo to, kur žiūrime įvesčių erdvėje.
Gauso procesai yra gana bendra modelių klasė, apimanti daug modelių, su kuriais jau esame susipažinę, pavyzdžių, įskaitant polinomus, Furjė eilutes ir kt., jei tik turime Gauso apriorinį parametrų skirstinį. Jie taip pat apima neuroninius tinklus su begaliniu parametrų skaičiumi, net be Gauso parametrų skirstinių. Šis ryšys, kurį atrado Radfordas Nealas, paskatino mašininio mokymosi tyrėjus nusigręžti nuo neuroninių tinklų ir pereiti prie Gauso procesų.
18.2.7 Pratimai
-
Atrinkite apriorines imties funkcijas iš GP su Ornšteino–Ulenbeko (OU) branduoliu, . Jei ilgio skalę fiksuosite vienodą, kuo šios funkcijos atrodo kitaip nei imties funkcijos iš GP su RBF branduoliu?
-
Kaip RBF branduolio amplitudės keitimas veikia funkcijų skirstinį?
-
Tarkime, sudarome , kur ir . Ar yra Gauso procesas, ir jei taip, kokia yra jo vidurkio ir kovariacijos funkcija?
-
Tarkime, sudarome , kur ir . Ar yra Gauso procesas, ir jei taip, kokia yra jo vidurkio ir kovariacijos funkcija? Koks yra poveikis? Kaip atrodo imties funkcijos, atrinktos iš ?
-
Tarkime, sudarome , kur ir . Ar yra Gauso procesas, ir jei taip, kokia yra jo vidurkio ir kovariacijos funkcija?
