Programarea bayesiană este un sistem formal și o metodologie pentru definirea modelelor probabilistice și rezolvarea problemelor atunci când nu sunt disponibile toate informațiile necesare.
Edwin Thompson Jaynes a propus să considere probabilitatea ca o alternativă și extensie a logicii pentru raționamentul rațional cu informații incomplete și incerte. În cartea sa fundamentală The Theory of Probability: The Logic of Science [1] , el a dezvoltat această teorie și a propus ceea ce el a numit „robot”, care nu era un dispozitiv fizic, ci o mașină de inferență care automatizează raționamentul probabilistic - ceva de genul unui Prolog pentru o teorie probabilități în loc de logică. Programarea bayesiană [2] este o implementare formală și concretă a acestui „robot”.
Programarea bayesiană poate fi gândită și ca un sistem algebric formal pentru specificarea modelelor de graf , cum ar fi, de exemplu, rețele bayesiene , rețele bayesiene dinamice filtre Kalman sau modele Markov ascunse . Într-adevăr, programarea bayesiană generalizează rețelele bayesiene și are o putere expresivă echivalentă cu graficele factorilor .
Programul bayesian este un mijloc de specificare a unei familii de distribuții de probabilitate.
Următoarele sunt elementele de bază ale unui program bayesian:
Descrierea specifică o metodă eficientă pentru calcularea distribuției comune de probabilitate a unui set de variabile pentru un anumit set de date experimentale și o definiție a . Această distribuție comună se notează ca .
Pentru a specifica cunoștințele anterioare , programatorul trebuie să facă următoarele:
Fie ca setul să conțină subseturi, variabilele sunt definite ca , fiecare dintre ele corespunde uneia dintre aceste subseturi. Fiecare variabilă se obține ca o conjuncție de variabile aparținând celui de-al -lea submulțime. O aplicare recursivă a teoremei lui Bayes duce la
Aplicarea ipotezei independenței condiționate ne permite să facem simplificări suplimentare. Ipoteza de independență condiționată pentru o variabilă este definită prin alegerea unei variabile dintre variabilele prezente în conjuncție . Notând prin conjuncția variabilelor alese și luând
Primim
Această simplificare a unei distribuții comune ca produs al distribuțiilor mai simple se numește descompunere a regulilor în lanț
Acest lucru asigură că fiecare variabilă apare în stânga liniei condiționale cel puțin o dată, ceea ce este o condiție necesară și suficientă pentru a scrie calcule corecte din punct de vedere matematic. .
FormulareFiecare distribuție care apare în produs este apoi asociată fie cu o formă parametrică (adică o funcție ), fie cu o întrebare către un alt program baysian .
Când este forma , este, în general, un vector de parametri care pot depinde fie de , fie de , sau de ambele. Când unii dintre acești parametri sunt calculați folosind setul de date , are loc antrenamentul.
O caracteristică importantă a programării bayesiene este capacitatea de a folosi întrebări pentru alte programe bayesiene ca parte a definiției unui nou program bayesian. se obține prin rezultatul produs de un alt program bayesian având în vedere definiția și datele . Acest lucru este similar cu apelarea unei subrutine în programarea clasică și oferă o modalitate ușoară de a construi modele ierarhice .
Să fie dată o descriere (adică ), întrebarea se obține împărțind-o în trei seturi: variabilele investigate ( ing. căutate ), variabilele cunoscute ( ing. cunoscute ) și variabilele libere ( ing. libere ).
Cele trei variabile și sunt definite ca conjuncția variabilelor aparținând acestor mulțimi.
O întrebare este definită ca un set de distribuții
compus din „întrebări specificate” ca un cardinal , unde fiecare întrebare instanțiată este o distribuție
Pentru o distribuție comună dată , este întotdeauna posibil să se calculeze orice întrebare aplicând următoarea derivație generală:
unde prima egalitate rezultă din regula marginalizării , a doua rezultă din teorema lui Bayes , iar a treia corespunde celei de-a doua aplicații a marginalizării. Numitorul se dovedește a fi un termen de normalizare și poate fi înlocuit cu o constantă .
Teoretic, acest lucru vă permite să rezolvați orice problemă de inferență bayesiană. Cu toate acestea, în practică, în aproape toate cazurile, costul unui calcul exhaustiv și precis se dovedește a fi prea mare.
Înlocuind distribuția comună cu descompunerea ei, obținem
care este de obicei o expresie mult mai simplu de calculat, deoarece dimensiunea problemei este redusă semnificativ prin descompunerea în produsul distribuțiilor de dimensiune inferioară.
Scopul filtrării spam-ului Bayesian este de a elimina e-mailurile nedorite.
Formularea acestei probleme este destul de simplă. E-mailurile trebuie clasificate în una din două categorii: non-spam și spam. Singura informație disponibilă pentru a clasifica e-mailurile este conținutul acestora: setul de cuvinte. Utilizarea cuvintelor fără a ține cont de ordinea lor într-o propoziție este adesea denumită modelul sacului de cuvinte .
În plus, clasificatorul trebuie să fie capabil să se adapteze utilizatorului său și să învețe din experiență. Pornind de la setarea inițială standard, clasificatorul trebuie să-și modifice parametrii interni dacă utilizatorul nu este de acord cu decizia sa. Prin urmare, se va adapta criteriilor utilizatorului pentru a face distincția între non-spam și spam. Își va îmbunătăți propriile rezultate pe măsură ce întâlnește tot mai multe e-mailuri clasificate.
VariabileUrmătoarele variabile sunt necesare pentru a scrie acest program:
Aceste variabile binare rezumă toate informațiile despre e-mail.
DescompunereÎncepând cu definirea distribuției comune și aplicând recursiv teorema lui Bayes , obținem:
Aceasta este o expresie matematică exactă.
Poate fi simplificat radical presupunând că probabilitatea ca un cuvânt să apară într-o anumită categorie de text (spam sau nu) este independentă de apariția altor cuvinte. O astfel de presupunere este naiv bayesian și, prin urmare, acest filtru de spam este un model bayesian naiv .
De exemplu, un programator ar putea presupune asta
și până la urmă obține
Această ipoteză este cunoscută sub numele de ipoteza Naive Bayes . Este „naiv” în sensul că independența dintre cuvinte nu este, evident, adevărată. De exemplu, neglijează complet faptul că apariția unei perechi de cuvinte poate fi mai semnificativă decât aparițiile izolate. Cu toate acestea, programatorul poate accepta această ipoteză și poate dezvolta acest model și rezultatul asociat pentru a testa cât de fiabil și eficient este.
Forme parametricePentru a putea calcula distribuția comună, programatorul trebuie să specifice acum distribuțiile prezente în descompunere:
unde este numărul de apariții ale celui de-al treilea cuvânt în e-mailurile non-spam și este numărul total de e-mailuri non-spam. În mod similar, este numărul de apariții ale celui de-al treilea cuvânt în e-mailurile spam și este numărul total de e-mailuri spam.
Identificareformele nu au fost încă complet definite deoarece parametrii , , și nu au încă valori.
Identificarea acestor parametri se poate face fie prin procesarea în lot a unui grup de e-mailuri clasificate, fie prin actualizarea progresivă a parametrilor prin clasificarea e-mailurilor de către utilizator pe măsură ce sosesc.
Ambele metode pot fi combinate: sistemul poate începe cu valorile implicite inițiale ale acestor parametri date dintr-o bază de date generalizată, iar apoi o anumită învățare incrementală se potrivește clasificatorului pentru fiecare utilizator individual.
ÎntrebareÎntrebarea care i se pune programului este: „care este probabilitatea ca acest text să fie spam, dacă se știe ce cuvinte sunt prezente în el și care nu?” Poate fi oficializat ca
care se poate calcula astfel:
În această expresie, numitorul se dovedește a fi constanta de normalizare . Nu este necesar să-l calculăm pentru a afla dacă avem de-a face cu spam. De exemplu, un truc simplu pentru a calcula un raport:
Acest calcul este mai rapid și mai convenabil deoarece necesită doar produse.
program bayesianProgramul Bayesian de filtrare a spamului este complet definit ca
Filtrele bayesiene (deseori denumite estimare Bayesiană recursivă ) sunt modele probabilistice generale pentru procese care se desfășoară în timp. Numeroase modele sunt cazuri speciale ale acestei abordări generale, cum ar fi filtrul Kalman sau modelul Markov ascuns .
VariabileDescompunerea se bazează pe:
Alegerea formelor parametrice nu este limitată, iar opțiunile diferite duc la diferite modele binecunoscute: vezi mai jos filtrele Kalman și modelele Hidden Markov.
ÎntrebareO întrebare comună pentru aceste modele este : care este distribuția de probabilitate a stării la momentul t având în vedere observațiile de la timp la t ?
Cel mai general caz este filtrarea bayesiană, pentru care , ceea ce înseamnă că starea la momentul actual este determinată cu observații anterioare cunoscute.
Cu toate acestea, este, de asemenea, posibil să se extrapoleze starea viitoare folosind observații din trecut sau să se efectueze netezire pentru a reconstrui starea trecută din observațiile făcute fie înainte, fie după un anumit moment în timp.
Pot fi adresate întrebări mai avansate, așa cum se arată mai jos în secțiunea HMM.
Filtrele bayesiene au o proprietate recursivă foarte interesantă care contribuie foarte mult la atractivitatea lor. poate fi calculat simplu folosind următoarea formulă:
Un alt mod interesant de a privi această ecuație este să luăm în considerare existența a două faze: faza de anticipare și faza de evaluare:
Cunoscutele filtre Kalman [3] sunt un caz special de filtre bayesiene.
Ele sunt date de următorul program bayesian:
Folosind aceste ipoteze și o formulă recursivă, problema de inferență pentru a răspunde la o întrebare comună poate fi rezolvată analitic. Acest lucru are ca rezultat un algoritm extrem de eficient, care explică popularitatea filtrelor Kalman și numeroasele lor aplicații de zi cu zi.
Atunci când nu există modele evidente de tranziție și observație liniare, este adesea posibil, prin aplicarea unei expansiuni Taylor de ordinul întâi , să se considere aceste modele ca fiind liniare local. Această generalizare este de obicei numită filtru Kalman extins .
Modelul Markov ascunsModelele Markov ascunse (HMM) sunt un alt caz special foarte popular de filtre Kalman.
Ele sunt date de următorul program bayesian:
Care este cea mai probabilă secvență de stări care duc la starea actuală, având în vedere observațiile din trecut?
Raspunsul la aceasta intrebare poate fi obtinut printr-un algoritm foarte eficient - algoritmul Viterbi .
De asemenea, algoritmul Baum-Welsh a fost dezvoltat pentru HMM .
În ultimii 15 ani, programarea bayesiană a fost aplicată în multe universități pentru a dezvolta atât aplicații în robotică , cât și modele în științele vieții [4] .
RoboticăÎn robotică, programarea bayesiană a fost aplicată în robotica autonomă [5] [6] [7] [8] [9] , sisteme CAD robotizate [10] , sisteme avansate de asistență a șoferului [11] , control robotic al manipulatoarelor , robotică mobilă [12] [13] , interacțiune om-robot [14] , interacțiune om-vehicul (modele Bayesian de șofer autonom) [15] [16] [17] [18] [19] [20 ] , programarea și învățarea avatarurilor în jocuri video [21] și jocuri de strategie în timp real ( AI ). [22]
Științe ale viețiiÎn științele vieții, programarea bayesiană a fost folosită în științele vederii pentru a reconstrui forma din mișcare [23] , pentru a modela interacțiunea vizual-vestibulară [24] , și pentru a studia mișcarea sacadică a ochiului [25] ; în percepția și controlul vorbirii pentru a studia asimilarea timpurie a vorbirii [26] și apariția sistemelor articularo-acustice [27] ; pentru modelarea percepției și controlului textului scris de mână [28] .
Programarea bayesiană are aplicații potențiale în recunoașterea și sinteza vorbirii , recunoașterea imaginilor și procesarea limbajului natural . Aici folosește principiile composabilitatii (construirea reprezentărilor abstracte din părți), cauzalității (construirea complexului din părți) și învățarea de a învăța (folosind concepte recunoscute anterior pentru a facilita crearea de noi concepte) [29] .
Comparația dintre abordările probabilistice (nu doar programarea bayesiană) și teoriile posibilităților continuă să fie o chestiune de dezbatere.
Teoriile posibilităților, cum ar fi, de exemplu, mulțimile fuzzy [30] , logica fuzzy [31] și teoria posibilității în sine [32] oferă diverse alternative pentru modelarea incertitudinii folosind probabilitatea. Ei susțin că probabilitatea este insuficientă sau incomodă pentru modelarea anumitor aspecte ale cunoștințelor incomplete sau incerte.
Apărarea abordării probabilistice se bazează în principal pe teorema lui Cox , care constă din patru postulate privind raționamentul rațional în condiții de incertitudine. Ea arată că singurul model matematic care satisface aceste postulate este teoria probabilității. Dovada este că orice altă abordare decât teoria probabilității încalcă unul dintre aceste postulate.
Scopul programării probabilistice este de a combina domeniul limbajelor de programare clasice cu modelarea probabilistică (în special rețelele bayesiene ) pentru a putea face față incertitudinii și, în același timp, a utiliza puterea expresivă a limbajelor de programare pentru a descrie complexe. modele.
Limbajele de programare clasice extinse includ limbaje logice, așa cum sunt propuse în Probabilistic Horn Abduction [ 33 ] , Independent Choice Logic [34] , PRISM [35] și ProbLog limbajului Prolog .
Poate fi, de asemenea, o extensie a limbajelor de programare funcționale (în esență LISP și Scheme ) precum IBAL sau Church . Limbile de bază ale extensiei pot fi, de asemenea , orientate pe obiecte , ca în cazul BLOG și FACTORIE, sau mai standard, ca în CES și FIGARO Arhivat 1 februarie 2016 la Wayback Machine .
Scopul programării bayesiene este oarecum diferit. Poziția lui Jaynes „probabilitatea ca logică” susține că probabilitatea este o extensie și o alternativă a logicii, pe deasupra căreia poate fi reconstruită întreaga teorie a raționalității, a algoritmilor și a programării [1] . Programarea bayesiană nu caută o modalitate de a extinde limbajele clasice, ea caută să le înlocuiască cu o nouă abordare a programării bazate pe probabilități care ține cont de incompletitudinea și incertitudinea.
O comparație exactă a semanticii și puterii expresive a programării bayesiene și probabilistice este încă o întrebare deschisă.