Representacion Del Conocimiento Prolog

download Representacion Del Conocimiento Prolog

of 28

Transcript of Representacion Del Conocimiento Prolog

  • 8/12/2019 Representacion Del Conocimiento Prolog

    1/28

    Area de Computacin e InteligenciaArtificial

    1

    Representacin del conocimientomediante lgica formal

    Introduccin a PROLOG

  • 8/12/2019 Representacion Del Conocimiento Prolog

    2/28

    Area de Computacin e InteligenciaArtificial

    1

    Representacin del conocimiento

    Lo que nos interesa es la representacin, es decir,la modelizacin del conocimiento

    Orientaciones:

    Simblica: la descripcin del comportamiento inteligente se

    basa en sistemas simblicos, ms o menos formalizados

    Conexionista: para describir el comportamiento inteligentese modelizan sistemas neuronales

  • 8/12/2019 Representacion Del Conocimiento Prolog

    3/28

    Area de Computacin e InteligenciaArtificial

    1

    Representacin del conocimiento

    Tratamos de encontrar la forma de modelizar quesea apropiada para el tratamiento computacional

    de la inferencia.

    Debe tener en cuenta que la inferencia se realizasobre conocimiento incompleto o incierto

    (aproximado o con incertidumbre): No sabemos si el paciente tiene paludismo

    Muy posiblemente el paciente tiene una

    infeccin en la faringe

  • 8/12/2019 Representacion Del Conocimiento Prolog

    4/28

    Area de Computacin e InteligenciaArtificial

    1

    Sistemas basados en el

    conocimiento El componente principal de un sistema basado en

    conocimiento (en adelante, SBC) es su base de

    conocimientos, o BC.

    En realidad slo es un conjunto de representaciones

    de ciertos hechos acerca del mundo. A cada una de

    estas representaciones se le denomina oracin. Lasoraciones se representan en un lenguaje llamado

    lenguaje para la representacin del conocimiento,

    que puede ser un lenguaje natural (como el queusamos nosotros) o un lenguaje formal (por ejemplo

    un lenguaje de programacin).

  • 8/12/2019 Representacion Del Conocimiento Prolog

    5/28

    Area de Computacin e InteligenciaArtificial

    1

    Sistemas basados en el

    conocimiento Sobre esta base de conocimientos podra hacer varias

    acciones, como tratarla para llegar a una conclusin

    (proceso llamado inferencia) o incluso modificarla(aprendizaje) para adaptarla a otros planteamientos.

    Esquemticamente se pueden describir las acciones que

    puede realizar un SBC de la siguiente forma:1.El SBC informa a la BC lo que percibe.

    2. Se le pregunta a la BC cul es la accin que debe emprender. Esta puede

    estar decidida por un conjunto de reglas preestablecidas, o necesitar de un

    proceso de inferencia para llegar a la decisin.

    3. El agente realiza la accin que haya decidido de acuerdo a ese proceso de

    inferencia.

    4. Aprender y posiblemente modificar su BC de acuerdo a lo realizado y a si se

    ha conseguido el objetivo perseguido o no.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    6/28

    Area de Computacin e InteligenciaArtificial

    1

    Sistemas basados en el

    conocimiento Estas acciones se corresponden con las siguientes funciones cognitivas:

    Percepcin, o cmo es la entrada de informacin sensorial del mundo que nosrodea.

    Conocimiento, o cmo representamos esa informacin proveniente de lossentidos.

    Memoria, o de qu forma almacenamos esa informacin en nuestro sistemacognitivo.

    Razonamiento, o cmo tratamos esa informacin para realizar inferencias y llegara conclusiones vlidas.

    Bsqueda de soluciones

    Accin, o cual va a ser la respuesta que se va a dar en funcin quiz del proceso deinferencia realizado.

    Lenguaje natural Procesos de consciencia, o cmo somos conscientes de que tratamos con

    informacin, de cmo realizar una metacognicin de nuestro sistema cognitivo (sieso es posible) y de cmo puedo saber que yo soy yo y no la persona con la que

    estoy hablando.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    7/28

    Area de Computacin e InteligenciaArtificial

    1

    Sistemas basados en el

    conocimiento Aqu trataremos de los procesos de representacin del

    conocimento (tanto desde el punto de vista simblico

    como conexionista), de los procesos de razonamientotanto formal como informal (o con incertidumbre) y delos procesos de aprendizaje.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    8/28

    Area de Computacin e InteligenciaArtificial

    1

    Formalismos de representacin

    Lgicas (clsica, multivaluadas, modales ydifusa)

    Reglas de produccin (con incertidumbre -

    MYCIN)

    Redes semnticas y causales (bayesianas)

    Marcos y guiones

    Redes neuronales y sistemas neuroborrosos.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    9/28

    Area de Computacin e InteligenciaArtificial

    1

    Construccin de una base deconocimientos mediante la lgica

    formal En principio, un lenguaje de representacin del

    conocimiento consta de dos aspectos bsicos: Sintxis, que explica cmo es la forma en que se construyen las

    oraciones como combinacin de estructuras ms sencillas (porejemplo las palabras en un lenguaje natural). As podemos decirque la oracin Un bueno ser jefe justoest sintcticamente malconstruida, debido a los signos o elementos de esta oracin estnmal ordenados.

    Semntica, que explica la correspendencia entre los elementos o

    signos que componen un lenguaje y los objetos que representan.Por ejemplo podemos decir que la palabra juez designa a unapersona que imparte justicia.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    10/28

    Area de Computacin e InteligenciaArtificial

    1

    Construccin de una base deconocimientos mediante la lgica

    formal Podramos hacer una analoga entre forma y contenido

    respectivamente.

    Y a partir de aqu podemos definir el concepto deinferenciacomo el proceso que lleva de unas premisas auna conclusin, y que en principio puede ser vlida o no.

    Pero, qu entendemos por validez, o por una oracinvlida? Se dice que una oracin es vlida si y slo si esverdadera en todos y cada uno de los casos posibles,

    independientemente del objeto que representen.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    11/28

    Area de Computacin e InteligenciaArtificial

    1

    Construccin de una base deconocimientos mediante la lgica

    formal As tambin se suele hablar de validez formalo de que un

    razonamiento es formalmente vlidocuando dadas unas

    premisa necesariamentese obtiene una conclusinconcreta. A stas oraciones que son necesariamenteverdaderas se les conoce con el nombre de tautologas

    Por ejemplo, si decimos que Todos los perros ladrany quePipo esun perro, de sto podr concluir quePipo ladra.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    12/28

    Area de Computacin e InteligenciaArtificial

    1

    Tipos de razonamiento

    Asu vez, un razonamiento puede ser deductivo, si la informacincontenida en la conclusin no aporta ningn conocimiento que no se

    pueda deducir de forma inmediata de las premisas (como es el casoanterior) o inductivocuando de la informacin contenida en laspremisas no se infiere de forma inmediata la conclusin.

    Por ejemplo deMercurio gira en una rbita elptica, Venus gira en

    una rbita elptica, la Tierra gira en una rbita elpticapodemosinferir quePlutn gira en una rbita elptica, pero eso no esnecesariamente verdadero. A lo sumo ser verdadero con una ciertaprobabilidad o plausibilidad, y as llamaremos a estos razonamientos

    razonamientos probabilsticoso plausibles. stos razonamientos sonlos que se usan en ciencia y los que aportan de verdad conocimiento.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    13/28

    Area de Computacin e InteligenciaArtificial

    1

    Tipos de razonamiento

    Por ltimo, llamaremos modeloa un mundo en el que una oracin esverdadera bajo una determinada interpretacin. Y as, habr oraciones

    que sern verdaderas en un determinado modelo y otras que no. Por lo tanto disponemos de un lenguaje formal, que ser independiente

    del modelo en el que se site, y que nos permitir representar todos loselementos u objetos de un modelo (o mundo) mediante signosde

    forma no ambigua, un conjunto de reglas (reglas de formacin) paramanipular esos signos y efectuar inferencias para llegar a conclusionesy un conjunto de reglas de transformacinque permitir transformaruna combinacin bien construida en otra igualmente bien construida.

    Estos elementos constituyen lo que se denomina lgica.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    14/28

    Area de Computacin e InteligenciaArtificial

    1

    Lgica

    Podemos distinguir dos tipos dentro de lo que se llama lgica clsica(aquella que la conclusin, si es verdadera lo es con certeza, es decir, sin

    ningn grado de probabilidad, mientras que hay otros tipos de lgicas noclsicas, como puede ser la lgica difusa -o Fuzzy Logicen el que unaconclusin slo es verdadera con un cierto grado de certeza)

    Lgica propositivao lgica de enunciadoscuando los signos que

    manejamos son proposiciones completas (por ejemplo, apodrasignificar el perro de Juan es negro, y usaremos smbolos llamadosconectorespara hacer oraciones ms complejas, como por ejemplo elperro de Juan es negro y no lleva correa.

    Lgica de predicados de primer orden, en el que manejamos objetos ypredicados sobre objetos, as comopropiedades(hermano de, padre de),cuantificadores(algunos, todos, ningn) y conectores.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    15/28

    Area de Computacin e InteligenciaArtificial

    1

    Lgica

    Lgica de predicados de orden superioren el que podemos hacerinferencias sobre la lgica, es decir, tener un conocimiento que

    podramos llamar metalgico. Lgicas multivaluadas, en las que tratamos con varios valores de

    verdad, como por ejemplo las trivaluadas de Kleen y de Lukasiewiczdonde se introduce el valor 1/2para las proposiciones cuyo valor de

    verdad es indeterminado (por ejemplo las proposiciones futuras). stas sern las herramientas de que dispondremos para

    representar el conocimiento. As que vamos a ver cmo construiruna base de conocimientos en base al lenguaje utilizado para

    representar los conceptos. En principio elegiremos la lgica depredicados como un buen lenguaje para hacerlo.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    16/28

  • 8/12/2019 Representacion Del Conocimiento Prolog

    17/28

    Area de Computacin e InteligenciaArtificial

    1

    Elementos de una base de

    conocimientos Predicados: atributos de los elementos

    Elementos: proposiciones.

    Constantes:se escriben en minsculas, por ejemplopedro,

    gripe.

    Variables lgicas: Las vriables en Prolog no son

    variables en el sentido habitual, por eso las llamamosvariables lgicas. Se escriben como una secuencia de

    caracteres alfabticos comenzando siempre por mayscula

    o subrayado. Por ejemplo Persona, X, _

    La variable annima: todas ellas se representan medianteel smbolo de subrayado _.

    Operadores.El operadorY se representa por ,

  • 8/12/2019 Representacion Del Conocimiento Prolog

    18/28

    Area de Computacin e InteligenciaArtificial

    1

    Elementos de una base de

    conocimientos Hechos: expresan relaciones (predicados) entre

    elementos (proposiciones). Deben acabar en punto.

    Por ejemplo es(juan,alto).

    Reglas: condiciones si-entonces. Se escribe primero el

    consecuente y luego el/los antecedentes.

    Por ejemploes(X, espaol):-nacio(X,madrid).

  • 8/12/2019 Representacion Del Conocimiento Prolog

    19/28

    Area de Computacin e InteligenciaArtificial

    1

    Proceso de razonamiento

    Base de conocimiento: hechos y reglas.

    Objetivos

    Unificacin

  • 8/12/2019 Representacion Del Conocimiento Prolog

    20/28

    Area de Computacin e InteligenciaArtificial

    1

    El shell de Prolog

    ?- El smbolo ?- nos indica la zona donde podemos escribir losobjetivos a ejecutar.

    Mi primer objetivo Swi-Prolog 1.4 #0: Sat Nov 27 19:27:11 1999

    ?- t(X,3) = t(4,Z).

    X = 4,

    Z = 3

    yes

    Observese que los objetivos acaban en un punto (.), si pulsamos intro

    antes de escribir el punto

    ocurre un salto de lnea, pero nada ms. Cuando escribimos el punto y

    pulsamos INTRO es cuando

    se ejecuta el objetivo.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    21/28

    Area de Computacin e InteligenciaArtificial

    1

    El shell de Prolog

    A continuacin, el shell nos dice si el objetivo tiene xito o no, y cualesson las ligaduras de lasvariables. Despus aparece un signo de interrogacin (?). En estemomento es cuando le podemospedir que nos muestre otra solucin tecleando un punto y coma (;) ypulsando INTRO:

    Swi-Prolog 1.4 #0: Sat Nov 27 19:27:11 1999 ?- t(X,3) = t(4,Z).

    X = 4, Z = 3 ? ;

    no ?-

  • 8/12/2019 Representacion Del Conocimiento Prolog

    22/28

    Area de Computacin e InteligenciaArtificial

    1

    El shell de Prolog

    Como no hay ms soluciones en nuestro ejemplo, el shell dice "no" ynos permite escribir otro objetivo.

    Compilando y cargando codigo ?- consult(c:/prog1.pl').

    yes

    ?-

    Obsrvese que el nombre del fichero fuente (y su ruta, si es necesario)

    se escribe en un trmino entre comillas simples. Esta es la forma

    habitual de escribir nombres de fichero.

  • 8/12/2019 Representacion Del Conocimiento Prolog

    23/28

    Area de Computacin e InteligenciaArtificial

    1

    Eficiencia

    Ordenacin de clusulas:

    1 las ms especficas

    2 las ms generales (con recursividad)Ejemplo:

    antecesor(X,Y):-padre_de(X,Y).

    antecesor(X,Y):-padre_de(X,Y),antecesor(Z,Y).

    Ordenacin de trminos dentro de una clusula:

    1 los trminos ms especficos

    2 los trminos ms generales (recursivos)

    Ejemploantecesor(X,Y):-padre_de(X,Y),antecesor(Z,Y).

  • 8/12/2019 Representacion Del Conocimiento Prolog

    24/28

    Area de Computacin e InteligenciaArtificial

    1

    Operadores

    Desigualdad \== Comprueba si dos trminos son distintos

    Desigualdad aritmtica =\= Verifica la desigualdad de dos expresiones

    Operadores lgicos y aritmticos: < > =< >= Aritmticos: + - * / abs ^(potencia) max min

    Asignacin [is]. Evala la segunda expresin e intenta asignar el valor

    obtenido a la variable. No es conmutativo!

    Ejemplo: Incremento(X,Y):-Y is X+1 Negacin: not millonario(X), o not(X=:=0)

    Agregar hechos: assert(padre_de(luis,pepe)).

    NOTA: deben ser procedimientos dinmicos, no estticos. Para convertir

    un trmino en dinmico debo agregar a la BC el siguiente procedimiento::-dynamic padre_de/2.

    Eliminar hechos:retract(padre_de(luis,pepe)).

  • 8/12/2019 Representacion Del Conocimiento Prolog

    25/28

    Area de Computacin e InteligenciaArtificial

    1

    Listas

    [a,b,c] Lista con tres elementos

    [ ] Lista vaca

    [a|L] Lista con el elemento a en la cabecera y el resto en la variable L (cola) [a,b|L]

    [X|L] Lista con el primer elemento instanciado en la variable X y el resto en lavariable L (cola)

    [X,Y|L]

    di d l j d

  • 8/12/2019 Representacion Del Conocimiento Prolog

    26/28

    Area de Computacin e InteligenciaArtificial

    1

    Predicados para el manejo delistas

    N de elementos de una lista: longitud (Lista,N): longitud([ ],0).

    Pertenencia a una lista: pertenece(X,Lista).

    Concatenar dos listas: concatenar(L1,L2,L3).

    Eliminar un elemento X de una lista L, y como

    consecuencia se obtiene la nueva lista L2:

    elimina(X,L1,L2). Invertir los elementos de una lista: invertir(L1,L2).

  • 8/12/2019 Representacion Del Conocimiento Prolog

    27/28

    Area de Computacin e InteligenciaArtificial

    1

    Estructuras de datos en Prolog

    Ejemplo:

    reino(juan,portugal).

    reino(juan,suecia).

    aos_de_reinado(reino(duarte,portugal),1433,1438).

    aos_de_reinado(reino(juan,portugal),1481,1495).

    aos_de_reinado(reino(duarte,suecia),1568,1592).

    ?-aos_de_reinado(reino(juan,portugal),X,Y).

    X=1481.

    Y=1495.

    ?- aos_de_reinado(reino(juan,Pais),X,Y).P = portugal

    X = 1481

    Y = 1495

  • 8/12/2019 Representacion Del Conocimiento Prolog

    28/28

    Area de Computacin e InteligenciaArtificial

    1

    Estructuras de datos en Prolog

    Cmo podra saber si un rey ha estado reinando en algn pasdurante un cierto ao?

    reino(juan,portugal).

    reino(juan,suecia).aos_de_reinado(reino(duarte,portugal),1433,1438).

    aos_de_reinado(reino(juan,portugal),1481,1495).

    aos_de_reinado(reino(duarte,suecia),1568,1592).

    en_el_trono(X,P,Ao):-aos_de_reinado(reino(X,P),A,B),Ao>=A,Ao=