Probabilistic Soft Logic (PSL) es un marco de aprendizaje relacional estadístico (SRL) para modelar dominios probabilísticos y relacionales. [2] Es aplicable a una variedad de problemas de aprendizaje automático , como clasificación colectiva , resolución de entidades , predicción de enlaces y alineación de ontologías . PSL combina dos herramientas: lógica de primer orden , con su capacidad para representar de manera sucinta fenómenos complejos, y modelos gráficos probabilísticos , que capturan la incertidumbre y la incompletitud inherentes al conocimiento del mundo real. Más específicamente, PSL utiliza lógica "blanda" como su componente lógico y campos aleatorios de Markov como su modelo estadístico. PSL proporciona técnicas de inferencia sofisticadas para encontrar la respuesta más probable (es decir, el estado máximo a posteriori (MAP) ). El "suavizado" de las fórmulas lógicas hace que la inferencia sea una operación de tiempo polinomial en lugar de una operación NP-hard .
La comunidad SRL ha introducido múltiples enfoques que combinan modelos gráficos y lógica de primer orden para permitir el desarrollo de modelos probabilísticos complejos con estructuras relacionales. Un ejemplo notable de tales enfoques son las redes lógicas de Markov (MLN). [3] Al igual que las MLN, PSL es un lenguaje de modelado (con una implementación complementaria [4] ) para aprender y predecir en dominios relacionales. A diferencia de las MLN, PSL utiliza valores de verdad suaves para predicados en un intervalo entre [0,1]. Esto permite que la inferencia subyacente se resuelva rápidamente como un problema de optimización convexa. Esto es útil en problemas como la clasificación colectiva , la predicción de enlaces , el modelado de redes sociales y la identificación de objetos/resolución de entidades/vinculación de registros .
Probabilistic Soft Logic fue lanzado por primera vez en 2009 por Lise Getoor y Matthias Broecheler. [5] Esta primera versión se centró principalmente en el razonamiento sobre similitudes entre entidades. Las versiones posteriores de PSL mantendrían la capacidad de razonar sobre similitudes, pero generalizarían el lenguaje para que fuera más expresivo.
En 2017, se publicó un artículo en Journal of Machine Learning Research que detallaba PSL y el modelo gráfico subyacente junto con el lanzamiento de una nueva versión principal de PSL (2.0.0). [2] Las principales características nuevas de PSL 2.0.0 fueron un nuevo tipo de regla utilizada principalmente para especificar restricciones y una interfaz de línea de comandos .
Un modelo PSL se compone de una serie de reglas y restricciones ponderadas. PSL admite dos tipos de reglas: lógicas y aritméticas. [6]
Las reglas lógicas se componen de una implicación con un solo átomo o una conjunción de átomos en el cuerpo y un solo átomo o una disyunción de átomos en la cabeza. Dado que PSL utiliza lógica blanda, los operadores de lógica dura se reemplazan por operadores lógicos blandos de Łukasiewicz . Un ejemplo de una expresión de regla lógica es:
Similares ( A , B ) y Tiene Etiqueta ( A , X ) -> Tiene Etiqueta ( B , X )
Esta regla puede interpretarse de la siguiente manera: si A y B son similares y A tiene la etiqueta X, entonces hay evidencia de que B también tiene la etiqueta X.
Las reglas aritméticas son relaciones entre dos combinaciones lineales de átomos. Restringir cada lado a una combinación lineal garantiza que el potencial resultante sea convexo . Se admiten los siguientes operadores relacionales: =
, <=
, y >=
.
Similares ( A , B ) = Similares ( B , A )
Esta regla codifica la noción de que la similitud es simétrica en este modelo.
Una característica de uso común de las reglas aritméticas es la operación de suma. La operación de suma se puede utilizar para agregar varios átomos. Cuando se utiliza, el átomo se reemplaza con la suma de todos los átomos posibles donde las variables no sumatorias son fijas. Las variables sumatorias se crean anteponiendo una variable con un prefijo +
. Ejemplo de Fox:
Tiene etiqueta ( A , + X ) = 1.0
Si los valores posibles para X son etiqueta1 , etiqueta2 y etiqueta3 , entonces la regla anterior es equivalente a:
HasLabel ( A , 'etiqueta1' ) + HasLabel ( A , 'etiqueta2' ) + HasLabel ( A , 'etiqueta3' ) = 1.0
Ambas reglas obligan a que la suma de todas las etiquetas posibles para una entidad sume 1,0. Este tipo de regla es especialmente útil para problemas de clasificación colectiva , donde solo se puede seleccionar una clase.
Un programa PSL define una familia de modelos gráficos probabilísticos que están parametrizados por datos. Más específicamente, la familia de modelos gráficos que define pertenece a una clase especial de campo aleatorio de Markov conocido como campo de Markov de pérdida de bisagra (HL-MRF). Un HL-MRF determina una función de densidad sobre un conjunto de variables continuas con dominio conjunto utilizando un conjunto de evidencias , pesos y funciones potenciales de la forma donde es una función lineal y . La distribución condicional de dados los datos observados se define como
Donde es la función de partición. Esta densidad es una función logarítmicamente convexa y, por lo tanto, la tarea de inferencia común en PSL de encontrar una estimación máxima a posteriori del estado conjunto de es un problema convexo. Esto permite que la inferencia en PSL se pueda lograr en tiempo polinomial.
Los predicados en PSL pueden etiquetarse como abiertos o cerrados.
Cuando un predicado se etiqueta como cerrado, PSL hace la suposición de mundo cerrado : se supone que cualquier predicado que no se proporcione explícitamente a PSL es falso. En otras palabras, la suposición de mundo cerrado supone que un predicado que es parcialmente verdadero también se sabe que es parcialmente verdadero. Por ejemplo, si tuviéramos las siguientes constantes en los datos para representar personas: y la siguiente constante para películas: , y le proporcionamos a PSL los datos del predicado y se etiquetó como cerrado, entonces PSL asumiría que, aunque estos datos nunca se proporcionaron explícitamente al sistema.
Si un predicado se etiqueta como abierto, PSL no asume que el mundo es cerrado, sino que intenta inferir colectivamente las instancias no observadas.
Los datos se utilizan para instanciar varias funciones potenciales en un proceso llamado puesta a tierra. Las funciones potenciales resultantes se utilizan luego para definir la HL-MRF.
La fundamentación de predicados en PSL es el proceso de realizar todas las sustituciones posibles de las variables en cada predicado con las constantes existentes en los datos, lo que da como resultado una colección de átomos fundamentales. Luego, se realizan todas las sustituciones posibles de los átomos fundamentales por los predicados en las reglas para crear reglas fundamentales.
Cada una de las reglas básicas se interpreta como potenciales o restricciones duras en la HL-MRF inducida. Una regla lógica se traduce como una relajación continua de los conectores booleanos utilizando la lógica de Łukasiewicz . Una regla lógica básica se transforma en su forma normal disyuntiva . Sea el conjunto de índices de las variables que corresponden a los átomos que no se niegan y, asimismo, el conjunto de índices correspondientes a los átomos que se niegan, en la cláusula disyuntiva. Entonces, la regla lógica se asigna a la desigualdad:
Si la regla lógica se pondera con un peso y se exponencia con , entonces el potencial
se agrega al HL-MRF con un parámetro de peso de .
Se manipula una regla aritmética y el potencial resultante toma la forma .
PSL está disponible a través de tres interfaces de lenguaje diferentes : CLI , Java y Python . La interfaz de línea de comandos (CLI) de PSL es la forma recomendada de utilizar PSL. [7] Admite todas las funciones que se utilizan comúnmente en una forma reproducible que no requiere compilación. Dado que PSL está escrito en Java, la interfaz Java de PSL es la más expansiva y los usuarios pueden llamar directamente al núcleo de PSL. [8] La interfaz Java está disponible a través del repositorio central de Maven . [9] La interfaz Python de PSL está disponible a través de PyPi [10] y utiliza pandas DataFrames para pasar datos entre PSL y el usuario. [11]
Anteriormente PSL proporcionaba una interfaz Groovy. [12] Se ha dejado de usar en la versión 2.2.1 de PSL y está previsto que se elimine en la versión 2.3.0. [13]
El laboratorio LINQS, desarrolladores de la implementación oficial de PSL, mantiene una colección de ejemplos de PSL. [14] Estos ejemplos cubren conjuntos de datos sintéticos y del mundo real e incluyen ejemplos de publicaciones académicas que utilizan PSL. A continuación se muestra un ejemplo de juguete de este repositorio que se puede utilizar para inferir relaciones en una red social. Junto con cada regla hay un comentario que describe la intuición motivadora detrás de las afirmaciones.
/* Las personas que viven en el mismo lugar tienen más probabilidades de conocerse entre sí. */ 20 : Vivió ( P1 , L ) y vivió ( P2 , L ) y ( P1 ! = P2 ) -> Conoce ( P1 , P2 ) ^ 2/* Es poco probable que las personas que no han vivido en el mismo lugar se conozcan entre sí. */ 5 : Vivió ( P1 , L1 ) y vivió ( P2 , L2 ) y ( P1 ! = P2 ) y ( L1 ! = L2 ) -> ! Conoce ( P1 , P2 ) ^ 2/* Es más probable que dos personas con intereses similares se conozcan entre sí. */ 10 : Le gusta ( P1 , X ) y Le gusta ( P2 , X ) y ( P1 ! = P2 ) -> Sabe ( P1 , P2 ) ^ 2/* Las personas en los mismos círculos tienden a conocerse entre sí (transitividad). */ 5 : Sabe ( P1 , P2 ) y Sabe ( P2 , P3 ) y ( P1 ! = P3 ) -> Sabe ( P1 , P3 ) ^ 2/* Conocerse uno al otro es simétrico. */ Sabe ( P1 , P2 ) = Sabe ( P2 , P1 ) ./* De manera predeterminada, se supone que dos personas arbitrarias no se conocen entre sí (prioridad negativa). */ 5 : ! Conoce ( P1 , P2 ) ^ 2