Bayesi tanulás Kooperáció és gépi tanulás laboratórium (VIMIMB02) 2018. március 12. Elméleti alapok A mérés során a gépi tanulás bayesi megközelítésével fogunk megismerkedni. Az elméleti anyag egy része előadáson elhangzott, a többi megtalálható a hivatkozott irodalomban [1]; itt egy rövid áttekintést adunk. Bayesi lineáris regresszió A regresszió felügyelt tanulási feladat. Legyenek adottak a {x i, z i } P párok (tanítóhalmaz), ahol x i R d a minták leírásai, z i R pedig a mintákhoz tartozó valós értékek. Célunk, hogy a tanítóhalmaz alapján egy olyan modellt tanuljunk, amely képes további mintapontokra (teszthalmaz) értékeket jósolni. Az előző mérésen három megközelítést vázoltunk fel: 1. Generatív modellek. Modellezzük a p(x, z) együttes eloszlást, majd a Bayes-tétel segítségével számítsuk ki a p(z x, X, z) prediktív eloszlást, ahol {X, z} a teljes tanítóhalmaz, x pedig az új minta. 2. Diszkriminatív modellek. Modellezzük közvetlenül a p(z X) feltételes eloszlást, majd ebből számítsuk ki a prediktív eloszlást. Látható, hogy diszkriminatív és generatív modelleknél egy új mintánál nem csak pontbecslést kapunk, hanem egy eloszlást, amely felhasználható például bizonytalanságunk jellemzésére, hibakorlátok számítására is. 3. Diszkriminatív függvények. Keressünk olyan f F függvényt, amelyre f(x i ) z i. Ebben az esetben csak pontbecslést kapunk. A 2. és 3. esettel az előző mérésen, a Gauss-folyamatoknál és szupportvektor-regressziónál foglalkoztunk. Az 1. esethez modellezzük a x i minták és z i értékek közötti kapcsolatot egy normál zajjal terhelt lineáris összefüggéssel: azaz z i = w T x i + ε, ε N (ε 0, β 1 ), p(z i x i, w, β) = N (z i w T x i, β 1 ), vagy az összes változóra együttesen felírva (függetlenséget feltételezve egyszerű szorzással): p(z X, w, β) = P N (z i w T x i, β 1 ). 1
Ha itt megállunk, az ún. maximum likelihood (ML) megoldásra jutunk: keressük azt a w paraméterezést, amelyre a fenti valószínűség (likelihood) maximális más szóval, azt a w vektort, amelynél a legnagyobb valószínűséggel kapnánk az adott, ismert z értékeket. A gyakorlatban direkt maximalizálás helyett inkább a likelihood negatív logaritmusát minimalizáljuk, ami a logaritmusfüggvény szigorú monotonitása miatt ekvivalens probléma. Mivel az optimalizációt nem befolyásolják a konstans tagok, ezek szintén figyelmen kívül hagyhatók, így a normál eloszlás definíciója alapján ln p(z X, w, β) = P (z i w T x i ) 2 + const, tehát a negatív log-likelihood minimalizálásával lényegében a legkisebb négyzetek módszerét kaptuk vissza. Korábban láttuk, hogy ha nem teszünk semmilyen megszorítást w-re, ez a módszer hajlamos a túlilleszkedésre (az ML megoldásokra ez általában is igaz). Így a teljes bayesi megközelítés felé vezető úton a következő lépés egy paraméter-prior megadása, legyen ez most p(w α) = N (w 0, α 1 ), ahol α-t hiperparaméternek nevezzük. Ekkor a Bayes-tételt felhasználva w poszerior eloszlása: p(w z, X, α, β) p(z X, w, β)p(w α). Vegyük ismét a negatív logaritmust (mivel itt már két tag összege szerepel, a ML megoldással ellentétben a β tagot most nem hagyhatjuk el): ln p(w z, X, α, β) = β P (z i w T x i ) 2 + αw T w + const. Ennek a feladatnak a megoldását maximum a posteriori (MAP) becslésnek nevezzük; látható, hogy egybeesik az előző mérésen látott regularizált görbeillesztéssel λ = α/β regularizációs együtthatóval. Általában nem is w paraméter értékére van szükségünk, hanem egy új x mintához akarunk z értéket jósolni. Ehhez most felírjuk a prediktív eloszlást, azaz átlagolunk a w paraméter összes lehetséges értéke szerint, súlyozva annak poszterior valószínűségével: p(z x, X, z, α, β) = p(z x, w, β)p(w z, X, α, β)dw p(z x, w, β)p(z X, w, β)p(w α)dw A fenti eljárást nevezzük bayesi modellátlagolásnak is. Felmerül a kérdés: hol van a bevezetőben említett együttes eloszlás? Ha ugyanis valóban modelleznénk X-et is, akkor a következő likelihood-ot kellene felírnunk (1. ábra): p(x, z w, β, θ) a megfelelő p(w, β, θ) priorral. Tegyük fel, hogy p(w, β, θ) = p(w, β)p(θ), azaz θ független a többi paramétertől. Ekkor a posterior is faktorizálható: p(x, z w, β, θ) = p(x θ)p(z X, w, β). 2
θ m 0 S 0 X w z β 1. ábra. Bayesi lineáris regressziónak megfelelő Bayes-háló. A függőségi viszonyokat irányított élek jelzik. A w paraméterek becslése innentől megegyezik a fent leírtakkal: p(w z, X, α, β, θ) p(z X, w, β)p(w α), θ becslése pedig nem szükséges a korábbi függetlenségi feltevés miatt. Ebben az értelemben tehát minden teljes bayesi modell generatív. Láttuk tehát a lineáris regresszió teljes bayesi megközelítésének és az előző mérésen nézett regularizált görbeillesztéseknek a kapcsolatát. Nézzük most kicsit általánosabban, legyen a prior p(w m 0, S 0 ) = N (w m 0, S 0 ), és ismételjük meg a fentieket. Mivel először csak w a posteriori valószínűségére vagyunk kíváncsiak, minden konstans tagot (amelyben w nem szerepel) figyelmen kívül hagyhatunk, ezek a legvégén, a normalizálással automatikusan visszakerülnek tudjuk, hogy a sűrűségfüggvények integrálja 1 kell, hogy legyen. Ismét felírjuk tehát a negatív logaritmust a nem-konstans tagokra: ln p(w z, X, m 0, S 0, β) = ln p(z X, w, β) ln p(w m 0, S 0 ) + const [ P ] [ ] = ln N (z i w T x i, β 1 ) ln N (w m 0, S 0 ) + const = 1 P β ( ) z i w T 2 1 x i + 2 2 (w m 0) T S 1 0 (w m 0 ) + const ( = 1 2 wt β ) ( x i x T 1 i + S 0 w β ) T z i x i + S 1 0 m 0 w + const. i i 3
Ez w-ben kvadratikus kifejezés, így kiegészíthetjük teljes négyzetté: 1 2 wt Σ 1 w ϕ T w = 1 2 (w Σϕ)T Σ 1 (w Σϕ) + const, ahonnan a negatív logaritmust visszaalakítva (exponenciálist használva) és normalizálva megkapjuk, hogy p(w z, X, m 0, S 0, β) = N (w ψ, Σ), Σ 1 = βx T X + S 0 1, ψ = Σ(βX T z + S 0 1 m 0 ), ahol X a mintavektorokból képzett mátrix, z pedig az értékek vektora. Végül kiszámoljuk a p(z x, X, z, β, m 0, S 0 ) = p(z x, w, β)p(w z, X, m 0, S 0, β)dw prediktív eloszlást oly módon, hogy most a w-t és z-t tartalmazó kifejezéseket tartjuk meg: ( ) ln p(z x, w, β)p(w z, X, m 0, S 0, β) = β 2 (z wt x) 2 + 1 2 (w ψ)t Σ 1 (w ψ) + const = 1 2 wt ( βxx T + Σ 1) w ( βzx + Σ 1 ψ ) T w + β 2 z2 + const. A teljes négyzetté kiegészítésnél most minden tagot megtartunk: 1 2 wt S 1 w + ρ T w + β 2 z2 = 1 2 (w Sρ)T S 1 (w Sρ) + 1 2 (βz2 ρ T Sρ). Az exponenciális formára visszaalakítás után w-re normál eloszlást kapunk, és kihasználjuk, hogy ennek integrálja 1. A prediktív eloszlás tehát a következőképpen alakul: p(z x, X, z, β, m 0, S 0 ) = p(z x, w, β)p(w z, X, m 0, S 0, β)dw { = exp 1 } 2 (βz2 ρ T Sρ) N (w m, S)dw { = exp 1 } 2 (βz2 ρ T Sρ), ahol ρ = βzx + Σ 1 ψ, S 1 = βxx T + Σ 1. Végül a z-s tagok teljes négyzetté alakításával megmutatjuk, hogy ez is normál eloszlás: ln p(z x, X, z, β, m 0, S 0 ) = 1 2 (βz2 ρ T Sρ) = 1 2 ( β β 2 x T Sx ) z 2 ( βx T SΣ 1 ψ ) z + const, 4
így p(z x, X, z, β, m 0, S 0 ) = N (z µ, σ 2 ), σ 2 = (β(1 βx T Sx)) 1, µ = σ 2 βx T SΣ 1 ψ. Tehát megkaptuk a prediktív eloszlást, ezt azonban tovább egyszerűsíthetjük a Sherman Morrison formula felhasználásával, amely az inverz változását írja le 1-rangú mátrix hozzáadása esetén: (A + uv T ) 1 = A 1 A 1 uv T A 1 1 + v T A 1 u. Mivel S 1 éppen ilyen alakú mátrix, felhasználjuk a formulát: majd jobbról-balról beszorozva S = (βxx T + Σ 1 ) 1 = Σ βσxxt Σ 1 + βx T Σx, x T Sx = x T Σx βxt Σxx T Σx 1 + βx T Σx = xt Σx + β(x T Σx) 2 β(x T Σx) 2 1 + βx T Σx ahonnan βx T Sx = és végül σ 2 -t egyszerűbb alakra hozhatjuk: ( σ 2 = (β(1 βx T Sx)) 1 = Ezt behelyettesítve µ-t is átírhatjuk: βxt Σx 1 + βx T Σx = 1 1 1 + βx T Σx, β 1 + βx T Σx = ) 1 = 1 β + xt Σx. x T Σx 1 + βx T Σx µ = σ 2 βx T SΣ 1 ψ = x T SΣ 1 ψ + βx T Σxx T SΣ 1 ψ = x T ( SΣ 1 + βσxx T SΣ 1) ψ, viszont S-t kiemelve így tehát SΣ 1 + βσxx T SΣ 1 = S ( βxx T + Σ 1) = SS 1 = I, µ = x T ψ. Összefoglalva, a prediktív eloszlás a következő: p(z x, X, z, β, m 0, S 0 ) = N (z µ, σ 2 ), σ 2 = 1 β + xt Σx, µ = x T ψ, Σ = ( βx T X + S 0 1 ) 1, ψ = Σ(βX T z + S 0 1 m 0 ). 5
A fenti keretet könnyen kiterjeszthetjük a nemlineáris esetre is, ha a x i mintákra ún. bázisfüggvényeket alkalmazunk, azaz a x i φ n (x i ), n = 1,..., N. helyettesítésekkel élünk. Ilyen bázisfüggvény lehet például a Gauss-i radiális bázisfüggvény: φ n (x i ) = exp { γ(x i µ n ) 2}, ahol µ n az n. bázisfüggvény pozíciója, γ pedig a szélessége. Ekkor a bizonyítás menete lényegében változatlan marad, a prediktív eloszlás pedig a következőképpen módosul: p(z x, X, z, β, m 0, S 0 ) = N (z µ, σ 2 ), σ 2 = 1 β + φt Σφ, µ = φ T ψ, Σ = ( βφ T Φ + S 0 1 ) 1, ψ = Σ(βΦ T z + S 0 1 m 0 ), ahol φ = [φ 1 (x)... φ n (x)] T és Φ = φ 1 (x 1 ) φ 2 (x 1 ) φ n (x 1 ) φ 1 (x 2 ) φ 2 (x 2 ) φ n (x 2 )...... φ 1 (x P ) φ 2 (x P ) φ n (x P ). Következtetés Bayes-hálókban Gibbs-mintavételezéssel Bayes-hálókban való következtetésekre használhatunk egzakt és közelítő megoldásokat. A Markov Chain Monte Carlo (MCMC) módszerek az előbbire mutatnak példát; az a posteriori eloszlást iteratív mintavételezéssel közelítjük, amelyről megfelelő feltételek mellett megmutatható, hogy kellő ideig ismételve tetszőlegesen közel kerül a valódi eloszláshoz (aszimptotikusan egzakt). A Metropolis, Metropolis Hastings algoritmusról korábbi tanulmányaik során minden bizonnyal hallottak, a részletek megtalálhatók a hivatkozott irodalomban [1]. A Gibbs-mintavételezéshez vegyünk egy p(x) = p(x 1, x 2,..., x n ) együttes eloszlást és adjunk kiinduló értéket minden változónak. Minden lépésben ki kell választanunk egy x i változót, és mintavételeznünk a p(x i x \i ) = p(x i x 1, x 2,..., x i 1, x i+1,..., x n ) eloszlást. Az így kapott mintát (az új x i és a meglévő x \i együttesét) eltároljuk, majd kiválasztjuk a következő változót. Az egyes x i változók poszerior eloszlását a kapott minták hisztogramjával közelítjük; megmutatható, hogy ez aszimptotikusan közelíti a valódi poszteriort. A Gibbs-mintavételezést bemutatjuk egy konkrét példán. Legyen adott egy R R I J hiányos mátrix, amely I darab felhasználó J darab filmre adott értékeléseit tartalmazza. A célunk, hogy a hiányzó értékek prediktálásával a felhasználóknak várhatóan tetsző filmeket javasoljunk. Ehhez 6
1.0 0.5 z 0.0-0.5 0 25 50 75 100 x 2. ábra. Bayesi nemlineáris regresszió. A bázisfüggvények a 10, 20,..., 100 pontokon helyezkednek el. A mintákat fekete pontok, a várható értéket piros vonal, a szórást szürke sáv jelzi. keressük azokat az U R I L, V R J L teljes (!) mátrixokat, amelyeknek szorzata a lehető legjobban közelíti R meglévő értékeit: R U T V, ahol L az ún. látens faktorok száma. Általánosságban L rank(r), azaz alacsony rangú approximációt keresünk. R hiányzó értékeit a U T V szorzat alapján fogjuk jósolni. Használjunk bayesi megközelítést: R értékei legyenek függetlenek és β precizitású normál zajjal terheltek: p(r U, V, β) = I J [ N (Rij u T i v j, β 1 ) ] I ij, valamint legyen p(u α u ) = p(v α v ) = I J N (u i 0, αu 1 I), N (v j 0, αv 1 I), ahol u i és v j a megfelelő mátrix i. illetve j. oszlopa, valamint { 1, ha R ij létezik, I ij = 0, egyébként. A Gibbs-mintavételezéshez szükségünk lesz a feltételes eloszlásokra, így a korábban megismert stratégiát követjük: felírjuk az együttes eloszlás logaritmusát, kigyűjtjük a keresett tagokat, majd kiegészítjük teljes négyzetté, végül exponenciálist veszünk és normalizálunk. 7
α u α v U V R β 3. ábra. Valószínűségi mátrixfaktorizációnak megfelelő Bayes-háló. Nézzük az U-t tartalmazó tagokra: azaz ln p(u, V, R β, α u, α v ) I J = I ij ln N (R ij u T i v j, β 1 ) + = = = I ln N (u i 0, αu 1 I) + const I J 1 2 β(r ij u T i v j ) 2 I ij 1 I α u u T i Iu i + const 2 ( ) ( ) T I 1 J J 2 ut i β I ij v j vj T + α u I u i + β I ij R ij v j u i + const I 1 2 (u i Λ 1 i ϕ i ) T Λ i (u i Λ 1 i ϕ i ) + const, p(u R, V, α u, α v, β) = i Λ i = β N (u i ψ i, Λ 1 i ), J I ij v j vj T + α u I, ψ i = Λ 1 i β J I ij R ij v j. A V -re vonatkozó összefüggések ugyanígy származtathatók. A mintavételezés menete tehát a következő lesz: 1. Inicializáljuk U-t és V -t, feltöltjük I-t és R-t. 2. Felváltva mintavételezzük p(u R, V, β, α u, α v )-t és p(v R, U, β, α u, α v )-t. 3. A kapott mintákból kiszámítjuk a hisztogramot, amely a poszteriort közelíti. 8
90 600 60 400 30 200 0 0 6 8 10 12 6 8 10 12 4. ábra. Mátrixfaktorizáció 20 30 mátrix esetén, 5 látens faktorral. Az ábra az R 5,5 elemre kapott minták hisztogramját mutatja, a piros vonal a valódi értéket jelzi. A bal oldalon β = 1, a jobb oldalon β = 100 paramétert használtunk. A mérés során megoldandó feladatok Bayesi regresszió 1) Hozzon létre két mesterséges egydimenziós adathalmazt. Adathalmazonként száz minta elegendő; az egyiket származtassa egy normál zajjal terhelt lineáris kapcsolatból, a másik mutasson tetszőleges típusú nemlinearitást. A továbbiakban az egyszerűség kedvéért legyen S 0 = αi, m 0 = 0. 2) Hozza létre a bázisfüggvényeket oly módon, hogy a tartományon egyenletesen helyezkedjenek el. Például: location<-seq(0,100,10) phi<-function(x) exp(-width*(x-location)^2) ahol a bázisfüggvényt használtuk. 3) Hozza létre a Φ mátrixot: Φ = φ n (x i ) = exp { γ(x i µ n ) 2}, φ 1 (x 1 ) φ 2 (x 1 ) φ 11 (x 1 ) φ 1 (x 2 ) φ 2 (x 2 ) φ 11 (x 2 )...... φ 1 (x 100 ) φ 2 (x 100 ) φ 11 (x 100 ) 9.
4) Emlékeztetőül álljon itt a prediktív eloszlás: p(z x, X, z, β, m 0, S 0 ) = N (z µ, σ 2 ), σ 2 = 1 β + φt Σφ, µ = φ T ψ, Σ = ( βφ T Φ + S ) 1 1 0, ψ = Σ(βΦ T z + S 1 0 m 0 ), ahol φ = φ 1 (x). φ n (x). Hozza létre ezeknek megfelelően a Σ mátrixot és ψ vektort, valamint a σ 2 és µ függvényeket, amelyek az egyes mintákhoz a várható értéket és szórást adják vissza, pl. mu<-function(x) phi(x)%*%psi 5) Ábrázolja mindkét adathalmazon az illesztett görbét oly módon, hogy a tartományon alkalmas időközönként kirajzolja az átlagot és a szórást. Például: sx<-seq(0,100,0.1) pred<-sapply(sx,mu) #... ggplot() +... + geom_line(aes(x=sx,y=pred)) +... A 2. ábrán láthat erre példát. 6) Vizsgálja meg és dokumentálja az α, β és γ paraméterek hatását az illesztésre. 10
Gibbs-mintavételezés Ebben a feladatban az egyszerűség kedvéért a teljes R mátrixot fogjuk használni. A hiány kezelése elméletben triviális, gyakorlatban viszont ügyes indexelési sémát igényel, amitől most eltekintünk. 1) Hozzon létre egy 20 30 véletlen mátrixot, amely a bevezetőben említett R szerepét fogja játszani. Inicializálja az U és V mátrixokat is. I<-20 J<-30 L<-15 R<-matrix(runif(I*J,0,10),I,J) U<-matrix(0,I,L) V<-matrix(0,J,L) 2) Emlékeztetőül álljon itt U feltételes eloszlása a Gibbs-mintavételezéshez: p(u R, V, α u, α v, β) = i N (u i ψ i, Λ 1 i ), Λ i = β J v j vj T + α u I, ψ i = Λ 1 i β J R ij v j. A fenti összefüggések alapján implementálja U és V mintavételezését. Többváltozós normál eloszlásból való mintavételezéshez használja a MASS könyvtár mvrnorm() függvényét. Mátrixot invertálni a solve() függvénnyel lehet. Megjegyzés. Mátrixot direkt módon ritkán szoktunk invertálni; ennek kiszámítása és tárolása ugyanis számítás- és főleg memóriaigényes. A mátrix inverzére rendszerint nem önmagában van szükségünk, hanem egy másik vektorral megszorozva. Így az A 1 b szorzás elvégzése helyett megoldhatjuk az Ax = b lineáris rendszert x-re, ami ugyanazt az eredményt adja. Lineáris rendszerek megoldására igen hatékony algoritmusok állnak rendelkezésre, jól példa erre az ún. konjugált gradiens (CG) solver. Mivel az mvrnorm() függvény explicite igényli a preciziós mátrix inverzét (kovarianciamátrix), erre most nincs lehetőségünk. A gyakorlatban kénytelenek lennénk hatékonyabb implementáció után nézni (a Julia nyelv megfelelő csomagja például támogatja a kanonikus paraméterek használatát, amivel a direkt invertálás elkerülhető). 3) Az MCMC módszereket futtatás előtt célszerű bemelegíteni (burn-in), azaz egy ideig a mintákat eldobva futtatni, hogy kellően közel tudjanak kerülni a keresett eloszláshoz. Ennek megfelelően végezze az iterációt két lépésben: először egy rövidebb burn-in szakaszban, majd mintarögzítéssel. Először hozza létre a mintagyűjtéshez szükséges változókat: U_sum<-U # U atlagahoz V_sum<-V # V atlagahoz smp<-vector() # R egy tetszoleges elemenek hisztogramjahoz 11
5. ábra. Az R mátrix hőtérképe. Majd futtassa a Markov-láncot két szakaszban: # Burn-in for(iter in 1:burn_in) { #... U mintavetelezese... #... V mintavetelezese... } # Rogzites for(iter in 1:iters) { #... U mintavetelezese... U_sum<-U_sum+U #... V mintavetelezese... V_sum<-V_sum+V } smp<-append(smp,(u%*%t(v))[5,5]) U_avg<-U_sum/iters V_avg<-V_sum/iters 4) Ábrázolja az R és a számított UV T mátrixot, illetve a kettő különbségét hőtérképen. df<-as.data.frame(r) df[[j+1]]<-1:i dt<-melt(df,id.vars=j+1) names(dt)<-c("x","y","val") ggplot(dt,aes(x=x,y=y,fill=val)) + geom_tile() A közelítés hibáját adja meg a múlt órán megismert RMSE mérték szerint is: RMSE<-sqrt(mean((R-U_avg%*%t(V_avg))^2)) 5) Ábrázolja hisztogramon R tetszőleges eleméhez kapott mintákat. Erre a 3. ábrán láthat példát, ahol az (5, 5) elemet választottuk. 12
6) Vizsgálja meg a következő paraméterek hatását az eredményekre: Hivatkozások Precizitás (β). A Gauss-folyamatoknál megismert paraméterek közül melyikkel analóg ez? A faktorok paraméterei (α u, α v ). A regressziónál megismert paraméterek közül melyikkel analóg ez a kettő? Látens faktorok száma (L). A polinomiális görbeillesztésnél megismert paraméterek közül melyikkel analóg ez? Iterációk száma. [1] Christopher M. Bishop. Pattern Recognition and Machine Learning (Information Science and Statistics). Springer-Verlag New York, Inc., Secaucus, NJ, USA, 2006. 13