Bayesiansk programmering är ett formellt system och metodik för att definiera probabilistiska modeller och lösa problem när inte all nödvändig information är tillgänglig.
Edwin Thompson Jaynes föreslog att man skulle betrakta sannolikhet som ett alternativ och en förlängning av logik för rationella resonemang med ofullständig och osäker information. I sin framträdande bok The Theory of Probability: The Logic of Science [1] utvecklade han denna teori och föreslog vad han kallade en "robot", som inte var en fysisk anordning, utan en inferensmaskin som automatiserar sannolikhetsresonemang - något i stil med en Prolog för en teoris sannolikheter istället för logik. Bayesiansk programmering [2] är en formell och konkret implementering av denna "robot".
Bayesiansk programmering kan också ses som ett formellt algebraiskt system för att specificera grafmodeller , som till exempel Bayesianska nätverk , dynamiska Bayesianska nätverk Kalman-filter eller dolda Markov-modeller . Faktum är att Bayesiansk programmering generaliserar Bayesianska nätverk och har en uttryckskraft som motsvarar faktorgrafer .
Det Bayesianska programmet är ett sätt att specificera en familj av sannolikhetsfördelningar.
Följande är byggstenarna i ett Bayesian-program:
Beskrivningen specificerar en effektiv metod för att beräkna den gemensamma sannolikhetsfördelningen för en uppsättning variabler för en given uppsättning experimentella data och en viss definition av . Denna gemensamma fördelning betecknas som .
För att specificera förkunskaper måste programmeraren göra följande:
Låt uppsättningen innehålla delmängder, variablerna definieras som , som var och en motsvarar en av dessa delmängder. Varje variabel erhålls som en konjunktion av variabler som tillhör den -: e delmängden. En rekursiv tillämpning av Bayes sats leder till
Genom att tillämpa hypotesen om villkorligt oberoende kan vi göra ytterligare förenklingar. Den villkorliga oberoendehypotesen för en variabel definieras av valet av någon variabel bland variablerna som finns i konjunktionen . Betecknar med konjunktionen av de valda variablerna och tar
Vi får
Denna förenkling av en gemensam distribution som en produkt av enklare distributioner kallas kedjeregeluppdelning
Detta säkerställer att varje variabel visas till vänster om den villkorliga raden minst en gång, vilket är ett nödvändigt och tillräckligt villkor för att skriva matematiskt korrekta beräkningar. .
FormulärVarje distribution som förekommer i produkten associeras sedan antingen med en parametrisk form (det vill säga en funktion ) eller med en fråga till ett annat Baysian-program .
När det är formen , är i allmänhet en vektor av parametrar som kan bero på antingen , eller , eller båda. När några av dessa parametrar beräknas med hjälp av datamängden sker träning.
En viktig egenskap hos Bayesiansk programmering är möjligheten att använda frågor till andra Bayesianska program som en del av definitionen av ett nytt Bayesianskt program. erhålls av utdata som produceras av ett annat Bayesian-program givet definitionen och data . Detta liknar att anropa en subrutin i klassisk programmering och ger ett enkelt sätt att bygga hierarkiska modeller .
Låt en beskrivning ges (dvs ), frågan erhålls genom att dela upp den i tre uppsättningar: de undersökta ( eng. sökte ) variablerna, kända ( eng. kända ) variabler och fria ( eng. fria ) variabler.
De tre variablerna och definieras som konjunktionen av variablerna som hör till dessa uppsättningar .
En fråga definieras som en uppsättning distributioner
sammansatt av "specificerade frågor" som en kardinal , där varje instansierad fråga är en fördelning
För en given gemensam fördelning är det alltid möjligt att beräkna vilken fråga som helst genom att tillämpa följande generella härledning:
där den första jämlikheten följer av marginaliseringsregeln , den andra följer av Bayes sats , och den tredje motsvarar den andra tillämpningen av marginalisering. Nämnaren visar sig vara en normaliseringsterm , och den kan ersättas med en konstant .
Teoretiskt låter detta dig lösa alla problem med Bayesiansk slutledning. Men i praktiken, i nästan alla fall, visar sig kostnaden för en uttömmande och korrekt beräkning vara för stor.
Genom att ersätta fogfördelningen med dess nedbrytning får vi
vilket vanligtvis är ett uttryck som är mycket enklare att beräkna, eftersom problemets dimension reduceras avsevärt genom nedbrytningen till produkten av fördelningar med lägre dimension.
Målet med Bayesian skräppostfiltrering är att eliminera skräppost.
Formuleringen av detta problem är ganska enkel. E-postmeddelanden bör klassificeras i en av två kategorier: icke-spam och spam. Den enda information som finns tillgänglig för att klassificera e-postmeddelanden är deras innehåll: uppsättningen av ord. Användningen av ord utan att ta hänsyn till deras ordningsföljd i en mening kallas ofta för påsemodellen .
Dessutom måste klassificeraren kunna anpassa sig till sin användare och lära sig av erfarenhet. Med utgångspunkt från standardinställningen måste klassificeraren ändra sina interna parametrar om användaren inte håller med sitt beslut. Den kommer därför att anpassa sig till användarens kriterier för att skilja mellan icke-spam och spam. Det kommer att förbättra sina egna resultat eftersom det möter fler och fler hemligstämplade e-postmeddelanden.
VariablerFöljande variabler krävs för att skriva detta program:
Dessa binära variabler sammanfattar all information om e-postmeddelandet.
NedbrytningOm vi börjar med definitionen av den gemensamma fördelningen och tillämpar Bayes sats rekursivt får vi:
Detta är ett exakt matematiskt uttryck.
Det kan radikalt förenklas genom att anta att sannolikheten för att ett ord förekommer i en given textkategori (spam eller inte) är oberoende av förekomsten av andra ord. Ett sådant antagande är naivt bayesianskt , och därför är detta spamfilter en naiv bayesiansk modell.
Till exempel kan en programmerare anta det
och så småningom få
Detta antagande är känt som det naiva Bayes-antagandet . Det är "naivt" i den meningen att oberoende mellan ord uppenbarligen inte är sant. Till exempel försummar den fullständigt det faktum att förekomsten av ett ordpar kan vara mer betydande än isolerade förekomster. Programmeraren kan dock acceptera denna hypotes och kan utveckla denna modell och dess tillhörande utdata för att testa hur tillförlitlig och effektiv den är.
Parametriska formerFör att kunna beräkna den gemensamma fördelningen måste programmeraren nu specificera fördelningarna som finns i nedbrytningen:
var är antalet förekomster av det e ordet i icke-spam-e-postmeddelanden och är det totala antalet icke-spam-e-postmeddelanden. På samma sätt är antalet förekomster av det e ordet i skräppostmeddelanden och är det totala antalet skräppostmeddelanden.
Identifieringformulär har ännu inte helt definierats eftersom parametrarna , , och ännu inte har värden.
Identifieringen av dessa parametrar kan göras antingen genom att batchbearbeta en grupp av sekretessbelagda e-postmeddelanden, eller genom att stegvis uppdatera parametrarna genom att klassificera e-postmeddelanden av användaren när de anländer.
Båda metoderna kan kombineras: systemet kan börja med initiala standardvärden för dessa parametrar som ges från en generaliserad databas, och sedan passar viss inkrementell inlärning klassificeraren för varje enskild användare.
FrågaFrågan som ställs till programmet är: "Vad är sannolikheten att denna text är spam, om man vet vilka ord som finns i den och vilka inte?" Det kan formaliseras som
som kan räknas ut så här:
I detta uttryck visar sig nämnaren vara normaliseringskonstanten . Det är inte nödvändigt att beräkna det för att ta reda på om vi har att göra med spam. Till exempel, ett enkelt knep för att beräkna ett förhållande:
Denna beräkning är snabbare och bekvämare eftersom den bara kräver produkter.
Bayesianskt programDet Bayesianska spamfilterprogrammet är helt definierat som
Bayesianska filter (ofta kallade rekursiv Bayesiansk uppskattning ) är generella probabilistiska modeller för processer som utvecklas över tiden. Många modeller är specialfall av detta allmänna tillvägagångssätt, såsom Kalman-filtret eller den dolda Markov-modellen .
VariablerNedbrytningen baseras på:
Valet av parametriska former är inte begränsat, och olika alternativ leder till olika välkända modeller: se Kalman-filter och Hidden Markov-modeller nedan.
FrågaEn vanlig fråga för dessa modeller är : vad är sannolikhetsfördelningen för tillståndet vid tidpunkten t givet observationerna från tid till t ?
Det mest allmänna fallet är Bayesisk filtrering, för vilket , vilket innebär att tillståndet för närvarande bestäms med kända tidigare observationer.
Det är dock också möjligt att extrapolera det framtida tillståndet med hjälp av tidigare observationer, eller att utföra utjämning för att rekonstruera det tidigare tillståndet från observationer gjorda antingen före eller efter en viss tidpunkt.
Mer avancerade frågor kan ställas, som visas nedan i avsnittet HMM.
Bayesiska filter har en mycket intressant rekursiv egenskap som i hög grad bidrar till deras attraktionskraft. kan enkelt beräknas med följande formel:
Ett annat intressant sätt att se på denna ekvation är att överväga förekomsten av två faser: förväntningsfasen och utvärderingsfasen:
De välkända Kalmanfiltren [3] är ett specialfall av Bayesianska filter.
De ges av följande Bayesianska program:
Med hjälp av dessa hypoteser och en rekursiv formel kan slutledningsproblemet för att besvara en vanlig fråga lösas analytiskt. Detta resulterar i en extremt effektiv algoritm, som förklarar populariteten för Kalman-filter och deras många vardagliga applikationer.
När det inte finns några uppenbara linjära övergångs- och observationsmodeller är det ofta fortfarande möjligt, genom att tillämpa en första ordningens Taylor-expansion , att betrakta dessa modeller som linjära lokalt. Denna generalisering brukar kallas det utökade Kalman-filtret .
Dold Markov-modellHidden Markov Models (HMMs) är ett annat mycket populärt specialfall av Kalman-filter.
De ges av följande Bayesianska program:
Vilken är den mest sannolika sekvensen av tillstånd som leder till det nuvarande tillståndet, givet tidigare observationer?
Svaret på denna fråga kan erhållas genom en mycket effektiv algoritm - Viterbi-algoritmen .
Den Baum-Welsh-algoritmen utvecklades också för HMM .
Under de senaste 15 åren har Bayesiansk programmering använts vid många universitet för att utveckla både tillämpningar inom robotik och modeller inom biovetenskap [4] .
RoboticsInom robotteknik har Bayesiansk programmering tillämpats inom autonom robotik [5] [6] [7] [8] [9] , robotiska CAD-system [10] , avancerade förarassistanssystem [11] , robotstyrning av manipulatorer , mobil robotik [12] [13] , interaktion mellan människa och robot [14] , interaktion mellan människor och fordon (bayesianska autonoma förarmodeller) [15] [16] [17] [18] [19] [20 ] , programmering och inlärning av avatarer i videospel [21] och strategispel i realtid ( AI ). [22]
LivsvetenskapInom biovetenskapen har Bayesiansk programmering använts inom synvetenskaperna för att rekonstruera form från rörelse [23] , för att modellera visuell-vestibulär interaktion [24] och för att studera saccadisk ögonrörelse [25] ; i uppfattningen och kontrollen av tal för att studera den tidiga assimileringen av tal [26] och uppkomsten av artikulära-akustiska system [27] ; för modellering av uppfattningen och kontrollen av handskriven text [28] .
Bayesiansk programmering har potentiella tillämpningar inom taligenkänning och -syntes , bildigenkänning och naturligt språkbehandling . Här används principerna för kompositabilitet (att bygga abstrakta representationer från delar), kausalitet (bygga komplex från delar) och lära sig att lära (använda tidigare erkända begrepp för att underlätta skapandet av nya begrepp) [29] .
Jämförelsen mellan probabilistiska tillvägagångssätt (inte bara Bayesiansk programmering) och möjlighetsteorier fortsätter att vara en diskussionsfråga.
Möjlighetsteorier som till exempel fuzzy mängder [30] , fuzzy logic [31] och möjlighetsteorin i sig [32] erbjuder olika alternativ för att modellera osäkerhet med hjälp av sannolikhet. De hävdar att sannolikheten är otillräcklig eller obekväm för att modellera vissa aspekter av ofullständig eller osäker kunskap.
Försvaret av den probabilistiska ansatsen bygger huvudsakligen på Cox' teorem , som består av fyra postulat angående rationellt resonemang under osäkerhet. Den visar att den enda matematiska modellen som uppfyller dessa postulat är sannolikhetsteorin. Beviset är att något annat tillvägagångssätt än sannolikhetsteori bryter mot ett av dessa postulat.
Målet med probabilistisk programmering är att kombinera sfären av klassiska programmeringsspråk med probabilistisk modellering (särskilt Bayesianska nätverk ) för att kunna hantera osäkerhet och samtidigt använda programmeringsspråkens uttryckskraft för att beskriva komplexa modeller.
Utökade klassiska programmeringsspråk inkluderar logiska språk, som föreslagits i Probabilistic Horn Abduction [ 33 ] , Independent Choice Logic [34] , PRISM [35] och ProbLog Prolog-språket .
Det kan också vara en förlängning av funktionella programmeringsspråk (i huvudsak LISP och Scheme ) som IBAL eller Church . De underliggande språken i tillägget kan också vara objektorienterade , som i fallet BLOG och FACTORIE, eller mer standard, som i CES och FIGARO Arkiverad 1 februari 2016 på Wayback Machine .
Syftet med Bayesiansk programmering är något annorlunda. Jaynes position "sannolikhet som logik" hävdar att sannolikhet är en förlängning och ett alternativ till logik, på vilken hela teorin om rationalitet, algoritmer och programmering kan byggas om [1] . Bayesiansk programmering letar inte efter ett sätt att utvidga klassiska språk, den försöker ersätta dem med ett nytt förhållningssätt till sannolikhetsbaserad programmering som tar hänsyn till ofullständighet och osäkerhet.
En exakt jämförelse av semantiken och uttryckskraften hos Bayesiansk och probabilistisk programmering är fortfarande en öppen fråga.