Probabilistisk mjuk logik
Utvecklare | LINQS Lab |
---|---|
Initial release | 23 september 2011 |
Stabil frisättning | 2.2.2 / 20 maj 2020
|
Förvar | |
Skrivet i | Java |
Plattform | Linux , macOS , Windows |
Typ | Machine Learning , Statistisk relationsinlärning |
Licens | Apache-licens 2.0 |
Hemsida |
Probabilistic Soft Logic (PSL) är ett statistiskt relationellt lärande (SRL) ramverk för modellering av probabilistiska och relationella domäner. Det är tillämpligt på en mängd olika maskininlärningsproblem , såsom kollektiv klassificering , enhetsupplösning , länkförutsägelse och ontologianpassning . PSL kombinerar två verktyg: första ordningens logik , med dess förmåga att kortfattat representera komplexa fenomen, och probabilistiska grafiska modeller , som fångar den osäkerhet och ofullständighet som är inneboende i verklig kunskap. Mer specifikt använder PSL "mjuk" logik som sin logiska komponent och Markov slumpmässiga fält som sin statistiska modell. PSL tillhandahåller sofistikerade slutledningstekniker för att hitta det mest sannolika svaret (dvs. det tillståndet a posteriori (MAP)) . "Mjukningen" av de logiska formlerna gör slutledning till en polynomisk tidsoperation snarare än en NP-hård operation.
Beskrivning
SRL - gemenskapen har introducerat flera tillvägagångssätt som kombinerar grafiska modeller och första ordningens logik för att möjliggöra utvecklingen av komplexa probabilistiska modeller med relationsstrukturer. Ett anmärkningsvärt exempel på sådana tillvägagångssätt är Markov logiska nätverk ( MLN). Liksom MLN är PSL ett modelleringsspråk (med en åtföljande implementering) för inlärning och förutsägelse i relationsdomäner. Till skillnad från MLN:er använder PSL mjuka sanningsvärden för predikat i ett intervall mellan [0,1]. Detta gör att den underliggande slutsatsen snabbt kan lösas som ett konvext optimeringsproblem. Detta är användbart i problem som kollektiv klassificering , länkförutsägelse , modellering av sociala nätverk och objektidentifiering/enhetsupplösning/postlänkning .
Probabilistic Soft Logic släpptes första gången 2009 av Lise Getoor och Matthias Broecheler. Denna första version fokuserade mycket på resonemang om likheter mellan enheter. Senare versioner av PSL skulle fortfarande behålla förmågan att resonera om likheter, men generalisera språket för att vara mer uttrycksfullt.
Under 2017 publicerades en artikel i Journal of Machine Learning Research som beskriver PSL och den underliggande grafiska modellen tillsammans med lanseringen av en ny större version av PSL (2.0.0). De stora nya funktionerna i PSL 2.0.0 var en ny typ av regel som huvudsakligen användes för att specificera begränsningar och ett kommandoradsgränssnitt .
Syntax och semantik
Terminologi
- PSL-program — En samling regler, som var och en är en mall för en potential i en grafisk modell.
- Regel — Ett uttryck som relaterar till atomer. Regler kommer vanligtvis att ha formen av antingen en första ordningens logisk implikation eller en linjär kombination .
- Konstant — En sträng eller ett tal som representerar ett verkligt element i universum över vilket ett PSL-program representerar. Konstanter kan representera attribut eller hela enheter.
- Variabel — En identifierare som konstanter kan ersättas med.
- Term — Antingen en konstant eller en variabel.
- Predikat — En relation som definieras av ett unikt namn och ett antal argument som det accepterar.
- Atom — Ett predikat tillsammans med dess termargument.
- Ground Atom — En atom där alla argument är konstanter.
Syntax
En PSL-modell är sammansatt av en serie viktade regler och begränsningar. PSL stöder två typer av regler: logisk och aritmetisk.
Logiska regler är sammansatta av en implikation med endast en enda atom eller en konjunktion av atomer i kroppen och en enda atom eller en disjunktion av atomer i huvudet. Eftersom PSL använder mjuk logik ersätts hårda logiska operatorer med mjuka logiska operatorer Łukasiewicz . Ett exempel på ett logiskt regeluttryck är:
Liknande ( A , B ) & HasLabel ( A , X ) -> HasLabel ( B , X )
Denna regel kan tolkas som: Om A och B är lika och A har etiketten X, så finns det bevis för att B också har etiketten X.
Aritmetiska regler är relationer mellan två linjära kombinationer av atomer. Att begränsa varje sida till en linjär kombination säkerställer att den resulterande potentialen är konvex . Följande relationsoperatorer stöds: =
, <=
och >=
.
Liknande ( A , B ) = Liknande ( B , A )
Denna regel kodar för föreställningen att likhet är symmetrisk i denna modell.
En vanlig funktion hos aritmetiska regler är summeringsoperationen. Summeringsoperationen kan användas för att aggregera flera atomer. När den används ersätts atomen med summan av alla möjliga atomer där icke-summeringsvariablerna är fixerade. Summeringsvariabler görs genom att prefixet en variabel med ett +
. Fox exempel:
HasLabel ( A , + X ) = 1,0
Om de möjliga värdena för X är label1 , label2 och label3 , är ovanstående regel ekvivalent med:
HasLabel ( A , 'label1' ) + HasLabel ( A , 'label2' ) + HasLabel ( A , 'label3' ) = 1.0
Båda dessa regler tvingar summan av alla möjliga etiketter för en enhet att summera till 1,0. Den här typen av regel är särskilt användbar för kollektiva klassificeringsproblem , där endast en klass kan väljas.
Semantik
HL-MRF
Ett PSL-program definierar en familj av probabilistiska grafiska modeller som parametriseras av data. Närmare bestämt tillhör familjen av grafiska modeller som den definierar en speciell klass av Markov-slumpfält som kallas ett Hinge-Loss Markov Field (HL-MRF). En HL-MRF bestämmer en densitetsfunktion över en uppsättning kontinuerliga variabler med gemensam domän med bevisuppsättning , vikter och potentiella funktioner av formen där är en linjär funktion och . Den villkorliga fördelningen av givet de observerade data definieras som
Där . Denna densitet är en logaritmiskt konvex funktion , och därför är den vanliga slutledningsuppgiften i PSL att hitta en maximal a posteriori uppskattning av det gemensamma tillståndet för ett konvext problem. Detta gör att slutledning i PSL kan uppnås i polynomtid.
Öppna/stängda predikat -- stängt världsantagande
Predikat i PSL kan märkas som öppna eller stängda.
När ett predikat är stängt, gör PSL antagandet om sluten värld : alla predikat som inte uttryckligen tillhandahålls till PSL antas vara falska. Med andra ord, antagandet om sluten värld förutsätter att ett predikat som är delvis sant också är känt för att vara delvis sant. Till exempel, om vi hade följande konstanter i data för att representera personer: och följande konstant för filmer: , och vi försåg PSL med predikatdata och stängdes, då skulle PSL anta att även om denna data aldrig uttryckligen tillhandahölls till systemet.
Om ett predikat är märkt som öppet, så gör inte PSL antagandet om sluten värld. Istället kommer PSL att försöka kollektivt sluta sig till de oobserverade instanserna.
Grundstötning
Data används för att instansiera flera potentiella funktioner i en process som kallas jordning. De resulterande potentiella funktionerna används sedan för att definiera HL-MRF.
Jordningspredikat i PSL är processen att göra alla möjliga substitutioner av variablerna i varje predikat med de befintliga konstanterna i data, vilket resulterar i en samling markatomer, . Sedan görs alla möjliga substitutioner av grundatomerna för predikaten i reglerna för att skapa grundregler.
Var och en av grundreglerna tolkas som antingen potentialer eller hårda begränsningar i den inducerade HL-MRF. En logisk regel översätts som en kontinuerlig avslappning av booleska kopplingar med Łukasiewicz-logik . En grundlogisk regel omvandlas till dess disjunktiva normala form . Låt vara mängden index för variablerna som motsvarar atomer som inte är negerade, och likaså uppsättningen index som motsvarar atomer som förnekas, i disjunktivsatsen. Sedan mappar den logiska regeln till ojämlikheten:
Om den logiska regeln viktas med en vikt och exponentieras med , då
läggs till HL-MRF med viktparametern .
En aritmetisk regel manipuleras till och den resulterande potentialen har formen .
Gränssnitt
PSL är tillgängligt via tre olika språkgränssnitt : CLI , Java och Python . PSL:s kommandoradsgränssnitt (CLI) är det rekommenderade sättet att använda PSL. Den stöder alla funktioner som vanligtvis används i en reproducerbar form som inte kräver kompilering. Eftersom PSL är skrivet i Java är PSL Java-gränssnittet det mest expansiva och användare kan ringa direkt till kärnan av PSL. Java-gränssnittet är tillgängligt via Mavens centrallager. PSL Python-gränssnittet är tillgängligt via PyPi och använder pandas DataFrames för att skicka data mellan PSL och användaren.
PSL har tidigare tillhandahållit ett Groovy-gränssnitt. Den har fasats ut i 2.2.1-versionen av PSL och är planerad att tas bort i 2.3.0-versionen.
Exempel
LINQS-labbet, utvecklare av den officiella PSL-implementeringen, har en samling PSL-exempel. Dessa exempel täcker både syntetiska och verkliga datamängder och inkluderar exempel från akademiska publikationer som använder PSL. Nedan är ett leksaksexempel från detta förråd som kan användas för att sluta sig till relationer i ett socialt nätverk. Tillsammans med varje regel finns en kommentar som beskriver den motiverande intuitionen bakom påståendena.
/* Människor som bor på samma plats är mer benägna att känna varandra. */ 20 : Levde ( P1 , L ) & Levde ( P2 , L ) & ( P1 ! = P2 ) -> Vet ( P1 , P2 ) ^ 2 /* Personer som inte har bott på samma plats kommer sannolikt inte att veta varandra. */ 5 : Levde ( P1 , L1 ) & Levde ( P2 , L2 ) & ( P1 ! = P2 ) & ( L1 ! = L2 ) -> ! Vet ( P1 , P2 ) ^ 2 /* Två personer med liknande intressen är mer benägna att känna varandra. */ 10 : Gillar ( P1 , X ) & Gillar ( P2 , X ) & ( P1 ! = P2 ) -> Vet ( P1 , P2 ) ^ 2 /* Människor i samma kretsar tenderar att känna varandra (transitivitet). */ 5 : Vet ( P1 , P2 ) & Vet ( P2 , P3 ) & ( P1 ! = P3 ) -> Vet ( P1 , P3 ) ^ 2 /* Att känna varandra är symmetriskt. */ Vet ( P1 , P2 ) = Vet ( P2 , P1 ) . /* Antag som standard att två godtyckliga personer inte känner varandra (negativt föregående). */ 5 : ! Vet ( P1 , P2 ) ^ 2