- Mikä on Softmax-funktio?
- Softmax-kaava
- Softmax-kaavan symbolit selitetty
- Softmaxin laskeminen
- Softmax-funktio vs. sigmoidifunktio
- Softmax-funktion vs. sigmoidifunktion laskeminen
- Softmax-funktio vs. Argmax-funktio
- Softmax-funktion laskeminen vs. Argmax-funktio
- Softmax-funktion sovelluksia
- Softmax-funktio neuroverkoissa
- Esimerkki Softmaxin laskemisesta neuroverkossa
- Softmax-funktio vahvistusoppimisessa
- Esimerkki Softmaxin laskemisesta vahvistusoppimisessa
- Vahvistusoppimisen softmax-kaavan symbolit selitetty
- Softmaxin historia
Mikä on Softmax-funktio?
Softmax-funktio on funktio, joka muuttaa K:n reaaliarvon vektorin K:n reaaliarvon vektoriksi, jonka summa on 1. Syöttöarvot voivat olla positiivisia, negatiivisia, nollan suuruisia tai ykköstä suuremmat, mutta softmax muuttaa ne arvoiksi 0:n ja 1:n väliltä, jotta ne voidaan tulkita todennäköisyyksinä. Jos jokin syötteistä on pieni tai negatiivinen, softmax muuttaa sen pieneksi todennäköisyydeksi, ja jos jokin syötteistä on suuri, se muuttaa sen suureksi todennäköisyydeksi, mutta se pysyy aina 0:n ja 1:n välillä.
Softmax-funktiota kutsutaan joskus softargmax-funktioksi tai moniluokkaiseksi logistiseksi regressioksi. Tämä johtuu siitä, että softmax on logistisen regression yleistys, jota voidaan käyttää moniluokkaiseen luokitteluun, ja sen kaava on hyvin samanlainen kuin sigmoidifunktio, jota käytetään logistisessa regressiossa. Softmax-funktiota voidaan käyttää luokittimessa vain silloin, kun luokat ovat toisensa poissulkevia.
Monet monikerroksiset neuroverkot päättyvät toiseksi viimeiseen kerrokseen, joka tuottaa reaaliarvoisia pistemääriä, joita ei ole kätevästi skaalattu ja joita voi olla vaikea käsitellä. Tässä softmax on erittäin hyödyllinen, koska se muuntaa pisteet normalisoiduksi todennäköisyysjakaumaksi, jota voidaan näyttää käyttäjälle tai käyttää muiden järjestelmien syötteenä. Tästä syystä on tavallista liittää softmax-funktio neuroverkon viimeiseksi kerrokseksi.
Softmax-kaava
Softmax-kaava on seuraava:
Softmax-funktion matemaattinen määritelmä
jossa kaikki zi-arvot ovat sisääntulovektorin alkioita, ja ne voivat ottaa minkä tahansa reaaliarvon. Kaavan alareunassa oleva termi on normalisointitermi, joka varmistaa, että kaikkien funktion lähtöarvojen summa on 1, jolloin ne muodostavat kelvollisen todennäköisyysjakauman.
Softmax-kaavan symbolit selitetty
Syöttövektori softmax-funktiolle, joka muodostuu (z0, … zK) | ||
Kaikki zi-arvot ovat softmax-funktion sisääntulovektorin elementtejä, ja ne voivat ottaa minkä tahansa reaaliarvon, positiivisen, nollan tai negatiivisen. Esimerkiksi neuroverkko olisi voinut antaa tulokseksi sellaisen vektorin kuin (-0.62, 8.12, 2.53), joka ei ole kelvollinen todennäköisyysjakauma, minkä vuoksi softmax olisi tarpeen. | ||
Vakiomuotoista eksponenttifunktiota sovelletaan tulovektorin jokaiseen alkioon. Tämä antaa 0:n yläpuolella olevan positiivisen arvon, joka on hyvin pieni, jos tulo oli negatiivinen, ja hyvin suuri, jos tulo oli suuri. Se ei kuitenkaan edelleenkään ole kiinteä alueella (0, 1), mitä todennäköisyydeltä vaaditaan. | ||
Termi kaavan alaosassa on normalisointitermi. Se varmistaa, että kaikki funktion lähtöarvot summautuvat yhteen ja ovat kukin välillä (0, 1), jolloin ne muodostavat kelvollisen todennäköisyysjakauman. | ||
Moniluokkaisen luokittelijan luokkien lukumäärä. |
Softmaxin laskeminen
Kuvitellaan, että meillä on kolmen reaalisen arvon joukko. Nämä arvot voisivat tyypillisesti olla koneoppimismallin, kuten neuroverkon, ulostuloja. Haluamme muuntaa arvot todennäköisyysjakaumaksi.
Aluksi voimme laskea tulomäärän jokaisen alkion eksponentin. Tämä on termi softmax-yhtälön yläpuoliskossa.
Nämä arvot eivät vielä näytä todennäköisyyksiltä. Huomaa, että vaikka tuloalkioissa 8 on vain vähän suurempi kuin 5, 2981 on paljon suurempi kuin 148 eksponentiaalin vaikutuksesta. Voimme saada normalisointitermin, softmax-yhtälön alimman puoliskon, laskemalla yhteen kaikki kolme eksponentiaalitermiä:
Havaitsemme, että normalisointitermiä on dominoinut z1.
Viimeiseksi jakamalla normalisointitermillä saamme softmax-tuloksen kullekin kolmelle elementille. Huomaa, että tulostusarvoa ei ole vain yksi, koska softmax muuttaa joukon samanpituiseksi joukoksi, tässä tapauksessa 3.
On informatiivista tarkistaa, että meillä on kolme tulostusarvoa, jotka kaikki ovat kelvollisia todennäköisyyksiä, eli ne ovat 0:n ja 1:n välissä ja niiden summa on 1.
Huomaa myös, että eksponenttioperaation vuoksi ensimmäinen alkio, 8, on dominoinut softmax-funktiota ja puristanut 5:n ja 0:n hyvin pieniksi todennäköisyysarvoiksi.
Jos käytät softmax-funktiota koneoppimismallissa, kannattaa olla varovainen, ennen kuin tulkitset sen todellisena todennäköisyytenä, koska sillä on taipumus tuottaa arvoja hyvin lähellä 0:ta tai 1:tä. Jos neuroverkon tulostuspisteet olisivat , kuten tässä esimerkissä, softmax-funktio olisi antanut 95 prosentin todennäköisyyden ensimmäiselle luokalle, vaikka todellisuudessa neuroverkon ennusteissa olisi voinut olla enemmän epävarmuutta. Tämä voisi antaa vaikutelman, että neuroverkon ennusteella olisi ollut korkea luotettavuus, vaikka näin ei olisi ollut.
Softmax-funktio vs. sigmoidifunktio
Kuten edellä mainittiin, softmax-funktio ja sigmoidifunktio ovat samanlaisia. Softmax-funktio toimii vektorilla, kun taas sigmoidifunktio ottaa skalaarin.
Itse asiassa sigmoidifunktio on softmax-funktion erikoistapaus luokittimelle, jossa on vain kaksi tulosluokkaa. Voimme osoittaa tämän, jos asetamme sisääntulovektorin arvoksi ja laskemme ensimmäisen ulostulon alkion tavallisella softmax-kaavalla:
Jakaessamme ylä- ja alaosan ex:llä saamme:
Tämä osoittaa, että sigmoidifunktio muuttuu ekvivalenttiseksi softmax-funktion kanssa, kun meillä on kaksi luokkaa. Toista vektorikomponenttia ei tarvitse laskea eksplisiittisesti, koska kun todennäköisyyksiä on kaksi, niiden summan on oltava 1. Jos siis kehitämme kahden luokan luokittimen logistisella regressiolla, voimme käyttää sigmoidifunktiota eikä meidän tarvitse työskennellä vektoreiden kanssa. Mutta jos meillä on enemmän kuin kaksi toisiaan poissulkevaa luokkaa, on käytettävä softmaxia.
Jos luokkia on enemmän kuin kaksi ja ne eivät ole toisiaan poissulkevia (monimerkkiluokittelija), luokittelija voidaan jakaa useisiin binääriluokittimiin, joista kukin käyttää omaa sigmoidifunktioaan.
Softmax-funktion vs. sigmoidifunktion laskeminen
Jos otamme syötearvoksi syötteenä toimivan vektorin , voimme sijoittaa sen sekä softa- että sigmoidifunktioon. Koska sigmoidi ottaa skalaarisen arvon, laitamme vain ensimmäisen alkion sigmoidifunktioon.
Sigmoidifunktio antaa ensimmäisen alkion osalta saman arvon kuin softmax, edellyttäen, että toinen tuloalkio on 0. Koska sigmoidifunktio antaa meille todennäköisyyden, ja kahden todennäköisyyden on laskettava yhteen 1:ksi, ei ole tarpeen laskea nimenomaisesti arvoa toiselle elementille.
Softmax-funktio vs. Argmax-funktio
Softmax-funktio kehitettiin tasoitetuksi ja differentioituvaksi vaihtoehdoksi argmax-funktiolle. Tästä johtuen softmax-funktiota kutsutaan joskus selkeämmin softargmax-funktioksi. Kuten softmax, argmax-funktio toimii vektorilla ja muuntaa jokaisen arvon nollaksi lukuun ottamatta maksimiarvoa, jolloin se palauttaa arvon 1.
Koneoppimismallin kouluttaminen softmaxilla on yleistä, mutta softmax-kerros vaihdetaan argmax-kerrokseen, kun mallia käytetään päättelyyn.
Koulutuksessa on pakko käyttää softamaxia, koska softamax on differentioitavissa ja sen avulla voidaan optimoida kustannusfunktiota. Joskus kuitenkin päättelyä varten tarvitsemme mallia vain antamaan yhden ennustetun arvon todennäköisyyden sijaan, jolloin argmax on hyödyllisempi.
Kun maksimiarvoja on useita, on tavallista, että argmax palauttaa 1/Nmax, eli normalisoidun murtoluvun, niin että ulostulon alkioiden summa pysyy 1:nä kuten softmaxilla. Vaihtoehtoinen määritelmä on palauttaa 1 kaikille maksimiarvoille tai vain ensimmäiselle arvolle.
Softmax-funktion laskeminen vs. Argmax-funktio
Kuvitellaanpa jälleen tulovektori . Laskemme softmaxin kuten ennenkin. Suurin arvo on ensimmäinen alkio, joten argmax palauttaa 1 ensimmäiselle alkiolle ja 0 muille alkioille.
Tästä esimerkistä käy ilmi, että softmax käyttäytyy kuin argmaxin ”pehmeä” approksimaatio: se palauttaa ei-kokonaislukuisia arvoja 0:n ja 1:n välillä, jotka voidaan tulkita todennäköisyyksiksi. Jos käytämme koneoppimismallia päättelyyn sen sijaan, että kouluttaisimme sitä, saatamme haluta järjestelmältä kokonaislukulähdön, joka edustaa kovaa päätöstä, jonka teemme mallin lähdön avulla, kuten kasvaimen hoitamista, käyttäjän todentamista tai asiakirjan liittämistä aiheeseen. Argmax-arvojen kanssa on tässä mielessä helpompi työskennellä, ja niitä voidaan käyttää sekoitusmatriisin muodostamiseen ja luokittelijan tarkkuuden ja palautuksen laskemiseen.
Softmax-funktion sovelluksia
Softmax-funktio neuroverkoissa
Ensimmäinen käyttötapa softmax-funktiolle olisi neuroverkon lopussa. Tarkastellaan konvoluutiohermoverkkoa, joka tunnistaa, onko kuva kissa vai koira. Huomaa, että kuvan on oltava joko kissa tai koira, eikä se voi olla molempia, joten nämä kaksi luokkaa sulkevat toisensa pois. Tyypillisesti tämän verkon viimeinen täysin kytketty kerros tuottaisi sellaisia arvoja, joita ei ole normalisoitu eikä niitä voida tulkita todennäköisyyksiksi. Jos verkkoon lisätään softmax-kerros, luvut on mahdollista kääntää todennäköisyysjakaumaksi. Tämä tarkoittaa, että tuotos voidaan näyttää käyttäjälle, esimerkiksi sovellus on 95-prosenttisen varma, että tämä on kissa. Se tarkoittaa myös sitä, että tuotos voidaan syöttää muihin koneoppimisalgoritmeihin ilman, että sitä tarvitsee normalisoida, koska se on taatusti 0:n ja 1:n välissä.
Huomaa, että jos verkko luokittelee kuvia koiriin ja kissoihin ja jos se on konfiguroitu siten, että sillä on vain kaksi tuotosluokkaa, sen on pakko luokitella jokainen kuva joko koiraksi tai kissaksi, vaikka se ei olisi kumpaakaan. Jos meidän on sallittava tämä mahdollisuus, meidän on konfiguroitava neuroverkko uudelleen siten, että sillä on kolmas ulostulo sekalaista varten.
Esimerkki Softmaxin laskemisesta neuroverkossa
Softmax on olennainen, kun koulutamme neuroverkkoa. Kuvitellaan, että meillä on konvoluutiohermoverkko, joka oppii erottamaan kissat ja koirat toisistaan. Asetamme kissan luokaksi 1 ja koiran luokaksi 2.
Todellisuudessa, kun syötämme verkkoon kuvan kissasta, verkko tulostaisi vektorin . Kun syötämme koiran kuvan, haluamme tulosteen .
Neuraaliverkon kuvankäsittely päättyy viimeiseen täysin kytkettyyn kerrokseen. Tämä kerros antaa tulokseksi kaksi pistemäärää kissalle ja koiralle, jotka eivät ole todennäköisyyksiä. Tavallisesti neuroverkon loppuun lisätään softmax-kerros, joka muuntaa ulostulon todennäköisyysjakaumaksi.Koulutuksen alussa neuroverkon painot määritetään satunnaisesti. Kissan kuva siis kulkee läpi ja muuttuu kuvankäsittelyvaiheissa pisteiksi . Siirtämällä softmax-funktioon saamme alkutodennäköisyydet
Tämä ei selvästikään ole toivottavaa. Täydellinen verkko tulostaisi tässä tapauksessa .
Voidaan muotoilla verkkomme häviöfunktio, joka kvantifioi, kuinka kaukana verkon tulostustodennäköisyydet ovat halutuista arvoista. Mitä pienempi häviöfunktio on, sitä lähempänä lähtövektori on oikeaa luokkaa. Yleisin tappiofunktio tässä tapauksessa on risti-entropiahäviö, joka tässä tapauksessa tulee:
Koska softmax on jatkuvasti differentioituva funktio, on mahdollista laskea tappiofunktion derivaatta verkon jokaisen painon suhteen jokaiselle harjoitusjoukon kuvalle.
Tämän ominaisuuden ansiosta voimme säätää verkon painoja pienentääksemme häviöfunktiota ja saadaksemme verkon ulostulon lähemmäs haluttuja arvoja ja parantaaksemme verkon tarkkuutta.Useiden harjoitusiteraatioiden jälkeen päivitämme verkon painot. Nyt kun sama kissakuva syötetään verkkoon, täysin kytketty kerros antaa tulokseksi pistevektorin . Kun tämä asetetaan jälleen softmax-funktion läpi, saamme tulostustodennäköisyydet:
Tämä on selvästi parempi tulos ja lähempänä haluttua tulosta . Laskemalla uudelleen risti-entropian tappio,
huomaamme, että tappio on pienentynyt, mikä osoittaa, että neuroverkko on parantunut.
Menetelmä, jossa tappiofunktio differentioidaan sen selvittämiseksi, miten verkon painoja tulisi säätää, ei olisi ollut mahdollinen, jos olisimme käyttäneet argmax-funktiota, koska se ei ole differentioituva. Differentioituvuuden ominaisuus tekee softmax-funktiosta käyttökelpoisen neuroverkkojen kouluttamisessa.
Softmax-funktio vahvistusoppimisessa
Vahvistusoppimisessa softmax-funktiota käytetään myös silloin, kun mallin on päätettävä, tekeekö se tällä hetkellä tiedossa olevan toimenpiteen, jolla tiedetään olevan suurin todennäköisyys palkkioon, jota kutsutaan
hyödyntämiseksi (exploitation), vai ottaako se tutkimusaskeleen, jota kutsutaan eksploraatioksi.
Esimerkki Softmaxin laskemisesta vahvistusoppimisessa
Kuvitellaan, että koulutamme vahvistusoppimisen mallia pelaamaan pokeria ihmistä vastaan. Meidän on määritettävä lämpötila τ, joka määrittää, kuinka todennäköisesti järjestelmä tekee satunnaisia eksploratiivisia toimia. Järjestelmällä on tällä hetkellä kaksi vaihtoehtoa: pelata ässää tai kuningasta. Sen perusteella, mitä se on tähän mennessä oppinut, ässän pelaaminen on 80 prosentin todennäköisyydellä voittostrategia nykyisessä tilanteessa. Jos oletetaan, että muita vaihtoehtoja ei ole, kuninkaan pelaaminen on 20 prosentin todennäköisyydellä voittostrategia. Olemme määrittäneet lämpötilaksi τ 2.
Vahvistusoppimisjärjestelmä käyttää softmax-funktiota saadakseen ässän ja kuninkaan pelaamisen todennäköisyyden. Vahvistusoppimisessa käytettävä modifioitu softmax-kaava on seuraava:
Vahvistusoppimisen softmax-kaavan symbolit selitetty
Todennäköisyys sille, että malli ryhtyy nyt toimenpiteeseen a ajankohtana t. | |
Toimenpide, jonka tekemistä harkitsemme. Esimerkiksi pelata kuningas tai ässä. | |
Systeemin lämpötila, joka on määritetty hyperparametrina. |
|
Tämänhetkinen paras arvio onnistumisen todennäköisyydestä, jos ryhdymme toimenpiteeseen i, sen perusteella, mitä malli on tähän mennessä oppinut. |
Sijoittamalla arvomme yhtälöön saadaan:
Tämä tarkoittaa, että vaikka malli on tällä hetkellä 80-prosenttisen varma siitä, että ässä on oikea strategia, se pelaa kyseistä korttia vain 57-prosenttisesti. Tämä johtuu siitä, että vahvistusoppimisessa annamme arvon sekä tutkimukselle (uusien strategioiden testaamiselle) että hyödyntämiselle (tunnettujen strategioiden käyttämiselle). Jos päätämme nostaa lämpötilaa, mallista tulee ”impulsiivisempi”: se ottaa todennäköisemmin tutkivia askeleita sen sijaan, että se pelaisi aina voittavaa strategiaa.
Softmaxin historia
Softmax-funktion ensimmäinen tunnettu käyttö ajoittuu ennen koneoppimista. Softmax-funktio on itse asiassa lainattu fysiikasta ja tilastomekaniikasta, jossa se tunnetaan nimellä Boltzmannin jakauma tai Gibbsin jakauma. Sen muotoili itävaltalainen fyysikko ja filosofi Ludwig Boltzmann vuonna 1868.
Boltzmann tutki termisessä tasapainossa olevien kaasujen tilastollista mekaniikkaa. Hän havaitsi, että Boltzmannin jakauma voi kuvata todennäköisyyttä löytää systeemi tietyssä tilassa, kun otetaan huomioon kyseisen tilan energia ja systeemin lämpötila. Hänen versionsa kaavasta oli samanlainen kuin se, jota käytetään vahvistusoppimisessa. Parametria τ kutsutaankin vahvistusoppimisen alalla lämpötilaksi kunnianosoituksena Boltzmannille.
Vuonna 1902 yhdysvaltalainen fyysikko ja kemisti Josiah Willard Gibbs popularisoi Boltzmannin jakauman, kun hän käytti sitä luodakseen perustan termodynamiikalle ja entropian määritelmälleen. Se muodostaa myös perustan spektroskopialle eli materiaalien analysoinnille tarkastelemalla valoa, jota ne absorboivat ja heijastavat.
Robert Duncan Luce ehdotti vuonna 1959 kirjassaan Individual Choice Behavior (yksilöllinen valintakäyttäytyminen) softmax-funktion käyttöä vahvistusoppimiseen: A Theoretical Analysis. Lopulta vuonna 1989 John S. Bridle ehdotti, että argmax tulisi feedforward-neuraaliverkoissa korvata softmax-funktiolla, koska se ”säilyttää syöttöarvojensa arvojärjestyksen ja on erilaistuva yleistys ’voittaja vie kaiken’ -operaatiolle, jossa valitaan suurin arvo”. Viime vuosina, kun neuroverkot ovat yleistyneet, softmax on tullut tunnetuksi näiden ominaisuuksien ansiosta.