{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "*Created by Petteri Nevavuori.*\n", "\n", "---\n", "\n", "# Deep Learning seminaari\n", "\n", "Kirjana Goodfellow et al.: Deep Learning (2016)\n", "\n", "Otsikot seuraavat pääotsikoiden tasolla kirjaa, mutta alaotsikot eivät aina." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 13. Linear Factor Models" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Tässä luvussa käsitellään todennäköisyysmalleja, jotka tunnetaan nimellä lineaariset faktorimallit (*linear factor models*). Näiden mallien toimintaperiaate on etenkin generatiivisten mallien pohjana. Lineaarinen faktorimalli käyttää kohinaa syötteenmuuntofunktiossaan $x \\to h$, jossa $h$ tarkoittaa piilomuuttujia (*latent variables*). Nämä mallit auttavat yksinkertaisuudessaan selittävimpien piirteiden löytämisessä." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Yksinkertaisuutensa vuoksi nämä mallit olivatkin ensimmäisiä aihepiirin tutkittujen mallien joukossa. Mallit etsivät ensin datantuottoprosessia eniten kuvaavimmat piilopiirteet $h$. Tämän jälkeen tuotetaan uusia, opittuun datantuottoprosessiin pohjaavia näytteitä yhdessä mallin parametrien sekä kohinan kanssa kaavan \n", "\n", "$$ x = Wh + b + \\text{noise} $$ \n", "\n", "mukaisesti. Kaavan $W$ merkitsee mallin parametreja ja $b$ vääristymää." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 13.1 Probabilistic PCA and Factor Analysis" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Todennäköisyyteen pohjaava pääkomponenttianalyysi (*probabilistic principal component analysis, PCA*) on edellä määritellyn kaavan erityistapaus muiden vastaavien faktorianalyysimenetelmien rinnalla. Erot ovat piilomuuttujien kohinan ja alustuksen valinnassa. Piilomuuttujien tehtävänä on tavoittaa syötteen piirteiden riippuvuudet. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Faktorianalyysissä kohina on vain normaalijakaumasta näytteistettyä ja syötteen piirteiden oletetaan olevan ehdollisesti riippumattomia piilomuuttujien $h$ tapauksessa. Kohinan oletetaan tulevan diagonaalisesti normaalijakauman kovarianssimatriisista, jossa varianssit ovat syötteen muuttujakohtaisia variansseja. Tällöin faktorianalyysi tuottaa näytteitä jakaumasta\n", "\n", "$$x \\tilde{} \\mathcal{N}(x;b, WW^T + \\text{diag}(\\sigma^2)),$$\n", "\n", "jossa $\\text{diag}(\\sigma^2)$ on kovarianssimatriisin diagonaali." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "Matka tästä todennkäisyyteen pohjaavaan pääkomponenttianalyysiin on lyhyt. Varianssien diagonaalin sijasta käytetäänkin yhtä varianssia skalaarina parametrien identtiteettimatriisin kertoimena:\n", "\n", "$$x \\tilde{} \\mathcal{N}(x;b, WW^T + \\sigma^2I),$$\n", "\n", "mikä voidaan ilmaista myös toisin\n", "\n", "$$ x= Wh+b+\\sigma z .$$\n", "\n", "Jälkimmäisen kaavan $z$ on normaalijakaumasta $\\mathcal{N}(z;0,I)$ tuotettua kohinaa. Kun $\\sigma \\to 0$, lähenee todennäköisyyteen pohjaava PCA normaalin PCA:n toimintatapaa." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "PCA:n toiminta perustuu havaintoon siitä, että piilomuuttujilla $h$ kyetään poimimaan useimmat datan variaation lähteet. Poiminta ei ole täydellistä, minkä vuoksi menetelmään liittyy olennaisesti rekonstruointivirhe (*reconstruction error*) $\\sigma^2$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 13.2 Independent Component Analysis (ICA)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Riippumattomien komponenttien analyysi on yksi vanhimmista piirreoppimisen algoritmeja. Menetelmä pyrkii löytämään täysin riippumattomia piilomuuttujia, joilla datantuottoprosessia voidaan mallintaa. Nimitys on yleinen monille toisistaan eroaville menetelmille. Faktori- ja pääkomponenttianalyysiin nähden läheisin on kuitenkin sellainen, jossa piilomuuttujien jakauma $p(h)$ päätetään etukäteen ja sen jälkeen opitaan deterministisesti $x = Wh$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Pohja-ajatus liittyy piilomuttujien jakauman valintaan. Kun se on lähtökohtaisesti datasta riippumaton, oletuksena on, että datasta löydetään helpommin myös riippumattomia piirteitä. Tällöin tavoillaan sellaisten datan sisällä olevien piilevien signaalien löytämistä, joista yhdessä voidaan muodostaa mahdollisimman häviötön alkuperäinen syötesignaali." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Tällä menetelmällä voidaan eristää esimerkiksi yksittäisten ihmisten ääniä ihmisjoukon puheensorinasta. Menetelmää käytetään myös aivoaaltojen erotteluun. Sensoreita on kuitenkin oltava useita, joista sitten menetelmä osaa yhdessä eristää yksittäiset äänet. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " Menetelmästä on, kuten sanottua, useita variantteja eri tarkoituksiin. Kaikille on kuitenkin yhteistä vaatimus jakauman $p(h)$ ei-normaaliudesta (*non-Gaussian*), sillä vain tällöin voidaan taata piilomuuttujien $h$ riippumattomuus. Tässä kohden ero muihin lineaarisiin faktorimenetelmiin on selkein. Tavallista on valita jakauma, joka painottuu lähelle nollaa. Tällöin on samoin tavallista, että menetelmällä tuotetaan harvoja piirteitä." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "ICA-menetelmät eivät myöskään tästä syystä ole generatiivisia kirjan tarkoittamassa mielessä. Koska menetelmät eivät kykene kuvantamaan jakaumaa $p(h)$, ne eivät myöskään kykene tällöin kuvantamaan jakaumaa $p(x)$, mistä jälkimmäisin on generatiivisten mallien vaatimus. ICA-menetelmät ovat ennenkaikkea signaalien erottelumenetelmiä." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "ICA-menetelmät voidaan kuitenkin yleistää moniksi erilaisiksi epälineaarisiksi generatiivisiksi malleiksi. NICE (*nonlinear independent components estimation*) pyrkii generatiivisuuteen sarjalla enkoodereita ja dekoodereita. Riippumaton osa-avaruuden analyysi (*independent subspace analysis*) taas sallii riippuvuuksia ryhmien sisällä, muttei niiden välillä. Menetelmää on käytetty myös kuvien piirteiden kanssa." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 13.3 Slow Feature Analysis" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Hidas piirreanalyysi (*SFA*) on ajan huomioiva lineaarinen faktorimalli. Perusajatuksena on, että merkittävimmät piirteet vaihtuvat hitaiten. Videoissa pikselikohtaiset arvot muuttuvat nopeasti, mutta kohtauksissa esiintyvät hahmot eivät niinkään. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Menetelmä perustuu kahden aika-askeleen $t$ ja $t+1$ väliseen virhefunktioon $L(f(x^{(t+1)}), f(x^{(t)}))$ ja sen regularisointiin. Funktio $f$ on piirteitä erotteleva funktio. ICAn tavoin SFA ei ole suoranaisesti generatiivinen malli selkeän jakauman $p(x)$ puuttumisen vuoksi. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Menetelmä koulutetaan löytämään lineaariset parametrit $\\theta$, joilla aika-askelten erotus minimoidaan. Vaatimuksina on, että piirteet ovat nolla-keskiarvoisia ja yksikköhajontaisia ratkaistavuuden vuoksi. Samoin peräkkäisten opittavien piirteiden on oltava lineaarisesti toisistaan riipumattomia. Tällöin menetelmä on ratkaistavissa algebrallisesti. Tällöin sen tulokset on myös ennakoitavissa." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Tyypillistä on, että syötedataa muunnetaan jollain epälineaarisella funktiolla ennen menetelmään syöttämistä. Menetelmiä voidaan myös ketjuttaa siten, edeltävä mallin ulostulo muunnetaan syötteen tavoin ja syötetään seuraavaan SFA-malliin. Näin voidaan oppia biologisissakin järjestelmissä, kuten V1-korteksissa tai tilan hahmotuksen alueissa havaittuja piirteitä. Menetelmä ei kuitenkaan ole yleistynyt tutkimuksessa." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 13.4 Sparse Coding" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Harva koodaus (*sparse coding*) on paljon tutkittu ohjaamaton piirteiden poimintamenetelmä. Menetelmän nimi viittaa etenkin piilomuuttujien $h$ muodostukseen, mutta sitä käytetään myös yleisesti menetelmästä kokonaisuutena. Jälleen muihin lineaarisiin faktorimalleihin ero tulee $p(h)$ (piikki lähellä nollaa, esim. Studentin *t*-jakauma) ja kohinan jakaumien valinnassa (vaimennettu termillä $\\frac{1}{\\beta}$)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Koulutus tapahtuu enkooderi-dekooderi-tyyppisesti. Enkooderilla opitaan dataa, kun taas dekooderilla opitaan tuottamaan dataa vastaavia näytteitä. Parametrien sijaan menetelmä perustuu optimointiongelman ratkaisuun, jossa etsitään parhaiten sopivia piilomuuttujia $h$. Optimointi tehdään suhteessa valittuun jakaumaan $p(h)$. Menetelmän harvuus on seurausta optimoinnissa käytetystä $L^1$-normista, joskin harvuus näkyy ennemmin poimituissa piirteissä kuin itse $h$:n arvoissa." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "Ei-parametrisen enkooderin kanssa yhdistettynä harvan koodauksen menetelmät kykenevät minimoimaan rekonstruointivirheen tehokkaimmin. Koska kyseessä on ei-parametrinen lähestymistapa, ei parametreja tarvitse tällöin opetella. Täten malli ei tuota myöskään erikseen minimoitavaa testivirhettä. Siksi harva koodaus yhdessä ei-parametrisen enkooderin kanssa on hyvä piirteiden poiminnan työkalu osana suurempia parametrisia malleja." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Tutkimuksissa on itseasiassa osoitettu, että harvaa koodausta käyttäen kyetään saavuttamaan parempi yleistysvirhe hahmontunnistuksen tehtävissä. Etenkin tapauksissa, joissa luokkakohtaisia näytteitä on hyvin harvakseltaa, menetelmää hyödyäntäen voidaan silti saavuttaa tietoa yleistyvimmistä piirteistä." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Ei-parametrisuutensa vuoksi menetelmän käyttö on kuitenkin laskennallisesti raskasta. Kyseessä ei ole yrityksen ja erehdyksen kautta etenevä asteittainen koulutus vaan iteratiivinen funktion ratkaisu. Parametriset vastaavat mallit ovat usein verraten matalia, minkä vuoksi niiden koulutus on nopeampaa. Harvan koodauksen käyttö backpropia hyödyntävässä mallissa on myös haasteellista." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Menetelmän tuottamat näytteet (kyseessä on kuitenkin generatiivinen malli) ovat usein huonolaatuisia. Menetelmä oppii yksittäiset piirteet todella hyvin, mutta menetelmän luonteesta johtuen piirteiden yhdistäminen on satunnaisempaa." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 13.5 Manifold Interpretation of PCA" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Lineaariset faktorimallit voidaan nähdä myös piirreavaruuden pinnan oppivina algoritmeina. Todennäköisyyteen pohjaava PCA voidaan esimerkiksi nähdä piirteiden muodostaman tason rajaavana alueena. Mikäli PCA:n löytämien piirteiden muodostama taso on kaksiulotteinen, muodostaa PCA ikäänkuin litistetyn pallon tasolle, josta voidaan tulkita kohina yhdessä kahden piirteen yhteisvaikutukseen. Näin menetelmä rajaa näistä piirteistä datantuottoprosessiin liittyvän todennäköisimmän alueen." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" }, "toc": { "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "318px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }