Trosudbredelsesalgoritme , tillidsudbredelsesalgoritme , også sum-produktalgoritme , er en marginaliseringsalgoritme , der bruger tovejsmeddelelser, der videresender en graf , der bruges til at konkludere om grafiske probabilistiske modeller (såsom Bayesianske og Markov-netværk ). Foreslået af J. Pearl i 1982.
Overvej en funktion:
, hvorFor at få sandsynligheden skal du normalisere den:
Følgende opgaver overvejes:
Alle disse problemer er NP-komplette , så deres worst case kompleksitet stiger eksponentielt. Nogle specielle tilfælde kan dog løses hurtigere, hvilket er hvad denne algoritme gør .
Grafen , som algoritmen bruger, består af hjørner svarende til variable og knudepunkter svarende til funktioner. Funktioner er forbundet med variabler, som de afhænger af.
For eksempel funktioner
svarer til følgende graf:
To typer beskeder sendes i grafen: fra funktioner til variable og fra variable til funktioner.
Fra variabel til funktion :
(her er det sæt af hjørner, der støder op til i)
Fra funktion til variabel :
I dette tilfælde antages det tomme produkt at være lig med én. Ud fra disse formler kan det ses, at hvis et toppunkt kun har ét nabopunkt, så kan dets (vertex) besked beregnes uden at kende de indkommende beskeder.
Der er to tilgange, afhængigt af karakteren af den resulterende graf.
Lad os antage, at grafen er et træ . Startende fra bladene vil vi gradvist omgå alle hjørnerne og beregne meddelelser (i dette tilfælde gælder standardreglen for meddelelsesoverførsel: en meddelelse kan kun transmitteres, hvis den kan konstrueres fuldstændigt).
Derefter, i et antal trin svarende til diameteren af grafen , vil algoritmen afsluttes.
Hvis grafen ikke er et træ , så kan du starte med at få alle variable til at sende besked 1, og så ændre den når beskeder fra funktioner når dem.
Sådan en algoritme fungerer generelt forkert og udfører en masse unødvendigt arbejde, men den er stadig nyttig i praksis.
Når distributionen af beskeder er afsluttet, beregnes marginerne efter følgende formel:
Hvis du kun skal beregne normaliserede marginaler ( reelle sandsynligheder ), så kan du normalisere beskeder fra variable til funktioner på hvert trin:
,hvor er valgt så at
Fra en matematisk synsvinkel gennedbryder algoritmen den oprindelige dekomponering:
ind i arbejdet:
,hvor svarer til funktionsknuder, og til variable knudepunkter.
I første omgang, før beskeder og
Hver gang en besked kommer fra funktionen til variablen og genberegnes:
,Det er indlysende, at det samlede produkt ikke ændrer sig fra dette, og ved slutningen af transmissionen af meddelelser vil det blive marginalt .