Fundamentos de Inteligencia Artificial
Autores
Miguel García Torres Carlos Augusto Sánchez Martelo
Henry Leonardo Avendaño Delgado Manuel Antonio Sierra Rodríguez
Carlos Andrés Collazos Morales Domingo Alirio Montaño Arias
Breed Yeet Alfonso Corredor José Daniel Rodríguez Munca
Edición Editorial Universidad Manuela Beltrán Autores
Miguel García Torres Dr. En Ciencias de la Computación e Inteligencia Artificial, Investigador Postdoctoral en el Instituto Nacional de Técnica Aeroespacial, Magíster en
Informática, Físico.
Carlos Augusto Sanchez Martelo Dr. (c) en Pensamiento Complejo, Maestría en Diseño, Gestión y Dirección de Proyectos, Ingeniero de sistemas, Certificado
Internacionalmente en ITIL Foundation v3, Procesos en Desarrollo de Software y TIC
Henry Leonardo Avendaño Delgado Dr. (c) en Educación línea de investigación Tecnologías de la Información y Comunicación para la inclusión, Magister en
Educación, Especialista en Gerencia de Telecomunicaciones, Ingeniero Electrónico.
Manuel Antonio Sierra Rodríguez Dr. (c) en Proyectos en la línea de investigación en Tecnologías de la Información y Comunicación, Magíster en Software Libre, Especialista en
Seguridad en Redes, Ingeniero de Sistemas, Consultor en Seguridad de la Información y Comunicaciones.
Domingo Alirio Montaño Arias Dr. En Genética, Magister en Biología, Biólogo, Investigador Asociado, Universidad Manuela Beltrán, BSc, MSc, PhD Intereses de investigación en Neurociencias, Genética y TIC Aplicadas a la Educación.
Miembro comité editorial revista Journal of Science Educations. Miembro fundador de la Sociedad Iberoamericana de Biología Evolutiva.
Carlos Andres Collazos Morales Postdoctorado en Ciencia y Tecnología Avanzada, Dr. en Ciencias, Magister en Ingeniería Electrónica y Computadores, Físico.
Breed Yeet Alfonso Corredor Dr. (c) en Proyectos, Magister en Educación, Especialista en Desarrollo e Implementación de Herramientas Telemáticas, Ingeniera Electrónica, Directora Académica y
Calidad, Consultora Nacional e Internacional Académica de Educación Superior.
José Daniel Rodríguez Munca Magister en Ciencias de la Educación, Master en Estrategias y Tecnologías para el Desarrollo, Especialista en docencia mediada por las TIC e
Ingeniero Electrónico. Daniela Suarez Porras Corrección de estilo (Editor secundario) Diagramación: Cesar Augusto Ricaurte Diseño de portada: Cesar Augusto Ricaurte Publicado en Diciembre de 2018 Formato digital PDF (Portable Document Format) Editorial Universidad Manuela Beltrán Avenida Circunvalar Nº 60-00 Bogotá – Colombia Tel. (57-1) 5460600
Miguel García Torres, Carlos Augusto Sánchez Martelo, Henry Leonardo Avendaño Delgado, Manuel Antonio Sierra Rodríguez,
Carlos Andrés Collazos Morales, Domingo Alirio Montaño Arias, Breed Yeet Alfonso Corredor, José Daniel Rodríguez Munca
Fundamentos de Inteligencia Artificial, Bogotá, UMB
© Miguel García Torres, Carlos Augusto Sánchez Martelo, Henry Leonardo Avendaño Delgado, Manuel Antonio Sierra Rodríguez,
Carlos Andrés Collazos Morales, Domingo Alirio Montaño Arias, Breed Yeet Alfonso Corredor, José Daniel Rodríguez Munca
© Universidad Manuela Beltrán
Bogotá, Colombia http:// www.umb.edu.co
Queda prohibida la reproducción total o parcial de este libro por cualquier proceso gráfico o fónico, particularmente por fotocopia,
Ley 23 de 1982
Fundamentos de Inteligencia Artificial. / Miguel García Torres… (y otros 7) - Bogotá: Universidad Manuela Beltrán, 2018. 128 p.: ilustraciones, gráficas, tablas; [versión electrónica] Incluye bibliografía ISBN: 978-958-5467-27-9 1. Inteligencia artificial 2. Aprendizaje automático 3. Sistemas expertos (computadores). i. Sánchez Martelo, Carlos Augusto. ii. Avendaño Delgado, Henry Leonardo. iii. Sierra Rodríguez, Manuel Antonio. iv. Collazos Morales, Carlos Andrés. v. Montaño Arias, Domingo Alirio. vi. Alfonso Corredor, Breed Yeet. vii. Rodríguez Munca, José Daniel. 006.3 cd 23 ed. CO-BoFUM
Catalogación en la Publicación – Universidad Manuela Beltrán
Autoridades Administrativas
Gerente Juan Carlos Beltrán Gómez
Secretario General Juan Carlos Tafur Herrera
Autoridades Académicas
Rectora Alejandra Acosta Henríquez
Vicerrectoría de Investigaciones
Fredy Alberto Sanz Ramírez
Vicerrectoría Académica Claudia Milena Combita López
Vicerrectoría de Calidad Hugo Malaver Guzman
ISBN: 978-958-5467-27-9
13
TABLA DE CONTENIDO
Fundamentos de Inteligencia Artificial
Contenido PRÓLOGO................................................................................................................................. 15
INTRODUCCIÓN ...................................................................................................................... 17
Capítulo 1: Introducción y Búsqueda ................................................................................. 21
1. Introducción y Búsqueda de Datos ............................................................................. 21
1.1. Introducción .................................................................................................................. 21
1.2. Marco Conceptual ........................................................................................................ 22 1.2.1. Introducción a la Inteligencia Artificial ............................................................................ 22 1.2.2 Historia de la Inteligencia Artificial ................................................................................... 23 1.2.3 Agentes Inteligentes ............................................................................................................ 24
1.3. Ejemplos ........................................................................................................................ 32
1.4. Ejercicios de reflexión ................................................................................................ 36
1.5. Búsqueda de Datos ..................................................................................................... 40 1.5.1. Introducción ......................................................................................................................... 40 1.5.2. Búsquedas no Informadas ................................................................................................. 43 1.5.3. Búsquedas informadas ...................................................................................................... 46 1.5.4. Ejemplos ............................................................................................................................... 49 1.5.5. Ejercicios de Reflexión ....................................................................................................... 54
Capítulo 2: Aprendizaje Automático y Juegos .................................................................. 57
2. Aprendizaje Automático y Juegos ............................................................................... 57
2.1. Introducción .................................................................................................................. 57
2.2. Ejemplos ........................................................................................................................ 75
2.3. Ejercicios de reflexión ................................................................................................ 76
2.4. Conclusiones ................................................................................................................ 77
2.5. Teoría de Juegos ......................................................................................................... 78
2.6. Los Juegos Como un Problema de Búsqueda ...................................................... 81
2.7. Poda Alfa-Beta .............................................................................................................. 85
2.8. Ejemplos ........................................................................................................................ 87
2.9. Ejercicios de Reflexión ............................................................................................... 89
Capítulo 3: Problema de Satisfacción de Restricciones y Lógica ................................. 93
14
2. Problemas de Satisfacción de Restricciones y Lógica ........................................... 93
2.1. Introducción .................................................................................................................. 93
2.2. Modelización de Problemas de Satisfacción de Restricciones .......................... 95
2.3 Técnicas de Resolución de PSR ................................................................................ 98
5.3. Ejemplos ...................................................................................................................... 100
5.5. Conclusiones .............................................................................................................. 102
5.6. Conocimiento Racional ............................................................................................ 102
5.7. Representación del Conocimiento y Razonamiento ........................................... 103
5.8. Lógica .......................................................................................................................... 107
5.9. Tipos de lógica ........................................................................................................... 108
5.10. Ejemplos .................................................................................................................... 114
5.11. Ejercicios de reflexión ............................................................................................ 116
15
PRÓLOGO
La inteligencia artificial (IA) es una de las disciplinas computacionales más
demandadas que afectan, sin darnos cuenta, nuestro día a día. Tareas como
realizar una búsqueda en internet, filtrar nuestro correo electrónico o enfocar las
caras con las cámaras digitales están dotadas de IA para realizar dichos trabajos,
de modo que parezca que hay un cierto grado de inteligencia para realizarlos.
El objetivo de la IA no es reemplazar al humano sino mejorar la calidad de vida
de este asumiendo trabajos que hasta ahora solo podían ser realizados si hay una
inteligencia detrás que lo lleve a cabo. Sin embargo, el desconocimiento que aún
se tiene del cerebro hace que todavía estemos lejos de diseñar un software que
actúe de forma inteligente en aplicaciones diversas teniendo que poner el foco en
mejorar la realización de tareas específicas. A la par que se van produciendo
mejoras es inevitable que surjan cuestiones éticas y morales sobre el objetivo de
simular o reproducir un ser inteligente.
Miguel García Torres
17
INTRODUCCIÓN
La resolución de problemas es uno de los procesos básicos del razonamiento
que la IA trata de abordar. El objetivo es conseguir que un agente encuentre una
solución a un determinado problema de una forma equiparable o superior a como
lo haría un humano.
Esta unidad introduce la resolución de problemas como un proceso de
búsqueda en el espacio de posibles estados en los que puede encontrarse la
solución. Esta área está bastante ligada a las matemáticas y no requiere usar
mecanismos de la mente para abordarlo; por tanto, es una de las primeras áreas
de la IA que empezó a desarrollarse.
A lo largo de esta unidad se verá cómo se plantean este tipo de problemas.
También se expondrán las distintas estrategias que hay para abordar estos
problemas en función de la información que tengan las estrategias del problema
en cuestión.
El aprendizaje automático es una rama de la IA que tiene el objetivo de
desarrollar técnicas que le permitan a las computadoras aprender. Generalmente
se lleva a cabo mediante un proceso de inducción del conocimiento en el que se
pretende generalizar reglas a partir de ejemplos concretos.
A lo largo de este libro se abordará el aprendizaje supervisado y el no
supervisado. En el aprendizaje supervisado se persigue aprender una función que
establezca una correspondencia entre las entradas que recibe el algoritmo y la
salida deseada. En el no supervisado, en cambio, el objetivo es reconocer
patrones que ayuden a describir los datos de entrada. Las posibles aplicaciones
del aprendizaje automático son muy diversas y algunas de ellas precisamente son
los motores de búsqueda, el diagnóstico médico, detección de fraude en el uso de
18
las tarjetas de crédito, reconocimiento del habla, clasificación de secuencia de
ADN, etc.
La modelización de un problema como un problema de satisfacción de
restricciones (PSR) es una metodología utilizada para la descripción y posterior
resolución efectiva de cierto tipo de problemas, típicamente combinatorios y de
optimización. Las principales aplicaciones de este tipo de problema son
planificación, razonamiento temporal, diseño en la ingeniería, problemas de
empaquetamiento, criptografía, diagnóstico, toma de decisiones, etc.
Los primeros trabajos relacionados con la programación de restricciones datan
de los años 60 y 70 en el campo de la inteligencia artificial. La importancia de esta
área radica en que muchas decisiones que se toman diariamente están sujetas a
restricciones, como planificar un viaje, concertar una cita para el médico, comprar
una casa, etc.
19
Capítulo I
Intr
oduc
ción
y B
úsqu
eda
Introducción y Búsqueda de Datos
Marco Conceptual
Ejemplos
Ejercicios de Reflexión
Introducción y Búsqueda
21
CAPÍTULO 1: INTRODUCCIÓN Y BÚSQUEDA
Los conceptos básicos que se verán en la primera unidad permitirán entender
qué es y en qué consiste la IA. Además, se verán los distintos planteamientos que
hay para abordar la simulación de la conciencia por la importancia que tiene desde
un punto de vista filosófico, ético y moral. Finalmente, se abordará la IA desde el
paradigma de agentes.
La segunda unidad aborda un tipo de agentes basados en objetivos que plantea
la resolución de problemas como una búsqueda de la secuencia de acciones que
llevan desde un estado inicial a otro final deseado. También se abordarán dos
tipos de técnicas de búsquedas (informadas y no informadas) cuya principal
diferencia radica en la información que tiene cada aproximación del problema a
resolver.
1. Introducción y Búsqueda de Datos 1.1. Introducción
La inteligencia artificial es un área multidisciplinaria que estudia la creación y el
diseño de sistemas computacionales para realizar tareas intelectuales. Es una de
las ciencias más recientes que abarca una gran variedad de subcampos, que van
desde áreas de propósito general, como el aprendizaje y la percepción, a otras
áreas más específicas, como el ajedrez y la demostración de teoremas.
A lo largo de este libro se dará una visión global de la IA presentando los
conceptos básicos e introduciendo el contexto histórico y cultural en el que se
desarrolla esta nueva ciencia. Finalmente, se continuará con el concepto de
agente, inherente al campo de la IA.
22
1.2. Marco Conceptual
1.2.1. Introducción a la Inteligencia Artificial ¿Qué es la inteligencia artificial? La inteligencia artificial es una de las disciplinas más nuevas que evoluciona a
gran celeridad, motivada por su propia inmadurez. Esto ha llevado a que abarque
un gran número de áreas que permite que pueda ser aplicada a una gran cantidad
y variedad de disciplinas científicas. Esto se debe a que la IA puede aplicarse en
cualquier ámbito que se requiera el intelecto humano.
Desde un punto de vista etimológico, el término inteligencia proviene de las
palabras latinas inter (entre) y legere (escoger), es decir, la facultad de saber
elegir. Sin embargo, no basta con acumular información para saber, sino que se
requiere aprender de la información que ha sido percibida. Por tanto, para poder
considerar que un ser (de cualquier tipo) tiene inteligencia se requiere que capaz
de tomar decisiones en entornos nuevos o desconocidos, con base a una serie de
observaciones y/o aprendizajes previos sobre experiencias pasadas.
Actualmente no existe una única definición de IA aceptada en la comunidad sino
que hay varias propuestas que hacen énfasis en algunos de los aspectos que han
sido identificados como parte de la misma. Para el propósito de esta asignatura se
entenderá la IA como una disciplina que trata de desarrollar sistemas capaces de
adoptar comportamientos que, si fuesen realizados por humanos, no dudaríamos
en calificar de inteligentes.
Formas de hacer inteligencia artificial Existen distintas aproximaciones de cara a la simulación de la conciencia por un
ordenador:
IA fuerte: toda actividad mental puede simularse.
23
IA débil: toda propiedad física del cerebro puede simularse pero la
conciencia es una característica del cerebro a la que no puede llegarse
por computación.
Nueva física: piensa que hace falta desarrollar una nueva física para explicar la mente humana, de modo que con los conocimientos actuales
no es posible simular la mente humana.
Mística: en esta postura se defiende que la conciencia no puede ser explicada física ni computacionalmente. No puede entenderse a través de
ningún método científico debido a que pertenece a la esfera espiritual.
Aquellos que se posicionan por las dos primeras posturas creen que la
conciencia es un proceso físico que emerge del cerebro, explicable con la ciencia
actual, aunque aún se desconozca. Los que defienden la IA débil consideran que
sus modelos son representaciones simbólicas de los sistemas biológicos, y que
las máquinas pueden programarse para exhibir comportamiento inteligente. Sin
embargo, los que defienden la IA fuerte afirman que las máquinas pueden
programarse para poseer inteligencia y tener consciencia reproduciendo las
características básicas de los seres vivos.
La tercera postura, defendida principalmente por R. Penrose, afirma que hay
hechos que no pueden ser simulados computacionalmente. Por último, la cuarta
postura podría parecer la más próxima a la religión. No obstante, cualquiera de las
tres anteriores también puede ser compatible con la religión. Si bien es verdad que
la ciencia podrá responder, en un futuro, la pregunta de cómo funciona la mente,
nunca podrá responder la pregunta de por qué existe la mente o cuál es su fin
último.
1.2.2 Historia de la Inteligencia Artificial Desde un punto de vista histórico, el ser humano ha expresado su anhelo por
replicar la inteligencia humana a través de mitos y leyendas. La filosofía también
24
ha abordado el estudio de la inteligencia, pero desde un punto de vista de
modelización más que de replicación.
Los primeros trabajos que forman parte del origen de la IA moderna datan de la
década de los 40 del siglo XX. Sin embargo, no fue sino hasta 1950 que dicha
disciplina empezó a suscitar mayor interés gracias a Alan Turing. En 1956, en la
conferencia de Dartmouth, esta nueva disciplina se bautizó como inteligencia
artificial. En la década de los 50 hubo un gran optimismo debido a los éxitos
cosechados previamente. Sin embargo, la década siguiente sirvió para empezar a
conocer las limitaciones que había. Si en estos primeros años el enfoque era el
desarrollo de mecanismos de búsqueda de propósito general, en los 70 se amplió
el enfoque al desarrollo de sistemas que abarcaran problemas específicos
haciendo uso de conocimiento específico del dominio. Esto motivó que la IA
pasara a ser parte del tejido industrial a partir de los años 80. A finales de esta
década se produjo una revolución tanto en el contenido como en la metodología
de trabajo. A lo largo de los años la IA se ha ido aproximando a todos los ámbitos
de nuestra vida y está presente en nuestro día a día sin que seamos conscientes.
1.2.3 Agentes Inteligentes En la IA ha surgido un nuevo paradigma conocido como paradigma de agente
inteligente, el cual aborda el desarrollo de entidades que puedan actuar de forma
autónoma y razonada. De acuerdo a este nuevo paradigma la IA se puede
considerar como una disciplina orientada a la construcción de agentes inteligentes.
La definición de agente inteligente está aún abierta a debate debido a que dicha
definición varía en función del contexto o la aplicación. Una definición sencilla que
se puede adoptar es la de Russell y Norvig (2008), que consideran un agente
como “una entidad que percibe y actúa sobre un entorno”. La Figura 1 ilustra esta
idea. En dicha figura, el término percepción se utiliza para indicar que el agente
puede recibir entradas en cualquier momento. El historial completo de todas las
25
entradas forma una secuencia de percepciones y el agente toma una decisión en
función de la secuencia completa de percepciones. El agente es capaz de percibir
su medioambiente mediante la ayuda de sensores y es capaz de actuar a través
de actuadores. En este contexto, actuador hace referencia al elemento que
reacciona a un estímulo realizando una acción.
Otra definición bastante aceptada es aquella que ve a un agente como “un
sistema de computación capaz de actuar de forma autónoma y flexible en un
entorno” (Wooldridge & Jennings, 1995). En dicha definición, la flexibilidad se
identifica con una serie de características que deberían tener los agentes:
Reactivo. El agente debe ser capaz de responder a cambios en el entorno
en el que se encuentran.
Pro-activo. El agente debe ser capaz de intentar cumplir sus propios planes u objetivos.
Social. Un agente debe poder comunicarse con otros agentes a través de algún tipo de lenguaje.
Figura 1. Abstracción de un agente a partir de su interacción con el medio ambiente. Fuente: Russell & Norvig (2008).
26
Estas características, identificadas como básicas de un agente, no son las únicas. Otras características que también se les suele atribuir a los
agentes para resolver problemas, según Franklin y Graesser (1996) y
Nwana (1996), son:
Autonomía. El agente inteligente actúa sin intervención humana directa y
tiene control de sus propios actos. Es capaz de actuar basándose en la
experiencia y de adaptarse aunque el entorno cambie.
Movilidad. Está relacionado con la capacidad, del agente, de cambiar de
entorno en caso de necesidad.
Veracidad. Se asume que el agente no comunica información falsa a
propósito.
BDI (Belief, Desire, Intentions). Esta característica hace referencia a las creencias, los deseos y las intenciones del agente. Las creencias hacen
referencia al conocimiento a priori den entorno y las responsabilidades.
Los deseos son las metas a realizar y las intenciones el plan que se
desarrollará para alcanzar dichos objetivos.
A pesar de que no está claro el grado de importancia de cada propiedad, este
conjunto de propiedades son las que distinguen a los agentes de meros
programas.
Racionalidad Los agentes actúan de forma racional en su entorno. Esto equivale a decir que
hacen lo correcto y para ello es necesario alguna forma de medir el éxito. La
racionalidad en un momento determinado se basa en la información disponible por
el agente y depende de los siguientes factores:
Medida de rendimiento, que define el grado de éxito del agente.
Conocimiento a priori del medio en el que habita el agente.
Acciones que el agente puede llevar a cabo.
27
Secuencia de percepciones, que representan la experiencia del agente.
En este contexto se puede afirmar que el comportamiento de un agente es
racional si el agente, partiendo de una secuencia de percepciones, así como del
conocimiento del entorno, elige el conjunto de acciones que optimicen la
medida de rendimiento.
Entorno de trabajo El entorno de trabajo de un agente se refiere al conjunto de componentes que
conforman el problema a resolver por el agente. Hace referencia al ambiente
o medio en el que el agente va a desenvolverse. El entorno de trabajo está
conformado por los cuatro factores que determinan la racionalidad de un agente:
Rendimiento. Hace referencia a las cualidades deseables para el agente,
así como los objetivos y metas que tiene. En este componente se asocian
las medidas de rendimiento.
Entorno. Se refiere al ambiente o mundo en el cual el agente actuará.
Actuadores. Se refiere al conjunto de herramientas o elementos para
efectuar el trabajo o el conjunto de acciones a realizar.
Sensores. Hace referencia a las percepciones del agente del ambiente y los sensores con los que percibe.
Por regla general suele referirse a dichos factores por el acrónimo REAS y para
poder diseñar un agente hay que especificar los componentes del entorno de
trabajo. Una cuestión importante de cara al diseño es que no importa si un entorno
es real o virtual sino la complejidad de la relación entre el comportamiento del
agente, la secuencia de percepción generada por el medio y la medida de
rendimiento.
28
Es importante identificar las propiedades del entorno en el que se va a trabajar
para que el diseño del agente se adecúe a dicho entorno. Algunas de estas
propiedades son:
Totalmente observable vs. parcialmente observable. Un estado de trabajo
totalmente observable es aquel al que se tiene acceso al estado completo
del medio en cada momento mediante los sensores. En este caso el
agente no necesita mantener ningún estado interno para percibir cómo
está el entorno. La parcialidad del entorno puede deberse al ruido y/o
problemas con los sensores por su precisión o por recibir información
parcial.
Determinista vs. estocástico. Un entorno es determinista si el estado del
medio depende del estado anterior y de la acción que llevó a cabo el
agente. Un medio determinista puede parecer estocástico si es
parcialmente observable. Debido a esto suele considerarse un medio
determinista o estocástico desde el punto de vista del agente.
Estático vs. dinámico. Un entorno se dice dinámico si este puede cambiar
mientras el agente adopta una decisión sobre la acción. En caso contrario
es estático. En entornos estáticos no es necesario preocuparse por el
paso del tiempo mientras que en los dinámicos sí y hay que estar
preguntando al agente constantemente qué acción llevar a cabo.
Agente individual vs. multiagente. Que un sistema sea o no multiagente dependerá de si identificando otras entidades como agentes mejora o no
el rendimiento del agente. Por ejemplo, se pueden encontrar entornos
multiagente competitivo en caso de juegos como el ajedrez, multiagente
parcialmente colaborativo como en caso de conducción autónoma, etc.
Estructura de los agentes La estructura de un agente se caracteriza por los siguientes componentes:
29
Agente = arquitectura + programa
La arquitectura hace referencia al computador que tiene asociado una serie de
sensores físicos y actuadores. El programa, sin embargo, hace referencia al
software que determina el comportamiento del agente e implementa la función
percepción-acción. La IA se encarga de diseñar el programa del agente.
Los cuatro tipos básicos de programas para agentes son:
Agentes reactivos simples. Representa el tipo de agentes más sencillo y
en él, el proceso del agente es un ciclo percepción-acción que reacciona a
la evolución del entorno.
Agentes reactivos basados en modelos. El agente crea un modelo del
entorno basándose en las percepciones y acciones previas.
Agentes basados en objetivos. Este tipo se da para casos en los que se
requiere, además de la descripción del estado actual, algún tipo de
información sobre el objetivo perseguido que describa las situaciones
deseables. En cada estado se evalúan las acciones y se elige la que
permite alcanzar la meta. En este caso el conocimiento que soporta la
acción está representado explícitamente y puede modificarse.
Agentes basados en utilidad. En este caso se usa una función que asocia
un número real a un estado (o conjunto de estados). Dicho valor
representa un nivel de éxito. Además, a diferencia del caso anterior,
permite adoptar decisiones antes dos tipos de casos en los que las metas
no son adecuadas:
Objetivos conflictivos. En estos caso solo son alcanzables algunos de los objetivos y la función de utilidad determina el equilibrio adecuado de la
acción a realizar.
Varios objetivos y no hay certeza de alcanzar ninguna de ellas. La función de utilidad sirve para ponderar la posibilidad de tener éxito considerando
la importancia de cada meta.
30
Agentes reactivos simples
Este tipo de agentes toman decisiones con base a las percepciones actuales sin
atender al pasado a través de históricos ni al futuro mediante la planificación. Por
tanto, el conocimiento puede representarse como una tabla en la que a cada
percepción se le asocia una acción. La estructura de este tipo de programas se
muestra en la Figura 2. Estos agentes trabajan con un conjunto de reglas de tipo
condición-acción que asocian la percepción con un conjunto de acciones.
El programa del agente se muestra en la Figura 3. La función INTERPRETAR-
ENTRADA genera una descripción abstracta del estado actual del entorno a partir
de lo que perciben los sensores. A continuación, REGLA-COINCIDENCIA busca
de entre el conjunto de reglas que hay, la primera que coincide con el estado
actual. Finalmente, con dicha regla, REGLA-ACCIÓN devuelve la acción que
llevará a cabo el agente.
Figura 2. Esquema de agente reactivo simple. Fuente: adaptado por el autor.
31
Agentes reactivos basados en modelos Estos agentes asocian a cada situación del entorno (formado por las
percepciones y los datos históricos) una acción, de modo que una misma
percepción puede dar lugar a acciones distintas. Para ello, mantiene un estado
interno con información pasada y no observable del estado actual. La percepción
actual se interpreta a partir del estado anterior usando información sobre cómo
evoluciona el entorno (independientemente del agente) y cómo influyen en el
mundo las acciones llevadas a cabo por el agente.
función AGENTE-REACTIVO-SIMPLE(percepción) devuelve un acción
estático: reglas, un conjunto de reglas condición-acción
estado → INTERPRETAR-ENTRADA(percepción)
regla → REGLA-COINCIDENCIA(estado, reglas) acción → REGLA-ACCIÓN[regla]
devolver acción Figura 3. Programa de un agente reactivo simple. Fuente: adaptado por el autor.
Figura 4. Estructura de un agente reactivo basado en modelo. Fuente: adaptado por el autor.
32
La estructura de un agente reactivo basado en modelos se muestra en la Figura
4. En este caso la percepción actual se combina con datos del estado interno para
poder actualizar el estado actual. El programa (ver Figura 5) tiene ahora la función
ACTUALIZA-ESTADO, que es la que actualiza la descripción del estado interno
del agente con base al estado actual, el conocimiento sobre cómo evoluciona el
medio y el efecto que tienen las acciones sobre dicho medio. Como en el caso
anterior, la función REGLA-COINCIDENCIA busca la regla que coincida con el
estado actual y llevar a cabo la acción a través de la función REGLA-ACCIÓN.
1.3. Ejemplos Se va a estudiar cómo resolver mediante un agente reactivo simple un problema
de limpieza con una aspiradora. Para ello se diseñará un agente aspiradora. Tal y
como se puede ver en la Figura 6, el entorno está compuesto por dos
localizaciones: cuadrícula A y B. La aspiradora es capaz de percibir en qué
cuadrícula está y el estado de la cuadrícula (sucio o limpio). Las acciones que
puede realizar son moverse hacia la derecha o izquierda, aspirar la suciedad o no
hacer nada. Tal y como se ha visto, para poder desarrollar un agente aspiradora
que sea racional, habrá que considerar cómo se ajustan los cuatro factores de los
que dependen la racionalidad del agente, que en este caso en concreto son:
función AGENTE-REACTIVO-CON-ESTADO(percepción) devuelve un acción estático: estado, una descripción actual del estado del entorno
reglas, un conjunto de reglas condición-acción acción, la acción más reciente, inicialmente ninguna
estado → ACTUALIZA-ESTADO(estado,acción,percepción)
regla → REGLA-COINCIDENCIA(estado, reglas) acción → REGLA-ACCIÓN[regla]
devolver acción
Figura 5. Programa de una agente reactivo basado en modelo. Fuente: adaptado por el autor.
33
La medida de rendimiento de la aspiradora debe premiar al agente
por limpiar la suciedad de cada recuadro en un tiempo de terminado.
El medio en el que se ubica el agente son dos cuadrículas aunque no
cómo se distribuye la suciedad.
El conjunto de acciones permitidas son:
◦ Movimiento: izquierda, derecha
◦ Tarea: aspirar, no hacer nada.sdsd
El agente puede percibir:
◦ Ubicación: cuadrículo A, cuadrícula B.
◦ Estado: cuadrícula sucia, cuadrícula limpia.
Considerando lo anterior, el programa del agente sería de la forma que puede
verse en la Figura 7. El agente es capaz de percibir el estado de la cuadrícula y su
ubicación. Primero revisa el estado de la cuadrícula y, en caso de estar sucio,
procede a pasar a la acción de aspirar. En caso contrario, se desplaza de una
cuadrícula a otra.
Figura 6. Ejemplo de agente relacionado con el mundo de la aspiradora. Fuente: adaptado por el autor.
función AGENTE-ASPIRADORA(localización, estado) devuelve un acción
si estado = Sucio, entonces devolver Aspirar de otra forma, si localización = A entonces devolver Derecha
de otra forma, si localización = B entonces devolver Izquierda Figura 7. Programa del agente aspiradora. Fuente: adaptado por el autor.
34
Si se representa mediante una tabla cómo relacionar la percepción con cada
acción, se tendría
Percepción Acción [A, limpio] Derecha [A, sucio] Aspirar [B, limpio] Izquierda [B, sucio] Aspirar [A, limpio], [A, sucio] Aspirar … ...
A continuación se procederá a crear un programa agente aspiradora usando la
biblioteca Russel y Norvig (Russel y Norvig 2008). Para ello hay que descargar
dicha biblioteca de http://aima.cs.berkeley.edu/code.html y descargar la versión en
Java (aima-java). Una vez descargada, se puede proceder a crear el archivo jar
con Netbeans. Una vez hecho, se puede crear un proyecto nuevo y poner dicho
archivo (aima-core-0.11.1.jar) como biblioteca de este proyecto.
import aima.core.environment.vacuum.ReflexVacuumAgent; import aima.core.environment.vacuum.VacuumEnvironment; import aima.core.environment.vacuum.VacuumEnvironmentViewActionTracker;
public class AgenteReactivoSimple { public static void main(String[] args) throws Exception { StringBuilder envChanges = new StringBuilder(“”); ReflexVacuumAgent agent = new ReflexVacuumAgent(); VacuumEnvironment environment = new VacuumEnvironment( VacuumEnvironment.LocationState.Dirty, VacuumEnvironment.LocationState.Dirty); environment.addAgent(agent, VacuumEnvironment.LOCATION_A); environment.addEnvironmentView(new VacuumEnvironmentViewActionTracker(envChanges));
System.out.println(“Step #0 => status: ” + environment.getCurrentState());
int n = 5; for (int i = 0; i < n; i++) { environment.step();
System.out.println(“Step #” + (i + 1) + “ action: ” + envChanges + “ => status: ” + environment.getCurrentState()); envChanges = new StringBuilder(“”); environment.addEnvironmentView(new VacuumEnvironmentViewActionTracker(envChanges));
35
Una vez hecho esto se procede a crear la clase AgenteReactivoSimple tal y
como se ve en la Figura 8. La clase ReflexVacuumAgent crea una agente
aspiradora de tipo agente reactivo simple. El entorno de la aspiradora es creado
instanciado una clase de tipo VacuumEnvironment. A dicho entorno se le asocia
el agente anteriormente creado y se pone el estado de cada cuadrícula.
Finalmente la actualización de cada estado es escrita en una clase de tipo
StringBuilder. Inicialmente se ve el estado del entorno y, posteriormente, tras cada
etapa, se visualizará la acción a realizar y el estado del agente.
Si se ejecuta dicho código para 5 pasos( = 5), se tendrá una salida como la que
se ve en la Figura 9. Inicialmente se parte con ambas cuadrículas sucias y se sitúa
al agente en la cuadrícula A. Tras percibir que dicha cuadrícula está sucia, lleva a
cabo la acción de aspirar. Una vez limpia la cuadrícula, la acción que lleva a cabo
es desplazarse a la otra cuadrícula, donde, en la siguiente etapa, percibe que está
sucia y procede a aspirar. Una vez que está limpia, la acción del agente será
moverse de una cuadrícula a otra.
step #0=> status: {A=Dirty, B=Dirty}
step #1 action: Action[name==Suck] => status: {A=Clean, B=Dirty}
step #2 action: Action[name==Right] => status: {A=Clean, B=Dirty}
step #3 action: Action[name==Suck] => status: {A=Clean, B=Clean}
step #4 action: Action[name==Left] => status: {A=Clean, B=Clean}
step #5 action: Action[name==Right] => status: {A=Clean, B=Clean}
Figura 9. Salida del programa agente aspiradora. Fuente: elaboración propia.
36
1.4. Ejercicios de reflexión 1. Considere que se quiere diseñar un agente taxista mediante conducción
autónoma. Especifique los distintos componentes REAS del entorno de trabajo en
el que se encontrará el taxi.
Agente Rendimiento Entorno Actuadores Sensores
Taxista
Seguro, rápido, legal, viaje confortable, maximización del beneficio
Carreteras, tráfico, peatones, clientes
Dirección acelerador, freno, señal, bocina, visualizador
Cámaras, sónares, velocímetro, GPS, tacómetro, visualizador de la aceleración, sensores del motor, teclado
2. Considere que se quiere diseñar un agente tutor interactivo de inglés.
Especifique los distintos componentes REAS del entorno de trabajo en el que se
encontrará el taxi.
Agente Rendimiento Entorno Actuadores Sensores
Tutor interactivo de inglés
Maximización de los resultados de los estudiantes en las pruebas de inglés rápido, legal, viaje confortable, maximización del beneficio
Conjunto de estudiantes
Pantalla (ejercicios, sugerencias, correcciones)
Teclado
37
3. Indicar las propiedades del entorno de los dos problemas planteados en los
ejercicios anteriores
Problema/
Tipo de entorno
Observable (totalmente o parcialmente)
Determinista (determinista o
estocástico)
Estático (est. o
dinámico)
Agentes (individual o multiagente)
Taxista Parcialmente Estocástico Dinámico Multiagente
Tutor interactivo de inglés
Parcialmente Estocástico Dinámico Multiagente
4. Haciendo uso de la biblioteca usada en la sección anterior, implemente un
agente aspiradora de tipo reactivo basado en modelo. ¿Qué diferencias encuentra
con el agente reactivo simple?
import aima.core.environment.vacuum.ModelBasedReflexVacuumAgent;
import aima.core.environment.vacuum.VacuumEnvironment;
import aima.core.environment.vacuum.VacuumEnvironmentViewActionTracker;
public class AgenteReactivoBasadoEnModelo {
public static void main(String[] args) throws Exception { StringBuilder envChanges = new StringBuilder(“”); ModelBasedReflexVacuumAgent agent = new ModelBasedReflexVacuumAgent();
VacuumEnvironment environment = new VacuumEnvironment( VacuumEnvironment.LocationState.Dirty, VacuumEnvironment.LocationState.Dirty);
environment.addAgent(agent, VacuumEnvironment.LOCATION_A); environment.addEnvironmentView(new VacuumEnvironmentViewActionTracker(envChanges));
environment.stepUntilDone();
System.out.println(“Actions: ” + environment);
}
38
1.5. Conclusiones Dentro del ámbito de las ciencias de la computación la IA es una de las áreas
que causan mayor expectación, tanto a nivel académico como en la sociedad en
general. Históricamente, esta área ha sido un vaivén de expectativas y
decepciones. Sin embargo, la incorporación de la IA en distintos los ámbitos de
nuestra vida ha crecido exponencialmente en los últimos años debido a la
creciente necesidad de analizar grandes volúmenes de datos de forma
automatizada (big data) en un tiempo razonable. Tareas cotidianas como
búsqueda de información en un buscador, la detección de correo basura (spam),
visualización de anuncios personalizados en función de los gustos del usuario en
una red social incorporan IA.
A pesar de los avances que se están produciendo, aún queda mucho por
desarrollar pues todavía no se conoce bien cómo funciona el cerebro. En la
actualidad se han identificado diversos tipos de inteligencia (matemática,
lingüística, visual, cinética, musical, interpersonal, intrapersonal y naturalista) que
son manejadas por el cerebro a la vez en cada instante. Sin embargo, la IA suele
enfocarse en algún tipo de inteligencia y/o en dar solución a algún problema
concreto (predicción, segmentación de clientes, etc.). Están surgiendo nuevos
paradigmas de programación (como map-reduce) que permiten manejar distintos
tipos de inteligencia a la vez. No obstante, aún queda mucho por recorrer pues no
se sabe cómo imitar las capacidades de imaginar e intuir; dos características que
marcan la diferencia entre la inteligencia humana y la artificial. La razón es que
dichas capacidades son las que permiten crear conceptos abstractos y crear
nuevos pensamientos.
Uno de los mayores logros de la IA es el de desarrollar técnicas que lleven a
cabo el análisis de datos de forma automatizada. Esto hace que los expertos
puedan dedicarse a tareas más reflexivas. A pesar de eso, aún queda mucho
39
camino para poder lograr que la IA sepa interpretar las preferencias de actuación
en función de dicho análisis.
40
1.5. Búsqueda de Datos 1.5.1. Introducción
Esta unidad describe un tipo de agente basado en objetivos, llamado agente
resolvente-problemas. Su principal característica es que buscan la secuencia de
acciones que conduzca a los estados deseables. Para ello elige un objetivo que
tratará de satisfacerlo y buscará la secuencia de acciones que conduzcan desde
un estado inicial a algún estado objetivo. De cara a poder resolver un problema de
búsqueda es necesario realizar los siguientes pasos:
Formulación del objetivo: este primer paso consiste en fijar las metas perseguidas en base a la situación actual y la medida de rendimiento
del agente. Este objetivo se considera un conjunto de estados que
satisfacen dicho objetivo.
Formulación del problema: tras fijar el objetivo, lo siguiente es decidir
qué acciones y estados tienen que ser considerados. Para ello habrá
que realizar un proceso de abstracción que elimine aquellos detalles
del problema que no aportan información útil y/o dificulten su
resolución.
Búsqueda: proceso que consiste en la estrategia que examina diferentes secuencias posibles de acciones para hallar aquella que
nos lleve al objetivo perseguido. Tiene como entrada un problema y,
como salida, una solución.
Ejecución: el conjunto de acciones recomendadas por la solución que son llevadas a cabo.
Por ejemplo, se puede considerar el siguiente problema de ruta. Suponga que estamos en Rumanía, en la ciudad de Arad. El avión
de vuelta sale de Bucarest. Las distintas etapas a seguir son:
Formulación del objetivo: llegar a Bucarest en el menor tiempo posible.
41
Formulación del problema: consideramos el conjunto de ciudades de
Rumanía conectadas por carretera y lo representamos como un
grafo. La Figura 10 muestra el mapa de carreteras de Rumanía que
puede interpretarse como un grafo de modo que cada nodo
representa una ciudad y las aristas indican las ciudades que están
conectadas. El peso asociado a cada arista indica la distancia, en
kilómetros, entre dos ciudades conectadas. En este caso un estado
representa estar en una ciudad mientras que una acción se asocia a
conducir de una ciudad a otra.
Búsqueda: encontrar la secuencia de ciudades que nos lleve desde
Arad a Bucarest por el camino más corto.
Ejecución: ir a Bucarest por la ruta encontrada.
Para formular un problema es necesario definir los siguientes componentes:
Estado inicial en el que comienza el agente.
Conjunto de acciones que puede llevar a cabo el agente. Para ello suele usarse una función sucesor que asocia, a cada estado, el par
acción y estado al que puede acceder el agente. El estado inicial
junto con la función sucesor definen el espacio de estados del
problema, que representa el conjunto de todos los estados
alcanzables desde el estado inicial.
Coste del camino( )es una función que asigna un coste numérico a
cada camino. Para ello deberá ser capaz de asociar, a cada acción,
un coste individual.
Test objetivo que determina si un estado es un estado objetivo.
42
Para el problema del viaje por Rumanía, los elementos del problema serían:
Estado inicial: ciudad de Arad.
Función sucesor: función que asocia, para cada ciudad, el conjunto de pares de acción desplazamiento y ciudad destino.
Coste del camino vendría representado por la distancia en kilómetros
entre el origen (Arad) y el destino (Bucarest).
El objetivo del agente es llegar a Bucarest.
Como se ha visto, resolver un problema consiste en buscar el conjunto de
acciones en el espacio de estados. Una solución no es más que un camino desde
un estado inicial a un estado objetivo. La calidad de dicha solución se mide a
través de la función de costo. Diremos que una solución es óptima si es aquella
que optimiza dicha función de costo. Sin embargo, existen diversas estrategias
Figura 10. Mapa de carreteras de Rumanía con las distancias entre ciudades conectadas en kilómetros. Fuente: adaptado por el autor.
43
para encontrar la solución. Para poder analizar la idoneidad de una estrategia a un
problema determinado, es necesario medir el rendimiento de la estrategia. Cuatro
factores que suelen usarse para medir los algoritmos son:
Completitud: hace referencia a si encuentra la solución en caso de que exista.
Optimalidad: si encuentra la mejor solución en caso de que haya varias.
Complejidad temporal: ¿cuánto tiempo tarda en encontrar la solución?
Complejidad espacial: ¿cuánta memoria utiliza durante la búsqueda?
1.5.2. Búsquedas no Informadas Este tipo de estrategias no dependen de la información propia del problema para
resolverlos. Basan la búsqueda en la estructura del espacio de estados y aplican
estrategias sistemáticas para su exploración. Por lo tanto, pueden aplicarse en
cualquier circunstancia. Son algoritmos exhaustivos que, en el peor de los casos,
recorren todos los nodos para encontrar la solución. Esto hace que su coste sea
prohibitivo para la mayoría de los problemas reales y solo puedan ser aplicado al
problema de tamaño pequeño. A continuación se describen las dos principales
estrategias de búsqueda: primero en anchura y primero en profundidad.
Primero en Anchura La idea que subyace en esta estrategia consiste en visitar todos los nodos que
haya a una profundidad antes de visitar aquellos que estén a profundidad + 1.
Partiendo del nodo raíz, esta estrategia visita todos los nodos del siguiente nivel, y
así sucesivamente hasta que no haya más nodos sucesores.
Esta búsqueda puede implementarse mediante un procedimiento FIFO (First
Input First Output) en el que los sucesores del nodo que se visita son
almacenados en una cola. La Figura 11 muestra un ejemplo de búsqueda en
anchura que parte del nodo A y almacena en la cola los nodos B y C. A
44
continuación, visitaría el nodo B, que sería eliminado de la cola, y sus sucesores
(D y E) serían almacenados en dicha cola a continuación de C.
Atendiendo a los criterios anteriormente mencionados, esta estrategia tiene las
siguientes características:
Completitud: es una estrategia completa si el factor de ramificación
es finito.
Optimización: no garantiza una solución óptima. El nodo objetivo más superficial no tiene por qué ser la solución óptima.
Complejidad: si cada nodo tiene sucesores y la solución está a
nivel ,en el peor de los casos tenemos que expandir todos menos el
último nodo del nivel .Tanto la complejidad espacial como temporal
es exponencial en :
= ( )
Figura 11. Ejemplo de búsqueda primero en anchura. La flecha indica el nodo a expandir en cada etapa. Fuente: adaptado por el autor.
45
Búsqueda primero en profundidad En esta estrategia, partiendo de un nodo determinado, se visitan los sucesores
de dicho nodo antes que los nodos del mismo nivel. La búsqueda tiende a subir
por las ramas del árbol hacia las hojas. Una vez llega a un nodo hoja, visita la
siguiente rama del árbol.
Esta estrategia puede implementarse mediante una estrategia LIFO (Last Input
First Output) haciendo uso de una pila. La Figura 12 muestra un ejemplo de
primero en profundidad. Parte del nodo A y añade a la pila el nodo B. A
continuación, visita dicho nodo y añade el nodo D a la pila. Al no tener sucesores
el nodo D, es eliminado de la pila y se añade el nodo E. Al ser este nodo de tipo
hoja también y no haber más ramificación por esta parte, se pasa a visitar el nodo
C y posteriormente el F. Esto sigue así hasta que se han recorrido todos los
nodos.
Las principales características de esta estrategia son:
Completitud: si hay ramas infinitas el proceso de búsqueda podría no terminar, aun teniendo una solución próxima a la raíz.
Optimización: no garantiza que la solución encontrada sea óptima.
Complejidad: si cada nodo tiene sucesores y es la profundidad
máxima del árbol. Entonces:
◦ Temporal: complejidad exponencial
( )
◦ Espacial: no es necesario almacenar las distintas ramas. Cada
vez que se llega a un nodo hoja, se puede eliminar dicha rama.
Por tanto, solo requiere almacenar + 1 nodos y su complejidad
es ( )
46
1.5.3. Búsquedas informadas Una estrategia para reducir el tiempo de búsqueda es guiar la búsqueda con
conocimiento adicional del problema a resolver. Aunque esto haga que la
estrategia no sea de aplicación general, permitirá que se aplique a problemas
reales de mayor tamaño por la disminución en la complejidad temporal.
Como en el caso de las búsquedas no informadas tenemos que definir qué se
entiende por búsqueda del óptimo mediante la asociación de alguna medida de
costo. Estas estrategias guiarán la búsqueda en base al coste de los caminos
explorados. De esta manera se pierde la sistematicidad en la búsqueda de las
estrategias no informadas.
Dado un nodo , la función de evaluación ( ) nos da la distancia desde ese
nodo a un nodo objetivo. A menor distancia, mayor será la calidad del nodo.
Desde este punto de vista se puede decir que las búsquedas informadas son
Figura 12. Ejemplo de búsqueda Primero en Profundidad. Fuente: adaptado por el autor.
47
aquellas que dirigen la búsqueda hacia los nodos con menor valor de ( ).Esta
función es un estimador y puede considerarse que ( ) = ( ) + ℎ( ) con:
( )el coste del mejor camino conocido para ir desde el nodo inicial
al nodo .
ℎ( )es la función heurística que estima el camino de menor coste
desde el nodo a un objetivo.
Con esto se pueden definir diversas funciones de evaluación:
( ) = ( )para el caso de las búsquedas no informadas.
( ) = ℎ( )para algoritmos como el voraz.
( ) = ( ) + ℎ( )para estrategias como el A*.
Algoritmo voraz Es un algoritmo heurístico o aproximado que selecciona el siguiente nodo en
función del coste inmediato. Esta decisión, localmente óptima, suele dirigir la
búsqueda hacia soluciones subóptimas. Desde el punto de vista de la
implementación, se puede ordenar la secuencia de nodos a probar mediante una
cola de prioridad.
Este algoritmo trabaja considerando un conjunto S de acciones seleccionadas
que inicialmente está vacía, y un conjunto C con una lista de acciones candidatas
identificadas y con una prioridad asociada. En cada iteración, se evalúa la
factibilidad de añadir el siguiente elemento de C a S. Si no es factible, se elimina
de S y de C. Si lo es, pasa a formar parte de S y se borra de C. Además se pasa a
evaluar si la solución actual es parcial o no. En caso de haber obtenido la solución,
el algoritmo para.
De cara a exponer como trabaja este algoritmo, hay que considerar el problema
de ruta de viajar a Arad a Bucarest que se expuso anteriormente en esta unidad.
Sin embargo, para aplicar este algoritmo, como función de evaluación, la distancia
48
en línea recta desde Bucarest al resto de ciudades y que se llamará ℎ . Los
valores de dicha distancia están en la siguiente tabla.
Arad 366
Lugoj 244
Rimnicu Vilcea 193
Craiova 160
Mehadia 241
Sibiu 253
Dobreta 242
Oradea 380
Timisoara 329
Fagaras 176
Pitesti 100
Zerind 374
Entonces, el algoritmo voraz parte del nodo Arad, y desde dicha ciudad sólo tiene
acceso a las ciudades Sibiu, Timisoara y Zerind que tienen una distancia (en línea
recta desde Bucarest ℎ ) de 253, 329 y 374 respectivamente. Por tanto, esta
estrategia selecciona Sibiu por ser la más próxima a Bucarest y, por tanto, dicho
nodo se expande. En la siguiente, la estrategia busca de entre todas las ciudades
accesibles desde Sibiu aquella que esté a menor distancia o, dicho de otra forma,
la que menor valor de ℎ tenga. En este caso las ciudades accesibles son Arad, Fagaras, Oradea y Rimnicu Vilcea con una distancia de 366, 176, 380 y 193. Por
tanto, el algoritmo selecciona Fagaras. Y así sucesivamente hasta llegar a
Bucarest. La secuencia completa de búsqueda puede verse en la Figura 13.
Las principales características de esta estrategia son:
No garantiza que la solución final sea óptima.
Suelen ser rápidos y fáciles de implementar.
Solo genera una de entre todas las posibles secuencias de
decisiones.
49
1.5.4. Ejemplos
El problema del puzzle 8 consiste en un tablero matricial de3 3de 9 posiciones
de las cuales 8 están ocupadas por fichas numeradas (del 1 al 8) más un espacio
vacío. Inicialmente las fichas están dispuestas de forma aleatoria y el objetivo del
juego es ordenar las fichas de modo que el hueco quede en el extremo inferior
derecha. Para ello habrá que mover el espacio vacío de forma horizontal o vertical.
Para poder definir este problema hay que definir el estado inicial, el test objetivo,
los operadores (conjunto de acciones) que se pueden realizar mediante la función
sucesor y el coste del camino ( ).
En este problema se definirá el estado inicial como cualquier estado que no
coincida con el estado final. La Figura 14 muestra el estado inicial del puzzle a la
izquierda y el estado final a la derecha. Tal y como se puede ver en la Figura 15,
Figura 13. Ejemplo de búsqueda de algoritmo voraz para el ejemplo de la ruta desde Arad a Bucarest. Fuente: adaptado por el autor.
50
en este caso se cuenta con cuatro operadores, arriba, izquierda, abajo y derecha,
que se corresponde con los movimientos que puede hacer el espacio vacío.
Finalmente, como coste del camino se puede considerar que cada movimiento del
espacio vacío tiene un coste de 1.
Este problema tiene un total de9! = 362.880estados distintos, siendo solo uno de
esos estados el objetivo. Cuando la casilla vacía está en el centro, tiene cuatro
posibles movimientos y en cualquier otra posición solo 2.
Figura 14. Estado inicial (izquierda) y final (derecha) del puzzle 8. Fuente: adaptado por el autor.
Figura 15. Operadores del problema del puzzle 8. Fuente: adaptado por el autor.
51
A continuación se mostrará cómo resolvería este problema la estrategia Primero
en Anchura. Para ello, hay que considerar que el estado inicial del puzzle es el
que se ve en la Figura 16, y que el orden de los movimientos a realizar son
izquierda, arriba, derecha y abajo.
La Figura 17 muestra cómo procede el algoritmo para resolver este problema.
En el primer nivel el hueco solo podrá desplazarse en las posiciones izquierda,
arriba y derecha. La línea azul discontinua indica el orden de búsqueda. Tras
recorrer el primer nivel pasará al siguiente, y así sucesivamente. Haciendo uso de
la biblioteca introducida en la unidad anterior, se puede implementar un programa
que resuelva dicho problema.
La Figura 18 muestra dicho código. El código implementa mediante una variable
estática, el estado inicial del puzzle indicando la posición vacía con el valor 0.
Incluye dos métodos estáticos auxiliares para poder imprimir los avances de la
estrategia.
Figura 16. Estado inicial del puzzle a resolver. Fuente: adaptado por el autor.
52
En el método principal se definen la clase problema y estrategia de búsqueda. Se
empieza definiendo la clase problema instanciando una clase de tipo Problem que
recibe, como parámetros de entrada, los distintos componentes que definen un
problema:
Estado inicial, definido en la variable estática initialState.
Operadores o conjunto de acciones permitidas.
Coste del camino.
Test objetivo, definida en EightPuzzleGoalTest.
A continuación se define la estrategia de búsqueda y un agente capaz de
resolver dicho problema teniendo la información del problema y estrategia de
búsqueda.
Figura 17. Búsqueda en anchura aplicada al problema del puzzle 8. Fuente: adaptado por el autor.
53
import aima.core.agent.Action; import aima.core.environment.eightpuzzle.EightPuzzleBoard; import aima.core.environment.eightpuzzle.EightPuzzleFunctionFactory; import aima.core.environment.eightpuzzle.EightPuzzleGoalTest; import aima.core.search.framework.Search; import aima.core.search.framework.SearchAgent; import aima.core.search.framework.problem.Problem; import aima.core.search.uninformed.BreadthFirstSearch; import java.util.Iterator; import java.util.List; import java.util.Properties;
public class PrimeroEnAnchura { static EightPuzzleBoard initialState = new EightPuzzleBoard( new int[]{1, 4, 3, 7, 0, 6, 5, 8, 2}); private static void printActions(List<Action> actions) { for (int i = 0; i < actions.size(); i++) { String action = actions.get(i).toString();
System.out.println(action);
}
}
private static void printInstrumentation(Properties properties) { Iterator<Object> keys = properties.keySet().iterator();
while (keys.hasNext()) { String key = (String) keys.next();
String property = properties.getProperty(key);
System.out.println(key + " : " + property); }
}
public static void main(String[] args) throws Exception { Problem problem = new Problem(initialState, EightPuzzleFunctionFactory.getActionsFunction(),
EightPuzzleFunctionFactory.getResultFunction(),
new EightPuzzleGoalTest()); Search search = new BreadthFirstSearch(); SearchAgent agent = new SearchAgent(problem, search); printActions(agent.getActions());
printInstrumentation(agent.getInstrumentation());
} }
Figura 18. Código para resolver el problema del puzzle 8 mediante una estrategia Primero en Anchura. Fuente: elaboración propia.
54
1.5.5. Ejercicios de Reflexión
1. Considere el problema del puzzle 8. Siguiendo la Figura 17 como referencia,
dibuje el árbol de búsqueda de la estrategia primero en profundad. Solo es
necesario dibujar el árbol parcialmente explicando cómo procede la estrategia.
2. Implemente un programa, similar al de la Figura 18 pero con la estrategia
Primero en Profundidad.
3. Explique en qué consiste el problema de la mochila y, mediante un ejemplo,
indique cómo se resolvería mediante un Algoritmo Voraz.
55
Capítulo II
Apre
ndiz
aje
Auto
mát
ico
y Ju
egos
Aprendizaje Automático y Juegos
Introducción
Ejemplos
Ejercicios de Reflexión
Teoría de Jugos
Poda Alfa-Beta
Aprendizaje Automático y Juegos
57
CAPÍTULO 2: APRENDIZAJE AUTOMÁTICO Y
JUEGOS
2. Aprendizaje Automático y Juegos 2.1. Introducción
Existen diversos programas para que un agente pueda seleccionar las acciones
que se adecúan al entorno. Sin embargo, esto conlleva a que se programen todos
los posibles escenarios. A la dificultad de programar todos los posibles escenarios
se le añade la posibilidad de que el entorno varíe y haya que contemplarse nuevos
escenarios. Una forma de afrontar esto sería diseñar agentes con capacidad de
aprender. Esto permitiría al agente complementar y/o completar el conocimiento
inicial que tiene sobre el medio ambiente.
El modelo general de un agente con capacidad de aprender puede verse en la
Figura 1. Los componentes de este tipo de agentes son el elemento de actuación,
la crítica, el elemento de aprendizaje y el generador de problemas. El elemento de
actuación corresponde a un agente completo como el visto en la Unidad 2. Este
elemento recibe los estímulos del medio ambiente y determina las acciones a
realizar A continuación está el elemento crítica, encargado de evaluar el
rendimiento del agente en base a un estándar fijo y proveer el grado de éxito del
agente. El elemento de aprendizaje es el encargado de formular mejoras, con
base a la crítica, que modificarán el elemento de actuación incorporando esta
mejora. Por último, el generador de problemas se encarga de explorar situaciones
nuevas e informativas que pueden ayudar a mejorar el conocimiento del agente
del entorno.
A continuación es oportuno retomar el ejemplo del taxi automatizado de la
unidad 2 para ver cómo y en qué consistirían cada uno de los elementos del
58
agente. En este escenario, el elemento de actuación consiste en la colección de
conocimientos que hay predeterminados para seleccionar las acciones de
conducción. Por ejemplo, arrancar el coche, frenar, circular, etc. El elemento
crítico evalúa la conducción en función de lo que observa del entorno y
proporciona dicha evaluación al elemento de aprendizaje para que este formule
una mejora que sea incorporada en el elemento de actuación. Por ejemplo, si el
taxi no se aparta cuando se aproxima una ambulancia con las luces y la sirena
encendidas, otros conductores, incluida la ambulancia, reaccionan tocando el
claxon. La crítica evalúa estas reacciones y pasa la información al elemento de
aprendizaje que formula la regla de apartarse cuando se aproxime una ambulancia
con las luces y la sirena encendidas. Esta nueva regla se incorpora al elemento de
actuación. Finalmente el generador de problemas se encargaría de identificar qué
comportamientos durante la conducción deberían mejorarse y diseñar
experimentos que le conduzcan a dichas mejoras.
Figura 1. Modelo general de un agente que aprende. Fuente: adaptado por el autor.
59
Tipos de aprendizaje
Para poder producir un aprendizaje es necesario fijar una serie de conceptos y
definir métodos para medir el grado de éxito de un aprendizaje. En el contexto
computacional se considera que un programa aprende si mejora el desempeño de
una tarea a través de la experiencia. Es decir: “Un programa de ordenador se dice
que aprende de la experiencia con respecto a una tarea específica y una
medida de rendimiento , si su rendimiento en el desempeño de la tarea ,
medido según , mejora con la experiencia ”.
El tipo de retroalimentación disponible para el aprendizaje es el factor más
relevante para diferenciar los distintos tipos de aprendizaje a los que tiene que
enfrentarse un agente. Con base a la retroalimentación se distinguen el
aprendizaje supervisado, el aprendizaje no supervisado y el aprendizaje por
refuerzo. El aprendizaje supervisado consiste en aprender una función que
relacione una entrada con una salida a partir de un conjunto de ejemplos. El
aprendizaje no supervisado solo parte de un conjunto de ejemplos con entrada y
ninguna salida. El objetivo es aprender patrones a partir de la entrada recibida. Por
último, el aprendizaje por refuerzo consiste en aprender haciendo uso de algún
tipo de recompensa.
En el diseño de un elemento de aprendizaje hay que considerar, principalmente,
los siguientes aspectos:
Qué retroalimentación está disponible para aprender dichos
componentes.
Qué elementos del elemento de acción tienen que aprenderse.
Qué tipo de representación se usa para los componentes.
Como se ha comentado anteriormente, el tipo de retroalimentación indica la
naturaleza del aprendizaje a la que se enfrenta el agente. Los elementos de un
agente señalan qué aspectos relacionados con este son candidatos a que puedan
60
mejorar mediante el aprendizaje. Atendiendo a los distintos tipos de agente que
hay, los componentes son:
Proyección de las condiciones del estado actual a las acciones a
llevar a cabo.
Método de inferencia de las propiedades del medio ambiente a partir
de una secuencia de percepciones.
Información de la evolución del mundo y de los resultados de las posibles acciones que el agente puede llevar a cabo.
Información de utilidad, que indica lo deseable que es un estado.
Información acción-valor, que señala lo deseable que son las
acciones.
Metas que describen las clases de estado que maximizan la utilidad
del agente.
Estos componentes son susceptibles a mejorar de acuerdo al aprendizaje. Por
ejemplo, en el primer punto el objetivo del agente es aprender las reglas
condición-acción de una determinada actividad. Retomando el caso del taxi,
considere que durante el aprendizaje del agente, cada vez que el instructor le
indica que pare, el agente aprende una regla de condición-acción que le indica en
qué condiciones debe frenar. Desde el punto de vista del aprendizaje equivale a
decir que aprende una función booleana que le indica cuándo parar de acuerdo a
las condiciones del estado actual. Otro ejemplo, con el segundo punto, del
aprendizaje de propiedades a partir de percepciones podría darse, en el caso del
taxi al querer identificar peatones a partir de imágenes durante la conducción.
Finalmente, hay que destacar la importancia que tiene la forma de representar
la información aprendida de cara al diseño del algoritmo de aprendizaje. Algunas
representaciones que se pueden encontrar son descripciones probabilísticas,
sentencias en lógica proposicional y de primer orden, polinomios para representar
la función de utilidad, etc.
61
3.2.2 Aprendizaje supervisado
El objetivo del aprendizaje supervisado es aprender una función que relacione
una entrada con una salida según un conjunto de ejemplos. Desde un punto de
vista formal, un ejemplo es un par , ( ) , donde es la entrada y ( ) es la
salida de la función aplicada a . Entonces dado un conjunto de ejemplos, el
aprendizaje inductivo consiste en aprender una función ℎ que se aproxime a .
La función ℎ recibe el nombre de hipótesis y debido a que la función es
desconocida, no se puede saber qué tan buena es la aproximación de ℎ. A pesar
de esto suele evaluarse la calidad de la hipótesis de acuerdo a su capacidad de
generalización y, por tanto, de predecir la salida de nuevos ejemplos.
Estimación del error de un algoritmo de aprendizaje
La evaluación de un algoritmo de aprendizaje (ℎ) permite, por un lado, estimar
el rendimiento de una hipótesis y, por otro, poder seleccionar entre varias hipótesis
aquella con mejor rendimiento. Sin embargo, el algoritmo solo cuenta con un
conjunto de ejemplos de entrenamiento limitado para aprender la función ℎ. Esto
hace que surjan dos dificultades para la estimación del error de ℎ: el sesgo y la
varianza.
El sesgo está asociado al error en la aproximación de la función ℎ con respecto
a la función . Este error no depende del tamaño del conjunto de ejemplos que se use para aprender dicha función pues se debe al error asociado a no poder
modelar correctamente la hipótesis. La varianza, por el contrario, sí depende del
tamaño muestral y decrece a medida que aumenta la muestra. Este error se
refiere a la diferencia que hay entre la hipótesis aprendida y el mejor posible de la
hipótesis. En la Figura 2 se puede ver visualmente en qué consiste el sesgo y la
varianza con un ejemplo con dianas y dardos. Hay cuatro dianas con distinta
62
combinación de sesgo y varianza alta y baja. La diana superior izquierda tiene una
baja varianza debido a que todos los dardos están muy próximos entre sí y un bajo
sesgo, de modo que están dispuestos en torno al centro. Sin embargo, la diana
que está a su derecha tiene una alta varianza debido a que los dardos están muy
dispersados. La diana inferior izquierda tiene todos los dardos muy próximos entre
sí, de modo que su varianza es baja, pero están dispuestos alejados del centro y,
por tanto, tiene un sesgo elevado. Por último, la diana inferior derecha tiene
valores altos en el sesgo y la varianza.
En caso de un sesgo elevado, suele darse el fenómeno de subajuste
(underfitting). Dicho fenómeno consiste en que con la muestra considerada, el
modelo aprendido es más simple que el real y, por lo mismo, a pesar de que
disminuye el error en la muestra considerada, la capacidad predictiva será menor
en futuros casos. Otro fenómeno que hay que tener en cuenta es el sobreajuste
(overfitting), el cual se da en caso de que la varianza sea elevada. En este caso la
hipótesis se ajusta tanto a la muestra que pierde su capacidad de generalizar. La
Figura 3 muestra estos fenómenos considerando el ajuste de una curva. Como
puede ver, en la figura de la izquierda, la curva no se ajusta adecuadamente a los
puntos, mientras que en la de la derecha la curva se ajusta en exceso a los
puntos.
Figura 2. Sesgo y varianza visualizado mediante un ejemplo con dianas.
Fuente: elaboración propia.
63
En el cálculo del error de una hipótesis ℎ hay que distinguir entre el error en la
muestra y el verdadero error. El error muestral se refiere a la tasa de error de la
hipótesis en la muestra de datos disponibles. El otro es el error de la hipótesis
sobre la distribución de los datos, que es desconocida. Por tanto, siempre que
se hable del error se hace referencia al error muestral.
Validación de un algoritmo de aprendizaje
Las técnicas de validación están motivadas por dos problemas fundamentales
en el aprendizaje automático: la selección del modelo y la estimación del
rendimiento del algoritmo de aprendizaje. De cara a la selección del modelo,
existen diversas técnicas de aprendizaje y cada una de ellas tiene una serie de
parámetros. ¿Cómo se selecciona el modelo adecuado o la combinación óptima
de parámetros? Una vez seleccionado el modelo, ¿qué medidas se usan para
estimar su rendimiento? El rendimiento debería medirse con base al error real.
Si se tuviera acceso a un número ilimitado de ejemplos, la respuesta a ambas
preguntas sería seleccionar aquel modelo que tenga el error más bajo. Sin
embargo, en aplicaciones reales solo se cuenta con un conjunto finito de ejemplos
Figura 3. Fenómeno del subajuste y sobreajuste. Fuente: elaboración propia.
64
y, por lo tanto, solo se tiene acceso al error muestral. Existen diversas técnicas de
validación en función del tamaño de la muestra:
Muestra grande
◦ Resustitución
◦ Holdout
Muestra pequeña
◦ Repeated holdout
◦ K-fold cross-validation
Resustitución Es el estimador más simple que hay y consiste en usar todo el conjunto de
datos como conjunto de entrenamiento y probar el clasificador en el mismo
conjunto de datos. Al haber sido el clasificador inducido en el mismo conjunto de
datos, la estimación del error es optimista pues el conjunto de reglas de
clasificación aprendidas se ajustan a dicho conjunto de datos. Además favorece
que el sobreajuste en el modelo inducido. El error de clasificación se estima del
siguiente modo:
=1
1 − , ( ), ∈
Donde es el número de ejemplos del conjunto de datos, es la muestra, , el
ejemplo a clasificar, la clase asociada a dicho ejemplo, y ( ) es la clase
predicha por el clasificador inducido.
Holdout Este método de estimación del error divide la muestra original etiquetado en un
conjunto de entrenamiento y otro de prueba. El conjunto de entrenamiento se
65
usará para que se induzca el clasificador mientras que con el conjunto de prueba
se mide la tasa de error que comete el clasificador.
La partición entre conjunto de entrenamiento y de prueba es aleatoria y de
normal suele adoptarse una proporción de 1/2 para cada conjunto o 2/3 para el
conjunto de entrenamiento y el restante 1/3 como conjunto de prueba. El error de
clasificación en el conjunto de prueba se calcula del siguiente modo:
=1
1 − , ( ), ∈
Donde corresponde al número de ejemplos en el conjunto de prueba, es el
conjunto de prueba, el ejemplo a clasificar, la clase asociada a dicho ejemplo,
y ( ) es la clase predicha por el clasificador inducido.
Repeated holdout Es una variante del holdout que consiste en repetir el procedimiento de
evaluación entrenamiento-prueba un número de veces. Se caracteriza porque el
error estimado tiene una varianza elevada pero un sesgo pequeño. El error
estimado ^ se promedia sobre las ejecuciones del siguiente modo:
^ =1
Con el error estimado de una ejecución.
K-fold cross validation Es un método muy popular debido a que tiene un sesgo pequeño (menor que el
repeated holdout) aunque sigue conservando una varianza alta. El método
consiste en dividir el conjunto de datos en subconjuntos disjuntos y se procede a
66
estimar el error de clasificación. Para ello se estima el error de clasificación
veces de modo que en cada ejecución se usan − 1 subconjuntos como conjunto
de entrenamiento y el que queda de prueba. Además, el conjunto de prueba varía
de una ejecución a otra de modo que al final de todas las ejecuciones se ha
estimado el error sobre uno de los subconjuntos disponibles.
Algoritmos de aprendizaje
Dentro del aprendizaje supervisado existen dos grandes tareas: la regresión y la
clasificación. En regresión la variable que se quiere predecir (variable de salida) es
continua; de modo que el objetivo es inducir, desde un conjunto de entrenamiento,
una función continua que se ajuste a los datos de entrada. Por el contrario, en
clasificación, la variable de salida es discreta y el objetivo es aprender un conjunto
de reglas que permita etiquetar futuros casos. La Figura 4 muestra un ejemplo de
cada una de estas tareas.
Figura 4. Tareas de regresión y clasificación. Fuente: elaboración propia.
67
En clasificación se puede diferenciar entre dos aproximaciones: modelos
discriminativos y modelos generativos. Los modelos discriminativos son aquellos
son aquellos que no intentan modelar los datos sino que basan las reglas de
clasificación en modelar las hipersuperficies de decisión. Los generativos, por el
contrario, modelan la distribución de las distintas clases que tiene el conjunto de
datos que se está tratando. A continuación se describirá el algoritmo de
clasificación Naive Bayes debido a su popularidad y los buenos resultados que
suele obtener en problemas de distintos dominios.
Naive Bayes Es un clasificador que se encuadra en los modelos generativos. Partiendo del
teorema de Bayes de probabilidad, a posteriori determina cuál es la hipótesis más
probable ℎ del espacio de hipótesis . Para ello considera que todas las variables
de entrada son independientes. Dado el teorema de Bayes:
(ℎ| ) =( |ℎ) (ℎ)
( )
Con (ℎ) la probabilidad a priori de la hipótesisℎ, ( ) es la probabilidad
marginal y corresponde a la probabilidad de que tengamos la muestra dada bajo
todas las posibles hipótesis, ( |ℎ) es la verosimilitud y es probabilidad de
observar la muestra dada la hipótesis ℎ, y, por último, (ℎ| ) es la probabilidad
a posteriori y s corresponde con la probabilidad de que la hipótesis sea ℎ teniendo
la muestra .
Entonces la hipótesis más probable será aquella con la máxima probabilidad a
posteriori ℎ
ℎ =∈
(ℎ| ) =∈
( |ℎ) (ℎ)( ) =
∈( |ℎ) (ℎ)
68
Como puede verse, ( ) puede eliminarse por ser constante para una muestra
dada. A pesar de su sencillez y de la consideración de independencia ente las
variables, es un algoritmo muy popular debido a los buenos resultados que obtiene
en datos de distintos dominios.
3.2.3 Aprendizaje no supervisado
El aprendizaje no supervisado tiene como objetivo inferir una función que
describa la estructura implícita de los datos. A diferencia del caso supervisado, en
este caso no se cuenta con una variable de salida y, por tanto, el modelo
aprendido no tiene asociado ningún error o medida de evaluación que nos indique
la calidad de dicho modelo.
Algunas de las tareas asociadas a este tipo de aprendizaje son:
Agrupamiento.
Detección de casos anómalos (outliers).
Extracción de características.
Reducción de la dimensionalidad.
El agrupamiento tiene como objetivo particionar el conjunto de datos de entrada
en distintos grupos en función de una propiedad. La detección de casos anómalos
tiene el objetivo de buscar ejemplos que añadan error al análisis de los datos. La
extracción de características busca una serie de variables pequeñas medidas a
partir del conjunto original de variables que suele ser mucho mayor. Dichas
características contendrán la información más relevante del conjunto de datos
original. Por último la reducción de la dimensionalidad pretende reducir el conjunto
de datos originales aplicando una transformación lineal o no lineal a las
características originales. A pesar de las diversas tareas asociadas a este tipo de
aprendizaje, el término aprendizaje no supervisado suele usarse habitualmente
para referirse al agrupamiento.
69
Agrupamiento (clustering) El agrupamiento es una tarea cuyo objetivo es dividir un conjunto de datos en
grupos en base a un criterio. Intuitivamente se buscan grupos de modo que
aquellas instancias que pertenezcan a un mismo grupo son más similares entre sí
que aquellas pertenecientes a grupos distintos.
Los dos propósitos que persigue el agrupamiento son la comprensión y
descubrimiento. En lo relativo a la comprensión, esta tarea tiene el propósito de
entender cómo se organizan los datos. En este contexto, el objetivo es el estudio
de técnicas que automáticamente encuentren los grupos, que pueden verse como
una clasificación natural de los datos. En lo relativo a la comprensión, el objetivo
es proveer una abstracción de los datos individuales mediante los grupos
obtenidos. Esto permite reducir el conjunto de datos a los prototipos
representativos de cada grupo encontrados. En este ámbito se persigue estudiar
el conjunto de técnicas que encuentren los prototipos de los grupos que mejor
describan los datos.
Para poder llevar a cabo esta tarea es necesario establecer tres componentes:
Medidas de proximidad.
Criterios de evaluación.
Algoritmos de agrupamiento.
Medidas de Proximidad La proximidad suele medirse con base a una medida de distancia. Para ello hay
que tener en cuenta el tipo de atributos que tienen los datos: numéricos, binarios y
categóricos. En caso de que todos los atributos sean numéricos, las distancias
más empleadas son:
Euclídea: es la distancia más popular y tiene la propiedad de que es invariante a las traslaciones. Se define del siguiente modo:
70
, = ( ) − ( )
Manhattan: es una distancia bastante popular porque ahorra tiempo
de cómputo respecto a la euclídea.
, = ( ) − ( )
Chebyshev: es una aproximación a la euclídea también más barata, computacionalmente hablando, que esta.
, = ( ) − ( )
Para el caso de que los atributos sean binarios, se puede calcular la proximidad
haciendo uso de una matriz de confusión. Suponiendo que se tienen dos vectores
de atributos binario y , entonces se puede representar el número de
combinaciones de valores al comparar los atributos de uno y otro vector del
siguiente modo:
punto
i\punto j
1 0
1 a b
0 c d
En este caso a representa el número de atributos que valen 1 en ambos
vectores, del número de atributos con valor 0 en ambos casos, b el número de
atributos con 1 en el vector y 0 en el y c el caso contrario. Atendiendo a esta matriz se puede definir un coeficiente de similitud basado en la proporción de
valores que no coinciden:
, =+
+ + +
71
Por último, en caso de atributos nominales con más de dos etiquetas, una
posible medida de distancia se correspondería con el número de atributos que
coindicen dividido por el total de atributos :
, =
Existen muchas otras distancias propuestas en la literatura. El motivo de la
multitud de propuesta se debe a que la idoneidad de una distancia no solo se basa
en el tipo de atributos sino también en las características de estos. Una dificultad
añadida es el caso en que se tengan atributos de distinto tipo pues habrá que
tener cuidado con el peso que tiene la medida en cada tipo de atributo.
Criterios de evaluación La evaluación de un agrupamiento no es una tarea bien definida como en el
caso del aprendizaje supervisado. Ha habido esfuerzos que intentan establecer un
criterio objetivo. Sin embargo, no existe ningún criterio universal debido a que
según el ámbito de aplicación habrá un criterio de evaluación distinto. Además, la
existencia de distintos tipos de grupos hace la tarea de evaluar más difícil aún.
En líneas generales está aceptado que se busca hacer un agrupamiento de
modo que los grupos sean lo más cohesionado posible y estos estén lo más
separados entre sí. La cohesión intragrupo mide lo compacto que son los grupos.
Una medida típica es WSS (within cluster sum of squares):
= ( − )∈
Donde representa una instancia perteneciente al grupo y es el centroide
o centro de masas asociado al grupo . La distancia intergrupo nos indica cuán
72
separados están los distintos grupos encontrados. Una medida típica usada es la
BSS (between cluster sum of squares):
= | | ( − )
Donde | | es el tamaño del grupo y es el centroide de todo el conjunto de
datos.
La mayor dificultad en el contexto de la evaluación del agrupamiento surge en
cómo evaluar objetivamente qué tan correctos son los grupos encontrados. Por
ejemplo, en la Figura 5 puede verse un conjunto de datos de 20 puntos que ha
sido agrupado considerando 2, 4 y 6 grupos. Sin embargo, no se encuentra
ninguna elección que sea más adecuada que otra. Si se conoce el contexto de los
datos se podrá dar un sentido a cada uno de estos resultados o, bien, saber
cuáles elecciones tienen sentido y cuáles no.
Figura 5. Subjetividad en la elección del número de grupos adecuado en un conjunto de datos. Fuente: adaptado por el autor.
73
El problema de conocer el número de grupos suele abordarse mediante dos
aproximaciones principalmente. La primera abarca a aquellos algoritmos de
agrupamiento en el que el número de grupos es un parámetro de entrada. En
estos casos se prueba con distintos valores de y se eligen la mejor solución o,
bien, se aplica, previo al agrupamiento, una técnica de estimación del número de
grupos. La segunda aproximación abarca aquellos algoritmos que en cuentran un
número variable de grupos en función del valor de los parámetros. En estos casos
se varía el valor de dichos parámetros para poder evaluar los distintos grupos
encontrados.
La comunidad científica sigue trabajando en encontrar criterios adecuados, de
modo que existen una gran diversidad de métodos de evaluación. Dependiendo
del campo de aplicación, unas medidas serán más populares que otras.
Algoritmos de agrupamiento Existen un gran número de técnicas que usan distintas aproximaciones para
agrupar. El principal motivo es que dependiendo del campo de aplicación
podremos encontrar tipos de grupos muy distintos. De esta forma un criterio que
va bien en un dominio puede ir mal en otro debido a las características asociadas
a los grupos. Algunos de los distintos tipos de grupos que el algoritmo de
agrupamiento puede encontrarse son mostrados en la Figura 6.
Grupos separables. Este es el caso más sencillo pues los puntos de
un grupo son más similares entre sí que puntos de distintos grupos.
Grupos basado en centroides. En este caso cada grupo está
representado por un centroide o un medoide. Un centroide es el
centro de masas del grupo mientras que un medoide es el punto más
representativo. En este caso los puntos de un grupo están más
próximo al punto representativo del grupo al que pertenecen que de
cualquiera de otro grupo.
74
Grupos basados en contigüidad. En este caso cualquier punto de un
grupo está más próximo a un subconjunto de puntos del mismo
grupo que de cualquier punto de otro grupo.
Grupos basados en densidad. Un grupo se caracteriza por ser una región del espacio con una alta densidad de puntos. Son adecuados
para los casos en los que los grupos son de forma irregular y cuando
hay ruido o casos anómalos en los datos.
Grupos conceptuales. Representan un tipo de grupos que comparten una propiedad que deriva del conjunto completo de puntos o que
representan un concepto particular.
Existen diversas técnicas para poder abordar los distintos tipos de grupos que
podemos encontrar. Tres de las aproximaciones más destacadas son:
Particionales. Son algoritmos que dividen los datos en grupos no solapados.
Jerárquicos. Este tipo de técnicas agrupa los puntos por niveles de modo que la partición se representa mediante un esquema de árbol denominado
Figura 7. Los distintos tipos de grupos que puede encontrarse una técnica de agrupamiento.
75
dendrograma. En función del nivel que se considere el algoritmo indicará un
número de grupos distintos. Tiene dos aproximaciones:
◦ Estrategia aglomerativa. Partiendo de que cada punto es un
grupo, en cada etapa se van fusionando los grupos más próximos
hasta que tenemos uno solo.
◦ Estrategia dividiva. Partiendo de un solo grupo, en cada etapa se
pasa a dividirlo en grupos de menor tamaño hasta que se tienen
tantos grupos como puntos.
Bayesianos. Esta aproximación aplica una aproximación bayesiana para
modelar los datos en distintas particiones.
2.2. Ejemplos En esta sección se estudiará cómo el algoritmo de clasificación Naive Bayes
induce un clasificador para el caso de análisis de sentimiento en Twitter. Hay que
considerar que se quiere ser capaz de predecir para cada tweet que contenga una
de las palabras claves o hashtag entre los sentimientos etiquetados como
, y .La probabilidad de que dado un tweet este sea
positivo según la regla de Bayes es:
( | ) =( | ) ( )
( )
Hay que recordar que siendo ( )constante, puede descartarse para
inducir la regla de clasificación porque no afecta a la decisión. Si considera que
cada uno de los tres posibles sentimientos son equiprobables se tendrá:
( ) = ( ) = ( ) = .
El término ( | ) se calcula a partir de un conjunto de tweets
etiquetados que se usan como conjunto de entrenamiento. Cada tweet se asociará
con una secuencia de símbolos (tokens). Si se considera que el tweet a analizar
76
tiene , ,. . . , símbolos o tokens, ( | ) se calculará del siguiente
modo:
( | ) = ( | ) ∗ ( | ) ∗. . .∗ ( | )
El término asociado a cada token se calcula mediante la expresión:
( | ) =
Con el número de ocurrencias del token en tweets etiquetados como
y el número total de tokens que fueron etiquetados . Por
ejemplo, si se considera que uno de los tokens es con los siguientes
números:
El número de veces que la palabra aparece en tweets
positivos: 455.
El número total de palabras que aparecen en tweets positivos: 1211.
Se tendrá ( | ) = 0.376. Este cálculo ha de repetirse para
cada palabra que aparece en el tweet a clasificar.
Una vez se calcule para el sentimiento positivo se continuará con los otros dos
sentimientos y se asociará el tweet al sentimiento que mayor probabilidad tenga.
De modo que la regla de clasificación se podrá expresar del siguiente modo:
ℎ =∈{ , , }
( |ℎ) (ℎ)
2.3. Ejercicios de reflexión 1. Describa los algoritmos de clasificación KNN (K-Nearest Neighbors) y C4.5.
Indique, para cada caso y mediante un ejemplo concreto, cómo se induce el
77
clasificador. Tome como referencia la descripción del algoritmo Naive Bayes de la
sección anterior.
2. Describa los algoritmos de agrupamiento K-means y Single-Linkage
Clustering. Indique, para cada caso y mediante un ejemplo concreto, cómo se
genera el modelo descriptivo de los datos.
3. Haciendo uso de la herramienta Weka, haga una experimentación en la que
quiera estudiarse el rendimiento de los clasificadores Naive Bayes, KNN
(denominado en Weka IbK) y C4.5 (denominado en Weka J48). Para el caso del
KNN pruebe con 1, 3 y 5 vecinos. Para la experimentación considere 10 conjuntos
de datos distintos y valide los resultados aplicando validación cruzada con K=10.
Para manejar la herramienta Weka puede usar el tutorial que está en la
bibliografía.
Describa la experimentación indicando, en los resultados, el error de
clasificación mediante una tabla en la que cada fila corresponde a los resultados
de un conjunto de datos y cada columna a los resultados con un clasificador.
Indique también el error promedio sobre todos los datos en la última fila. Resalte
en negrita el mejor resultado para cada conjunto de datos. En promedio, ¿qué
clasificador es mejor? ¿Es mejor en todos los datos? ¿Cuál de ellos obtiene las
reglas de clasificación más fáciles de entender? Comente cómo es la regla de
clasificación de cada uno de las técnicas.
2.4. Conclusiones El aprendizaje automático es un campo de la IA muy activo debido a la
creciente necesidad de analizar datos. Con las mejoras en las tecnologías de
recogida y almacenamiento de información, el volumen de datos almacenados por
parte de cualquier organización ha aumentado exponencialmente. A pesar de los
avances, las tareas de aprendizaje resuelven con éxito tareas muy específicas.
Sin embargo, no se ha podido diseñar un programa que imite el aprendizaje
78
humano debido a que diversos aspectos del cerebro aún son desconocidos. Esto
ha hecho que se creen equipos multidisciplinares que estudien el aprendizaje
desde distintos puntos de vista.
2.5. Teoría de Juegos La teoría de juegos aborda un tipo de problemas en la que hay un conflicto de
intereses entre varios agentes implicados. Este tipo de problemas son muy
frecuentes en el día a día y, por lo tanto, el ámbito de aplicación es muy amplio.
Por ejemplo, en el mundo empresarial, se puede abordar como juegos algunos
temas tan dispares como la guerra de precios, la introducción de nuevos
productos, pujas en contratos públicos, etc. Por regla general, las situaciones de
conflicto son difíciles de analizar y entender, pues interrelacionan diversos
aspectos de la actividad humana. La teoría de juegos nos da un marco conceptual
para estudiar este tipo de situaciones.
Esta unidad introduce el marco teórico de la teoría de juegos como un entorno
multiagente, donde cualquier agente (también denominado jugador) tomará una
serie de decisiones en función de las acciones llevadas a cabo por cualquier otro
agente. Se verá la estrategia minimax para resolver este tipo de problemas y se
extenderá para el caso de decisiones en tiempo real imperfectas. Finalmente se
abordará el caso en los que se introduce un elemento aleatorio y, por tanto, las
distintas posibilidades tendrán asociadas una serie de probabilidades que influirán
en la toma de decisiones.
Los fundamentos de la teoría de juegos fueron establecidos por el matemático
John von Neumann en 1928, y junto con el economista Oskar Morgenstern fueron
expuestos en el libro Theory of games and economic behaviour, publicado en
1944. Un juego puede definirse como un problema de decisión en el que hay
involucrados más de un agente (o jugador) de modo que las decisiones de un
agente tienen efectos sobre el resto de agentes. Cabe destacar que esta definición
79
contiene varios elementos interesantes. Por una parte se tienen varios agentes
implicados. De lo contrario, solo se tendría un agente decisor y se estaría frente a
un problema de análisis de decisiones y, probablemente, con cierta incertidumbre.
Por lo tanto, un problema de juegos se da si hay al menos dos agentes cuyas
decisiones varían en función de las acciones del otro agente. El segundo aspecto
a destacar es que debe haber algún conflicto de intereses. En caso de juegos en
los que los agentes cooperen, el conflicto se referiría a la coordinación que debe
haber entre los jugadores. La ausencia de conflicto haría el problema más sencillo
y no pertenecería al ámbito de los juegos.
Los juegos en IA han recibido una gran atención debido a sus principales
características:
Representan una tarea estructurada que requiere una forma de inteligencia.
Representa una competición entre dos o más oponentes.
Son fáciles de formalizar pues las reglas están definidas y la definición de éxito o fallo es clara.
Además, en IA suelen tratarse los juegos en el caso de información completa y
multijugadores. En general, los problemas de juegos pueden clasificarse en
función de diferentes factores:
Cooperación ◦ Cooperativos: los agentes deben asociarse para encontrar una
solución que maximice el beneficio de todos.
◦ Competitivos: los agentes luchan entre sí de modo que el
beneficio de uno implica el perjuicio de otro u otros agentes.
Número de jugadores
◦ Bipersonales: problemas con dos agentes y, por naturaleza,
suelen ser no cooperativos.
80
◦ n-personales: implican más de dos jugadores y pueden ser
cooperativos, dando lugar a coaliciones.
Beneficio
◦ Suma nula: en este caso la suma del beneficio y pérdida de todos
los jugadores debe ser 0.
◦ Suma no nula: cualquier otro caso en el que la suma sea distinta
de 0.
Duración
◦ Finitos: tienen un final programado como, por ejemplo, un número
de jugadas, un tiempo de duración, etc.
◦ Infinitos: no tienen ningún final programado.
Información ◦ Información perfecta. Ambos jugadores tienen infomación
completa del estado del juego en cada instante.
◦ Información imperfecta. Ambos jugadores tienen información
parcial del estado del juego en cada momento.
Incertidumbre
◦ Deterministas: tiene predeterminado a qué estado se llega al
hacer un movimiento.
◦ Estocástico: hay componentes aleatorias que hacen que no se
conozca a qué estado se llegará al realizar un movimiento. En
ese caso se tendrá una serie de estados posibles a los que se
puede llegar y cada uno de estos estados tendrá asociada una
probabilidad.
Por ejemplo, atendiendo a la información que se maneja así como a la
incertidumbre asociada a cada movimiento, se podrá hacer una tabla de juegos
asociados:
Incertidumbre\Información Determinista Estocástico
Perfecta Ajedrez, damas, go Monopoly, backgammon
81
Imperfecta Batalla naval, tictactoe
Póker, scrabble, guerra nuclear
2.6. Los Juegos Como un Problema de Búsqueda Los juegos pueden ser abordados como un problema de búsqueda. Para ello se
requiere que la definición de juego cuente con los siguientes componentes:
Estado inicial. Incluye la posición del tablero e identifica al jugador al
que le toca mover.
Función sucesor. Proporciona una lista de pares (movimiento,
estado), indicando qué estado corresponde a un movimiento legal.
Test pro-prueba terminal. Determina cuándo se termina el juego. A
los estados en los que el juego concluye se les denomina estados
terminales.
Función de utilidad u objetivo. Se encarga de asignar un valor
numérico a los estados terminales. El tipo de valor así como su rango
dependerá del tipo de juego.
Conociendo el estado inicial y los movimientos legales se puede definir el árbol
de juegos, que no es más que una representación, en forma de árbol, de los
distintos estados posibles del juego. La Figura 7 muestra un árbol con los distintos
estados para el juego tres en línea. Como puede verse, para el primer movimiento
hay 9 posibilidades, y para cada uno de estos movimientos habrá varias
posibilidades para el adversario haciendo que el número de nodos del árbol crezca
rápidamente. En este juego hay tres posibles resultados: que gane el jugador de
las X, el de las O o que haya empate.
82
El crecimiento exponencial de los nodos hace que los juegos sean difíciles de
resolver, incluso para el caso de tamaños no muy grandes de tablero. Por ejemplo,
para el caso del ajedrez, la ramificación promedio es de 35 y a menudo cada
jugador hace una media de 50 movimientos, de modo que el árbol tiene en torno a
30 o 10 nodos aunque sólo 10 nodos son distintos. Por tanto, se requiere la
capacidad de adoptar una estrategia determinada cuando no es factible calcular la
óptima.
Estrategias óptimas
Hay que recordar que en un problema de búsqueda la solución óptima se
alcanza a través de una secuencia de movimientos que conducen a un estado
objetivo. Sin embargo, en un juego se cuenta con dos jugadores (MIN y MAX) y
ahora, a diferencia de un problema de búsqueda, se necesitará una estrategia
óptima que se adapte a las respuestas que vaya dando el oponente. Al igual que
en los problemas de búsquedas normales, encontrar la estrategia óptima deja de
ser factible incluso a partir de problemas no demasiado grandes.
Figura 7. Juego tres en raya. Fuente: adaptado por el autor.
83
Por ejemplo, considere un juego trivial con dos jugadores (MIN y MAX) que
permita mostrar todos los nodos. Los movimientos posibles para MAX se etiquetan
como a1, a2 y a3; y los de MIN como b1, b2, b3. El juego finaliza después de que
cada jugador realice un movimiento. La utilidad de los estados terminales varía de
2 a 14. El objetivo (para MAX) será seleccionar, en cada movimiento, el máximo
valor minimax. El valor minimax de un nodo es la utilidad (para MAX) de estar en
el estado correspondiente, asumiendo que ambos jugadores juegan de forma
óptima. La Figura 8 muestra el árbol de estados de dos capas.
Por lo mismo, la estrategia óptima puede determinarse a partir del valor
minimax de cada nodo, denominando Valor-Minimax(n). El valor asociado a un
nodo terminal será el de su utilidad. El jugador MAX, durante el desarrollo del
juego (en un estado intermedio del árbol), elegirá la opción (el nodo) que maximice
el valor mientras que MIN el que lo minimice. De esta forma el valor minimax
vendrá dado por la siguiente expresión:
Figura 8. Valor minimax de un juego trivial. Fuente: adaptado por el autor.
84
− ( )( )
∈ ( ) − ( )∈ ( ) − ( )
Considerando esta expresión y el árbol de juegos de la Figura 8, se puede ver
que el nodo raíz es un nodo MAX (le toca mover a MAX). Tiene tres sucesores con
valores 3, 2 y 2. El primer nodo MIN, con valor minimax 3, se accede tras ejecutar
MAX el movimiento etiquetado como a1. Dicho jugador tiene tres posibles
movimientos a su vez, que llevan a los nodos terminales. La estrategia óptima
para MAX será aquella que conduzca al valor minimax más alto. Por tanto, elegirá
la acción etiquetada como a1. En el caso de MIN, este también juega de forma
óptima, de modo que elegirá la acción b1. En caso de que MIN no juegue de forma
óptima entonces tendremos que MAX mejorará el valor de utilidad obtenido. En
caso de que MIN juegue de forma subóptima, existen otras estrategias que lo
hacen mejor que la minimax. Sin embargo, son peores para el caso en que MIN
juegue de forma óptima.
El Algoritmo Minimax
Es un método de decisión que tiene el objetivo de minimizar la pérdida máxima
esperada en juegos con adversarios e información perfecta. Esta estrategia se
caracteriza por elegir, para cada jugador, el mejor movimiento suponiendo que el
adversario elige el peor. Busca la solución óptima en el espacio de estados (árbol
de juegos) mediante una estrategia primero en profundidad completa. La Figura 9
muestra el pseudocódigo del algoritmo para el cálculo de decisiones minimax. Las
funciones Max-Valor y Min-Valor son las funciones asociadas al jugador MAX y
MIN respectivamente.
Esta estrategia suele implementarse mediante recursividad y la búsqueda la
hace del siguiente modo: considerando la Figura 8, el algoritmo parte del nodo raíz
y comienza a explorar una de las posibles acciones de MAX, por ejemplo a1. A
continuación, avanza desde el nodo MIN considerando la acción b1 y al llegar a un
85
nodo terminal almacena el valor obtenido por la función utilidad y retrocede para
explorar la siguiente acción de MIN. Esto se lleva a cabo hasta explorar todos los
nodos terminales.
Si el árbol de juego tiene una profundidad máxima de y el número de
movimientos de cada jugador es , entonces la complejidad temporal del algoritmo
es ( ). La complejidad espacial dependerá de si genera todos los sucesores a
la vez, que en ese caso sería ( ),o si los genera uno por uno, siendo en este
último caso ( ). El alto costo temporal de este algoritmo hace que no sea viable
para juegos reales.
2.7. Poda Alfa-Beta El problema del algoritmo minimax es que el número de estados a explorar
aumenta exponencialmente con el número de movimientos. Sin embargo, es
posible diseñar una estrategia completa sin necesidad de explorar todos los
función Decisión-Minimax(estado) devuelve una acción variables de entrada: estado, estado actual del juego ←Max-Valor(estado) devolver la acción de SUCESORES(estado) con valor función Max-Valor(estado) devuelve un valor utilidad si Test-Terminal(estado) entonces devolver Utilidad(estado) ← −∞ para un s en Sucesores(estado) hacer ←Max( , Min-Valor( )) devolver función Min-Valor(estado) devuelve un valor utilidad si Test-Terminal(estado) entonces devolver Utilidad(estado) ← +∞ para un s en Sucesores(estado) hacer ←Min( , Max-Valor( )) devolver
Figura 9. Pseudocódigo del algoritmo para calcular las decisiones minimax y de las funciones Max-Valor y Min-Valor. Fuente: adaptado por el autor.
86
estados posibles. Dicha estrategia, a pesar de seguir teniendo una complejidad
exponencial, el número de estados a explorar se reduce a la mitad ( ⁄ ). Esta
técnica, conocida como poda alfa-beta, devuelve el mismo valor que la estrategia
minimax.
Esta estrategia hace uso de los parámetros y , los cuales se usan como
referencia para los jugadores MAX y MIN respectivamente. hace referencia al
máximo valor encontrado a lo largo del camino e cualquier punto de la búsqueda
para MAX. De forma equivalente se asocia con el jugador MIN y almacena el
mínimo valor encontrado. La Figura 10 muestra el pseudocódigo de esta
función Búsqueda-Alfa-Beta(estado) devuelve una acción variables de entrada: estado, estado actual del juego ←Max-Valor(estado) devolver la acción de SUCESORES(estado) con valor función Max-Valor(estado, , ) devuelve un valor utilidad variables de entrada: estado, estado actual del juego ,mejor valor encontrado para MAX hasta estado. ,Mejor valor encontrado para MIN hasta estado. si Test-Terminal(estado) entonces devolver Utilidad(estado) ← −∞ para a, s en Sucesores(estado) hacer ←Max( , Min-Valor( , , )) si ⩾ entonces devolver ←Max( , ) devolver función Min-Valor(estado) devuelve un valor utilidad variables de entrada: estado, estado actual del juego ,mejor valor encontrado para MAX hasta estado. ,Mejor valor encontrado para MIN hasta estado. si Test-Terminal(estado) entonces devolver Utilidad(estado) ← +∞ para a, s en Sucesores(estado) hacer ←Min( , Max-Valor( , , )) si ⩽ entonces devolver ←Min( , ) devolver
Figura 10. Pseudocódigo del algoritmo para calcular las decisiones minimax y de las funciones Max-Valor y Min-Valor. Fuente: adaptado por el autor.
87
estrategia. Como puede verse, las rutinas son las mismas que la de minimax pero
incluye la posibilidad de poda en caso de que el jugador MAX analice un nodo
cuyo valor asociado sea menor que el menor encontrado . Del mismo modo para
MIN la poda se lleva a cabo en caso de que el valor asociado a un nodo sea
mayor que .A medida que avanza la búsqueda dichos valores se van
actualizando.
2.8. Ejemplos A continuación se propone un ejemplo de la técnica poda alfa-beta para
entender mejor cómo funciona. Para ello, se retomará el juego trivial que se
introdujo en la sección estrategias óptimas.
Figura 11. Estrategia de búsqueda de la técnica poda alfa-beta. Fuente: adaptado por el autor.
88
La Figura 11 muestra las etapas de la búsqueda de la decisión óptima en el
árbol de juego. A medida que se avanza en la búsqueda se irán mostrando el
rango de valores posibles para cada nodo. A) El nodo raíz examina el primer nodo
que tiene un valor asociado de 3. Al ser un nodo MIN, el valor 3 es el valor máximo
que puede tener. B) A continuación, retrocede y explora el siguiente nodom que
tiene un valor de 12. Al ser un nodo MIN, descarta este movimiento por tener un
valor mayor. C) Examinar la tercera acción de MIN, con un valor de 8. Como en el
caso anterior, dicho valor es descartado y ya se sabe que el mejor valor de MIN en
este nodo es exactamente 3, y el del nodo raíz, se sabe que es, al menos, 3. D) A
continuación la estrategia explora la segunda posible acción de MAX. En este
caso, la primera acción de MIN tiene asociado un valor de 2. Al ser el jugador MIN,
este valor será el valor máximo que pueda tener. Sin embargo, la primera acción
que llevó a cabo MAX le dio un valor mejor, 3; de modo que MAX nunca elegiría
esta acción. El motivo es que si MIN pudiera llevar a cabo una acción con un valor
menor en la función de utilidad, MAX descartaría llevar a cabo esta acción (a2).
Por el contrario, si el resto de acciones de MIN son mayores, entonces serán
descartadas pues este jugador elige la acción que minimice la función de utlidad.
E) En este caso, al explorar la última acción posible de MAX (a3), la técnica
examina la primera acción de MIN (d1). En este caso el valor es 14, de modo que
será el valor máximo de la acción de MIN. Esta alternativa es mejor que la que
encontró previamente (3); de modo que seguirá explorando. F) La segunda acción
(d2) tiene un valor 5 de modo que deberá seguir explorando. El último sucesor
tiene un valor 2 y, por lo tanto, este será el valor asociado a MIN. Otra forma de
ver esto, atendiendo a la fórmula Valor-Minimax sería considerar las siguientes
evaluaciones:
− ( ) = ( ), ( ), ( )
Con ( ) = (3,12,8), ( ) = (14,5,2)y ( ) = (2, , ). En
este último caso, sea el menor valor de los tres valores, entonces se sabe que
89
⩽ 2. Cualquier otro valor mayor no será considerado por el jugador MIN mientras
que cualquier otro valor menor que seleccione MIN será descartado por el jugador
MAX debido a que encontró, explorando una acción previa, un resultado más
favorable.
2.9. Ejercicios de Reflexión 1. Explicar las propiedades de la estrategia minimax (completitud, optimalidad,
complejidad espacial y temporal), y argumente la motivación de la poda alfa-beta.
2. Dado el siguiente árbol de juego, aplique la técnica poda alfa-beta indicando,
en cada etapa de la búsqueda, los valores de alfa y de beta.
91
Capítulo III
Prob
lem
a de
Sat
isfa
cció
n de
Re
stric
cion
es y
Lóg
ica
Aprendizaje Automático y Juegos
Introducción
Ejemplos
Ejercicios de Reflexión
Teoría de Jugos
Poda Alfa-Beta
Problema de Satisfacción de Restricciones y Lógica
93
CAPÍTULO 3: PROBLEMA DE SATISFACCIÓN
DE RESTRICCIONES Y LÓGICA Este capítulo aborda dos grandes temas: la resolución de problemas de
satisfacción de restricciones (PSR) y la lógica. El primero de ellos es ampliamente usado en problemas grandes y complejos y, principalmente, combinatorios. Se partirá de una introducción en la que se da una definición formal y se continuará presentando cómo se modelan varios problemas para resolverlos como un PSR. Finalmente, se presentará los tipos de técnicas que hay y se entrará en detalle con la estrategia vuelta atrás.
En el segundo tema se introduce la lógica, cuyo objetivo de estudio es el aprendizaje de las técnicas de demostración formales y sus aplicaciones en la resolución de problemas. Para ello es necesario llevar a cabo la formalización del conocimiento y aprender la manipulación del mismo. La formalización se hace mediante el lenguaje formal lógico. En este tema se introduce el lenguaje de la lógica de primer orden para aprender a formular proposiciones y razonamiento con dicho lenguaje.
2. Problemas de Satisfacción de Restricciones y Lógica 2.1. Introducción
Los problemas de satisfacción de restricciones (PSR) se caracterizan porque los estados y el test objetivo están representados de forma estructurada. Un estado está compuesto por variables que pueden tomar diferentes valores y un estado es de tipo meta si los valores que cumplen las variables implicadas (en dicho estado) cumplen una serie de restricciones.
Desde un punto de vista formal, un PSR se define como una tripleta ( , , )
donde: , , … , es un conjunto de variables. : → Es una función que asigna un dominio (conjunto de valores
de ) a cada variable. El dominio de una variable suele denotarse como y contiene los posibles valores que puede tomar la variable. La cardinalidad del dominio es = | |.
94
= , , … , Es un conjunto finito de restricciones de modo que cada restricción implica algún subconjunto de variables y especifica las combinaciones aceptables de valores para ese subconjunto.
Una variable viene dada por el par variable-valor ( , ) que representa la
asignación del valor a la variable ( = ). De la misma firma un conjunto de variables viene dado por una tupla de pares ordenados, donde cada par ordenado ( , ) asigna el valor { ∈ } a la variable . Una tupla , , … , , se dice que es localmente consistente si satisface todas las restricciones formadas por las variables , … , . Por simplificación sustituiremos dicha tupla por
, … , . Un valor ∈ se dice que es un valor consistente para si existe al menos
una solución del PSR en la que = . Un estado del problema está definido por una asignación de valores a unas o todas las variables , … . A una asignación se le dice consistente si no viola ninguna restricción y es completa si todas las variables están representadas. De esta forma se puede definir una solución de un PSR como una asignación completa y consistente. Este tipo de problemas pueden tener asociados una función objetivo, de modo que se requiere que la solución encontrada maximice o minimice dicha función.
Un PSR puede modelarse como un grafo de restricciones, de modo que cada
nodo representa una variable y los arcos las restricciones. Esta modelización permite aplicar algoritmos de búsqueda sobre grafos. Además, un PSR se le puede dar una formulación incremental similar a la de un problema de búsqueda estándar:
Estado inicial: asignación vacía { }, en la que ninguna variable ha sido asignada.
Función sucesor: un valor se puede asignar a cualquier variable no asignada, siempre y cuando no viole ninguna restricción.
Test objetivo: la asignación actual es completa. Costo del camino: un coste constante para cada paso.
Cada solución debe ser una asignación completa, de modo que el árbol de
búsqueda tendrá una profundidad equivalente al número de variables .
95
2.2. Modelización de Problemas de Satisfacción de Restricciones
A continuación se introducirá un par de problemas y cómo se deslizan para ser
tratados como un PSR.
El Problema de las N-Reinas
Dado un tablero de ajedrez × , hay que colocar reinas de tal modo que
ninguna de ellas pueda ser alcanzada por otra con un movimiento. En otras
palabras, que ninguna reina pueda ser comida por otra con los movimientos que
tiene permitidos. Las restricciones, por tanto, son que dos reinas no pueden
coincidir en la misma fila o columna, y tampoco pueden estar en diagonal. Esto
hace que se pueda asociar cada reina con una columna distinta y se reduzcan las
variables a las filas de modo que su valor representa la fila en la que se coloca la
reina correspondiente a dicha variable. Desde el punto de vista de un PSR se
puede formular del siguiente modo:
Variables: { }, = 1, … , .
Dominio: {1, … , }, para todas las variables.
Restricciones (∀ , , ≠ ):
◦ ≠ No pueden estar en la misma fila.
◦ − ≠ | − | No pueden estar en la diagonal.
96
La Figura 1 muestra dos soluciones del problema para el caso = 4, que
tendría las siguientes restricciones:
| − | ≠ 1.
| − | ≠ 2.
| − | ≠ 3.
| − | ≠ 1.
| − | ≠ 2.
| − | ≠ 1.
Coloración de Mapas
Dado un conjunto de colores finitos y un mapa dividido en regiones, colorear
cada región de modo que las regiones adyacentes no pueden tener el mismo
color. En la formulación PSR se define una variable por cada región del mapa, y el
dominio de cada variable es el conjunto de colores disponibles. La restricción es
que las variables de dos regiones contiguas no pueden tener el mismo valor.
Figura 1. Dos soluciones del problema de la N Reinas para N=4. Fuente: elaboración propia.
97
Por ejemplo, la Figura 2 muestra un mapa de cuatro regiones , , , para ser
coloreadas con los colores rojo, verde y azul. La formulación PSR sería:
Variables: { , , , }
Dominio: { , , }
Restricciones: { ≠ , ≠ , ≠ , ≠ , ≠ }
Figura 2. Mapa con cuatro regiones a colorear. Fuente: elaboración propia.
98
La Figura 3 muestra la representación de este problema como un grafo de
restricciones en que cada nodo representa una región del mapa mientras que los
arcos son las restricciones entre las mismas. Por tanto, se tendrán 5 aristas. En
esta representación, todos los nodos adyacentes deben tener un valor distinto.
2.3 Técnicas de Resolución de PSR Al formularse el PSR como un problema de búsqueda, se puede aplicar
cualquier estrategia de búsqueda. Sin embargo, hay que tener en cuenta la
complejidad del algoritmo pues el árbol de búsqueda con muchas ramificaciones
que hacen que no pueda aplicarse algoritmos exhaustivos.
Las técnicas más usuales que se llevan a cabo para manejar un PSR se
pueden agrupar en tres tipos:
Figura 3. Grafo de restricciones del problema de coloreado de mapa. Fuente: adaptado por el autor.
99
Búsqueda sistemática: se centran en buscar en el espacio de
estados del problema. Este tipo de técnicas pueden ser completas, si
buscan en todo el espacio de estados o incompletas si solo buscan
en una región de este.
Técnicas inferenciales: tienen como objetivo deducir nuevas restricciones a partir de las planteadas de forma explícita en el
problema. Por lo general inducen restricciones implícitas entre
variables que hacen que se plantee un nuevo PSR equivalente al de
partida.
Técnicas híbridas: combinan las dos anteriores de modo que
mediante una técnica inferencia plantea un PSR más restringido y
equivalente al original. Esto permite acotar el espacio de búsqueda y
aplica, sobre este nuevo espacio, una estrategia de búsqueda.
Búsqueda con vuelta atrás (backtracking) Esta técnica es una estrategia primero en profundidad que en cada nivel del
árbol de búsqueda, asigna un valor a una variable y vuelve para atrás cuando no
hay opción de asignarle un valor consistente.
función Búsqueda-con-Vuelta-Atrás(psr) devuelve una solución o fallo devolver Vuelta-Atrás-Recursiva({}, psr) función Vuelta-Atrás-Recursiva(asignación, psr) devuelve una solución o fallo si ó es completa entonces devolver ó ←Selecciona-Variable-Noasignada(Variables[psr], ó ,psr) para cada valor en Orden-Valores-Dominio( , ó ,psr) hacer si es consistente con asignación de acuerdo a las Restricciones[psr] entonces añadir { = } a ó ←Vuelta-Atrás-Recursiva(asignación, psr) si ≠ entonces devolver borrar { = } de ó devolver Figura 4. Pseudocódigo del algoritmo Vuelta Atrás para problemas de satisfacción de restricciones. Fuente: adaptado por el autor.
100
La Figura 4 muestra el pseudocódigo de la Vuelta Atrás para el PSR. Como
puede verse, se modela sobre la estrategia de búsqueda Primero en Profundidad
recursiva.
5.3. Ejemplos En esta sección vamos a ver cómo se resolvería el problema de coloración del
mapa mediante la técnica de búsqueda Vuelta Atrás. Para ello consideraremos el
mapa de Australia, que está dividida, tal y como se ve en la Figura 5, en las
siguientes regiones:
Australia Occidental (AO)
Territorio del Norte (TN)
Australia del Sur (AS)
Queensland (Q)
Nueva Gales del Sur (NGS)
Victoria (V).
Tasmania (T)
101
La formulación del problema es:
Variables: { , , , , , , }
Dominio: { , , }
Restricciones: { ≠ , ≠ , ≠ , ≠ , ≠ ,
≠ , ≠ , ≠ , ≠ }
Haciendo uso de la librería AIMA, se puede resolver dicho problema con el
código que se muestra en la Figura 6.
5.4. Ejercicios de Reflexión
1. Representar el siguiente problema como problema de satisfacción de
restricciones (no es necesario resolverlo, solo plantear la representación).
Suponga el siguiente puzzle lógico: hay cinco casas de diferentes colores, en las
cuales viven personas de diferentes nacionalidades, con diferentes mascotas, que
gustan de diferentes bebidas y practican diferentes deportes, además se
consideran las siguientes restricciones:
El inglés vive en la casa roja.
El español tiene un perro.
El hombre de la casa verde bebe café.
El irlandés bebe té.
import aima.core.search.csp.Assignment; import aima.core.search.csp.BacktrackingStrategy; import aima.core.search.csp.MapCSP; public class VueltaAtras { public static void main(String[] args) throws Exception { MapCSP csp = new MapCSP(); BacktrackingStrategy strategy = new BacktrackingStrategy(); Assignment assignment = strategy.solve(csp); System.out.println(assignment); } }
Figura 6. Código en Java para resolver el problema de coloreado de las regiones del mapa de Australia con el algoritmo Vuelta Atrás usando la librería AIMA. Fuente: elaboración propia.
102
La casa verde está a la derecha de la casa marfil.
El jugador de go es dueño de caracoles.
El hombre de la casa amarilla juega cricket.
El hombre de la casa del medio bebe leche.
El nigeriano vive en la primera casa.
El jugador de judo vive cerca del hombre que tiene un lobo.
El jugador de cricket vive cerca del dueño del caballo.
El jugador de póker bebe jugo de naranja.
El japonés practica polo.
El nigeriano vive cerca de la casa azul.
2. Resuelva, manualmente, el problema anterior planteado de modo que pueda
responder a las siguientes preguntas: ¿quién es el dueño de la cebra? y ¿quién
bebe cerveza?
3. Diseñe una estrategia Vuelta Atrás que resuelva el problema de la cebra.
5.5. Conclusiones La modelización de un problema como un PSR permite que sea abordado
mediante un amplio número de estrategias. Los PSR han demostrado su utilidad
en ámbitos tan diversos como la investigación operativa, la bioinformática, las
telecomunicaciones, etc.
5.6. Conocimiento Racional No puede hablarse de inteligencia sin hablar de conocimiento. En IA todos los
agentes manejan conocimiento de una u otra forma. Sin embargo, el conocimiento
que manejan es muy específico de acuerdo al problema. En este sentido, los
agentes basados en conocimiento pueden aprovechar el conocimiento expresado
103
mediante alguna técnica de representación para combinar la información que
extraen y adaptarse a diversos propósitos.
El uso explícito que se hace en la IA del conocimiento es la diferencia
fundamental entre esta disciplina y la informática convencional. Desde este punto
de vista se puede decir que los objetivos que se persiguen son:
Estudiar técnicas generales de representación del conocimiento.
Estudiar nuevas estrategias de resolución de problemas.
En esta unidad se hará un énfasis en el primer objetivo mediante el uso de la
lógica como técnica de representación del conocimiento.
5.7. Representación del Conocimiento y Razonamiento El conocimiento y el razonamiento son dos conceptos centrales en el ámbito de
la IA. Para poder inferir a partir de un conocimiento previo es necesario encontrar
una forma de modelarlo. No obstante, los desafíos a los que se enfrenta son:
La representación del conocimiento del sentido común.
La habilidad para compensar la eficiencia computacional en busca de
inferencias precisas.
La habilidad de representar y manipular conocimiento e información
con incertidumbre.
La representación del conocimiento puede definirse como la transformación del
conocimiento de un dominio a un lenguaje simbólico. En este caso se hace un
planteamiento simbólico de resolución de problemas en el que cada elemento de
la representación (símbolo) se refiere a un objeto, hecho o relación de interés
perteneciente al dominio a representar. Este lenguaje de representación debe
definir dos aspectos:
104
La sintaxis: abarca las posibles formas de construir y combinar los
elementos del lenguaje para representar los hechos del dominio real.
Está centrada en la estructura formal del lenguaje.
La semántica: determina la relación entre los elementos del lenguaje y su interpretación en el dominio. Está centrada en las condiciones
de verdad de las oraciones.
La representación del conocimiento tiene una fase de codificación, encargada
de convertir los hechos reales en una representación interna, y otra de
decodificación, que vuelve a convertir en hechos del mundo real los resultados de
los procesos inferenciales realizados sobre la representación interna del
conocimiento. El instrumento para codificar el dominio real en otra representación
se denomina esquema de representación. Desde un punto de vista computacional
un esquema de representación puede ser descrito como una combinación de
estructuras de datos y procedimientos que representan la componente estática y
dinámica del esquema:
Parte estática:
◦ Formada por las estructuras que codifica el problema.
◦ Operaciones para crear, modificar y destruir elementos en la
estructura.
◦ Predicados que dan un mecanismo para consultar esta estructura
de datos.
◦ Semántica de la estructura: se necesita definir la relación entre la
realidad y la representación escogida.
Parte dinámica: ◦ Estructuras de datos que almacenan conocimiento referente al
entorno/dominio en el que se desarrolla el problema.
◦ Procedimientos que permiten:
▪ Interpretar los datos del problema (de la parte estática) a partir
del conocimiento del dominio (de la parte dinámica).
105
▪ Controlar el uso de los datos: estrategias de control.
▪ Adquirir nuevo conocimiento.
Además, todo esquema de representación debe presentar una serie de
propiedades:
Adecuación de la representación. Capacidad para poder representar de forma adecuada todo el conocimiento de un dominio, sobre todo el que se considere
relevante.
Adecuación inferencial. Posibilidad de manipular las estructuras de representación de forma que se puedan derivar nuevas estructuras asociadas
con nuevo conocimiento inferido a partir del antiguo.
Eficiencia inferencial. Posibilidad de mejorar la eficiencia del proceso inferencial mediante la inclusión de estrategias que agilicen dicho proceso.
Eficiencia adquisicional. Capacidad para incorporar nuevo conocimiento de forma sencilla.
En IA se usa la lógica como instrumento para la representación del
conocimiento. Los principales motivos para esta elección son:
Desde un punto de vista matemático son precisos, de modo que puede
conocerse sus limitaciones, sus propiedades, la complejidad de una inferencia,
etc.
Son lenguajes formales, de modo que los programas computacionales pueden
manipular sentencias en el propio lenguaje.
Presentan una sintaxis y una semántica.
Para manejar estos conceptos se introducen los agentes basados en
conocimiento debido a su capacidad para inferir aspectos ocultos del estado del
entorno a partir del conocimiento y las percepciones. Para ello requiere que el
agente sea capaz de razonar con el conocimiento que maneja.
106
Agentes basados en conocimientos
El principal componente de este tipo de agentes es su base de conocimiento
(BC). Informalmente, una BC es un conjunto de sentencias de modo que cada
sentencia se expresa en un lenguaje de representación del conocimiento y
representa alguna aserción acerca del mundo. Además, el agente debería estar
dotado de tres cualidades fundamentales:
Representar el conocimiento del mundo que le rodea.
Razonar para generar nuevo conocimiento a partir del conocimiento disponible.
Aprender nuevo conocimiento a partir de las observaciones que obtiene del entorno.
Adicionalmente, estos agentes deben tener la capacidad de aceptar nuevas
tareas, usar el conocimiento o inferir de forma eficiente y adaptarse a cambios en
el entorno. Para ello, deben contar con mecanismos para conocer el estado actual
del entorno, y cómo evoluciona a lo largo del tiempo. También necesita de algún
mecanismo para poder inferir a partir de propiedades no vistas.
La Figura 7 muestra el esquema general de un agente basado en conocimiento.
Como otros agentes, este recibe una percepción y devuelve una acción. El agente
mantiene una BC que contiene algún tipo de conocimiento de antecedentes. En
función AGENTE-BC(percepción) devuelve un acción variables estáticas: BC, una base de conocimiento t, un contador, inicializado a 0, que indica el tiempo DECIR(BC, CONSTRUIR-SENTENCIA-DE-PERCEPCIÓN(percepción, t)) acción ← PEGUNTAR(BC, PEDIR-ACCION(t)) DECIR(BC, CONSTRUIR-SENTENCIA-DE-ACCIÓN(acción, t)) t ← t + 1 devolver acción
Figura 7. Programa de un agente basado en conocimiento genérico. Fuente: adaptado por el autor.
107
dicho esquema los mecanismos para añadir sentencias nuevas a la BC y
preguntar qué sabe el agente de acuerdo a dicho BC vienen dadas por las tareas
DECIR y PREGUNTAR, respectivamente. Ambas tareas requieren realizar
inferencia. Cada vez que el agente es invocado realiza dos cosas: primero dice a
la BC lo que ha percibido y, a continuación, pregunta a la BC qué acción ejecutar.
Tras elegir la acción, el agente graba su elección mediante la tarea DECIR y
ejecuta la acción.
Las funciones CONSTRUIR-SENTENCIA-DE-PERCEPCIÓN y PEDIR-ACCION
ocultan los detalles del lenguaje de representación. La primera de ellas toma una
percepción en un instante de tiempo y devuelve una sentencia afirmando lo que el
agente ha percibido en dicho instante de tiempo. La segunda función toma un
instante de tiempo como entrada y devuelve una sentencia para preguntarle a la
BC qué acción se debe realizar en dicho instante de tiempo. En este esquema los
detalles de los mecanismos de inferencia (DECIR y PREGUNTAR) están ocultos.
5.8. Lógica En esta sección se expondrá la representación del conocimiento basado en
lógica. Como se dijo anteriormente, se caracteriza por tener una base teórica muy
sólida y porque los mecanismos de inferencia son potentes y conocidos. Además,
separa el conocimiento del razonamiento. La lógica, como mecanismo de
representación, consta de tres elementos:
Una sintaxis, que indica qué símbolos pueden usarse y cómo construir las sentencias legales.
Una semántica, que asocia los elementos del lenguaje con los elementos reales
del dominio. Da el significado de las sentencias lógicas.
Un conjunto de reglas de inferencia, que permiten inferir conocimiento nuevo a
partir del ya existente.
108
La semántica del lenguaje define el valor de la verdad de cada sentencia
respecto al modelo. Dicho modelo no es más que una abstracción matemática de
un entorno real que permite definir la verdad o falsedad de una sentencia.
Razonamiento automático
En inferencia es importante poder representar estructuras con conocimiento
para poder caracterizar el nuevo conocimiento generado. Existen varios tipos de
razonamientos lógicos para inferir:
Razonamiento deductivo: razonamiento que pasa, a partir de un conocimiento general, a otro específico. El nuevo conocimiento generado es cierto si parte
de otro conocimiento cierto. Abarca las reglas de inferencias de la lógica (por
ejemplo, el Modus Ponens).
Razonamiento inductivo: se caracteriza por generalizar a partir de un
conocimiento más específico. Este es el mecanismo del aprendizaje
automático.
Razonamiento abductivo: este método de razonamiento parte de un
conocimiento (reglas y hechos observados) y genera un conjunto de
explicaciones posibles o hipótesis que harían, usando la deducción, coherente
el conocimiento de partida.
Estos métodos de inferencia deben caracterizarse por ser sólidos y completos.
Se dice que un método de inferencia es sólido o mantiene la verdad si solo deriva
conocimiento implicado y es completo si puede derivar cualquier conocimiento que
está implicado.
5.9. Tipos de lógica Los modelos lógicos más conocidos en IA son la lógica proposicional y la lógica
de predicados o de primer orden. Básicamente, se diferencian en que la primera
no admite argumentos en los predicados mientras que la segunda sí.
109
Lógica proposicional (orden 0) Es una lógica que representa hechos discretos del mundo real que pueden ser
ciertos o falsos. Está compuesto de proposiciones, que son afirmaciones (ciertas o
falsas) sobre un hecho único del dominio. De igual forma, estas proposiciones
pueden combinarse mediante conectores para expresar hechos más complejos.
Sin embargo, esta lógica padece de poca expresividad debido a la dificultad de
expresar un conjunto de hechos con características comunes pues una
proposición está asociada a un hecho y no permite la cuantificación.
Sintaxis y semántica
La sintaxis se compone de los siguientes elementos:
Sentencia atómica: representa los elementos sintácticos indivisibles que se
componen de un único símbolo proposicional.
◦ Constantes lógicas. Son dos símbolos proposicionales con
significado fijado: verdadero (V) y falso (F).
◦ Proposiciones lógicas. Son símbolos proposicionales que pueden
ser verdadera o falsa. Suelen usarse mayúsculas para denotar
estos símbolos: P, Q, R, etc.
Conectivas lógicas: permite construir sentencias complejas combinando
sentencias más simples. Existen cinco conectivas:
◦ ¬(no) se denomina negación.
◦ ∧(y) se denomina conjunción.
◦ ∨(o) se denomina disyunción.
◦ ⇒(implica) se denomina implicación y está compuesto por una
premisa o antecedente y una conclusión o consecuente. También
se les conoce como reglas si-entonces.
◦ ⇔(si y solo si) se denomina bicondicional.
Sentencias: son elementos sintácticos que se construyen a partir de átomos
y/o sentencias mediante conectivas lógicas.
110
Con el objetivo de evitar la ambigüedad, cada sentencia construida a partir de
conectivas binarias puede estar encerrada en paréntesis. Por ejemplo, se podría
poner ( ∧ ) ⇒ en vez de ∧ ⇒ .Sin embargo, con el objetivo de mejorar
la legibilidad suele omitirse dicho paréntesis atendiendo al siguiente orden de
precedencia descendente (de mayor a menor) de los símbolos: ¬,∧,∨,⇒y⇔. La
semántica, en cambio, define las reglas para asociar un valor de verdad (V o F) a
cada sentencia. La interpretación de las sentencias consistirá en asignar un valor
de verdad a cada proposición y habrá que considerar la correspondencia que haya
entre elementos del lenguaje y el mundo a representar.
Lógica de primer orden
La lógica proposicional tiene muchas limitaciones derivadas del uso exclusivo
de la proposición como construcción del lenguaje. Su lenguaje no permite
representar de forma precisa el conocimiento de entornos complejos. La lógica de
primer orden (LPO) extiende la lógica proposicional adoptando sus fundamentos,
es decir, adoptando una semántica composicional declarativa, que es
independiente del contexto y no ambigua. Además, construye una lógica más
expresiva basada en dicho fundamento y tomando prestada, de los lenguajes
naturales, su idea de la representación. La representación del conocimiento se
lleva a cabo considerando que en el lenguaje natural los nombres y las sentencias
nominales se refieren a objetos que tienen unas características distintivas
(propiedades). Por otro lado, están los verbos y las sentencias verbales que hacen
referencia a relaciones entre objetos. Algunas de estas relaciones son funciones,
las cuales son un tipo de relaciones que requieren una entrada determinada y
proporcionan una salida. Los siguientes son ejemplos de lo mencionado
anteriormente:
Objetos: gente, casas, números, colores,...
Propiedades: alto, rojo,..
Relaciones: hermano, más alto que,...
111
Funciones: padre de, tejado de,...
Así pues, la principal diferencia entre la lógica proposicional y la LPO es lo que
cada uno asume, que es la naturaleza de la realidad y lo que comprende el
compromiso ontológico de cada lenguaje. La lógica proposicional considera que
hay hechos que suceden o no en el mundo mientras que la LPO asume que el
mundo se compone de objetos con ciertas relaciones que suceden o no.
El compromiso epistemológico es otra caracterización posible de la lógica, la
cual se refiere a los posibles estados del conocimiento respecto a cada hecho que
la propia lógica permite. En este caso, ambas lógicas analizadas permiten que el
agente adopte tres posibles valores ante un hecho representado mediante una
sentencia: verdadero, falso o desconocido.
Sintaxis y semántica
Los elementos sintácticos básicos de la LPO son los símbolos que representan
los objetos, las relaciones y las funciones. Por lo tanto, los símbolos se agrupan en
tres tipos:
Símbolos de constante, que representan los objetos.
Símbolos de predicado, que representan las relaciones.
Símbolos de función, que representan funciones.
Cada símbolo de predicado y de función tiene una aridad que establece su
número de argumentos. Cada relación tiene una aridad mayor o igual a 0 mientras
que una función tiene una aridad mayor que 0. Por ejemplo, se puede representar
el lenguaje de la aritmética para representar los números naturales:
Símbolos de constantes:{0,1}.
Símbolos de función:
◦ Monaria: s (siguiente).
◦ Binarias:{+,∗}.
112
Símbolo de relaciones binaria:{ }.
Otros símbolos que usa la sintaxis de la LPO son:
Símbolos lógicos: ◦ Variables: x, y, z, etc.
◦ Conectivas: ¬,∧,∨,⇒y⇔.
◦ Cuantificadores: ∀, ∃.
◦ Símbolo de igualdad:.
Símbolos auxiliares:
◦ Los paréntesis: “(“, “)”.
◦ La coma: “,”.
A partir de los símbolos anteriormente descritos se pueden definir las siguientes
nociones:
Términos. Un término es una expresión lógica que se refiere a un objeto. Por
tanto abarca los símbolos de variable, constante y los de función. En este
último caso tendrá la forma , … , ,con haciendo referencia a un
símbolo de función, es la aridad y es un término. Siguiendo con el ejemplo
del lengiaje de la aritmética se tendría:
◦ Es un término que se suele escribir( ∗ 1) + ( ).
◦ , <∗ , ( )+
no es un término.
Sentencias atómicas. Representan hechos y están formados por un símbolo
de predicado seguido de una lista de términos entre paréntesis. Estas
sentencias pueden tener términos complejos. Una sentencia atómica es
verdadera en un modelo dado, y bajo una interpretación dada, si se cumple la
relación (símbolo de predicado) entre los objetos (argumentos). Continuando
con el ejemplo de la aritmética:
◦ ∗ ( , 1), ( ) es una sentencia atómica que se suele escribir como
∗ 1 < ( ).
113
◦ +( , ) =∗ ( , ) es una sentencia atómica que se suele escribir
como + = ∗ .
Sentencias compuestas. Las sentencias pueden hacerse más complejas
haciendo uso de las conectivas lógicas. La semántica es idéntica a la de la
lógica proposicional.
Cuantificadores. Para poder expresar propiedades de colecciones de objetos,
se puede hacer uso de los cuantificadores para no tener que enumerarlos
todos. La LPO tiene dos cuantificadores:
◦ Cuantificador universal( ).Hace referencia a todo objeto y se lee
“para todo...”.
◦ Cuantificador existencial ( ). Permite construir enunciados
indicando que de todos los objetos existe al menos uno sin
nombrarlo específicamente. Se lee “existe...”.
Igualdad. La LPO usa el símbolo de igualdad para construir enunciados
describiendo que dos términos se refieren al mismo objeto.
Uso de la LPO
Se parte de una BC a la que se irán añadiendo sentencias mediante DECIR,
que corresponde a una sentencia que se denomina aserción. Por ejemplo, se
puede afirmar que un rey es una persona mediante la siguiente sentencia
, ∀ ( ) ⇒ ( ) . Además, se puede preguntar a la BC
mediante PREGUNTAR. Por ejemplo, , ( ) . Esta
sentencia se denomina petición u objetivo. Estas dos interfaces permiten
interactuar con la BC.
A continuación se tratará, como ejemplo, el dominio de las relaciones familiares
o de parentesco. La modelización de este dominio se caracterizaría del siguiente
modo:
Objetos: personas
Propiedades: género → predicados unarios: masculino y femenino.
114
Relaciones (de parentesco): progenitor, descendiente, hijo, hija, cónyuge,
esposo, esposa,... → predicados binarios pprogenitor, descendiente, hijo, hija,
cónyuge, esposo, esposa,…
Funciones: padre y madre → funciones padre y madre
A partir de esto se pueden escribir algunas sentencias sobre lo que se sabe
acerca de los símbolos:
La madre de alguien es su progenitor femenino.
∀ , ( ) = ⇔ ( ) ∧ ( , )
El esposo de alguien es su cónyuge masculino.
∀ , ( , ) ⇔ ( ) ∧ ó ( , )
Masculino y femenino son géneros disjuntos.
∀ ( ) ⇔ ¬ ( )
Progenitor y descendiente son relaciones inversas.
Cada una de estas sentencias puede verse como un axioma del dominio de
parentesco. Sin embargo, no todas las sentencias son axiomas. Algunas son
teoremas pues son deducidas a parir de los axiomas. Desde el punto de vista
lógico, la BC solo necesita saber tener los axiomas de modo que todo el
conocimiento derivará en forma de teoremas y, por lo tanto, no es necesario
almacenarlos en la BC. Sin embargo, desde un punto de vista práctico, su
almacenamiento reducirá el coste computacional para derivar nuevo conocimiento
pues en caso de no almacenarlo siempre tendrá que empezar desde los axiomas.
5.10. Ejemplos A continuación se analizará el modelo de lógica de primer orden que se muestra
en la Figura 8. El modelo consta de:
Cinco objetos: Ricardo corazón de León, Juan, pierna izquierda de Ricardo, pierna izquierda de Juan y una corona.
Dos relaciones binarias: hermano y sobre la cabeza.
115
Tres relaciones unitarias: corona, rey y persona.
Una función unitaria: pierna izquierda.
Los símbolos de LPO del modelo son:
Símbolos de constante: Ricardo y Juan.
Símbolos de predicado: hermano, sobre la cabeza, persona, rey y corona.
Símbolo de función: pierna izquierda.
La semántica ayuda a interpretar qué objetos, relaciones y funciones son
referenciados mediante los símbolos anteriormente mencionados. Una posible
interpretación de este ejemplo podría ser:
Símbolos de constante:
◦ Ricardo se refiere a Ricardo Corazón de León.
◦ Juan se refiere al Rey Juan.
Símbolos de predicado:
◦ Hermano se refiere a la relación de hermandad entre dos personas.
Figura 8. Modelo sencillo en lógica de primer orden. Fuente: http://www.slideshare.net/rushdishams/first-order-logic-26695335
116
◦ Sobre la cabeza se refiere a la relación que hay entre el Rey Juan y la
corona que está sobre su cabeza.
◦ Persona, rey y corona hacen referencia a los conjuntos de objetos
que son una persona, un rey y una corona.
Símbolo de función pierna izquierda es una función que se refiere a la pierna
situada en dicha posición.
A partir de aquí se pueden considerar diversas sentencias que representarán
los axiomas de este modelo.
5.11. Ejercicios de reflexión 1. Considerando el dominio del parentesco para la LPO, indicar cómo se
escribirían las siguientes sentencias:
Padre e hijo son relaciones inversas.
Un abuelo es el padre del padre de uno.
Un hermano es otro hijo del padre de uno.
2. Considere una serie de bloques dispuestos como se muestra en la Figura X.
Modele su lenguaje dentro de la lógica de primer orden indicando qué tipo de
símbolo es cada cosa. Para el caso de los símbolos de predicado y función,
indique su aridad:
Tipos de símbolos:
constantes
predicado
función
- Símbolos a identificar: libre, a, superior, bajo, b, es_bloque, d, e, sobre_mesa,
pila, sobre, encima, tope y c.
3. En el lenguaje del mundo de los bloques indique:
117
Si es o no un término:
◦ Superior (superior(c)). [S]
◦ Libre (superior(c)). [N]
Si es o no una sentencia atómica:
◦ Libre (superior(c)) [S]
◦ Tope (c) = superior(b) [S]
4. Traduzca a lógica de primer orden:
El Everest es la montaña más alta de la tierra.
Hay al menos dos manzanas en el barril.
Elena se comió una seta que había seleccionado ella misma.
Ninguna rana amarilla es comestible.
Todos los estudiantes hornearon, al menos, dos bizcochos.
118
Conclusiones En IA la búsqueda es el núcleo de muchos procesos inteligentes como la
deducción, la planificación, prueba automática de teoremas, etc. Una de las claves
de su importancia radica en que es una técnica que permite encontrar una
solución a un problema cuando no se conoce una aproximación directa al
problema. Para ello abordan un problema reduciéndolo a una búsqueda en el
espacio de estados, y dicha búsqueda puede representarse mediante una
estructura de tipo árbol.
119
Considerando que el número de estados suele crecer exponencialmente a
medida que aumenta el tamaño del problema, se hace necesario estudiar la
eficacia y eficiencia de los distintos tipos de estrategias.
En IA los juegos han sido estudiados ampliamente ayudando al desarrollo de la
IA. Adoptar decisiones óptimas es intratable en la mayoría de los casos, de modo
que suelen tratarse mediante algoritmos aproximados que ayudan a buscar una
estrategia que se aproxime lo más posible a la óptima.
En el mundo de la industria esta temática ha tenido mucho éxito en el mundo
del videojuego pues ha permitido que los jugadores humanos puedan enfrentarse
a oponentes de calidad similar o superior en sus decisiones a las que tendría
cualquier otro jugador humano.
En el tercer capítulo, se vieron qué características hay que tener en cuenta para
representar el conocimiento. Además, se introdujeron los dos tipos de lógica más
usados (la lógica proposicional y la de primer orden) como lenguaje para poder
representar dicho conocimiento. El motivo por el que la LPO ha desbancado la
popularidad de la lógica proposicional se debe a las limitaciones de esta,
principalmente, en la expresividad. Sin embargo, la lógica proposicional es muy útil
para los casos en los que no importa el contenido de la proposición sino la
estructura de la información.
120
Glosario Agente inteligente: entidad con capacidad de percibir su entorno, procesar
dichas percepciones y responder o actuar sobre un entorno de manera racional,
es decir, correcta y maximizando el resultado esperado.
Inteligencia artificial (IA): disciplina de las ciencias de la computación que
trata de desarrollar sistemas capaces de adoptar comportamientos que, si fuesen
realizados por humanos, no dudaríamos en calificar como inteligentes.
121
Inteligencia artificial débil: corriente de la IA que adopta dos posibles posturas
respecto a la conciencia. La primera es que considera que la conciencia no se
puede atribuir a procesos puramente físicos y, por lo tanto, no es posible abordarlo
científicamente. La otra considera que, aunque la conciencia puede atribuirse a
procesos puramente físicos, su elevada complejidad hace que no pueda ser
entendido ni simulado.
Inteligencia artificial fuerte: corriente de la IA que sostiene que en un futuro
seremos capaces de comprender y simular los procesos que dan lugar a la
conciencia. De esta forma, una máquina que haya sido provisto con la suficiente
inteligencia podrá adquirir conciencia.
122
Bibliografía
Franklin, S., & Graesser, A. (1996). Is it an agent, or just a program? a taxonomy
for autonomous agents. Proceedings of the third International Workshop on
Agent Theories, Architectures, and Languages. New York: Springer-Verlag.
Nwana, H.S. (1996). Software agents: an overview. Knowledge Engineering
Review, 11 (3), p. 1-40.
Russel, S., Norvig, P. (2008). Inteligencia Artificial. Un enfoque moderno. Madrid:
Pearson Prentice Hall.
123
Wooldridge, M., & Jennings, N.R. (1995). Intelligent agents: theory and practice.
Knowledge Enginnering Review, 10 (2), p. 115-152.
García Morate, D. (2016). Manual de Weka. Obtenido de: http://sci2s.ugr.es/sites/default/files/files/Teaching/GraduatesCourses/InteligenciaDeNegocio/weka.pdf
Russel, S., Norvig, P., (2008). Inteligencia Artificial. Un enfoque moderno. Madrid:
Pearson Prentice Hall. Witten, I.H., Frank E. (2005). Data Mining. Practical Machine Learning Tools and
Techniques. San Francisco: Morgan Kaufmann.
Barber, F., & Salido, M. (2008). Problemas de Satisfacción de Restricciones (CSP). En Inteligencia Artificial: Técnicas, métodos y aplicaciones. México: McGraw-Hill, p. 385-432. Obtenido de: http://users.dsic.upv.es/~msalido/papers/capitulo.pdf
Russel, S., Norvig, P., (2008). Inteligencia Artificial. Un enfoque moderno. Madrid:
Pearson Prentice Hall.