Bayesovské programování je formální systém a metodologie pro definování pravděpodobnostních modelů a řešení problémů, když nejsou k dispozici všechny potřebné informace.
Edwin Thompson Jaynes navrhl zvážit pravděpodobnost jako alternativu a rozšíření logiky pro racionální uvažování s neúplnými a nejistými informacemi. Ve své přelomové knize The Theory of Probability: The Logic of Science [1] tuto teorii rozvinul a navrhl to, co nazýval „robot“, což nebylo fyzické zařízení, ale inferenční stroj, který automatizuje pravděpodobnostní uvažování – něco jako Prolog pro teorii pravděpodobnosti místo logiky. Bayesovské programování [2] je formální a konkrétní implementace tohoto „robota“.
Bayesovské programování lze také chápat jako formální algebraický systém pro specifikaci grafových modelů , jako jsou například Bayesovské sítě , dynamické Bayesovské sítě Kalmanovy filtry nebo skryté Markovovy modely . Bayesovské programování ve skutečnosti zobecňuje bayesovské sítě a má výrazovou sílu ekvivalentní faktorovým grafům .
Bayesovský program je prostředkem pro specifikaci rodiny rozdělení pravděpodobnosti.
Níže jsou uvedeny stavební kameny Bayesovského programu:
Popis specifikuje účinnou metodu pro výpočet společného rozdělení pravděpodobnosti množiny proměnných pro danou množinu experimentálních dat a určitou definici . Toto společné rozdělení se označuje jako .
Pro specifikaci předchozích znalostí musí programátor provést následující:
Nechť množina obsahuje podmnožiny, proměnné jsou definovány jako , z nichž každá odpovídá jedné z těchto podmnožin. Každá proměnná se získá jako spojení proměnných patřících do -té podmnožiny. Rekurzivní aplikace Bayesovy věty vede k
Použití hypotézy podmíněné nezávislosti nám umožňuje provést další zjednodušení. Hypotéza podmíněné nezávislosti pro proměnnou je definována výběrem nějaké proměnné mezi proměnnými přítomnými ve spojení . Označení konjunkcí vybraných proměnných a převzetí
Dostaneme
Toto zjednodušení společného rozdělení jako produktu jednodušších rozdělení se nazývá rozklad podle řetězového pravidla
Tím je zajištěno, že se každá proměnná objeví nalevo od podmíněného řádku alespoň jednou, což je nutná a postačující podmínka pro zápis matematicky správných výpočtů. .
FormulářeKaždá distribuce vyskytující se v produktu je pak spojena buď s parametrickou formou (tj. funkcí ), nebo s otázkou na jiný Baysovský program .
Když je to forma , je obecně vektor parametrů, které mohou záviset na buď , nebo , nebo obou. Když jsou některé z těchto parametrů vypočítány pomocí datové sady , dojde k trénování.
Důležitou vlastností bayesovského programování je možnost používat otázky k jiným bayesovským programům jako součást definice nového bayesovského programu. se získá výstupem vytvořeným jiným bayesovským programem daným definicí a daty . Je to podobné volání podprogramu v klasickém programování a poskytuje snadný způsob, jak vytvořit hierarchické modely .
Nechť je uveden popis (tj. ), otázku získáme rozdělením do tří množin: vyšetřované ( angl. hledané ) proměnné, známé ( angl. známé ) proměnné a volné ( angl. volné ) proměnné.
Tři proměnné , a jsou definovány jako spojení proměnných patřících do těchto sad.
Otázka je definována jako množina distribucí
složený ze "specifikovaných otázek" jako kardinál , kde každá vytvořená otázka je distribucí
Pro danou společnou distribuci je vždy možné vypočítat jakoukoli otázku použitím následující obecné derivace:
kde první rovnost vyplývá z pravidla marginalizace , druhá vyplývá z Bayesova teorému a třetí odpovídá druhé aplikaci marginalizace. Jmenovatel se ukáže jako normalizační člen a může být nahrazen konstantou .
Teoreticky vám to umožňuje vyřešit jakýkoli problém Bayesovské inference. V praxi se však téměř ve všech případech náklady na vyčerpávající a přesný výpočet ukazují jako příliš vysoké.
Nahrazením společného rozdělení jeho rozkladem získáme
což je obvykle výraz, který se počítá mnohem jednodušeji, protože dimenze problému je výrazně redukována rozkladem na součin distribucí nižší dimenze.
Cílem bayesovského filtrování spamu je eliminovat nevyžádané e-maily.
Formulace tohoto problému je poměrně jednoduchá. E-maily by měly být klasifikovány do jedné ze dvou kategorií: nespamové a nevyžádané. Jedinou informací dostupnou pro klasifikaci e-mailů je jejich obsah: sada slov. Použití slov bez zohlednění jejich pořadí ve větě se často nazývá model pytle slov .
Klasifikátor se navíc musí umět přizpůsobit svému uživateli a poučit se ze zkušeností. Počínaje standardním výchozím nastavením musí klasifikátor změnit své vnitřní parametry, pokud uživatel s jeho rozhodnutím nesouhlasí. Přizpůsobí se tedy kritériím uživatele pro rozlišení mezi nevyžádanou poštou a nevyžádanou poštou. Zlepší své vlastní výsledky, protože se bude setkávat se stále více utajovanými e-maily.
ProměnnéK napsání tohoto programu jsou nutné následující proměnné:
Tyto binární proměnné shrnují všechny informace o e-mailu.
RozkladPočínaje definicí společného rozdělení a rekurzivní aplikací Bayesova teorému dostaneme:
Toto je přesný matematický výraz.
Lze to radikálně zjednodušit za předpokladu, že pravděpodobnost výskytu slova v dané kategorii textu (spam nebo ne) je nezávislá na výskytu jiných slov. Takový předpoklad je naivní bayesovský , a proto je tento spamový filtr naivním bayesovským modelem.
To by například mohl předpokládat programátor
a nakonec získat
Tento předpoklad je známý jako naivní Bayesův předpoklad . Je to „naivní“ v tom smyslu, že nezávislost mezi slovy zjevně neplatí. Například zcela opomíjí skutečnost, že výskyt dvojice slov může být významnější než ojedinělé výskyty. Programátor však může tuto hypotézu přijmout a může vyvinout tento model a jeho související výstup, aby otestoval, jak je spolehlivý a účinný.
Parametrické tvaryAby mohl programátor vypočítat společné rozdělení, musí nyní specifikovat rozdělení přítomné v rozkladu:
kde je počet výskytů druhého slova v e-mailech, které nejsou spamem, a je celkový počet e-mailů, které nejsou spamem. Podobně je počet výskytů tohoto slova ve spamových e-mailech a je celkový počet spamových e-mailů.
Identifikaceformuláře ještě nebyly plně definovány, protože parametry , , a ještě nemají hodnoty.
Identifikaci těchto parametrů lze provést buď dávkovým zpracováním skupiny klasifikovaných e-mailů, nebo postupnou aktualizací parametrů klasifikací e-mailů uživatelem při jejich příchodu.
Obě metody lze kombinovat: systém může začít s výchozími výchozími hodnotami těchto parametrů danými ze zobecněné databáze a poté určité inkrementální učení vyhovuje klasifikátoru pro každého jednotlivého uživatele.
OtázkaOtázka, která je programu položena, zní: "Jaká je pravděpodobnost, že tento text je spam, pokud je známo, která slova se v něm vyskytují a která ne?" Lze to formalizovat jako
které lze vypočítat takto:
V tomto výrazu se ukáže, že jmenovatelem je normalizační konstanta . Není nutné jej počítat, abychom zjistili, zda máme co do činění se spamem. Například jednoduchý trik pro výpočet poměru:
Tento výpočet je rychlejší a pohodlnější, protože vyžaduje pouze produkty.
Bayesovský programBayesovský program filtru nevyžádané pošty je plně definován jako
Bayesovské filtry (často označované jako rekurzivní Bayesovský odhad ) jsou obecné pravděpodobnostní modely pro procesy, které se odvíjejí v průběhu času. Speciálními případy tohoto obecného přístupu jsou četné modely, jako je Kalmanův filtr nebo skrytý Markovův model .
ProměnnéRozklad je založen na:
Výběr parametrických forem není omezen a různé možnosti vedou k různým dobře známým modelům: viz Kalmanovy filtry a skryté Markovovy modely níže.
OtázkaSpolečná otázka pro tyto modely zní : jaké je rozdělení pravděpodobnosti stavu v čase t za předpokladu pozorování od času do t ?
Nejobecnějším případem je Bayesovské filtrování, pro které , což znamená, že současný stav je určen známými předchozími pozorováními.
Je však také možné extrapolovat budoucí stav pomocí minulých pozorování nebo provést vyhlazení pro rekonstrukci minulého stavu z pozorování provedených buď před, nebo po určitém časovém okamžiku.
Mohou být položeny pokročilejší otázky, jak je uvedeno níže v části HMM.
Bayesovské filtry mají velmi zajímavou rekurzivní vlastnost, která velkou měrou přispívá k jejich přitažlivosti. lze jednoduše vypočítat pomocí následujícího vzorce:
Dalším zajímavým způsobem, jak se podívat na tuto rovnici, je zvážit existenci dvou fází: fáze předvídání a fáze hodnocení:
Speciálním případem bayesovských filtrů jsou známé Kalmanovy filtry [3] .
Jsou dány následujícím Bayesovským programem:
Pomocí těchto hypotéz a rekurzivního vzorce lze problém odvození pro zodpovězení běžné otázky analyticky vyřešit. Výsledkem je extrémně účinný algoritmus, který vysvětluje popularitu Kalmanových filtrů a jejich mnoho každodenních aplikací.
Pokud neexistují žádné zjevné lineární přechodové a pozorovací modely, často je stále možné pomocí Taylorova rozšíření prvního řádu považovat tyto modely za lineární lokálně. Toto zobecnění se obvykle nazývá rozšířený Kalmanův filtr .
Skrytý Markovův modelDalším velmi oblíbeným speciálním případem Kalmanových filtrů jsou skryté Markovovy modely (HMM).
Jsou dány následujícím Bayesovským programem:
Jaká je nejpravděpodobnější posloupnost stavů vedoucí k současnému stavu, vezmeme-li v úvahu minulá pozorování?
Odpověď na tuto otázku lze získat pomocí velmi účinného algoritmu - Viterbiho algoritmu .
Pro HMM byl vyvinut také Baum-Welsh algoritmus .
Během posledních 15 let bylo bayesovské programování aplikováno na mnoha univerzitách k vývoji aplikací v robotice i modelů ve vědách o živé přírodě [4] .
RobotikaV robotice se Bayesovské programování uplatnilo v autonomní robotice [5] [6] [7] [8] [9] , robotických CAD systémech [10] , pokročilých asistenčních systémech řidiče [11] , robotickém řízení manipulátorů , mobilní robotika [12] [13] , interakce člověk-robot [14] , interakce člověk-vozidlo (Bayesovské modely autonomních řidičů) [15] [16] [17] [18] [19] [20 ] , programování a učení avatarů ve videohrách [21] a strategických hrách v reálném čase ( AI ). [22]
Vědy o živé příroděVe vědách o živé přírodě se Bayesovské programování používá ve vědách o vidění k rekonstrukci formy z pohybu [23] , k modelování vizuálně-vestibulární interakce [24] a ke studiu saccadického pohybu očí [25] ; ve vnímání a ovládání řeči studovat ranou asimilaci řeči [26] a vznik kloubně-akustických systémů [27] ; pro modelování vnímání a ovládání ručně psaného textu [28] .
Bayesovské programování má potenciální aplikace v rozpoznávání a syntéze řeči , rozpoznávání obrazu a zpracování přirozeného jazyka . Zde využívá principy komposability (budování abstraktních reprezentací z částí), kauzality (stavba komplexu z částí) a učení se učit (používání dříve uznávaných pojmů k usnadnění tvorby pojmů nových) [29] .
Srovnání mezi pravděpodobnostními přístupy (nejen Bayesovské programování) a teoriemi možností je nadále předmětem debaty.
Teorie možností, jako jsou například fuzzy množiny [30] , fuzzy logika [31] a samotná teorie možností [32] nabízejí různé alternativy pro modelování nejistoty pomocí pravděpodobnosti. Tvrdí, že pravděpodobnost je nedostatečná nebo nepohodlná pro modelování určitých aspektů neúplných nebo nejistých znalostí.
Obhajoba pravděpodobnostního přístupu je založena především na Coxově teorému , který se skládá ze čtyř postulátů týkajících se racionálního uvažování za nejistoty. Ukazuje, že jediný matematický model, který tyto postuláty splňuje, je teorie pravděpodobnosti. Důkazem je, že jakýkoli jiný přístup než teorie pravděpodobnosti porušuje jeden z těchto postulátů.
Cílem pravděpodobnostního programování je spojit oblast klasických programovacích jazyků s pravděpodobnostním modelováním (zejména bayesovské sítě ) tak, abychom se dokázali vypořádat s nejistotou a zároveň využili vyjadřovací sílu programovacích jazyků k popisu složitých modely.
Rozšířené klasické programovací jazyky zahrnují logické jazyky, jak je navrženo v Probabilistic Horn Abduction [ 33 ] , Independent Choice Logic [34] , PRISM [35] a ProbLog jazyka Prolog .
Může to být také rozšíření funkčních programovacích jazyků (v podstatě LISP a Scheme ), jako je IBAL nebo Church . Základní jazyky rozšíření mohou být také objektově orientované , jako v případě BLOG a FACTORIE, nebo standardnější, jako na CES a FIGARO Archived 1 February 2016 at Wayback Machine .
Účel bayesovského programování je poněkud odlišný. Jaynesova pozice „pravděpodobnosti jako logiky“ tvrdí, že pravděpodobnost je rozšířením a alternativou k logice, na jejímž vrcholu lze přestavět celou teorii racionality, algoritmů a programování [1] . Bayesovské programování nehledá způsob, jak rozšířit klasické jazyky, snaží se je nahradit novým přístupem k programování založenému na pravděpodobnosti, který bere v úvahu neúplnost a nejistotu.
Přesné srovnání sémantiky a vyjadřovací síly bayesovského a pravděpodobnostního programování je stále otevřenou otázkou.