Vous êtes sur la page 1sur 187

Fundamentos

Inteligencia
Artificial
Fundamentos

¿Cuáles son las bases de la


Inteligencia Artificial? ¿Qué disciplinas
contribuyeron en la Inteligencia
Artificial?

Existen una multitud de disciplinas que han ayudado al


desarrollo y evolución de la Inteligencia Artificial (IA).

Breve Introducción

Antes de profundizar en el estudio de la Inteligencia Artificial propiamente


dicho, quizá convenga indagar en una pregunta compleja y que no posee
una respuesta del todo clara aún: ¿qué es la inteligencia?. Para algunos,
la inteligencia es la habilidad de enfrentar nuevas situaciones; para
otros, puede ser la habilidad de resolver problemas, de responder
preguntas, elaborar planes, etc. Para darle una definición más formal, se
dice que la inteligencia (del latín intellegentĭa) es la capacidad de
pensar, entender, asimilar, elaborar información y utilizarla para resolver
problemas. Por su parte, el Diccionario de la Real Academia Española
(RAE) define la inteligencia, como la “capacidad para entender o
comprender” y como la “capacidad para resolver problemas”.
Ahora bien, ¿qué es, entonces, la inteligencia artificial (IA)? Al respecto hay
una gran cantidad de definiciones provenientes de diferentes campos, las
cuales se discuten al comienzo de este módulo, sobre todo en las
secciones: Fundamentos de la IA y Orígenes. Según Russell y Norvig (2004)
se pueden agrupar las definiciones de la IA en dos grandes conjuntos: por
un lado, las definiciones relacionadas a los procesos mentales y al
razonamiento y, por otro, a aquellas relacionadas con la conducta:

Sistemas que piensan como Sistemas que piensan racionalmente


humanos
• “El nuevo y excitante esfuerzo • “El estudio de las facultades
de hacer que los mentales mediante el uso de
computadores piensen... modelos computacionales”.
máquinas con mentes, en el (Charniak y McDermott,
más amplio sentido literal”. 1985)
(Haugeland, 1985)
• “El estudio de los cálculos que
• “La automatización de hacen posible percibir,
actividades que vinculamos razonar y actuar”.
con procesos de (Winston, 1992)
pensamiento humano,
actividades como la toma de
decisiones, resolución de
problemas, aprendizaje...”.
(Bellman, 1978)

Sistemas que actúan como humanos Sistemas que actúan


racionalmente
• “El arte de desarrollar • “La Inteligencia
máquinas con capacidad para Computacional es el estudio
realizar funciones que del diseño de agentes
cuando son realizadas por inteligentes”. (Poole et al.,
personas requieren de 1998)
inteligencia”. (Kurzwell,
1990) • “IA... está relacionada con
• “El estudio de cómo lograr que conductas Inteligentes en
los computadores realicen artefactos”. (Nilsson, 1998)
tareas que, por el momento,
los humanos hacen mejor”.
(Rich y Knight, 1991)

Fuente: Russell y Norvig, 2004, p. 2.


Para profundizar al respecto, se recomienda leer el capítulo 1.2 del libro
Inteligencia artificial. Un enfoque moderno, de Russell y Norvig (2004)

Luego se verán cuáles son las ramas de la ciencia que más han influenciado
el estudio y desarrollo de la IA en la sección Fundamentos del presente
módulo 1. Ramas como la filosofía, las matemáticas, la economía, la
Neurociencia, la Psicología, la Ingeniería computacional, la teoría de
control y cibernética o la Lingüística han ayudado, a pesar de ser en
muchos casos asignaturas muy disimiles entre sí, a la evolución de la IA.

Otra sección de esta unidad se refiere a los Orígenes de la IA. En este caso
se profundizará y se verá cuáles son los orígenes de esta ciencia moderna,
la cual tiene sus inicios con el trabajo de Warren McCulloch y Walter Pitts
(1943).

La penúltima sección de este módulo se refiere Las áreas de aplicación de


la IA. En este caso se intentará tener una visión amplia con respecto a
cuáles son los campos en donde la IA se utiliza periódicamente y con éxito
en la actualidad.

Por último, se abordará el tema de los Agentes Inteligentes a partir de cuál


es su naturaleza, sus diversos hábitats y las formas de organizar los tipos de
agentes existentes.

¿Cuál es tu propia definición de Inteligencia?


¿Cuál es tu propia definición de Inteligencia
Artificial?
¿Con cuál de las definiciones estás de acuerdo? ¿Por
qué?
Filosofía
La Filosofía siempre ha tratado de responder preguntas del estilo: “¿Cómo
se genera la inteligencia?”, “¿De dónde viene el conocimiento?”.
Los filósofos (año 400 a.C. en adelante) ayudaron al nacimiento de la IA al
considerar que la mente es como una máquina que funciona utilizando el
conocimiento codificado con un lenguaje interno, y que el pensamiento
sirve para seleccionar las acciones a llevar a cabo. (Russell y Norvig, 2004)
Ya Aristóteles trabajaba sobre la asociación entre estilos de razonamiento y
una forma mecánica de extraer conclusiones partiendo de precondiciones.

Aristóteles, trabajó sobre ciertos estilos de razonamiento deductivo que


luego llamó silogismos, los cuales permitían extraer conclusiones
mecánicamente, a partir de premisas iniciales.

Siglos más tarde, alrededor del año 1300, Ramón Llull, por su parte,
construyó “Ars Magna” el cuál era un conjunto de ruedas que, se suponía,
iba a ser una máquina capaz de responder todas las preguntas.
(Russell y Norvig, 2004; Ponce 2010)

Otros filósofos, como Thomas Hobbes, Leonardo da Vinci, Wilhelm


Schickard, Blaise Pascal o Gottfried Wilhelm Leibniz, se enfocaron en
asociar el razonamiento (sobre todo la forma en que sumamos y restamos
mentalmente) con la computación numérica. (Russell y Norvig, 2004)

Thomas Hobbes relacionó al razonamiento (la forma en que nosotros


sumamos y restamos mentalmente) con la computación numérica.
Leonardo da Vinci diseñó, pero no nunca implementó, una calculadora
mecánica.
Wilhelm Schickard contruyó la primera máquina de calcular conocida.
Gottfried Wilhelm Leibniz construyó un dispositivo mecánico con el
objetivo de llevar a cabo operaciones sobre conceptos en lugar de sobre
números.
(Russell y Norvig, 2004)
En definitiva, lo que se trató de establecer en este período fue que la
parte racional y formal de la mente puede ser descripta por un conjunto
de reglas.

Luego, surgen diferentes posiciones: entre el dualismo y el materialismo.


Para los primeros existe una parte de la mente que no depende de la
naturaleza y que no se ve influida por de las leyes físicas; para los
segundos, las operaciones que el cerebro realiza, siempre siguiendo los
lineamientos de las leyes de la física, constituyen la mente.

John Locke dijó “Nada existe en la mente que no haya pasado antes por los
sentidos”. (Russell y Norvig, 2004, p. 7)
David Hume definió lo que hoy se conoce como principio de inducción.
Rudolf Carnap desarrolló la doctrina del positivismo lógico.
Rudolf Carnap y Cari Hempel intentaron explicar con la teoría de la
confirmación cómo el conocimiento se obtiene a partir de la experiencia.
(Russell y Norvig, 2004)

La cuestión fundamental para la IA es la relación que existe entre el


conocimiento y la acción, ya que la inteligencia requiere de ambos.
Comprendiendo determinadas acciones se puede llegar a saber cómo
diseñar un agente cuyas acciones sean racionales.

¿Te consideras partidario del dualismo o del


materialismo?
Matemáticas
Para que la IA sea considerada una ciencia formal es necesario contar con
una formulación matemática, desde el punto de vista de la lógica, la
computación y la probabilidad. Además, las matemáticas proporcionaron
siempre las herramientas para manipular tanto las aseveraciones de
certezas lógicas, como las inciertas, de tipo probabilista; también
prepararon el terreno para un entendimiento de lo que es el cálculo y el
razonamiento con algoritmos. (Russell y Norvig, 2004)

George Boole fue quién más contribuyo al desarrollo de la logica


matemática gracias a su definición de la lógica proposicional o Booleana.
Gottlob Frege le añadió objetos y relaciones a la lógica Booleana, creando
así la lógica de primer orden, utilizada actualmente como el sistema más
básico para representar conocimiento.

Fue George Boole, entre otros, quien desarrolló algoritmos que permitían
realizar deducciones lógicas. A pesar de ello, hay funciones de los números
enteros que no se pueden representar mediante un algoritmo.

Kurt Godel, mediante su teorema incompletitud, demostró que existen


algunas funciones de los números enteros que no se pueden representar
mediante un algoritmo.
La máquina de Turing, diseñada por Alan Turing, es la máquina capaz de
calcular cualquier función computable.

Otra gran contribución a la IA por parte de las matemáticas fue la teoría de


probabilidades. Por ejemplo, la regla de Bayes y el llamado análisis
bayesiano conforman la base de las propuestas que abordan el
razonamiento incierto en sistemas de IA.

La estadística bayesiana está demostrando su utilidad en ciertas


estimaciones basadas en el conocimiento subjetivo a priori, y el hecho de
permitir revisar esas estimaciones en función de la evidencia empírica es lo
que está abriendo nuevas formas de hacer conocimiento. (Russell y
Norvig, 2004)
Una aplicación con la que convivimos a diario de las teorías de
probabilidades son los clasificadores bayesianos, que son frecuentemente
usados en implementaciones de filtros de correo basura o spam, que
aprenden y se adaptan con el uso.

Leyendo la bibliografía, ¿podrías explicar con tus


propias palabras la Teoría de NP-Completitud
propuesta por primera vez por Steven Cook (1971) y
Richard Karp (1972)?

Economía
“La mayor parte de la gente cree que la economía sólo se trata de dinero,
pero los economistas dicen que ellos realmente estudian cómo la gente
toma decisiones que les llevan a obtener los beneficios esperados”.
(Russell y Norvig, 2004, p. 11)
La economía y la investigación operativa han contribuido en gran medida a
la noción de “agente racional” y modelos basados en satisfacción (que
toman decisiones que son suficientemente buenas, en vez de realizar
cálculos complejos para alcanzar decisiones óptimas).

La Teoría de la Decisión combina la teoria de la probabilidad con la teoría


de la utilidad y proporciona un marco completo y formal para la ayuda a la
toma de decisiones realizadas bajo incertidumbre.
Leyendo la bibliografía, ¿podrías explicar con tus
propias palabras la Teoría de la Decisión y la Teoría
de Juegos?
¿Cuáles son las diferencias que hay entre ambas
teorías?

Neurociencia
La Neurociencia es el estudio del sistema neurológico, en especial del
cerebro. Gracias a su desarrollo y evolución fue posible pensar en la teoría
de las redes neuronales y perceptrones; comprender el funcionamiento del
cerebro y, particularmente, de las neuronas (y sus conexiones) se hizo
fundamental para este hecho.

Los estudios sobre la actividad cerebral comenzaron en 1929 con el


descubrimiento del electroencefalograma (EEG) desarrollado por Hans
Berger. El descubrimiento de las imágenes de resonancia magnética
funcional
(1990) proporcionó a los neurologos imágenes detalladas de la actividad
cerebral.

A pesar de los avances en la neurociencia, queda aún un largo camino para


llegar a comprender cómo funcionan todos los procesos cognitivos.

Leyendo la bibliografía, ¿podrías explicar con tus


propias palabras cómo es una célula nerviosa, o
neurona, y cómo es su funcionamiento?
Psicología
Los psicólogos adoptaron la idea de que los humanos y los animales podían
considerarse máquinas de procesamiento de información.

William James fue quien conceptualizó al cerebro como un dispositivo de


procesamiento de informacion, caracteristica principal de la psicologia
cognitiva. (Russell y Norvig, 2004)

Los psicólogos comparten, en la actualidad, el punto de vista común de


que la teoría cognitiva debe ser como un programa de computadora o,
dicho de otra forma, debe describir un mecanismo de procesamiento de
información detallado, lo cual lleva consigo la implementación de algunas
funciones cognitivas. (Russell y Norvig, 2004)

¿Podrías explicar con tus propias palabras el


movimiento conductista y sus diferencias con la
psicología cognitiva?

¿Podrías construir un gráfico comparativo entre el


cerebro humano y un computador?
Ingeniería Computacional
Esta rama proporcionó las máquinas que permitieron la implementación de
la IA. Los programas de IA suelen ser bastante complejos y extensos, por lo
que no podrían funcionar sin los grandes avances en velocidad y memoria
aportados por la industria informática.

El equipo de Alan Turing construyó en 1940 el primer computador


operacional (electromecánico), llamado Heath Robinson, para descifrar
mensajes alemanes.
En 1943 el mismo grupo desarrollo el Colossus, una maquina más potente
que usaba valvulas de vacío.
El primer computador programable fue
el Z-3, inventado por Konrad Zuse en 1941.

Busca información e intenta explicar con tus propias


palabras la Ley de Moore. Luego pregúntate:

¿Se ha cumplido esta ley a lo largo de la historia?


¿Debió ser modificada en los últimos años?

Teoría de Control y Cibernética


La teoría de control se centra en el diseño de máquinas o dispositivos que
actúan de forma óptima de acuerdo a las variaciones en su entorno.
Actualmente, la IA y la teoría de control están muy relacionadas, a pesar de
que en sus comienzos no fue así.
Ktesibios de Alejandría (250 a.C.) construyó la primera máquina auto
controlada: un reloj de agua con un regulador que mantenía el flujo de
agua circulando en su interior con un ritmo constante y predecible.
James Watt fue el Creador del motor de vapor.
Cornelis Drebbel fue el Inventor del termostato y el submarino.
Norbert Wiener fue el Creador de lo que hoy se llama teoría de control .
Wiener trabajó en sistemas de control biológicos y mecánicos, y en sus
vínculos con la cognición.

La teoría de control moderna tiene como objetivo el diseño de sistemas


que maximizan una función objetivo en el tiempo, lo cual se asemeja a la
IA en el sentido que esta última apunta al diseño de sistemas que se
comportan o aprenden de forma óptima. (Russell y Norvig, 2004)

¿Por qué la IA y la teoría de control son dos campos


diferentes a pesar de tener muchas similitudes?

Lingüística
Los lingüistas demostraron que el uso del lenguaje se ajusta al modelo de
que los humanos y animales podrían ser considerados como máquinas de
procesamiento de información. (Russell y Norvig, 2004)

B. F. Skinner publicó en 1957 Verbal Behavior, que es su visión sobre el


enfoque conductista (aplicado) al aprendizaje del lenguaje.
Noam Chomsky publicó un libro con su propia teoría, Syntactic Structures,
en el cual demostraba que la teoría conductista no abordaba la creatividad
en el lenguaje. (Russell y Norvig, 2004)
La lingüística moderna y la IA nacieron al mismo tiempo y maduraron
juntas, uniéndose en un único campo llamado Lingüística Computacional o
Procesamiento del lenguaje natural. (Russell y Norvig, 2004)

Busca información sobre el procesamiento del


lenguaje natural y su vinculación con la web
semántica. ¿Cómo explicarías este vínculo?
Bibliografías de referencia
Bellman, R. (1978) An Introduction to Artificial Intelligence: Can Computers Think?
San Francisco: Boyd & Fraser Publishing Company.

Charniak, E. Y McDermott, D. (1985) Introduction to Artificial Intelligence. Reading.


Massachusetts: Addison-Wesley.

Cook, S. (1971) The complexity of theorem proving procedures. In Proceedings of


the 3rd Annual ACM Symposium on Theory of Computing, pp. 151-158. New York:
ACM Press.

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Haugeland, J. (1985) Artificial Intelligence: The Very Idea. Cambridge,


Massachusetts: MIT Press.

Karp, R. (1972) Reducibility among combinatorial problems. In Miller R. E. and


Thatcher J. W. (Eds.), Complexity of Computer Compulations, pp. 85-103. New
York: Plenum.

Kurzweil, R. (1990) The Age of Intelligent Machines. Cambridge, Massachusetts:


MIT Press.

McCulloch, W. and Pitts, W. (1943) A logical calculus of the ideas immanent in


nervous activity. Bulletin of Mathematical Biophysics, 5 (pp. 115-137).

Morales González, Viviana y Mejía Z., C. (2012). Aprendizaje en máquinas con


inteligencia artificial. USB Laboratorio de Psicología. Universidad de San
Buenaventura Cali. Recuperado de http://goo.gl/7UJKkB

Nilsson, N. J. (1998) Artificial Intelligence: A New Synthesis. San Mateo, California:


Morgan Kaufmann.

Poole. D., Mackworth, A. K ., Goebel. R. (1998) Computational intelligence: A


logical approach. Oxford, UK: Oxford University Press.

Ponce Cruz, P. (2010) Inteligencia artificial con aplicaciones a la ingeniería.


México: Alfaomega.

Rich, E. Y Knight, K. (1991) Artificial Intelligence (2ª ed.). New York: Mc Graw-Hill.

Russell, S. J. y Norvig, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.). Madrid: Prentice Hall.

Winston, P. (1992) Artificial Intelligence (3ª ed.). Reading. Massachusetts:


Addison-Wesley.
Henry, F. (09-06-2014) infotechnology.com Recuperado el 20-07-2014 de
http://goo.gl/Ujg8kM

Cruz, M. (16-04-2014) miecografia4d.com Recuperado el 27-08-2014 de


http://goo.gl/cTNG5s

González, C. S. (05-04-2004) Relieve Recuperado el 20-07-2014 de


http://goo.gl/14wTA9

López, A. (11-10-2014) El píxel ilustre Recuperado el 20-07-2014 de


http://goo.gl/4ugYps

Roberson, N. (10-01-2014) The marketing robot Recuperado el 20-07-2014 de


http://goo.gl/IJoc8z

Sanz, E. (17-02-2013) Gits Informática Recuperado el 20-07-2014 de


http://goo.gl/I5gMmx
Orígenes

Inteligencia
Artificial
Orígenes

Génesis, nacimiento, inicios, realidad,


industria y ciencia.

La IA ha pasado por éxitos, optimismos y decepciones hasta


llegar a nuestros días.

Génesis de la IA
Los inicios de esta ciencia moderna se remontan al trabajo de Warren
McCulloch y Walter Pitts (1943). Ellos propusieron un modelo constituido
por neuronas artificiales, en el que cada una de estas se caracterizaba por
estar activada o desactivada. En dicho modelo, que cada neurona
estuviera activada dependía de los estímulos producidos y enviados por
cada una de sus vecinas. Demostraron, además, que cualquier función de
cómputo podía calcularse mediante una red neuronal interconectada, y
que estas interconexiones podían representarse a través de conectores
lógicos sencillos, como AND (en castellano, “Y”), OR (en castellano, “O”),
NOT (en castellano, “Negación” o “No”), etc.

Donald Hebb propuso y demostró en 1949 una sencilla regla de


actualización para modificar las intensidades de las conexiones entre las
neuronas. Su regla de aprendizaje hebbiano o de Hebb está vigente hoy en
día.
Alan Turing, con su articulo Computing Machinery and Intelligenc, de
1950, fue quién dió el puntapié inicial para lo que es hoy la IA.

Explica con tus palabras de qué se trataba el test de


Turing.

Nacimiento de la IA
El nacimiento oficial de la IA se remonta a la conferencia de 1956 del
Dartmouth College. Allí, científicos como John McCarthy, Minsky
(convencido por McCarthy), Claude Shannon y Nathaniel Rochester
intentaron aumentar el interés de los demás investigadores norte-
americanos en torno a tópicos tales como:

• La teoría de autómatas.

• Redes neuronales y el estudio de la inteligencia.

Fue el propio McCarthy quien propuso el nombre Inteligencia Artificial,


que fue aceptado de manera consensuada por los demás en dicha
conferencia. (Russell y Norvig, 2004; Ponce, 2010; García, A., 2012)

El trabajo más importante que se presentó en la conferencia fue el de


Newell y Simon, los cuales contaban con un programa de razonamiento: el
Teórico Lógico (TL), que ya era capaz de demostrar muchos teoremas
matemáticos.
El nombre Inteligencia Artificial, según tu criterio,
¿fué bien acuñado? ¿Por qué?

Inicios
Los primeros años de la IA fueron muy alentadores, si se tiene en cuenta lo
primitivo que eran los computadores y las herramientas de programación
que se usaban en aquel entonces. Luego, al éxito del Teórico Lógico de
Newell y Simon le siguió el del Sistema de Resolución General de
Problemas o SRGP, el cual, a diferencia de su antecesor, se diseñó desde
sus comienzos para que imitara protocolos de resolución de problemas de
los seres humanos. El SRGP fue el primer programa que incorporó el
enfoque de pensar como un ser humano. (Russell y Norvig, 2004)

El éxito del SRGP y de los programas que le siguieron, como los modelos de
cognición, hizo que Newell y Simon (1976) formularan la hipótesis del
sistema de símbolos físicos. Esta hipótesis determina que un sistema de
símbolos físicos debe contar con los medios necesarios y suficientes para
poder llevar a cabo una acción inteligente.

Fue a comienzos de 1952 cuando Arthur Samuel escribió una serie de


programas para el juego de las damas que aprendían a jugar hasta alcanzar
el nivel de un jugador amateur, lo cual dejaba de lado la idea de que los
computadores solo pueden hacer lo que se les dice: su programa pronto
aprendió a jugar mejor que él.
En 1958 McCarthy definió el lenguaje LISP (LISt Processing), que es uno de
los lenguajes de programación dominantes en IA. En 1958, publicó un
artículo titulado Programs with Common Sense en el que describía el
“Generador de Consejos”, un supuesto programa que podría tomarse
como el primer sistema de IA. Minsky, por su parte, trabajó en los
micromundos. (Russell y Norvig, 2004)

Revisa la bibliografía y luego explica con tus


palabras:
¿Cuáles eran las similitudes de diseño entre el
Teórico Lógico y el Generador de Consejos?
¿Cuál es el micromundo más famoso? Descríbelo
brevemente.

Realidad
En los comienzos de la IA hubo mucha euforia y algunos buenos resultados,
pero durante las décadas de los '60 y '70 esta euforia y optimismo comenzó
a decaer debido a que esa prometedora actuación de los primeros sistemas
de IA en lo relativo a problemas simples, en la mayor parte de los casos
falló estrepitosamente cuando se los intentó aplicar a problemas más
variados o complejos. El primer tipo de problemas surgió porque la
mayoría de los primeros programas contaban con poco o ningún
conocimiento de las materias que eran objeto de estudio; obtenían
resultados gracias a sencillas manipulaciones sintácticas.
Cuando se comenzó a trabajar en la traducción automática, al principio se
consideró que todo se reduciría a sencillas transformaciones sintácticas del
lenguaje y a la ubicación de palabras mediante un diccionario electrónico,
dejando de lado el conocimiento general sobre el tema. (Russell y Norvig,
2004)

El segundo inconveniente fue que muchos de los problemas que se


trataron de resolver mediante la IA eran intratables. La mayoría de los
primeros programas de IA resolvían problemas experimentando con
diversos pasos hasta que se llegara a encontrar una solución. Esto funcionó
debido a que los micromundos con los que se trabajaba contenían muy
pocos objetos y, por lo tanto, muy pocas acciones posibles y secuencias de
soluciones muy cortas. (Russell y Norvig, 2004)

Antes de que se desarrollara la teoria de la complejidad computacional, se


pensaba que con solo incrementar la velocidad del hardware y aumentar
las memorias era suficiente para que los programas desarrollados
crecieran y fueran capaces de solucionar problemas más complejos.
(Russell y Norvig, 2004)

El tercer obstáculo se derivó de las limitaciones propias de las estructuras


básicas que se usaban en la generación de la conducta inteligente.

En 1969 Minsky y Papert demuestran que era posible lograr que los
perceptrones (una red neuronal simple) aprendieran cualquier cosa que
pudiesen representar, pero su capacidad de representación era muy
limitada. (Russell y Norvig, 2004)

Revisa la bibliografía y luego explica con tus palabras:


¿Cuáles fueron las predicciones erróneas de Herbert
Simon?
Industria
Luego de la aparición de los primeros sistemas expertos, en la década de
los '70, estos mismos se vuelven muy importantes para la industria en la
década de los '80. Prácticamente todas las compañías importantes de los
EEUU tenían su propio grupo de investigación de IA donde se usaban o
investigaban sistemas expertos. (Russell y Norvig, 2004)

El primer sistema experto exitoso, llamado R1, inició su actividad en Digital


Equipment Corporation (McDermott, 1982). El programa se utilizaba en la
elaboración de pedidos de nuevos sistemas informáticos. En 1986 le ahorró
a la compañía un estimado de 40 millones de dolares. (Russell y Norvig,
2004)

Ciencia
Podemos decir que la IA ya forma parte del ámbito de los métodos
científicos. Para que se acepte como tal, las hipótesis se deben someter a
rigurosos experimentos empíricos, y los resultados deben analizarse
estadísticamente para identificar su relevancia. Internet se ha vuelto
fundamental en este sentido, ya que permite compartir repositorios de
datos de prueba y código, lo que ha hecho posible que se puedan
contrastar experimentos. (Russell y Norvig, 2004)

El reconocimiento del habla actualmente se centra en los modelos ocultos


de Markov, ya que estos se basan en una rigurosa teoría matemática;
además, estos modelos se han generado utilizando grandes cantidades de
datos. (Russell y Norvig, 2004)
Bibliografías de referencia
Bellman, R. (1978) An Introduction to Artificial Intelligence: Can Computers Think?
San Francisco: Boyd & Fraser Publishing Company.

Charniak, E. Y McDermott, D. (1985) Introduction to Artificial Intelligence. Reading.


Massachusetts: Addison-Wesley.

Cook, S. (1971) The complexity of theorem proving procedures. In Proceedings of


the 3rd Annual ACM Symposium on Theory of Computing, pp. 151-158. New York:
ACM Press.

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Haugeland, J. (1985) Artificial Intelligence: The Very Idea. Cambridge,


Massachusetts: MIT Press.

Karp, R. (1972) Reducibility among combinatorial problems. In Miller R. E. and


Thatcher J. W. (Eds.), Complexity of Computer Compulations, pp. 85-103. New
York: Plenum.

Kurzweil, R. (1990) The Age of Intelligent Machines. Cambridge, Massachusetts:


MIT Press.

McCulloch, W. and Pitts, W. (1943) A logical calculus of the ideas immanent in


nervous activity. Bulletin of Mathematical Biophysics, 5 (pp. 115-137).

Morales González, Viviana y Mejía Z., C. (2012). Aprendizaje en máquinas con


inteligencia artificial. USB Laboratorio de Psicología. Universidad de San
Buenaventura Cali. Recuperado de http://goo.gl/7UJKkB

Nilsson, N. J. (1998) Artificial Intelligence: A New Synthesis. San Mateo, California:


Morgan Kaufmann.

Poole. D., Mackworth, A. K ., Goebel. R. (1998) Computational intelligence: A


logical approach. Oxford, UK: Oxford University Press.

Ponce Cruz, P. (2010) Inteligencia artificial con aplicaciones a la ingeniería.


México: Alfaomega.

Rich, E. Y Knight, K. (1991) Artificial Intelligence (2ª ed.). New York: Mc Graw-Hill.

Russell, S. J. y Norvig, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.). Madrid: Prentice Hall.

Winston, P. (1992) Artificial Intelligence (3ª ed.). Reading. Massachusetts:


Addison-Wesley.
Henry, F. (09-06-2014) infotechnology.com Recuperado el 20-07-2014 de
http://goo.gl/Ujg8kM

Cruz, M. (16-04-2014) miecografia4d.com Recuperado el 27-08-2014 de


http://goo.gl/cTNG5s

González, C. S. (05-04-2004) Relieve Recuperado el 20-07-2014 de


http://goo.gl/14wTA9

López, A. (11-10-2014) El píxel ilustre Recuperado el 20-07-2014 de


http://goo.gl/4ugYps

Roberson, N. (10-01-2014) The marketing robot Recuperado el 20-07-2014 de


http://goo.gl/IJoc8z

Sanz, E. (17-02-2013) Gits Informática Recuperado el 20-07-2014 de


http://goo.gl/I5gMmx
Áreas de
aplicación

Inteligencia
Artificial
Áreas de aplicación

¿Cuáles son algunos de los ámbitos en


dónde se aplica comúnmente la IA?

La IA se aplica en diversas aéreas y está presente en la mayoría


de nuestras actividades diarias.

La IA se aplica actualmente en casi todos los ámbitos con los que


interacciona el ser humano, aunque muchas veces no nos demos cuenta de
ello.

Robótica
Podríamos decir que la robótica va de la mano con la IA, ya que un robot es
la representación más acabada de lo que es IA.
Los robots son parte de la fabricación automotriz desde hace décadas. Entre otras tareas, trabajan en el
ensamblado final de las puertas. (Recuperado de Infotechnology.com, http://goo.gl/Ujg8kM)

Medicina
Se han desarrollado máquinas que interpretan imágenes médicas,
controlan las unidades de cuidados intensivos, monitorean a los pacientes
y realizan diagnósticos. Se han creado sistemas expertos que colaboran con
los médicos.

Ecografía 4D. (Recuperado de miecografia4d.com/, http://goo.gl/cTNG5s)


Educación
Se han implantado sistemas de gestiones de estudiantes para reducir el
estrés que genera la educación, como también otro tipo de sistemas que
pueden percibir las deficiencias de un estudiante y ayudar en su
desenvolvimiento.

Modelo Tradicional de un Sistema Tutorial Inteligente. (Recuperado de Relieve, http://goo.gl/14wTA9)


Entretenimiento
La inteligencia artificial en los videojuegos es cada vez más indispensable,
tanto en consolas como en ordenadores.

La búsqueda de ruta es otro de uso común para la IA, ampliamente visto en los juegos de estrategia en
tiempo real. (Recuperado de El píxel ilustre, http://goo.gl/4ugYps)
Gestión de Información
La IA nos permite extraer fácilmente información desde diferentes fuentes,
pero se requiere de mucho esfuerzo para conseguirlas; un ejemplo de ello
es la minería de los datos.

Estructura común de un sistema de BI –Inteligencia de Negocios– (Recuperado de The


marketing robot, http://goo.gl/IJoc8z)
Biología
La inteligencia artificial ha aportado grandes avances en el campo de
analizadores de ADN y elaboración de modelos biológicos, entre otros.

Cadena de ADN (Recuperado de Gits Informática, http://goo.gl/I5gMmx)


Bibliografías de referencia
Bellman, R. (1978) An Introduction to Artificial Intelligence: Can Computers Think?
San Francisco: Boyd & Fraser Publishing Company.

Charniak, E. Y McDermott, D. (1985) Introduction to Artificial Intelligence. Reading.


Massachusetts: Addison-Wesley.

Cook, S. (1971) The complexity of theorem proving procedures. In Proceedings of


the 3rd Annual ACM Symposium on Theory of Computing, pp. 151-158. New York:
ACM Press.

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Haugeland, J. (1985) Artificial Intelligence: The Very Idea. Cambridge,


Massachusetts: MIT Press.

Karp, R. (1972) Reducibility among combinatorial problems. In Miller R. E. and


Thatcher J. W. (Eds.), Complexity of Computer Compulations, pp. 85-103. New
York: Plenum.

Kurzweil, R. (1990) The Age of Intelligent Machines. Cambridge, Massachusetts:


MIT Press.

McCulloch, W. and Pitts, W. (1943) A logical calculus of the ideas immanent in


nervous activity. Bulletin of Mathematical Biophysics, 5 (pp. 115-137).

Morales González, Viviana y Mejía Z., C. (2012). Aprendizaje en máquinas con


inteligencia artificial. USB Laboratorio de Psicología. Universidad de San
Buenaventura Cali. Recuperado de http://goo.gl/7UJKkB

Nilsson, N. J. (1998) Artificial Intelligence: A New Synthesis. San Mateo, California:


Morgan Kaufmann.

Poole. D., Mackworth, A. K ., Goebel. R. (1998) Computational intelligence: A


logical approach. Oxford, UK: Oxford University Press.

Ponce Cruz, P. (2010) Inteligencia artificial con aplicaciones a la ingeniería.


México: Alfaomega.

Rich, E. Y Knight, K. (1991) Artificial Intelligence (2ª ed.). New York: Mc Graw-Hill.

Russell, S. J. y Norvig, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.). Madrid: Prentice Hall.

Winston, P. (1992) Artificial Intelligence (3ª ed.). Reading. Massachusetts:


Addison-Wesley.
Henry, F. (09-06-2014) infotechnology.com Recuperado el 20-07-2014 de
http://goo.gl/Ujg8kM

Cruz, M. (16-04-2014) miecografia4d.com Recuperado el 27-08-2014 de


http://goo.gl/cTNG5s

González, C. S. (05-04-2004) Relieve Recuperado el 20-07-2014 de


http://goo.gl/14wTA9

López, A. (11-10-2014) El píxel ilustre Recuperado el 20-07-2014 de


http://goo.gl/4ugYps

Roberson, N. (10-01-2014) The marketing robot Recuperado el 20-07-2014 de


http://goo.gl/IJoc8z

Sanz, E. (17-02-2013) Gits Informática Recuperado el 20-07-2014 de


http://goo.gl/I5gMmx
Agentes
inteligentes

Inteligencia
Artificial
Agentes inteligentes

¿Cuáles son los entornos, la


racionalidad y la estructura de los
agentes inteligentes?

Dentro de la IA es fundamental conocer la naturaleza de los


agentes, sus entornos y las formas de organizar los tipos de
agentes existentes.

Entorno
Según Russell y Norvig (2004): “un agente es cualquier cosa capaz de
percibir su medio ambiente con la ayuda de sensores y actuar en ese
medio utilizando actuadores” (Russell y Norvig, 2004, p. 37)

Como puede observarse dentro de la definición se hace referencia al


término percepción para indicar que el agente puede recibir entradas,
desde su entorno, en cualquier momento dado. También debemos
entender que la secuencia de percepciones de un agente hace referencia
al historial de lo que él ha percibido, desde su entorno, hasta un instante
dado. Por lo tanto, siempre, un agente tomará una decisión en un
momento dado dependiendo de la secuencia completa de percepciones
hasta ese instante. (Russell y Norvig, 2004)
Los agentes y su interacción con el entorno. (Fuente: elaboración propia).

La función que describe el comportamiento de un agente se puede


presentar en forma de tabla y será implementada mediante el programa
del agente.

Es importante diferenciar que la función del agente es una descripción


matemática abstracta, mientras que el programa del agente es una
implementación completa que se ejecuta sobre la arquitectura del agente
(Russell y Norvig, 2004).

El mundo de las aspiradoras


Para explicitar todo esto tomaremos el caso del mundo de las aspiradoras
(para verlo con mayor profundidad puede leerse la sección 2.1 del libro
Inteligencia artificial. Un enfoque moderno, de Russell y Norvig).
Este es un mundo simple en el que se puede describir lo que en él sucede.
En este caso, sólo se tendrán dos cuadrículas, A y B, por las que podrá
desplazarse la aspiradora para llevar a cabo sus actividades de limpieza:

Dos localizaciones, únicamente, para el mundo de las aspiradoras (Fuente: Russell y


Norvig, 2004, p. 39)

A continuación, la tabla que contrasta la secuencia de percepciones con la


acción que debería emprender el agente aspiradora:

Percepción Acción
[A, LIMPIA] DERECHA
[A, SUCIA] LIMPIAR
[B, LIMPIA] IZQUIERDA
[B, SUCIA] LIMPIAR
[A, LIMPIA] [A, LIMPIA] DERECHA
[A, LIMPIA] [A, SUCIA] LIMPIAR
….. …..
[A, LIMPIA] [A, LIMPIA] [A, LIMPIAR
SUCIA]

Fuente: Elaboración propia.


Un ejemplo sofisticado y actual de este caso es el de la aspiradora Roomba
que se comercializa actualmente:

La aspiradora Roomba, una implementación sofisticada de un agente inteligente y el


mundo de las aspiradoras. (Recuperado de Wikipedia,
http://es.wikipedia.org/wiki/Roomba)

¿Qué posibles soluciones implementarías para la


aspiradora si ambas cuadrículas estuviesen limpias al
mismo tiempo?

Buen comportamiento y el concepto de racionalidad


Entendemos el concepto de racionalidad como hacer lo correcto, bajo los
parámetros y normas establecidas por el entorno del agente. Es decir que
hacer lo correcto implicará para el agente alcanzar el éxito o el mejor
resultado posible. Para ello, se deberán establecer medidas de
rendimiento como indicadores de que los objetivos se han alcanzado o no
(Russell y Norvig, 2004)

Las medidas de rendimiento incluyen los criterios que determinan el éxito


en el comportamiento del agente. La secuencia de acciones del agente
hace
que su entorno pase, asu vez, por una secuencia de estados; si la secuencia
es la esperada, entonces el agente actuó correctamente (Russell y Norvig,
2004)

En base a la bibliografía, define o explica las medidas


de rendimiento que consideras necesarias para el
caso del mundo de las aspiradoras.

Definiremos un Agente Racional como sigue:

“En cada posible secuencia de percepciones, un agente racional deberá


emprender aquella acción que supuestamente maximice su medida de
rendimiento, basándose en las evidencias aportadas por la secuencia de
percepciones y en el conocimiento que el agente mantiene almacenado”.
(Russell y Norvig, 2004, p. 41)

Cabe aclarar que la definición propuesta de racionalidad no requiere


omnisciencia, ya que la elección racional depende sólo de la secuencia de
percepciones obtenidas, por el agente, dentro de un período determinado.
Y, como es sabido, la omnisciencia, o la capacidad de saberlo todo de los
agentes, no es posible.
Otra parte importante de la racionalidad es el proceso de recopilación de
información, el cual permite llevar a cabo acciones con la intención de
modificar percepciones futuras. Se lo comenta en profundidad en el
Capítulo 16 del libro Inteligencia artificial. Un enfoque moderno, de Russell y
Norvig.

La definición nos dice que el agente racional no sólo recopila información,


sino que además aprende lo máximo posible de sus percepciones. La
configuración inicial del agente establece su conocimiento preliminar del
entorno, pero a medida que el agente adquiere experiencia, ésta puede
modificarse y ampliarse.

Por lo tanto, diremos que un agente carece de autonomía cuando se apoya


más en el conocimiento inicial, que le proporciona su diseñador, que en sus
propias percepciones. Un agente racional debe ser autónomo, debe saber
aprender a determinar cómo tiene que compensar el conocimiento
incompleto o parcial inicial. Por ejemplo, el agente aspiradora que aprenda
a prever dónde y cuándo aparecerá suciedad adicional, lo hará mejor que
otro que no aprenda. (Russell y Norvig, 2004)

Especificación del entorno de trabajo del agente


Cuando hablamos del entorno de trabajo, nos referimos a los problemas
para los cuales los agentes representan las soluciones.

Todo entorno de trabajo se especifica mediante el acrónimo REAS


(Rendimiento, Entorno, Actuadores, Sensores). Para diseñar un buen
agente, se recomienda siempre definir el entorno de trabajo de la manera
más completa posible.

En base a la bibliografía, construye tu propio cuadro


REAS de un taxímetro automático.

En base a la bibliografía, ¿cómo se categorizan los


diferentes entornos de trabajo de los agentes?
Estructura
¿Cómo trabajan internamente los agentes? Gran parte del trabajo de IA es
diseñar el programa del agente, el cual implementa la función de dicho
agente, función que proyecta las percepciones en las acciones. Se asume
que este programa se ejecutará en algún tipo de computador con sensores
físicos y actuadores, lo cual se conoce como arquitectura:

El programa que se elija tiene que ser acorde a la arquitectura utilizada.


Agente = arquitectura + programa

¿Qué diferencia encuentras entre el programa del


agente y la función del agente?

Tipos de Agentes

Agentes reactivos simple


Estos son los agentes más simples, ya que seleccionan las acciones sobre la
base de sus percepciones actuales, ignorando el resto de sus percepciones
históricas.
Agente Sensores

Cómo es el
mundo ahora

Medio ambiente
Reglas de Qué acción debo
condición-acción tomar

Actuadores

Esquema de un Agente reactivo simple (Fuente: Russell y Norvig, 2004, p. 54)

Los agentes reactivos simples tienen la excelente propiedad de ser


simples, pero poseen una inteligencia muy limitada.

¿Cuál es la forma, según la bibliografía, de evitar o


solucionar el problema de los bucles infinitos en los
agentes reactivos simples?
Agentes reactivos basados en modelos
Son aquellos agentes capaces de almacenar información de las partes del
mundo que no pueden ver; es decir, que deben mantener algún tipo de
estado interno que dependa de la historia percibida y que, de ese modo,
refleje por lo menos alguno de los aspectos no observables del estado
actual.

Agente Estado Sensores

¿Cómo evoluciona el
¿Cómo es el
mundo?
mundo ahora?

Medio ambiente
¿Qué efecto causan
mis acciones?
¿Qué acción
debo tomar?
Reglas de
condición-acción
Actuadores

Esquema de un Agente reactivo basado en modelos (Fuente: Russell y Norvig, 2004, p. 56)

El agente reactivo basado en modelos, ¿en qué tipo


de entorno se da comúnmente?
Agentes basados en objetivos
En estos tipos de agentes, además de la descripción del estado actual, se
necesita algún tipo de información sobre su meta que describa las
situaciones que son deseables de lograr.

En estos el programa del agente se puede combinar con información sobre


los resultados de las acciones posibles para elegir aquellas que permitan
alcanzar el objetivo deseado.

Agente Sensores
Estado

¿Cómo evoluciona el ¿Cómo es el


mundo? mundo ahora?

Medio ambiente
¿Qué efecto causan ¿Qué pasará si
mis acciones? realiza acción A?

¿Qué acción
debo tomar?
Objetivos
Actuadores

Esquema de un Agente basado en objetivos y en modelos (Fuente: Russell y Norvig, 2004,


p. 57)

Según la bibliografía, ¿qué diferencias se ven


fácilmente entre un agente basado en objetivos y
otro reactivo?
Agentes basados en utilidad
Son aquellos agentes basados en objetivos, pero que además cuentan con
una función utilidad. La función utilidad le permite al agente calcular
cuáles deben ser sus preferencias entre los estados del mundo y
seleccionar luego la acción que debe llevar a cabo para alcanzar la mayor
utilidad posible.

Agente Sensores
Estado

¿Cómo evoluciona el ¿Cómo es el


mundo? mundo ahora?

¿Qué efectos causan ¿Qué pasará si

Medio ambiente
mis acciones? realiza acción A?

¿Estaré contento
Utilidad en este estado?

¿Qué acción
debo tomar?

Actuadores

Esquema de un Agente basado en utilidad y en modelos (Fuente: Russell y Norvig, 2004, p.


59)

Según la bibliografía, ¿cuáles son los dos tipos de


casos en que una función de utilidad permiten tomar
decisiones?
Agentes que aprenden
Un agente que aprende se puede dividir en cuatro componentes:

• Elemento de actuación: es el responsable de seleccionar


las acciones externas.

• Elemento de aprendizaje: es responsable de hacer


mejoras.

• El generador de problemas: es responsable de sugerir


acciones que lo guiaran [sic] hacia experiencias nuevas e
informativas.

• La crítica: indica al elemento de aprendizaje que tal lo está


haciendo el agente con respecto a un nivel de actuación
fijo… (Morales González y Mejía Z., http://goo.gl/7UJKkB,
2012, p. 10)

El elemento de actuación es lo que anteriormente se había considerado


como el agente completo: recibe estímulos y determina las acciones a
realizar.
El elemento de aprendizaje se retroalimenta con las críticas sobre la
actuación del agente y determina cómo modificar el elemento de actuación
para proporcionar mejores resultados futuros. (Russell y Norvig, 2004)

Según la bibliografía, ¿por qué es tan importante la


distinción entre elemento de aprendizaje y elemento
de actuación?
Nivel de actuación

Agente
Sensores
Crítica

Retroalimentación

Medio ambiente
Elemento de Cambio
aprendizaje Elemento de
Conocimiento actuación
Objetivos a
aprender

Generador de
problemas

Actuadores

Esquema de un Agente que aprende (Fuente: Russell y Norvig, 2004, p. 60)

En definitiva, el aprendizaje en el campo de los agentes inteligentes


puede ser definido como el modo de modificar cada componente del
agente. Esto es lo que permite a cada uno de ellos comportarse en
consonancia con los datos que reciben, lo cual, a su vez, permite
optimizar el nivel medio de actuación del agente. (Russell y Norvig, 2004)

Fue Alan Turing quien estimó cuánto tiempo podía


llevar programar a mano una máquina inteligente y
que debía encontrarse un método más rápido. ¿Qué
opinas al respecto?

Se recomienda, para profundizar estos conceptos, la lectura de los


ejemplos vertidos a lo largo del capítulo 2 del libro Inteligencia artificial. Un
enfoque moderno, de Russell y Norvig.
Bibliografías de referencia
Bellman, R. (1978) An Introduction to Artificial Intelligence: Can Computers Think?
San Francisco: Boyd & Fraser Publishing Company.

Charniak, E. Y McDermott, D. (1985) Introduction to Artificial Intelligence. Reading.


Massachusetts: Addison-Wesley.

Cook, S. (1971) The complexity of theorem proving procedures. In Proceedings of


the 3rd Annual ACM Symposium on Theory of Computing, pp. 151-158. New York:
ACM Press.

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Haugeland, J. (1985) Artificial Intelligence: The Very Idea. Cambridge,


Massachusetts: MIT Press.

Karp, R. (1972) Reducibility among combinatorial problems. In Miller R. E. and


Thatcher J. W. (Eds.), Complexity of Computer Compulations, pp. 85-103. New
York: Plenum.

Kurzweil, R. (1990) The Age of Intelligent Machines. Cambridge, Massachusetts:


MIT Press.

McCulloch, W. and Pitts, W. (1943) A logical calculus of the ideas immanent in


nervous activity. Bulletin of Mathematical Biophysics, 5 (pp. 115-137)

Morales González, Viviana y Mejía Z., C. (2012). Aprendizaje en máquinas con


inteligencia artificial. USB Laboratorio de Psicología. Universidad de San
Buenaventura Cali. Recuperado de http://goo.gl/7UJKkB

Nilsson, N. J. (1998) Artificial Intelligence: A New Synthesis. San Mateo, California:


Morgan Kaufmann.

Poole. D., Mackworth, A. K ., Goebel. R. (1998) Computational intelligence: A


logical approach. Oxford, UK: Oxford University Press.

Ponce Cruz, P. (2010) Inteligencia artificial con aplicaciones a la ingeniería.


México: Alfaomega.

Rich, E. Y Knight, K. (1991) Artificial Intelligence (2ª ed.). New York: Mc Graw-Hill.

Russell, S. J. y Norvig, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.). Madrid: Prentice Hall.

Winston, P. (1992) Artificial Intelligence (3ª ed.). Reading. Massachusetts:


Addison-Wesley.
Henry, F. (09-06-2014) infotechnology.com Recuperado el 20-07-2014 de
http://goo.gl/Ujg8kM

Cruz, M. (16-04-2014) miecografia4d.com Recuperado el 27-08-2014 de


http://goo.gl/cTNG5s

González, C. S. (05-04-2004) Relieve Recuperado el 20-07-2014 de


http://goo.gl/14wTA9

López, A. (11-10-2014) El píxel ilustre Recuperado el 20-07-2014 de


http://goo.gl/4ugYps

Roberson, N. (10-01-2014) The marketing robot Recuperado el 20-07-2014 de


http://goo.gl/IJoc8z

Sanz, E. (17-02-2013) Gits Informática Recuperado el 20-07-2014 de


http://goo.gl/I5gMmx
Algoritmos:
problemas y
búsquedas de
soluciones

Inteligencia
Artificial
Algoritmos: problemas y
búsquedas de soluciones

¿Cómo se solucionan los problemas mediante búsqueda? ¿Qué


algoritmos deben aplicarse? ¿Cómo medimos el rendimiento de
las soluciones alcanzadas?

Introducción
Antes de profundizar en los algoritmos de búsqueda propiamente dichos,
debemos comenzar entendiendo un tipo especial de agente inteligente
denominado Agente Resolvente de Problemas, el cual pertenece al grupo
de los Agentes basados en objetivos.

Los agentes resolventes de problemas son quellos agentes que intentan


encontrar el camino adecuado (la secuencia de acciones a seguir) para la
resolución de un problema determinado.

Más formalmente, podemos entender que el primer paso para diseñar


cualquier agente resolvente de problemas es el de definir o formular
correctamente el objetivo que se pretende lograr, teniendo en cuenta la
situación actual y la medida de rendimiento del agente. Por otra parte,
debemos comprender que, dado un determinado objetivo, la formulación
de un problema implica decidir qué acciones y estado deben ser tenidos en
cuenta, ya que no es igual, por ejemplo, la secuencia de acciones y estados
necesarios que un agente debería tener en cuenta para resolver el problema
de viajar hacia otra ciudad, que las secuencias de estados y acciones
necesarias que deberían ser tenidas en cuenta para resolver el problema de
salir de una habitación. Aquí aparece lo que se denomina abstracción, o la
capacidad de tener en cuenta solo los hechos de mayor relevancia para el
problema que se está tratando, es decir, confeccionar un modelo con los
aspectos y variables más relevantes del problema que el agente intenta
solucionar y dejar de lado los detalles que carecen de importancia para el
problema que se intenta resolver.

En resumen, el primer paso para diseñar cualquier agente resolvente de


problemas es el de definir o formular correctamente el objetivo que se
pretende lograr teniendo en cuenta la situación actual y la medida de
rendimiento del agente.
Formular un problema implica decidir qué acciones y estado deben ser
tenidos en cuenta dado un objetivo.

Pero, ¿qué sucedería si a un agente que tiene un objetivo definido se le


presentaran varios caminos o soluciones posibles? ¿Qué camino le
convendría tomar? ¿Cuál debería elegir? ¿Todos lo conducirían al objetivo?
Para dar solución a esto es que existe el proceso de búsqueda, que no es
más que la capacidad del agente para examinar todas las secuencias de
acciones disponibles y elegir la mejor posible. Podemos decir, entonces, que
un algoritmo de búsqueda es aquel que toma como entrada un problema y
devuelve como salida una solución en forma de secuencia de acciones. Así,
el agente, basándose en la solución provista por el algoritmo, procederá a
ejecutar dicha secuencia de acciones. En pocas palabras tendremos un
diseño simple de un agente: formular, buscar, ejecutar.

Un diseño simple de un agente: formular, buscar, ejecutar.


Problemas bien definidos

Un problema puede definirse, formalmente, por cuatro


componentes:

El estado inicial en el que comienza el agente...

Una descripción de las posibles acciones disponibles por el


agente. La forma más común es usando una función sucesor…
[La cual toma un estado X y devuelve un conjunto de pares
ordenados <acción, sucesor>, dónde cada acción es una de las
acciones legales en el estado X, y cada sucesor es un estado
que puede alcanzarse desde X realizando la acción].
El test objetivo, el cual determina si un estado es un estado
objetivo.

Una función costo del camino que asigna un costo numérico


a cada camino. Un agente resolvente de problemas elige una
función costo que refleje nuestra medida de rendimiento…
(Russell y Norvig, 2004, pp. 70-71)

El estado inicial y la función sucesor establecen el espacio de estados del


problema, es decir, el conjunto de todos los estados alcanzables desde el
estado inicial.
El espacio de estados forma un grafo en el cual los nodos son estados y los
arcos entre los nodos son acciones.
Un camino en el espacio de estados es una secuencia de estados
conectados por una secuencia de acciones.

Una solución a un problema es, entonces, un camino desde el estado inicial


hacia uno de los estados objetivos.

Una solución óptima es la que implica el menor costo del camino entre
todas las soluciones posibles.
A
5 M
D
3
F
10 10
12 3
L 6
C 4
2 B
G 3
4 5
J K
8
6 11
H 8

E
4 14
I

Estructura común de un grafo con su estado inicial A y la secuencia de caminos, con sus
correspondientes costos numéricos, que llevan al estado objetivo B. (Fuente: elaboración
propia a base de Russell y Norvig, 2004)

Se recomienda leer el ejemplo completo del agente resolvente de problemas


que se encuentra de vacaciones en Rumania, que se da a lo largo del capítulo
3 del libro de Inteligencia artificial un enfoque moderno, de Russell y Norvig.
También se recomienda leer, del mismo libro, el capítulo 3.2 referido a los
diferentes tipos de problemas que pueden formularse o encontrarse.
Búsqueda de soluciones
De acuerdo con lo dicho anteriormente, un agente resolvente de problemas
podía tener un diseño simple: formular, buscar, ejecutar.

En este apartado nos concentraremos en la búsqueda, a través de un


espacio de estados, y las diferentes técnicas existentes que nos permitirán
llegar a la solución del problema que se esté intentando resolver.

Este espacio de estado puede estar definido ya sea por un árbol de


búsqueda o por un grafo de búsqueda.

Árbol de busqueda: está conformado el estado inicial y la función


“sucesor”, lo que permite definir el espacio de estados.
Cuando el mismo estado es alcanzable desde diferentes caminos, estamos
hablando de un grafo de búsqueda.
La raíz del árbol de búsqueda es el nodo de búsqueda y se corresponde
con el estado inicial.

Lo primero que se hace en una búsqueda es comprobar si el estado en el que


se está es objetivo. Si se lo está, se ha alcanzado el objetivo y ha finalizado
la búsqueda; pero si no se está allí, entonces, debemos considerar otros
estados: a esto se lo logra expandiendo el estado actual, es decir, aplicando
la función sucesor al estado actual para generar un nuevo conjunto de
estados.

Por lo general, el recorrido de un árbol o grafo se puede definir por los


siguientes pasos:

Seleccionamos el nodo raíz y lo guardamos en una lista que contiene


los nodos no visitados aún. A esta lista se la suele denominar frontera
o lista abierta;

Tomamos un nodo de la frontera y verificamos si se trata de un nodo


objetivo. Si lo es, hemos terminado;

Generamos todos los nodos hijos del nodo seleccionado en el paso


2; es decir, expandimos el nodo. Añadimos, entonces, estos nodos
hijos a la lista de nodos fronteras;

Volvemos al paso 2 hasta que la lista de nodos fronteras se vacíe.


Para el caso de un grafo, el proceso es ligeramente diferente:

Seleccionamos el nodo raíz y lo guardamos en la lista de nodos


frontera;

Tomamos un nodo de la frontera y verificamos si se trata de un nodo


objetivo. Si lo es, hemos terminado. Además almacenamos este nodo
en una lista llamada “visitados” que contiene todos los nodos
visitados hasta el momento;

Generamos todos los hijos del nodo del seleccionado en el paso 2, es


decir, expandimos el nodo. Para cada hijo verificamos que no se
encuentre en la lista de visitados; si no está, entonces lo añadimos a
la lista de nodos fronteras;

Volvemos al paso 2 hasta que la lista de nodos fronteras se vacíe.

El rendimiento de la resolución del problema


Si bien cada algoritmo que se emplea para resolver una búsqueda producirá
como salida una solución o fallará en el intento, debemos tener en cuenta
con qué medidas evaluaremos el rendimiento del mismo:

Completitud: ¿el algoritmo garantiza encontrar una solución, si es


que esta existe?

Optimización: ¿la estrategia de búsqueda permite encontrar la


solución óptima?

Complejidad en tiempo: ¿cuánto tarda en encontrar una solución?


(Es decir, el número de nodos generados/expandidos).

Complejidad en espacio: ¿cuánta memoria se necesita para el


funcionamiento de la búsqueda? (Es decir, el número de nodos
almacenados durante la búsqueda).

La complejidad en tiempo y espacio se miden con respecto a:

b: factor de ramificación, o máximo número de sucesores de


cualquier nodo.

d: profundidad del nodo objetivo más superficial.

m: máxima profundidad del espacio de estados (puede ser


∞). (Russell y Norvig, 2004)
Se te recomienda leer el capítulo 3.3 del libro Inteligencia artificial. Un
enfoque moderno, de Russell y Norvig, para obtener más información al
respecto.
Bibliografías de referencia
Arteaga, R. y Amijos, J. C. (02/09/1998). Tutorial de Programación Heurística.
Recuperado de http://www.monografias.com/trabajos/iartificial/bienvenida.htm

Ascolano, F., Cazorla, M. A., Alfonso, M. I., Colomina, O., Lozano Ponce y Cruz, P.
(2003). Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid:
Paraninfo.

Bromberg, F. (2008). Resolución de problemas mediante Búsqueda (a ciegas).


Universidad Nacional de Cuyo. Recuperado de http://goo.gl/FGbAHz

Cabrales, S., García, D., Girón, I., Medina, L., Rodríguez, E. y Valenzuela, A.
(23/04/2014) Semántica de las reglas de producción. Instituto Tecnológico
Superior de Lerdo. Recuperado de http://es.slideshare.net/Zero2306/semntica-
12645677

RUSSELL, S. J. y NORVIG, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.) Madrid: Prentice Hall. [Versión electrónica] Recuperado de:
http://iarp.cic.ipn.mx/~hcalvo/Inteligencia_Artificial_files/Inteligencia%20Artificia
l,%20Un%20Enfoque%20Moderno%20-
%20Stuart%20J.%20Russell,%20Peter%20Norvig%20-
%20Prentice%20Hall%20(ocr,%20caps%201-11).pdf

Peraza Rodríguez, F. (22/06/2002). El proceso de razonamiento. En Pérez


Rodríguez, F., Inteligencia artificial. Recuperado de http://goo.gl/hUufCL

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.
Estrategias de
búsqueda

Inteligencia
Artificial
Estrategias de búsqueda
Estrategias de búsqueda no
informada o búsqueda a ciegas
Se las denomina así porque en este tipo de búsquedas no se tiene
información adicional acerca de los estados, más allá de la proporcionada
por la definición del problema. Lo único que ellas pueden hacer es generar
los sucesores y distinguir si un estado es objetivo o no.

Dentro de estas estrategias tenemos:

 búsqueda primero en anchura, o búsqueda en amplitud;

 búsqueda primero en profundidad, o búsqueda en


profundidad;

 búsqueda de costo uniforme;

 búsqueda de profundidad limitada;

 búsqueda primero en profundidad con profundidad iterativa;

 búsqueda bi-direccional.

Búsqueda primero en anchura, o búsqueda en


amplitud:
Es una estrategia muy simple: primero se expande el nodo raíz, luego se
expanden todos los sucesores del nodo raíz, después los sucesores de estos,
etcétera. Se expanden todos los nodos a una profundidad determinada en
el árbol de búsqueda antes de expandir los nodos del próximo nivel. La
búsqueda primero en anchura se puede implementar con una frontera vacía
con una cola del tipo “primero en entrar, primero en salir” (FIFO),
asegurando que los nodos primero visitados serán los primeros expandidos.
La cola FIFO pone todos los nuevos sucesores generados al final de la cola,
lo que significa que los nodos más superficiales se expanden antes que los
nodos más profundos. (Russell y Norvig, 2004)
Búsqueda primero en anchura sobre un árbol binario sencillo. En cada etapa, el próximo
nodo a expandir se indica con una marca. (Russell y Norvig, 2004, p. 83)

Si analizamos este tipo de búsqueda según los criterios de rendimiento,


veremos que es:

Completa: si lo es, siempre y cuando el nodo objetivo esté a una


profundidad finita d (Este tipo de búsqueda encontrará el objetivo
después de expandir todos los nodos);

Óptima: si lo es, siempre y cuando todas las acciones tengan los


mismos costos;

La complejidad en tiempo es: O(b d+1);

La complejidad en espacio: O(b d+1).

Como puede verse, este tipo de búsqueda tiene un orden o complejidad


exponencial; pensemos en un espacio de estados hipotético donde cada
estado tiene b sucesores. La raíz del árbol de búsqueda genera b nodos en
el primer nivel; a su vez, cada uno de ellos genera b nodos más, resultando
en un total de b2 en el segundo nivel. Cada uno de estos luego genera b
nodos más, resultando en b3 nodos en el tercer nivel, etc.

Ahora supongamos que la solución está a una profundidad d. En el peor caso,


expandiremos todos excepto el último nodo en el nivel d (ya que el objetivo
no se expande), generando bd+1 - b nodos en el nivel d+1. Entonces, el
número total de nodos generados es:

b + b2 + b3 + ... + bd + (b d+1 - b) = O(b d+1)

Cada nodo generado debe permanecer en la memoria porque, o es parte


de la frontera, o es un antepasado de un nodo de la frontera. La
complejidad en espacio es, por lo tanto, la misma que la complejidad en
tiempo –más un nodo para la raíz–. (Russell y Norvig, 2004)

En este gráfico puede verse cómo crece el tiempo y la memoria de manera exponencial al
crecer la profundidad. (Fuente: Russell y Norvig, 2004, p. 83)

Por lo general, los problemas de búsqueda exponencial no pueden


resolverse por métodos no informados.

A continuación, se expone el pseudocódigo para este tipo de búsqueda:

Insertar en una cola el elemento raíz (nodo de partida).

Hasta que el elemento frontal sea el nodo meta o se vacíe la cola,


proceder del siguiente modo:

si nodo frontal tiene hijos, insertar todos sus hijos al final de la cola;

eliminar nodo frontal;

si nodo meta se alcanza, entonces notificar éxito; de lo contrario,


notificar fracaso.
Búsqueda primero en profundidad o búsqueda en
profundidad:
Su funcionamiento es muy simple: se van expandiendo todos y cada uno de
los nodos que se van localizando de forma recurrente en un camino
concreto. Cuando ya no quedan más nodos que visitar en dicho camino, se
regresa (backtracking), de modo que se repite el mismo proceso con cada
uno de los hermanos del nodo ya procesado. (Russell y Norvig, 2004)

Esta estrategia puede implementarse a la lista de frontera como una cola de


tipo “último en entrar, primero en salir” (LIFO), también conocida como
una pila.

La búsqueda primero en profundidad requiere mucha menos memoria, ya


que solo necesita almacenar un camino desde la raíz a un nodo hoja, junto
con los nodos hermanos restantes no expandidos para cada nodo del
camino. Cuando un nodo se ha expandido, se lo puede quitar de la
memoria tan pronto como todos sus descendientes hayan sido explorados.

Para un espacio de estados con factor de ramificación b y máxima


profundidad m, la búsqueda primero en profundidad requiere almacenar
solo b m + 1 nodos.

Entonces, si analizamos este tipo de búsqueda según los criterios de


rendimiento, veremos que:

Es completa: No;

Es óptima: No;

Su complejidad en tiempo es de: O(bm);

Su complejidad en espacio es de: O(bm).


Búsqueda primero en profundidad en un árbol binario (Fuente: Russell y Norvig, 2004, p.
85).

¿Qué variante de la búsqueda primero en


profundidad utiliza menos memoria aún?
¿Qué inconvenientes crees que puede tener este tipo
de búsqueda?

A continuación explicaremos el pseudocódigo para este tipo de búsqueda:

Insertar en una pila el elemento raíz (nodo de partida).

Hasta que el elemento tope sea el nodo meta, o se vacíe la pila,


proceder del siguiente modo:
si nodo tope tiene hijos, insertar el hijo siguiente que todavía no fue
no visitado (según ordenamiento);

si no, entonces eliminar nodo tope;

si nodo meta se alcanza, entonces notificar éxito; de lo contrario,


notificar fracaso.

Búsqueda de costo uniforme:


Es como una búsqueda primero en anchura, pero lo que se hace en este caso
es expandir el nodo n con el camino de menor costo. Es decir que este tipo
de búsqueda no se preocupa por la cantidad de pasos que tiene un camino,
pero sí por el costo total del mismo.

Se pude asegurar la completitud si el costo de cada paso es mayor o igual a


alguna constante positiva chica e. Esto también es suficiente para garantizar
la optimización.

La complejidad está caracterizada por C* que es el costo de la solución


óptima, en donde cada acción cuesta al menos e; por lo tanto, la complejidad
en tiempo y espacio estará definida por O (bC*/e).

Entonces, si analizamos este tipo de búsqueda según los criterios de


rendimiento, veremos que:

Es completa: sí, siempre y cuando b sea finita y g (x,a,y)>0;

Es óptima: sí;

Su complejidad en tiempo es de: O(bC*/e)

Su complejidad en espacio es de: O(bC*/e)

¿Qué sucederá con el tipo de búsqueda de costo


uniforme si todos los costos son iguales?
Búsqueda de profundidad limitada:
Este tipo de búsqueda resuelve el problema de la búsqueda en profundidad
del camino infinito. Esto se logra fijando un límite de profundidad que
representaremos con la letra “Ɩ” para el árbol que se está tratando. Pero
este límite trae aparejada otra cuestión a saber:

Si elegimos un Ɩ<d, entonces el objetivo estará fuera del límite de


profundidad y, por lo tanto, nunca será alcanzado (este caso suele
ocurrir cuando d es desconocido).

Y si escogemos un Ɩ>d, entonces la búsqueda de profundidad limitada será


no óptima.

La búsqueda primero en profundidad es un caso especial de búsqueda de


profundidad limitada con Ɩ=∞

Entonces, si analizamos este tipo de búsqueda según los criterios de


rendimiento, veremos que:

Es completa: sí, siempre y cuando Ɩ>=d;

Es óptima: no;

Su complejidad en tiempo es de: O(bƖ);

Su complejidad en espacio es de: O(bƖ).

Búsqueda primero en profundidad con profundidad


iterativa:
Esta es una estrategia aplicada a la búsqueda primero en profundidad, la
cual permite encontrar el mejor límite de profundidad de forma gradual
(primero 0, después 1, luego 2, etc.) hasta lograr encontrar un objetivo.
La búsqueda de profundidad iterativa puede parecer extremadamente
costosa porque los estados se generan múltiples veces, pero no lo es, ya que
en un árbol de búsqueda con el mismo (o casi el mismo) factor de
ramificación en cada nivel, la mayor parte de los nodos está en el nivel
inferior, entonces no importa mucho que los niveles superiores se generen
múltiples veces. En una búsqueda de profundidad iterativa, los nodos sobre
el nivel inferior (profundidad d) son generados una vez; los anteriores al nivel
inferior son generados dos veces, etcétera, hasta los hijos de la raíz, que son
generados d veces. Así, el número total de nodos generados es:

N(BPI) = (d)b + ( d - l)b2 + ... + (1)bd

Lo que da una complejidad en tiempo de O(bd).

Podemos compararlo con los nodos generados por una búsqueda primero
en anchura:

N(BPA) = b + b2 + ... + bd + (bd+1 - b).

Por ejemplo, si b = 10 y d = 5, los números son:

N(BPI) = 50 + 400 + 3.000 + 20.000 + 100.000 = 123.450

N(BPA) = 10 + 100 + 1.000 + 10.000 + 100.000 + 999.990 = 1.111.100

El resultado es que la profundidad iterativa es, en realidad, más rápida que


la búsqueda primero en anchura, a pesar de la generación repetida de
estados.

“La profundidad iterativa es el método de búsqueda no informada


preferido cuando hay un espacio grande de búsqueda y no se conoce la
profundidad de la solución”. (Russell y Norvig, 2004, p. 88)
Búsqueda de profundidad iterativa sobre un árbol binario. (Fuente: Russell y Norvig, 2004,
p. 89)

Entonces, si analizamos este tipo de búsqueda según los criterios de


rendimiento, veremos que:

completa: Si, siempre y cuando Ɩ>=d;


óptima: Si, siempre que los costos sean iguales;
complejidad en tiempo: O(bd);

complejidad en espacio: O(bd ).


Búsqueda bidireccional:
La idea de este tipo de búsqueda es ejecutar dos búsquedas de manera
simultánea: una búsqueda hacia adelante, desde el estado inicial, y otra
hacia atrás, desde el estado objetivo. Se finaliza cuando ambas búsquedas
se encuentran. Es de suponer que bd/2 + bd/2 es menor que bd. En este caso,
cada búsqueda comprueba, antes de ser expandido, si cada nodo está en la
frontera del otro árbol de búsqueda; si lo está, entonces se ha llegado a una
solución. Verificar que un nodo pertenece al otro árbol de búsqueda se
puede hacer en un tiempo constante con una tabla hash, así que la
complejidad en tiempo de la búsqueda bidireccional es 0(bd/2). Por lo menos
uno de los árboles de búsqueda se debe mantener en la memoria para que
se pueda hacer la comprobación de pertenencia; por lo tanto, la complejidad
en espacio es también 0(bd/2). (Russell y Norvig, 2004)

Entonces, si analizamos este tipo de búsqueda según los criterios de


rendimiento, veremos que:

es completa: sí, siempre y cuando b sea finita y se use búsqueda


primero en anchura;

es óptima: sí, siempre que los costos sean iguales y se use búsqueda
primero en anchura;
su complejidad en tiempo es de: O(bd/2);

su complejidad en espacio es de: O(bd/2).


Comparación de estrategias de
búsqueda

Criterio Primero en Costo Primero en Profundidad Profundidad Bidireccional


anchura uniforme profundidad limitada iterativa
Completo Sí Sí No Sí Sí Sí (si b es finita y
usa búsqueda
(si b es finito) (si b es finita y (si Ɩ >=d)
si g(x,a,y)>0 primera en
anchura)
Tiempo b d+1 bC*/e bm bƖ bd bd/2
Espacio b d+1 bC*/e bm bƖ bd bd/2
Óptimo Sí Sí No No Sí Sí
(si costos son (si costos (si costos son
iguales) son iguales) iguales y usa
búsqueda primero
en anchura)

Fuente: Elaboración propia.

Estrategias de búsqueda informada


Este tipo de estrategia utiliza el conocimiento específico del problema, y no
sólo la definición del mismo, para encontrar una solución. Son todos
aquellos tipos de búsqueda que saben si un estado (no objetivo) es más
prometedor que otro.

Recordemos que los métodos de búsqueda NO INFORMADOS generaban


sistemáticamente nuevos estados y que cada estado debía ser testeado con
el objetivo. Además, la mayoría de estos son terriblemente ineficientes, ya
que su espacio de búsqueda es exponencial (El problema de la aguja –
objetivo– en un pajar –espacio de estados–). La forma de mejorar esto es
utilizando heurísticas que permitan tener un conocimiento previo de qué
caminos permitirán probablemente alcanzar el objetivo. Es decir que, en el
mejor de los casos, sólo se expandirán los nodos que se encuentren en el
camino a la solución.

Dentro de este tipo de estrategias podemos destacar:

búsqueda primero el mejor;

búsqueda voraz primero el mejor;

búsqueda A*.
La definición de heurística, según el diccionario de la RAE, nos indica que
es: “una regla aproximada, una simplificación, o estimación justificada que
reduce o limita la búsqueda de soluciones en dominios difíciles o poco
comprendidos”.

Búsqueda primero el mejor


Esta es una aproximación general a la búsqueda informada. En la búsqueda
primero el mejor se selecciona un nodo para la expansión teniendo en
cuenta una función de evaluación o f(n). Por lo general, se selecciona para
la expansión el nodo con la evaluación más baja (porque la evaluación mide
la distancia al objetivo). La búsqueda primero el mejor puede implementarse
dentro de nuestro marco general de búsqueda con una cola con prioridad y
una estructura de datos que mantendrá la frontera en orden ascendente
para los valores de f.

Las características principales de este tipo de búsqueda son:

Orden de expansión de los nodos n: el cual en la frontera es


determinado por una función de evaluación f(n).

f(n) estima la distancia al objetivo (elige el nodo que aparentemente


es mejor).

Implementación: frontera = cola de prioridad determinada por f(n).

Costo uniforme: se da en la Búsqueda primero el mejor con f(n)=g(n).

Un componente clave de los algoritmos con función evaluación f(n) es la


denominada función heurística, denotada con h(n):

h(n) = costo estimado del camino óptimo desde el nodo n hasta el


objetivo.

Si n es el objetivo, entonces h(n) = 0.


Búsqueda voraz primero el mejor
Esta estrategia intenta expandir el nodo más cercano al objetivo, ya que
probablemente conduzca más rápidamente a la solución. Utiliza la función
heurística f(n) = h(n) para evaluar cada nodo. Donde h(n) es igual al costo
estimado del camino más barato desde el nodo n hasta el objetivo.

Se la denomina “voraz o avara” porque en cada paso intenta colocarse lo


más cerca posible del objetivo, seleccionando el nodo con menor función de
evaluación f(n).

Este tipo de búsquedas no necesariamente proporcionan una solución


óptima y, al igual que muchos de los otros métodos vistos hasta aquí, debe
encontrar la forma de verificar los callejones sin salida.

Si analizamos este tipo de búsqueda según los criterios de rendimiento,


veremos que:

es completa: no (estados repetidos);

es óptima: no, ya que presenta los mismos problemas que la


búsqueda primero en profundidad;
su complejidad en tiempo es de: O(bm);

su complejidad en espacio es de: O(bm).

Según tu criterio y de acuerdo con la bibliografía,


¿cuáles crees que son las similitudes que hay entre la
búsqueda voraz y la búsqueda en profundidad?
Búsqueda voraz primero el mejor que grafica el ejemplo de ir desde Arad a Bucarest.
(Fuente: Russell y Norvig, 2004, p. 110)

Búsqueda A*
Es la estrategia más ampliamente difundida dentro de los tipos de
búsqueda primero el mejor.

La idea primordial es evaluar no solo el costo de ir hacia el nodo objetivo


h(n), sino que además se tiene en cuenta el costo de alcanzar el nodo n
mediante g(n). Es decir que la función evaluación quedara definida como:

f(n) = g(n) + h(n)


Ya que la g(n) nos da el coste del camino desde el nodo inicio al nodo n, y la
h(n) el coste estimado del camino más barato desde n al objetivo, tenemos
que:

f(n) = Costo total estimado del camino a través de n.

Teorema: La búsqueda A* es óptima solo si


utiliza heurísticas admisibles.

Una heurística es admisible si nunca sobreestima el costo de alcanzar el


objetivo:

Es decir, es optimista.

Formalmente:

h(n) <= h*(n) donde h*(n) es el verdadero costo desde n.

h(n) >= 0, así que h(G) = 0 para cualquier nodo objetivo G.

Demostración:
Supongamos la existencia de un nodo objetivo G2 sub-óptimo en la
frontera, y que el costo de la solución óptima es C*.

Entonces, como G2 es sub-óptimo y h(G2) = 0 (lo cual es cierto para


todo nodo objetivo), tenemos que:

f(G2) = g(G2) + h(G2) = g(G2) > C*

Consideremos un nodo n sobre el camino óptimo:


f(n) = g(n) + h(n) <= C*

Entonces, f(n) <= C* < f(G2), y por lo tanto G2 no será expandido


antes que n.

Otro aspecto importante de una heurística h(n) es la consistencia, y diremos,


entonces, que una heurística es consistente si: para cada nodo n y cada
sucesor n’ de n generado por cualquier acción a, el coste estimado de
alcanzar el objetivo desde n no es mayor que el coste de alcanzar n’ más el
coste estimado de alcanzar el objetivo desde n’:

h(n) <= g(n,a,n’) + h(n)

Esto es una forma de la desigualdad triangular general que especifica que


cada lado de un triángulo no puede ser más largo que la suma de los otros
dos lados. En nuestro caso, el triángulo está formado por n, n’ y el objetivo
más cercano a n. La consecuencia más importante de la consistencia es la
siguiente:

A* utilizando la búsqueda en grafos será consistente óptimo si la h(n) es


consistente.

n

Nodo

Objetivo

Explicación grafica de la desigualdad triangular. Fuete: elaboración propia.

Si h(n) es consistente, entonces los valores de f(n), a lo largo de cualquier


camino se mantienen sin disminuir.

¿Podrías explicar, según tu criterio y leyendo la


bibliografía, qué significa el concepto de Poda del
algoritmo A*?
Búsqueda A* con el ejemplo de ir desde Arad a Bucarest. (Fuente: Russell y Norvig, 2004,
p. 112)
Si analizamos este tipo de búsqueda según los criterios de rendimiento
veremos que:

es completa: sí;

es óptima: Sí, ya que ningún algoritmo óptimo de búsqueda en


árboles garantiza expandir menos nodos que A*;

su complejidad en tiempo es de: |h(n) – h*(n)| =< O(log h*(n));

su complejidad en espacio es de: |h(n) – h*(n)| =< O(log h*(n)).

Es muy común que un algoritmo A* no sea recomendable para problemas


grandes, ya que mantiene almacenados todos los nodos en memoria y es
normal que se quede sin espacio antes de quedarse sin tiempo.
Bibliografías de referencia
Arteaga, R. y Amijos, J. C. (02/09/1998). Tutorial de Programación Heurística.
Recuperado de http://www.monografias.com/trabajos/iartificial/bienvenida.htm

Ascolano, F., Cazorla, M. A., Alfonso, M. I., Colomina, O., Lozano Ponce y Cruz, P.
(2003). Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid:
Paraninfo.

Bromberg, F. (2008). Resolución de problemas mediante Búsqueda (a ciegas).


Universidad Nacional de Cuyo. Recuperado de http://goo.gl/FGbAHz

Cabrales, S., García, D., Girón, I., Medina, L., Rodríguez, E. y Valenzuela, A.
(23/04/2014) Semántica de las reglas de producción. Instituto Tecnológico
Superior de Lerdo. Recuperado de http://es.slideshare.net/Zero2306/semntica-
12645677

RUSSELL, S. J. y NORVIG, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.) Madrid: Prentice Hall. [Versión electrónica] Recuperado de:
http://iarp.cic.ipn.mx/~hcalvo/Inteligencia_Artificial_files/Inteligencia%20Artificia
l,%20Un%20Enfoque%20Moderno%20-
%20Stuart%20J.%20Russell,%20Peter%20Norvig%20-
%20Prentice%20Hall%20(ocr,%20caps%201-11).pdf

Peraza Rodríguez, F. (22/06/2002). El proceso de razonamiento. En Pérez


Rodríguez, F., Inteligencia artificial. Recuperado de http://goo.gl/hUufCL

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.
Lógica proposicional y
lógica de predicados

Inteligencia
Artificial
Lógica proposicional y lógica
de predicados
¿Es posible representar el
conocimiento? ¿Se puede generar
nuevo conocimiento?

¿Cómo pueden usarse la lógica proposicional y la lógica de


predicados para generar nuevo conocimiento? ¿Cuáles son las
diferentes técnicas de inferencia y razonamiento?

Agentes basados en
conocimiento
Un agente basado en conocimiento es aquel que posee una base de
conocimiento que le ayuda a realizar sus acciones y a inferir (generar)
conocimiento nuevo a partir del ya existente. Por lo general, una base de
conocimiento está conformada por aserciones del mundo real almacenadas
mediante alguna forma de representación específica, como puede ser la
lógica proposicional o la lógica de predicados.

Para poder representar el conocimiento de manera adecuada, debemos


definir un conjunto de convenciones sintácticas y semánticas que harán
posible describir cosas, de manera que un agente inteligente pueda
utilizarlas para tomar decisiones y llevar a cabo “acciones correctas”.
La sintaxis es el conjunto de símbolos y las reglas para combinarlos.
La semántica trata sobre significado de las expresiones construidas.

Representación del
conocimiento mediante lógica
proposicional
Esta es la más antigua y simple de las formas de lógica. Permite representar
y manipular aserciones sobre el mundo que nos rodea, utilizando una
representación primitiva del lenguaje.

En la lógica proposicional es posible aplicar el razonamiento si primero se


evalúan las sentencias simples y luego las sentencias más complejas unidas
por conectores lógicos como Y (AND), O (OR), etc. (López, 2012)

Una sentencia simple es, entonces, una proposición que tiene únicamente
un valor verdadero (v) o falso (f), por ejemplo:

Hoy es lunes.

Ayer salió el sol.

Hace frio.

Entonces, la lógica proposicional determina la veracidad de una sentencia


compleja analizando los valores de veracidad asignados a las sentencias
simples que la conforman.
Como la lógica proposicional sólo permite la asignación de un valor
verdadero o falso para la sentencia completa (no tiene la capacidad para
analizar cada una de las palabras individuales que componen la sentencia),
se suele representar a las sentencias anteriores como proposiciones, de la
siguiente manera:

hoy_es_lunes;

ayer_salió_el_sol;

hace_frío.

Las proposiciones pueden combinarse utilizando conectores lógicos para


expresar conceptos más complejos, como por ejemplo:

hoy_es_lunes y hace_frío.

La combinación anterior será, entonces, verdadera o falsa dependiendo de


los valores de verdad de cada una de las sentencias simples que la componen
y, por supuesto, de la naturaleza del conector lógico (y, en este caso) que
vincula a ambas.

A modo de repaso, se recuerdan en la siguiente tabla los conectores básicos


de la lógica proposicional y sus tablas de verdad:

p q Disyunción Conjunción Negación Implicación Equivalencia

pVq p^q ~p p => q p=q

v v v v f v v

v f v f f f f

f v v f v v f

f f f f v v v

Fuente: Elaboración propia


¿Podrías explicar, según tu criterio y leyendo la
bibliografía, qué significado tienen los conceptos de
equivalencia lógica, validez y satisfacibilidad?

Tablas de equivalencias lógicas. (Fuente: Russell y Norvig, 2004, p. 235)

Un apartado interesante es el referido al conector de implicación. Al


respecto, podemos decir que p => q es un condicional que expresa que:

q será verdadero toda vez que sea p verdadero;

para los casos en los cuales p sea falso, la expresión p => q es siempre
verdadera, independientemente de los valores lógicos que tome q,
ya que el operador de implicación no puede hacer inferencias acerca
de los valores de q.
Entonces, p => q se lee: “p implica a q” o “p entonces q”.

Quizás la implicación pueda parecer confusa para nuestra forma de pensar,


por eso imaginemos un supuesto teniendo en cuenta la primera fila de la
tabla de verdad:

Si p = v y q = v, entonces p => q resulta verdadero.

No hay corriente eléctrica => La PC no enciende.

Para los casos en que p = v y q = f, entonces p => q resulta falso porque la


regla sería:

No hay corriente eléctrica => La PC enciende.

Luego, para p = f y q = v resultará que p => q es verdadero, ya que la regla


quedaría:

Hay corriente eléctrica => La PC no enciende.

Finalmente, para p = f y q = f resultará que p => q es verdadero, ya que la


regla quedaría:

Hay corriente eléctrica => La PC enciende.

Representación del conocimiento


mediante lógica de predicados

La lógica proposicional es muy limitada para representar y expresar


conocimiento, ya que hay muchas sentencias complejas que pueden llegar a
perder mucho de su significado cuando se las expresa con lógica
proposicional. Es por esto que se desarrolló una forma de lógica más general
que es capaz de representar todos los detalles expresados en las sentencias;
esta es: la lógica de predicados.
La lógica de predicados extiende a la lógica proposicional permitiendo la
representación de sentencias complejas sin perdida del significado de las
mismas.

La lógica de predicados se basa en el concepto de las sentencias que


realmente expresan relaciones entre objetos, así como también cualidades
y atributos de tales objetos. Los objetos pueden ser personas, objetos físicos
o conceptos. Los predicados, entonces, son las cualidades, relaciones o
atributos de los objetos. Podemos, a su vez, decir que los argumentos o
términos del predicado son los objetos.

Tanto para las proposiciones como para los predicados existe algún un valor
que los hace verdaderos. En los predicados su veracidad está definida a
partir de sus términos. Por ejemplo:

este predicado es verdadero: color (elefante, gris);

el mismo predicado es falso cuando: color (elefante, violeta).

Los predicados pueden usarse indistintamente para representar una acción,


relaciones entre objetos o asignar una cualidad abstracta a sus términos.

Siempre asumimos que la veracidad o no de un predicado está dada por su


relación con el mundo real; por ello, cuando definimos predicados es natural
que presupongamos que estos están de acuerdo con el mundo tal cual como
lo conocemos, aunque en la lógica de predicados no es absolutamente
necesario que lo hagamos de ese modo.

En lógica de predicados, el solo hecho de establecer como verdadero un


predicado es condición suficiente para que así sea considerado.

El siguiente predicado, por ejemplo, indica que Argentina se encuentra en


Europa:

se_encuentra_en(Argentina, Europa)

Por supuesto, esto es una falsedad en el mundo real, pero si el predicado es


considerado verdadero (y dado que la lógica de predicados no sabe sobre
geografía), entonces este será lógicamente verdadero.

Los predicados considerados como lógicamente verdaderos se llaman


axiomas y no requieren de justificación alguna para establecer su verdad.
La lógica de predicados se ocupa únicamente de Reglas de Inferencia.

La lógica de predicados se centra en la utilización de reglas de inferencia.


Para un conjunto de axiomas (que fueron aceptados como verdaderos), las
reglas de inferencia nos asegurarán que solo serán derivadas consecuencias
verdaderas.

Tanto los conectores lógicos como los operadores usados en la lógica


proposicional son igualmente válidos en lógica de predicados.

Regla de inferencia: podríamos decir que es un esquema que permite


construir inferencias válidas.
Las reglas de inferencia también suelen ser llamadas reglas de
transformación, ya que permiten derivar conclusiones a partir de premisas.

¿Podrías explicar, según tu criterio y leyendo la


bibliografía, qué significa tautología?

Los argumentos de los predicados dados se denominan constantes. Además


de las contantes, en la lógica de predicados se pueden tener argumentos
variables, es decir, aquellos argumentos cuyo valor varía a lo largo del
tiempo; por ejemplo:

color (elefante, x) donde x en un momento dado puede tener el valor


“gris”, haciendo de ese modo al predicado verdadero; y, en otro
momento, x puede tener el valor “violeta”, transformando nuestro
predicado en falso.

Lo importante de las variables es que pueden ser cuantificadas. En la lógica


de predicados, los cuantificadores más usados son:

El cuantificador universal , el cual se lee como sigue:


 x, [hombre(x) => es_mortal(x)].

Para todo x, si x es hombre entonces x es mortal.

El cuantificador existencial , el cual se lee:

x, [hombre(x) => es_sabio(x)].

Existe un x tal que x es hombre y x es sabio.


Bibliografías de referencia
Arteaga, R. y Amijos, J. C. (02/09/1998). Tutorial de Programación Heurística.
Recuperado de http://www.monografias.com/trabajos/iartificial/bienvenida.htm

Ascolano, F., Cazorla, M. A., Alfonso, M. I., Colomina, O., Lozano Ponce y Cruz, P.
(2003). Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid:
Paraninfo.

Bromberg, F. (2008). Resolución de problemas mediante Búsqueda (a ciegas).


Universidad Nacional de Cuyo. Recuperado de http://goo.gl/FGbAHz

Cabrales, S., García, D., Girón, I., Medina, L., Rodríguez, E. y Valenzuela, A.
(23/04/2014) Semántica de las reglas de producción. Instituto Tecnológico
Superior de Lerdo. Recuperado de http://es.slideshare.net/Zero2306/semntica-
12645677

RUSSELL, S. J. y NORVIG, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.) Madrid: Prentice Hall. [Versión electrónica] Recuperado de:
http://iarp.cic.ipn.mx/~hcalvo/Inteligencia_Artificial_files/Inteligencia%20Artificia
l,%20Un%20Enfoque%20Moderno%20-
%20Stuart%20J.%20Russell,%20Peter%20Norvig%20-
%20Prentice%20Hall%20(ocr,%20caps%201-11).pdf

Peraza Rodríguez, F. (22/06/2002). El proceso de razonamiento. En Pérez


Rodríguez, F., Inteligencia artificial. Recuperado de http://goo.gl/hUufCL

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.
Inferencia y
razonamiento

Inteligencia
Artificial
Inferencia y razonamiento

Se puede decir que el proceso de Inferir hace referencia a sacar conclusiones


a partir de algo conocido.

Por otro lado razonar es pensar de manera ordenada para poder llegar a una
determinada conclusión; se puede decir, entonces, que se está infiriendo o
concluyendo en base a hechos conocidos o asumidos. (Russell y Norvig,
2004)
Nosotros podremos realizar cualquier inferencia utilizando la lógica de
predicados, ya que esta proporciona un conjunto de reglas muy bien
definidas, para tal fin, que veremos a continuación.

Reglas de inferencia
Las principales reglas de inferencia son:

Modus ponens: es el más importante en los sistemas basados en


conocimiento, y establece que:

o Si tenemos las sentencias p y p => q y estas son verdaderas,


entonces podemos inferir que q también es verdadera.

Modus tolens: esta regla establece que:

o Si la sentencia p => q es verdadera y q es falsa, entonces se


puede inferir que p también es falsa.

Eliminación: esta regla establece que:


o De una conjunción se pueden inferir cualquiera de sus
conjuntares: p ^ q es verdadera, entonces podemos inferir
que p y q son verdaderas.

Resolución: lo que se hace para comprobar una sentencia es emplear


refutación. Es decir que, para demostrar que la sentencia original es
verdadera, se crea una contradicción con la negación de la sentencia
original. Quedando demostrado que la sentencia original es
verdadera, por ejemplo:

A => B

B => C

C => D

Entonces: A => D

Pero para probar esto usaremos la contradicción A => D, es decir:

~(A => B)

Y si recordamos: A => D ≡ ~A  D

Y luego tomamos nuestra negación y la transformamos a su forma


disyuntiva:

~(A => B) ≡ ~(~A  D) ≡ A  ~D

Por lo tanto, la conjunción de las formas disyuntivas de todas las


premisas y la negación de la conclusión (de la forma conjuntiva
normal) nos llevarán a refutar la resolución:

(~A  B)  (~B  C)  (~C  D)  A  ~D


Gráficamente:

A => D es un teorema porque su negación lleva a una contradicción. (Fuente: Ascolano, F.,
Cazorla, M. A., Alfonso, M. I., Colomina, O., Lozano Ponce y Cruz, P., p. 58)

¿Podrías explicar, según tu criterio y leyendo la


bibliografía, qué significa la característica
fundamental de los sistemas lógicos, denominada
monotonismo?
Métodos básicos de
razonamiento
En lógica de predicados existen tres métodos básicos de razonamiento:
deductivo, abductivo e inductivo.

Deducción: Es el razonamiento a partir de un principio conocido


hacia uno desconocido; de lo general, a lo específico. La deducción
realiza inferencias lógicamente correctas; esto significa que la
deducción, a partir de premisas verdaderas, garantiza el resultado de
conclusiones también verdaderas.

La deducción es el método más ampliamente comprendido,


aceptado y reconocido de los tres indicados. Es la base tanto de la
lógica proposicional, como de la lógica de predicados. A manera de
ejemplo, el método deductivo,[sic] se puede expresar, utilizando
lógica de predicados, como sigue:

 A,  B,  C, [mayor (A, B)  mayor (B, C)  mayor (A, C)]

Abducción: Es un método de razonamiento comúnmente utilizado


para generar explicaciones. A diferencia de la inducción, la abducción
no garantiza que se puedan lograr conclusiones verdaderas, por lo
tanto no es un método sólido de inferencia. La forma que tiene la
abducción es la siguiente:

Si la sentencia A => B es verdadera y B es verdadera, entonces A es


posiblemente verdadera.

Por ejemplo:

X es un elefante => X es un animal

En abducción, se empieza por una conclusión y se procede a derivar


las condiciones que podrían hacer a esta conclusión válida. En otras
palabras, se trata de encontrar una explicación para la conclusión.

Inducción: Se define como el razonamiento a partir de hechos


particulares o casos individuales, para llegar a una conclusión
general. El método inductivo es la base de la investigación científica.
La forma más común del método inductivo es la siguiente:

Si se conoce que P(a), P(b),......, P(n) son verdaderos, entonces se


puede concluir que X, P(X) es también verdadero.
La inducción es una forma de inferencia muy importante ya que el
aprendizaje, la adquisición de conocimiento y el descubrimiento
están basados en ella. Al igual que la abducción, la inducción no es
un método sólido de inferencia. (Arteaga y Amijos, “Representación
mediante Lógica de Predicados” http://goo.gl/U4yG5L, p. 3)

¿Podrías representar, según tu criterio y leyendo la


bibliografía, una base de conocimiento sencilla sobre
algún tema en particular que prefieras?

Representación del
conocimiento mediante reglas
La forma de representación del conocimiento mediante reglas es la más
comúnmente utilizada debido a su similitud con el razonamiento humano.

Las reglas representan el conocimiento utilizando un formato


SI-ENTONCES (IF-THEN), es decir [sic] tienen dos partes:

La parte SI (IF), es el antecedente, premisa, condición o situación.

La parte ENTONCES (THEN), es el consecuente, conclusión, acción o


respuesta. (Cabrales, García, Girón, Medina, Rodríguez y Valenzuela,
http://goo.gl/IKqTp7, p. 2)

Las reglas pueden ser utilizadas para expresar un amplio rango de


asociaciones, por ejemplo:

…SI su temperatura corporal es de 39 ºC, ENTONCES tiene fiebre.

SI el drenaje del lavabo está tapado Y la llave de agua está abierta,


ENTONCES se puede inundar el piso. (Cabrales, García, Girón,
Medina, Rodríguez y Valenzuela, http://goo.gl/IKqTp7, p. 3)
Inferencias basadas en reglas
Un sistema basado en reglas utiliza el modus ponens para manipular las
afirmaciones y las reglas durante el proceso de inferencia.

Mediante técnicas de búsqueda y procesos de unificación, los sistemas


basados en reglas automatizan sus métodos de razonamiento y
proporcionan una progresión lógica desde los datos iniciales hasta las
conclusiones deseadas. Esta progresión hace que se vayan conociendo
nuevos hechos o descubriendo nuevas afirmaciones, a medida que va
guiando hacia la solución del problema. (Francisco Ascolano, 2003)

Es decir que el proceso de solución de un problema en los sistemas basados


en reglas va realizando una serie de inferencias que crean un sendero entre
la definición del problema y su solución. Las inferencias están concatenadas
y se las realiza en forma progresiva, por lo que se dice que el proceso de
solución origina una cadena de inferencias.

Entonces podemos deducir que “el proceso de razonamiento en un sistema


basado en reglas es una progresión desde un conjunto inicial de
afirmaciones y reglas hacia una solución, respuesta o conclusión”. (Peraza
Rodríguez, “El proceso de razonamiento”, http://goo.gl/hUufCL, párr. 1)

La forma de llegar a ese resultado puede variar significativamente:

Encadenamiento hacia atrás (backward chainning): en este caso se


puede seleccionar una posible solución y tratar de probar su validez
buscando evidencia que la apoye. A este también se lo suele llamar
proceso guiado por el objetivo.

Encadenamiento hacia adelante (foward chainning): en este caso se


puede partir considerando todos los datos conocidos y luego ir
progresivamente avanzando hacia la solución. A este también se lo
suele llamar proceso guiado por los datos . (Peraza Rodríguez,
“El proceso de razonamiento”, http://goo.gl/hUufCL)

Encadenamiento hacia atrás: partir de una posible solución y buscar


evidencia para probar la validez de la solución.
Encadenamiento hacia adelante: partir teniendo en cuenta todos los datos
conocidos y luego avanzar progresivamente hacia la solución.
Encadenamiento hacia atrás:
En este caso se comienza con una lista ordenada de objetivos, para los cuales
el sistema trata de derivar valores. El proceso de razonamiento hacia atrás
utiliza esta lista de objetivos para coordinar su búsqueda a través de las
reglas de la base de conocimientos. El encadenamiento hacia atrás sigue un
proceso muy similar a la búsqueda primero en profundidad.

El encadenamiento hacia atrás, es útil en los casos en que se posee mayor


número de entradas, que de soluciones posibles. Es una estrategia de
búsqueda de soluciones ordenada, guiada por los objetivos, por lo cual es
inductivo.

¿Podrías describir, según tu criterio y leyendo la


bibliografía, cuáles son los pasos que se deben seguir
para una búsqueda con encadenamiento hacia atrás?

Encadenamiento hacia adelante:


Aquí se parte de unos hechos (conjunto de datos), luego va cotejando
(emparejando) éstos datos con los antecedentes de las reglas y las va
disparando hasta que se satisface algún objetivo o hasta que ninguna regla
sea aplicable. Es una estrategia de búsqueda de soluciones ordenada, guiado
por los datos, por lo que es deductivo.

¿Podrías describir, según tu criterio y leyendo la


bibliografía, cuáles son los pasos que se deben
seguir para una búsqueda con encadenamiento
hacia adelante?
Bibliografías de referencia
Arteaga, R. y Amijos, J. C. (02/09/1998). Tutorial de Programación Heurística.
Recuperado de http://www.monografias.com/trabajos/iartificial/bienvenida.htm

Ascolano, F., Cazorla, M. A., Alfonso, M. I., Colomina, O., Lozano Ponce y Cruz, P.
(2003). Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid:
Paraninfo.

Bromberg, F. (2008). Resolución de problemas mediante Búsqueda (a ciegas).


Universidad Nacional de Cuyo. Recuperado de http://goo.gl/FGbAHz

Cabrales, S., García, D., Girón, I., Medina, L., Rodríguez, E. y Valenzuela, A.
(23/04/2014) Semántica de las reglas de producción. Instituto Tecnológico
Superior de Lerdo. Recuperado de http://es.slideshare.net/Zero2306/semntica-
12645677

RUSSELL, S. J. y NORVIG, P. (2004) Inteligencia artificial. Un enfoque moderno (2ª


ed.) Madrid: Prentice Hall. [Versión electrónica] Recuperado de:
http://iarp.cic.ipn.mx/~hcalvo/Inteligencia_Artificial_files/Inteligencia%20Artificia
l,%20Un%20Enfoque%20Moderno%20-
%20Stuart%20J.%20Russell,%20Peter%20Norvig%20-
%20Prentice%20Hall%20(ocr,%20caps%201-11).pdf

Peraza Rodríguez, F. (22/06/2002). El proceso de razonamiento. En Pérez


Rodríguez, F., Inteligencia artificial. Recuperado de http://goo.gl/hUufCL

García, A. (2012) Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.
Redes
neuronales

Inteligencia
Artificial
Redes neuronales
Las redes neuronales artificiales o el
modelo conexionista

¿Es posible representar o modelar el funcionamiento de nuestro


cerebro artificialmente? ¿Cómo funciona una neurona artificial?
¿Qué aplicaciones tiene este enfoque de la Inteligencia
Artificial?

Introducción
A lo largo de este módulo veremos los métodos estadísticos de aprendizaje
y razonamiento, veremos que estos métodos van desde simples cálculos
hasta modelos más complejos, como lo son las redes neuronales multicapa.

Las redes neuronales toman como modelo a la mente humana, intentando


simular por medio de una computadora el funcionamiento de nuestro
cerebro. Esta idea de construir máquinas inteligentes utilizando neuronas
artificiales viene desde hace un tiempo largo a esta parte. Sin embargo, en
la década del setenta se frenó la investigación en este campo para volver a
resurgir en nuestros días, ya que actualmente se cuenta con computadoras
digitales mucho más potentes y porque se ha intentado y logrado construir
sistemas masivamente paralelos.

Los detractores del modelo de las redes neuronales o modelo conexionista


le quitan importancia a este campo de la IA debido a que piensan, en
general, que el conexionismo se inspira en una forma demasiado “primitiva”
de representación del conocimiento y el razonamiento: la neurona y sus
relaciones.
El modelo de las redes neuronales también es llamado modelo o
arquitectura conexionista.

Fundamentos biológicos
Cada neurona en nuestro cerebro está compuesta por un cuerpo, axones y
dendritas. Las dendritas forman un "cepillo filamentoso" muy fino que rodea
el cuerpo de la neurona.

El axón puede considerarse como un tubo largo y fino que se


subdivide en numerosas ramas que terminan en pequeños
bulbos, los cuales tienen contacto con las dendritas de las
otras células. La pequeña separación entre una terminación y
una dendrita es llamada sinapsis. (http://goo.gl/y4pqoq)

El axón de una neurona puede formar conexiones sinápticas con muchas


otras neuronas.

“Funcionalmente, las dendritas reciben señales desde otras células a través


de los puntos de conexión llamados sinapsis. La fuerza de una conexión dada
es determinada por la eficiencia de la transmisión sináptica” (Vergara
Quiche, http://goo.gl/7y0oPa, p. 1). Desde ahí las señales son pasadas al
cuerpo de la célula. Las señales que llegan de las dendritas pueden ser
excitatorias o inhibitorias, y podemos decir informalmente que si la suma
ponderada de estas, realizada dentro del cuerpo de la neurona, supera su
"umbral de activación" dentro de un tiempo suficiente, la neurona se
disparará, enviando un impulso nervioso a través de su axón.

Partes de una célula nerviosa o neurona (Fuente: Russell y Norvig, 2004, p. 13)
Si tomamos a cada neurona por separado veremos que son
extremadamente lentas comparándolas con sus homologas artificiales, ya
que trabajan en el rango de los milisegundos, lo cual representa una
eternidad para una computadora digital. Sin embargo, los humanos
podemos llevar a cabo tareas extremadamente complejas, como la
interpretación de una escena visual o la comprensión de una frase
incompleta en la décima parte de un segundo. En, otras palabras, que lo que
nosotros somos capaces de realizar en 100 pasos, a una computadora puede
llevarle 10 millones de pasos.

Pero, ¿cómo puede ser esto posible si cada una de nuestras neuronas es tan
lenta? La diferencia está en que nuestro cerebro contiene un número
gigantesco de elementos procesadores que actúan en paralelo.

Nuestro cerebro contiene un número gigantesco de elementos


procesadores que actúan en paralelo, lo que nos permite llevar a cabo
tareas complejas.

Otro aspecto importante es que nuestras neuronas son dispositivos


propensos a fallos, están constantemente muriendo y sus patrones de
activación son irregulares. Por otro lado, los componentes de los
computadores digitales deben funcionar perfectamente. ¿Por qué? Porque
tales componentes guardan bits de información que sólo están disponibles
en este lugar de la computadora, de manera que el fallo de uno de estos
componentes significa automáticamente una pérdida de información.

Redes neuronales
Podemos decir que una red neuronal artificial es, básicamente, la
reproducción mediante computadores del funcionamiento del cerebro
humano. “Su principal aplicación es en torno a las tareas en que los seres
humanos fácilmente superan a los computadores tradicionales, como en
procesamiento de señales, procesamiento de imágenes, procesamiento de
voz, robótica y otros”. (Gamarra Moreno, http://goo.gl/y4pqoq, p. 165)
Nuestro cerebro está formado por miles de millones de neuronas
interconectadas entre sí en forma variable y compleja.

Cada neurona recibe señales de las otras neuronas o señales


provenientes del exterior de la red, luego las procesa y las pondera
(dándole distinta importancia a cada una de ellas) y genera una
única señal de salida que se transmite a las otras neuronas.

La información que procesa una red neuronal se encuentra


dispersa entre todas sus interconexiones, lo que la hace
fundamentalmente diferente a un computador tradicional, en que
la información se encuentra totalmente localizada y no distribuida
como en este caso. Esta característica hace que las redes
neuronales posean una gran tolerancia a fallas. (Gamarra
Moreno, http://goo.gl/y4pqoq, p. 165)

El La información que procesa una red neuronal se encuentra distribuida


entre todas sus interconexiones.

Podemos decir que estos modelos de redes neuronales artificiales (también


llamados arquitecturas conexionistas) se caracterizan por:

 un gran número de elementos muy simples que procesan de modo


similar a las neuronas;

 un gran número de conexiones con “pesos” entre los elementos (los


pesos en las conexiones codifican el conocimiento de una red);

 control distribuido altamente paralelo;

 énfasis en el aprendizaje automático.

A su vez, cada uno de los elementos simples que componen una red
neuronal está formado por:

 una conexión de la unidad j a la unidad i que sirve para propagar la


activación aji de j a i;

 cada conexión tiene un peso numérico wji asociado, que determina


la fuerza y el signo de la conexión;

 cada unidad i primero calcula una suma ponderada de sus entradas:


ini =  wji aj (con j=0 hasta n);

 luego se aplica una función de activación g a la suma para lograr la


salida: ai = g(ini) = g( wji aj) (con j=0 hasta n);

 la función de activación habilita (cerca de +1) la unidad cuando se


dan las entradas adecuadas y desactiva (cerca a 0) la unidad cuando
se dan entradas erróneas.

Modelo matemático sencillo para la neurona. (Fuente: Russell y Norvig, 2004, p. 839)

Como funciones g de activación validas podemos tener a la función umbral,


o escalón, y a la función sigmoide:

 Función umbral:

Salida ai = 1 si g(ini) > 0

Salida ai = 0 si g(ini) < 0

 Función sigmoide: f(x) = 1/(1+ e-x)

La función sigmoide también es llamada función logística.


Función umbral (a) y función sigmoide (b). (Fuente: Russell y Norvig, 2004, p. 840)

Las operaciones individuales de cada una de estas unidades se parecen a


las compuertas lógicas AND, OR y NOT, siempre y cuando se utilicen
funciones de umbral y pesos adecuados. Esto es muy importante ya que
significa que podremos construir redes usando estas unidades para calcular
cualquier función booleana que se presente en sus entradas, por más
compleja que sea.

Las unidades neuronales con los pesos adecuados pueden representar las funciones
booleanas AND, OR y NOT. (Fuente: Russell y Norvig, 2004, p. 840)
¿Te atreverías a verificar, utilizando una función
sigmoide, si se cumple la representación de las
funciones booleanas “AND, OR y NOT” utilizando
estas unidades básicas neuronales?

Estructuras
Brevemente, diremos que existen dos estructuras principales de redes
neuronales:

 Acíclicas, o redes con propagación hacia adelante: en este tipo de


redes su representación está dada en función de sus entradas
actuales.

 Cíclicas, o redes recurrentes, o con propagación hacia atrás: son


aquellas cuyas salidas alimentan a sus entradas. Por lo tanto, las
redes recurrentes (a diferencia de las redes con propagación hacia
delante) pueden tener memoria a corto plazo.

Red neuronal de una sola capa con propagación


hacia adelante, o Perceptrón
El perceptrón fue inventado por Resenblatt en 1962 y fue uno de los
primeros modelos de redes neuronales.

Un perceptrón imita a una neurona tomando la suma ponderada de sus


entradas y enviando a la salida un 1 si la suma es más grande que algún valor
umbral ajustable; si ocurre de otro modo, devuelve 0.

En un perceptrón las conexiones son unidireccionales.

Las entradas (x1, x2, x3,…, xn) y los pesos de las conexiones (w1, w2, w3,…, wn)
son valores normalmente reales que pueden ser negativos o positivos. Si la
presencia de alguna entrada xi tiende a causar la activación del perceptrón,
el peso wi será positivo, y si la entrada xi inhibe al perceptrón, entonces el
peso wi será negativo.

El perceptrón está compuesto por los pesos, el procesador de sumas y el


procesador del umbral ajustable. El aprendizaje es un proceso en donde se
van variando los valores de los pesos y del umbral, también llamado peso
w0. Puede verse a w0 como la propensión a que se dispare el perceptrón,
independientemente de sus entradas.

Representación genérica de un perceptrón. (Fuente: Wikipedia, http://goo.gl/730sut,


2014)

Podemos decir que un perceptrón calcula una función binaria de su entrada.


Por tanto, algunos perceptrones se podrán combinar para calcular funciones
más complejas. Lo más interesante es que cualquiera que sea el cálculo que
se tenga que realizar con un perceptrón, este puede aprender a calcularlo.

Lo más interesante es que cualquiera que sea el cálculo que se tenga que
realizar con un perceptrón, este puede aprender a calcularlo.

Llegado a este punto, se debe aclarar que por lo general los perceptrones
solo pueden representar funciones linealmente separables. Esto se debe a
la forma de calcular que tiene intrínsecamente un perceptrón y porque,
además, este se comporta como un “separador lineal”. Si vemos
detalladamente el modo de cálculo de un perceptrón, entenderemos más
este concepto. Si tenemos un vector de entrada x (x1, x2, x3,…, xn), podemos
advertir (como vimos anteriormente con las unidades neuronales básicas)
que la función de la suma ponderada g(x) y la función de salidas o(x) se
definen como:
 g(x) =  wi . xi (para i=0 hasta n)

 o(x) = 1 si g(x) > 0

 o(x) = 0 si g(x) < 0

Si consideramos el caso en el que solo tenemos dos entradas, entonces:

 g(x) = w0 + w1.x1 + w2.x2

Si g(x) = 0, el perceptrón no puede decidir si debe dispararse. Un pequeño


cambio en las entradas puede producir que el dispositivo se decida por uno
de los dos caminos. Además, si g(x) = 0 se obtiene la ecuación de la recta:

 x2 = -((w1/w2).x1) – (w0/w2)

Como puede verse, la ecuación de esta recta está determinada por los pesos
w0, w1 y w2. Por lo tanto, si un vector de entrada se sitúa hacia uno de los
dos lados de la recta, el perceptrón da como salida 1, y si se sitúa al otro lado
el perceptrón, da como salida 0; es decir que tendremos una recta que
separa dos casos de entrenamiento correctamente. Dicha recta suele
denominarse superficie de decisión. Para perceptrones con muchas
entradas, la superficie de decisión es un hiperplano en el espacio
multidimensional de los posibles vectores de entrada.

Separación lineal del perceptrón para el caso de las funciones booleanas AND y OR
(gráficos a y b respectivamente) y el problema de intentar representar una función no
lineal, como lo es la función XOR (gráfico c). (Fuente: Russell y Norvig, 2004, p. 843)
Dos cuestiones muy importantes a tener en cuenta son que:

 el signo de g(x) es el que determina si el perceptrón se dispara o no;

 el valor absoluto de g(x) indica hasta qué punto un vector de


entrada cualquiera se aleja de la superficie de decisión.

Según tu criterio y leyendo la bibliografía, ¿por qué


crees que un perceptrón no puede representar
funciones un poco más complejas, como en el caso
de la XOR?

Viendo todo lo anterior, podemos deducir que el problema de aprendizaje


para el perceptrón consiste en localizar una superficie de decisión adecuada.
Como regla informal podremos definir que:

 si el perceptrón se dispara cuando no es debido, hay que hacer cada


wi más pequeño en una cantidad proporcional a xi; y si el
perceptrón no se dispara cuando es debido, entonces hay que hacer
cada wi más grande, teniendo en cuenta la misma proporción.

Algoritmo de aprendizaje del perceptrón de


incremento fijo
Para un problema de clasificación con n características de entrada (x1, x2,
x3,…, xn) y dos clases de salida: calcularemos un conjunto de pesos (w1, w2,
w3,…, wn) que harán que el perceptrón se dispare en el momento en el que
la entrada caiga dentro de la primera clase de las salidas, es decir:

1. Crear un perceptrón con n+1 entradas y n+1 pesos, donde una


entrada x0 siempre tiene asignada un valor de 1.

2. Inicializar los pesos (w1, w2, w3,…, wn) con valores reales aleatorios.

3. Iterar a través del conjunto de entrenamiento, recogiendo todos los


ejemplos sin clasificar que se obtienen con el conjunto de pesos que
se tiene.

4. Si todos los ejemplos se clasificaron correctamente, la salida son los


pesos y se termina.
a. Si no, calcular el vector suma S de los vectores sin clasificar,
donde cada vector es de la forma (x1, x2, x3,…, xn). Al calcular
la suma, añadir a S el vector x, si x es una entrada para la que
el perceptrón falla al no dispararse como debería, y añade –
x, si x es una entrada para la que el perceptrón se dispara
incorrectamente. Multiplicar la suma por un factor escalar .

5. Modificar los pesos (w1, w2, w3,…, wn), añadiendo los elementos del
vector S a éstos. Volver al paso 3.

Como puede verse, el algoritmo de aprendizaje del perceptrón es un


algoritmo de búsqueda. Comienza en un estado inicial aleatorio y acaba
encontrando un estado solución. El espacio de la búsqueda consiste en todas
las posibles asignaciones de valores reales a los pesos del perceptrón, y la
estrategia de búsqueda es un descenso por el gradiente.

Redes neuronales multicapa


La idea es tomar un conjunto de unidades neuronales elementales
(perceptrones), vincularlas de alguna forma y luego entrenarlas para que
pueden aprender a realizar tareas útiles de verdad. Además, otro objetivo
fundamental es que se las debe entrenar para que sean rápidas y resistentes
a los daños y para que sean capaces de generalizar a partir de las entradas
que ven.

Podríamos decir que una red multicapa es capaz de calcular cualquier cosa.
Dado un conjunto de entradas, se pueden utilizar unidades de suma y
umbral simples como compuertas “AND, OR y NOT”, seleccionando
apropiadamente el umbral y los pesos de conexión. Con esto se pretende
decir que es posible construir un circuito combinacional cualquiera
constituido por dichas unidades lógicas básicas.

El problema principal es el aprendizaje en este tipo de redes. Para ello, la


propagación hacia atrás (backpropagation) nos ayuda a resolver el
inconveniente.

Es común que en este tipo de redes contemos con unidades de activación


de las unidades de entrada, ocultas y de salida, denotadas por xi, hi y oi,
respectivamente. Suponiendo que se tiene una red de tres capas, entonces
los pesos de las conexiones entre las capas de entrada y ocultas se denotan
como w1ij, mientras que los pesos de las conexiones entre las capas de salida
y ocultas se denotan con w2ij.
Cada unidad de una capa (neurona) se conecta hacia adelante
a todas las unidades de la siguiente capa. Las activaciones
saltan desde la capa de entrada hacia la capa oculta y desde
ésta hacia la capa de salida. Normalmente el conocimiento de
la red esta codificado en los pesos de las conexiones entre las
unidades. (Gómez Blas y Guzmán Montoya,
http://goo.gl/M9mMMC, p. 9)

La existencia de capas ocultas permite que estas redes puedan desarrollar


complejos detectores de características o de representaciones internas. Es
decir que se espera que al abordar problemas complejos, como el
reconocimiento de caracteres escritos a mano, la red neuronal no solo
aprenda a clasificar las entradas para las que esta entrenada, sino que
generalice y sea capaz de explicar las entradas que todavía no haya visto.

Representación genérica de una red multicapa (Fuente: Wikipedia, http://goo.gl/ifjCjy)

Al igual que el perceptrón una red de propagación hacia atrás


normalmente empieza con un conjunto de pesos aleatorio. La
red [luego] ajusta sus pesos cada vez que ve un par
entrada/salida. Cada par requiere dos etapas: Un paso hacia
adelante y un paso hacia atrás. El paso hacia adelante implica
la presentación de un ejemplo de entrada hacia la red y
permite que las activaciones continúen hasta que alcancen la
capa de salida. Mientras que durante el paso hacia atrás, la
salida que se tiene de la red en ese momento se compara con
la salida objetivo y se calcula el error estimado de las
unidades de salida. Entonces los pesos que están conectados
a las unidades de salida, se pueden ajustar para reducir
dichos errores. Luego podemos utilizar las estimaciones del
error de las unidades de salidas para derivar el error estimado
de las unidades de las capas ocultas. Por último, los errores
se propagan hacia atrás a las conexiones procedentes de las
unidades de entrada.

Al contrario que el algoritmo de aprendizaje del


perceptrón, el algoritmo de propagación hacia atrás calcula
sus pesos de un modo progresivo, después de observar cada
par de entrada/salida [y su entrenamiento consta de varias
etapas]. (Gómez Blas y Guzmán Montoya,
http://goo.gl/M9mMMC, p. 10)

Se recomienda leer el capítulo 20 completo, haciendo hincapié en el


apartado de redes neuronales, del libro Inteligencia artificial. Un enfoque
moderno, de Russell y Norvig (2004).

Aplicaciones
Las redes neuronales artificiales son un tema apasionante y tienen un
ámbito muy grande de aplicación, desde los juegos de computadora hasta la
medicina. A continuación, se detallaran brevemente algunos de estos casos.

Redes neuronales para especificar marcadores


anatómicos de los ventrículos del corazón:
La ventriculografía es una técnica utilizada en medicina para visualizar las
cavidades cardíacas. Para simplificar, podemos decir que su objetivo
principal es definir el tamaño y la forma del ventrículo izquierdo, así como
también visualizar la forma y la movilidad de estructuras asociadas con las
válvulas del corazón.

Poder determinar la forma ventricular ha sido uno de los principales


problemas a la hora de aplicar técnicas de procesamiento digital de
imágenes a gráficos del corazón humano. Por lo tanto, se ha propuesto el
uso de las redes neurales para identificar los marcadores anatómicos
necesarios para establecer una representación de un contorno inicial sobre
imágenes angiográficas del ventrículo izquierdo.

Se eligieron las redes neuronales para llevar este trabajo debido a que estas
son muy buenas para representar funciones o reconocer patrones. Además,
la ventaja de la segunda configuración es que el tiempo de entrenamiento
se reduce considerablemente en relación con otros algoritmos y, a su vez, se
garantiza una buena velocidad de convergencia.

Proceso seguido para el desarrollo de la red neuronal para este caso. (Fuente: Ponce Cruz, 2010, p. 26).
Imagen del corazón que remarca los marcadores anatómicos (Fuente: Ponce Cruz,
2010, p. 27)

Segmentación de imágenes cerebrales de


resonancia magnética basada en redes neuronales:
Se ha desarrollado un método de segmentación de imágenes de resonancia
magnética cerebrales basándose en la utilización de redes neurales
conjuntamente con algoritmos genéticos. Este método permite detectar y
cuantificar los diferentes tejidos cerebrales de una manera automática, más
sensible, y con ello dar un primer paso hacia el diagnóstico temprano de la
atrofia cerebral, como el Alzheimer y la demencia senil.
(a)Imagen original de una resonancia magnética. (b) Imágenes utilizadas como referencia y
obtenidas de un software específico. (c) Imágenes clasificadas con la red neuronal
(Fuente: Ponce Cruz, 2010, p. 28).
Bibliografías de referencia
Ascolano, F., Cazorla, M. A., Alfonso, M. I., Otto, C. y Lozano, M.A. (2003).
Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid: Paraninfo.

Gamarra Moreno, Abraham (s. f.). Aprendizaje con redes neuronales artificiales.
Recuperado de http://goo.gl/y4pqoq

García, A. (2012). Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Gómez Blas, M. M. y Guzmán Montoya, E. (21/01/1997). Implementación del


algoritmo de retropropagación para el entrenamiento de redes neuronales
(Proyecto de investigación II). Recuperado de http://goo.gl/M9mMMC

Ponce Cruz, P. (2010). Inteligencia Artificial Con Aplicaciones a la Ingeniería.


Méjico: Alfaomega.

Russell, S. J. y Norvig, P. (2004). Inteligencia artificial. Un enfoque moderno (2ª ed.).


Madrid: Prentice Hall

Vergara Quiche, R. I. (s. f.). Redes Neuronales Artificiales – RNA. Universidad


Nacional José Faustino Sánchez Carrión. Recuperado de http://goo.gl/7y0oPa

Artículo: Perceptrón Multicapa (10/06/2014). En Wikipedia, la enciclopedia libre.


Recuperado el 25 de Julio de 2014 a las 17:00 de http://goo.gl/ifjCjy
Ontología,
categorías
y medidas

Inteligencia
Artificial
Ontología, categorías y medidas

¿Cómo se logra una representación


más general del conocimiento? ¿Qué
es una “ontología”?

Los problemas del mundo real necesitan de una representación


formal que nos ayude a conformar bases de conocimiento
adecuadas para que nuestros agentes puedan resolverlos.

Introducción
En el apartado anterior vimos cómo un agente es capaz de aprender y
entrenar su conocimiento y, si nos remitimos a capítulos anteriores,
recordarás que hemos visto brevemente también que el conocimiento
puede ser representado por medio de la lógica proposicional o de la lógica
de predicados. A continuación, y a lo largo de este capítulo, estudiaremos
otra rama de la IA muy apasionante y que tiene mucho que ver con la
representación del conocimiento de los problemas del mundo real,
denominada Ingeniería Ontológica. Esta rama de la IA es muy importante ya
que en muchas interacciones o búsquedas nuestras, como usuarios de
Internet, seguramente hay por detrás una representación ontológica.
Ingeniería Ontológica
En el dominio de un problema de juguete vimos que la representación del
conocimiento era bastante simple y limitada, pero cuando nos enfrentamos
a un problema del mundo real (como puede ser una compra en Internet o el
desplazamiento de un robot en un entorno cambiante) se requieren
representaciones más generales y flexibles. La definición y representación
de estos conocimientos es lo que se denomina Ingeniería Ontológica.

Más adelante se definirá lo que significa un objeto físico y sus detalles; por
ahora podemos decir que el marco de trabajo que permite especificar estos
conceptos se denomina ontología superior debido a la convención general
de representar en los grafos los conceptos generales en la parte superior y
los conceptos más específicos debajo de ellos. (Russell y Norvig, 2004)

Representación de la ontología superior del mundo, donde cada arco indica que el concepto inferior es una
especialización del concepto superior. (Fuente: Russell y Norvig, 2004, p. 364)

Pero, ¿cuál será el nivel de abstracción adecuado para definir una ontología?
¿Conviene definir una ontología muy general, que sea capaz de abarcar la
totalidad de los problemas a los que un agente inteligente pueda
enfrentarse?, ¿o conviene especificar una ontología más específica, para
luego generalizarla? Además, ¿todas las ontologías terminarán
convergiendo en una ontología de propósito general? Las respuestas a todas
estas preguntas las iremos tratando de responder a lo largo de este
apartado; por lo pronto, podremos decir que una ontología de propósito
general se distingue de una de propósito específico por dos características:

 Una ontología de propósito general debe poder aplicarse a


cualquier dominio específico (con la inclusión de axiomas
específicos del dominio).

 En dominios dispares, las diferentes áreas de conocimiento deben


ser unificadas, puesto que el razonamiento y la resolución de
problemas podría involucrar varias a áreas simultáneamente.

Categoría y Objetos
Una parte central de la representación del conocimiento es la de organizar
a los conjuntos de objetos en categorías, ya que la mayoría de las veces
nuestro proceso de razonamiento tiene lugar a nivel de categorías. Por
ejemplo, una persona puede tener la intención de comprar de forma
genérica una pelota de baloncesto en lugar de querer comprar una pelota
específica de baloncesto.

Las categorías son útiles también para realizar predicciones sobre los
objetos, una vez que estos están clasificados. Por ejemplo, a partir de las
características: gris, mamífero, con trompa, se puede inferir que un objeto
es un elefante; a partir de esto, uno puede inferir que este puede tener
mucha memoria ya que es una característica comúnmente difundida y
conocida de este tipo de animales.

Podemos decir que una categoría es un conjunto que agrupa a sus


miembros, o también podemos pensar que una categoría es un tipo de
objeto más complejo en el que las relaciones de “miembro” y “subconjunto”
definidas para él tienen sentido.

Por medio de la herencia, podemos decir que las categorías sirven para
organizar y simplificar el conocimiento base. Por ejemplo, si se dice que
todos los objetos que pertenecen a la categoría “alimentos” son comestibles
y se afirma que “fruta” es una subclase de alimentos, y que “manzanas” en
una subclase de fruta, entonces cualquier manzana es comestible. Por todo
esto, podemos decir que las manzanas individuales heredan la propiedad
comestible, en este caso por su función de pertenencia a la categoría
alimentos. Las relaciones de subclasificación organizan categorías en
taxonomía, o relaciones taxonómicas.

Una cuestión importante es que la lógica de primer orden permite


representar fácilmente afirmaciones sobre las categorías, ya sea
relacionando objetos con categorías o cuantificando sus miembros.
Veremos algunos ejemplos simples a continuación:

 Un objeto es un miembro de una categoría. Por ejemplo:

Trompita  Elefantes

 Una categoría es subclase de otra categoría. Por ejemplo:

Elefantes  Mamíferos

 Todos los miembros de una categoría tienen algunas propiedades.


Por ejemplo:

X  Elefantes => Tiene_trompa(X)

 Miembros de una categoría se pueden reorganizar por algunas


propiedades. Por ejemplo:

Es_gris(x)  Tiene_trompa(x)  Cantidad_patas(x) = 4  x 


Mamíferos => X  Elefantes

 Una categoría, como conjunto, tiene algunas propiedades. Por


ejemplo:

Perros  EspeciesDomesticadas

Diremos que dos o más categorías son disjuntas si no tienen miembros en


común. Por ejemplo:

 Disjunto({Animales, Vegetales})

Incluso si se conoce que machos y hembras son disjuntos, no podemos


afirmar que un animal que no es un macho tiene que ser una hembra, a
menos que se explicite que machos y hembras constituyen una
descomposición exhaustiva de los animales:

 Descomposición Exhaustiva({Americanos, Canadienses,


Mejicanos},Norteamericanos)

Una descomposición exhaustiva disjunta se conoce como una partición:

 Partición({Machos, Hembras}, Animales)


Formalizaremos las definiciones de los predicaos de la siguiente forma:

Disjunto(s)  ( c1, c2: c1  s  c2  s  c1  c2 => Intersección(c1, c2) = { })

Descomposición Exhaustiva(s, c) o ( i: i  c   c2: c2  s  i  c2)

Partición(s, c)  Disjunto(s)  DescomposiciónExhaustiva(s, c)

Objetos compuestos
Con esto nos referimos a que un objeto puede ser parte de otro. Esta es una
idea simple, familiar y que muy a menudo empleamos. Por ejemplo: un
capítulo es parte de un libro, la oreja es parte de la cabeza, etcétera. Por lo
general, se utiliza la relación ParteDe para indicar que algo forma parte de
otra cosa, por ejemplo:

 ParteDe(Córdoba, Argentina)

 ParteDe(Argentina, Sudamérica)

 ParteDe(Sudamérica, América)

 ParteDe(América, Tierra)

 Por lo tanto: ParteDe(Córdoba, Tierra)

La relación ParteDe es transitiva y reflexiva, es decir:

 ParteDe(x, y)  ParteDe(y, z) => ParteDe(x, z)

 ParteDe(x, x)

Las categorías de objetos compuestos se caracterizan a menudo por


relaciones estructurales entre las partes.
Medidas
Los objetos siempre poseen peso, masa, costo, etc. Los valores que se
asignan a estas propiedades se denominan medidas.

El aspecto más relevante de las medidas no se encuentra en los valores


numéricos específicos en sí, sino en el hecho de que las medidas permiten
una ordenación. Aunque las medias no estén representadas por números,
las podemos comparar entre sí mediante signos de ordenación como > o <.

El aspecto más relevante de las medidas no se encuentra en los valores


numéricos específicos en sí, sino en el hecho de que las medidas permiten
una ordenación.
Bibliografías de referencia
Ascolano, F., Cazorla, M. A., Alfonso, M. I., Otto, C. y Lozano, M.A. (2003).
Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid: Paraninfo.

Gamarra Moreno, Abraham (s. f.). Aprendizaje con redes neuronales artificiales.
Recuperado de http://goo.gl/y4pqoq

García, A. (2012). Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Gómez Blas, M. M. y Guzmán Montoya, E. (21/01/1997). Implementación del


algoritmo de retropropagación para el entrenamiento de redes neuronales
(Proyecto de investigación II). Recuperado de http://goo.gl/M9mMMC

Ponce Cruz, P. (2010). Inteligencia Artificial Con Aplicaciones a la Ingeniería.


Méjico: Alfaomega.

Russell, S. J. y Norvig, P. (2004). Inteligencia artificial. Un enfoque moderno (2ª ed.).


Madrid: Prentice Hall

Vergara Quiche, R. I. (s. f.). Redes Neuronales Artificiales – RNA. Universidad


Nacional José Faustino Sánchez Carrión. Recuperado de http://goo.gl/7y0oPa

Artículo: Perceptrón Multicapa (10/06/2014). En Wikipedia, la enciclopedia libre.


Recuperado el 25 de Julio de 2014 a las 17:00 de http://goo.gl/ifjCjy
Sustancias,
eventos y
procesos

Inteligencia
Artificial
Sustancias, eventos y procesos

Podemos decir que una sustancia son todos aquellos objetos a los que
resulta imposible separar o descomponer en otros objetos. Así, por ejemplo,
si tenemos un trozo de manteca y lo partimos en dos trozos, entonces
tendremos dos trozos de manteca, pero sin lugar a dudas podremos decir
que seguimos teniendo manteca por más pedazos que hagamos de la
misma. Esto no ocurre así con, por ejemplo, un perro ya que si lo partimos
por la mitad no podemos asegurar que tendremos dos perros.

Estos es lo que en la lingüística se conoce como los conceptos de sustantivos


contables y sustantivos no contables. Los sustantivos contables serán
entonces cosas, como por ejemplo: perros, teoremas, etcétera; y los no
contables, cosas como por ejemplo: manteca, agua, energía, etc. Es decir,
todas aquellas cosas que necesitan de una unidad de medida para poder
identificar sus cantidades. Por lo tanto, podemos decir que hay propiedades
que son intrínsecas, ya que pertenecen a la misma sustancia del objeto y,
cuando se divide algo en dos, ambas partes conservan el mismo conjunto de
propiedades intrínsecas (por ej.: la densidad, el punto de ebullición, el sabor,
el color, la propiedad, etc.). Por el contrario, las propiedades extrínsecas
son, por ejemplo: peso, longitud, forma, etcétera, que no se conservan
después de dividir algo.

Más formalmente, definiremos una sustancia o un sustantivo no contable


como toda aquella clase de objetos que en su definición incorpora solo
propiedades intrínsecas. En el caso contrario, una clase que incorpora
cualquier propiedad extrínseca en su definición es un sustantivo contable.
La categoría sustancia es la categoría más genérica de todas las sustancias,
y para esta no se especifica ninguna propiedad intrínseca. La categoría
objeto es la categoría de objetos discretos más general, en la que no se
especifica ninguna propiedad extrínseca.

Estas son distinciones importantes si se pretende construir una buena


ontología.

La ontología del cálculo de situaciones


La lógica proposicional tiene la desventaja de tener que mantener
diferentes copias de la descripción de cada acción para cada intervalo de
tiempo en la cual la acción se podría llevar a cabo. Una forma de evitar esta
desventaja es por medio del cálculo de situaciones.

El cálculo de situaciones utiliza las siguientes ontologías:

 Las acciones son términos lógicos como HaciaDelante y


Girar(derecha).

 Las situaciones que son términos lógicos que constan de una


situación inicial (S0), y todas las situaciones que son generadas
debido a la aplicación de una acción a una situación. La función
resultado(a, s) (también llamada Do), que hace referencia a la
situación resultante de ejecutar una acción a sobre una situación s.

 Los flujos son funciones y predicados que varían de una situación a


la siguiente, como por ejemplo: la posición de un agente. Por
convención, la situación es siempre el último argumento de un
flujo. Por ejemplo, sostener(G1, S0) indica que el agente no está
sosteniendo el lingote de oro G1 en la situación inicial S0.

 Las funciones o predicados atemporales (eternos) también son


válidos.

Las secuencias de acciones tienen ciertos aspectos que debemos tener en


cuenta:

 Ejecutar una secuencia vacía deja la situación inalterada:

Resultado([], s) = s

 Ejecutar una secuencia no vacía es lo mismo que ejecutar la primera


acción, y luego ejecutar el resto sobre la situación resultante: (¿qué
es lo que abre este paréntesis? Si es el párrafo posterior, jerarquizar
el siguiente ítem aumentando la sangría izquierda, o borrar viñeta.

 Un agente de cálculo de situaciones debe ser capaz de llevar a cabo


la tarea de proyección, es decir que dicho agente debería ser capaz
de deducir el resultado de una secuencia dada de acciones.

 También un agente debe ser capaz de llevar a cabo la tarea de


planificación, es decir que, con un algoritmo adecuado de inferencia
constructiva, debería ser capaz de encontrar una secuencia que
logre el efecto deseado.

En el cálculo de situaciones, cada situación (excepto S 0) es el resultado de una


acción. (Fuente: Russell y Norvig, 2004, p. 374).

Descripción de acciones en el cálculo de situaciones


Describiremos cada acción a través de dos axiomas: un axioma de
posibilidad, que especifica cuándo es posible ejecutar una acción, y un
axioma de efecto, que determina qué sucede cuando se ejecuta una acción
posible:

 Axioma de Posibilidad: Precondiciones => Posible(a, s).


 Axioma de Efecto: Posible(a, s) => Cambios que son el resultado de
ejecutar una acción.

Uno de los problemas que se presentan es que el axioma de efecto nos dice
qué es lo que cambiará, pero no lo que permanecerá igual. Aquí aparece lo
que se conoce como problema del marco, es decir, lograr representar todas
las cosas que permanecen inalterables.

Esta es una cuestión fundamental, ya que debe encontrarse una solución


eficiente al problema del marco debido a que en el mundo real casi todo
permanece inalterable todo el tiempo. Cada acción afecta sólo a una
pequeña fracción de todo lo que fluye.

Según tu criterio y leyendo la bibliografía, ¿cómo


sería posible resolver el problema de representación
e inferencia del marco?

El tiempo y el cálculo de eventos


Si tenemos un agente simple que realiza acciones instantáneas y discretas,
entonces podemos decir que el cálculo de situaciones funciona bien; pero
cuando las acciones tienen una duración tal que pueden solaparse unas con
otras, entonces el cálculo de situaciones se vuelve muy complicado.

Para ello existe un formalismo alternativo conocido como el cálculo de


eventos que se basa en puntos en el tiempo en vez de en situaciones.

Para nuestros fines, los términos evento y acción son intercambiables, y


también podemos decir que un evento se corresponde con un conjunto
amplio de acciones.
Para el caso del cálculo de eventos, los flujos tienen lugar en puntos en el
tiempo en vez de en situaciones.

El axioma de cálculo de eventos dice que un flujo es cierto en un punto


determinado en el tiempo, siempre y cuando el flujo haya sido iniciado por
un evento en un instante de tiempo anterior y no haya sido finalizado por la
intervención de algún otro evento.

Con respecto a las relaciones inicio y terminación, podemos decir que


juegan un papel similar al de la relación resultado en el cálculo de
situaciones:

 Inicio(e, f, t) significa que la ocurrencia del evento e en el tiempo t


causa que el flujo sea cierto.

 Terminación(w, f, t) significa que f deja de ser cierto.

 Sucede(e, t) para reflejar que el evento e sucede en el tiempo t.

 Interrumpido(f, t, t2) expresa que f ha sido finalizado por algún


evento en algún instante entre t y t2.

Formalización del axioma del cálculo de eventos (Fuente: Russell y Norvig, 2004, p. 380)

Podemos ejemplificar el axioma como sigue:

 Sucede(Apagar(llave1), 8:00), con lo que estaremos diciendo que la


llave1 será apagada a las 8:00 hs.
Eventos generalizados
Veremos ahora cómo encajan las acciones y los objetos en una ontología
global, en la cual las acciones y los objetos pueden ser considerados como
aspectos de un universo físico. Éste sabemos que tiene tres dimensiones en
el espacio y una dimensión en el tiempo, todas continuas. Por lo tanto,
diremos que un evento generalizado se compone de aspectos de alguna
pieza espacio-temporal y generaliza casi todos los conceptos sobre acciones,
localizaciones, tiempo, flujos y objetos físicos.

Por ejemplo, la Segunda Guerra Mundial es un evento que tuvo lugar en


varios puntos en el espacio-tiempo:

 SubEvento(BatallaDiaD, SegundaGuerraMundial)

 De la misma forma, la Segunda Guerra es un sub-evento del siglo


XX: SubEvento(SegundaGuerraMundial, SigloXX)

Cabe aclarar que SubEvento es un caso especial de la relación ParteDe,


siendo también transitivo y reflexivo.

Si sabemos que el siglo XX es un intervalo en el tiempo, y que estos son


trozos de espacio-tiempo que incluyen todo el espacio entre dos puntos de
tiempo, entonces:

 Período(e) denota el intervalo más pequeño que encierra al evento e.

 Duración(i) es la longitud del tiempo que ocupa un intervalo.

Por lo tanto, podríamos representar la siguiente verdad:

 Duración(Período(SegundaGuerraMundial)) > Año(5).

De la misma forma, podemos utilizar el predicado En para expresar la


relación de subevento que tiene lugar cuando la proyección espacial de un
evento es ParteDe otro:

 En(Sydney, Australia)

 La función localización(e) denota el lugar más pequeño que


encierra al evento e.

Así, podríamos expresar lo siguiente, sabiendo que los eventos (como


cualquier objeto) pueden ser agrupados en categorías:

 w : w  GuerrasCiviles  SubEvento(w, 1640)  En(Localización(w),


Inglaterra)
Con la expresión anterior estaremos representando conocimiento de algo
sabido por nosotros: que la Guerra civil inglesa ocurrió en 1640 y que, por
supuesto, tuvo su ubicación en Inglaterra.

Eventos generalizados. Un universo tiene dimensiones espaciales y temporales. (Fuente:


Russell y Norvig, 2004, p. 382).

También podremos describir acciones de otros agentes, añadiendo un


argumento que represente al agente:

  e : e  Volar(Roberto, BuenosAires, SaoPablo)  SubEvento(e,


Ayer)

Con lo cual estaremos diciendo que Roberto voló ayer de Buenos Aires a Sao
Pablo.

Podremos abreviar la formula anterior con E(c, i):

 E(c, i)   e : e  c  SubEvento(e, i)

 Entonces, lo expresaremos de forma abreviada como sigue:

E(Volar(Roberto, BuenosAires, SaoPablo), Ayer)


Procesos
En este caso estamos hablando de aquellos eventos que no son discretos, es
decir, que no tienen un comienzo, un punto intermedio y ni un final.

Por ejemplo, si consideramos un evento como: Volando(Roberto), y si


tomamos cualquier intervalo de tiempo durante este suceso, veremos que
ese pequeño hecho sigue formando parte del evento mayor;
Volando(Roberto), y esto es cierto para cualquier sub-intervalo.

Entonces, diremos que las categorías de eventos que cumplen esta


propiedad se llaman categorías de procesos o categorías de eventos
líquidos.

Podemos escribir, por ejemplo, que Roberto iba volando en algún momento
del día de ayer:

 E(Volando(Roberto), Ayer)

Si se necesita expresar que algún proceso se realizó durante cierto intervalo,


se usa el predicado T:

 T(Trabajando(Juan), HoyHoraDelAlmuerzo)

Más genéricamente, lo podemos escribir como T(c, i), lo cual significa que
cierto evento de tipo c se produjo exactamente durante el intervalo i.

Además, los eventos líquidos pueden describir procesos de cambio no


continuo, o más comúnmente llamados estados. Por ejemplo, para decir que
Juan estuvo en Buenos Aires todo el día escribiríamos:

 T(En(Juan, BuenosAires), Hoy)

Se te recomienda leer el capítulo 10 completo, haciendo hincapié en el


apartado de El mundo de la compra por Internet, del libro Inteligencia
artificial. Un enfoque moderno de Russell y Norvig.
Bibliografías de referencia
Ascolano, F., Cazorla, M. A., Alfonso, M. I., Otto, C. y Lozano, M.A. (2003).
Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid: Paraninfo.

Gamarra Moreno, Abraham (s. f.). Aprendizaje con redes neuronales artificiales.
Recuperado de http://goo.gl/y4pqoq

García, A. (2012). Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Gómez Blas, M. M. y Guzmán Montoya, E. (21/01/1997). Implementación del


algoritmo de retropropagación para el entrenamiento de redes neuronales
(Proyecto de investigación II). Recuperado de http://goo.gl/M9mMMC

Ponce Cruz, P. (2010). Inteligencia Artificial Con Aplicaciones a la Ingeniería.


Méjico: Alfaomega.

Russell, S. J. y Norvig, P. (2004). Inteligencia artificial. Un enfoque moderno (2ª ed.).


Madrid: Prentice Hall

Vergara Quiche, R. I. (s. f.). Redes Neuronales Artificiales – RNA. Universidad


Nacional José Faustino Sánchez Carrión. Recuperado de http://goo.gl/7y0oPa

Artículo: Perceptrón Multicapa (10/06/2014). En Wikipedia, la enciclopedia libre.


Recuperado el 25 de Julio de 2014 a las 17:00 de http://goo.gl/ifjCjy
Razonamiento

Inteligencia
Artificial
Razonamiento
Sistemas de razonamiento para
categorías

Contamos con dos familias de sistemas que proporcionan ayuda


gráfica para visualizar una base de conocimiento, y un lenguaje
formal para construir y combinar definiciones de categorías.

Introducción
Vimos a las categorías como bloques de construcción primarios para
esquemas de representación del conocimiento a gran escala. Existen dos
familias de sistemas íntimamente relacionadas: las redes semánticas y la
lógica descriptiva.

Redes Semánticas
Las redes semánticas son una forma de lógica. Estas proporcionan una ayuda
gráfica sobre una base de conocimiento y, además, cuentan con algoritmos
eficientes para inferir propiedades de un objeto de acuerdo a su pertenencia
a una categoría.

Todas las redes semánticas son capaces de representar objetos individuales,


categorías de objetos y relaciones entre objetos. Una notación gráfica
común visualiza objetos o nombres de categorías en óvalos o cajas, y los
conecta con arcos etiquetados.

Una red semántica con predicados sobre intervalos de tiempo. (Fuente: Russell y Norvig, 2004, p. 398)

Como puede verse, la forma de notación de la red semántica hace que sea
muy simple el razonamiento basado en herencia.

Por ejemplo, basándonos en el grafico anterior, sabremos que Mary tiene


dos piernas por el solo hecho de ser una persona, es decir que Mary hereda
esa propiedad de persona.

Por lo tanto, un algoritmo de herencia (para saber cuántas piernas tiene


Mary) seguirá el enlace MiembroDe desde Mary hasta la categoría a la cual
pertenece, y entonces continuará por el enlace SubconjuntoDe hasta
encontrar la categoría en la cual existe un enlace etiquetado con el recuadro
Piernas (la categoría Personas).

Esta simplicidad y eficiencia de este mecanismo de inferencia han sido unos


de los más atractivos para las redes semánticas.
También diremos que si un objeto puede pertenecer a más de una categoría,
o cuando una categoría puede ser un subconjunto de varias categorías,
estaremos hablando de herencia múltiple.

Otra forma común de herencia es el uso de enlaces inversos; por ejemplo,


TieneHermana es el inverso de HermanaDe:

  p, s TieneHermana(p, s)  HermanaDe(s, p)

Entonces, dada la pregunta acerca de quién es HermanaDe John, el


algoritmo de inferencia puede descubrir que TieneHermana es el inverso de
HermanaDe y, por lo tanto, puede responder a la pregunta siguiendo el
enlace TieneHermana desde John hasta Mary. Sin la información inversa,
sería necesario comprobar cada persona de sexo femenino para ver si esa
persona tiene un enlace HermanaDe hacia John.

Uno de los aspectos más importantes de las redes semánticas es su habilidad


para representar valores por defecto para las categorías. Si vemos
nuevamente el gráfico anterior sobre las redes semánticas, notaremos que
John tiene una pierna en lugar de dos (John es una persona, y por herencia
todas las personas deberían tener dos piernas, según nuestra ontología). En
una base de conocimiento estrictamente lógica esto sería una contradicción,
pero en una red semántica la afirmación de que todas las personas tienen
dos piernas tiene sólo el sentido de valor por defecto. Es decir, se asume que
una persona tiene dos piernas, a menos que sea contradicho por
información más específica.

Lógica Descriptiva
La lógica descriptiva está basada en notaciones diseñadas para hacer más
fácil describir definiciones y propiedades de categorías. Los sistemas de
lógica descriptiva han evolucionado desde las redes semánticas permitiendo
formalizar el significado de la red y manteniendo el énfasis en la estructura
taxonómica.

Otros nombres conocidos para la lógica descriptiva son: lógica de


descripción y DL por sus siglas en inglés Description Logic.
Las principales tareas de inferencia para la lógica descriptiva son:

 Subsunción: comprobar si una categoría es un subconjunto de otra


a través de la comparación de sus definiciones.

 Clasificación: comprobar si un objeto pertenece a una categoría.

 Algunos sistemas incluyen consistencia: comprobar si el criterio de


pertenencia puede ser satisfecho lógicamente.

El lenguaje Classic es un ejemplo claro de lógica descriptiva; por ejemplo,


para expresar que los solteros son adultos que no están casados, se expresa:

 Soltero = Y(NoCasado, Adulto, Masculino)

El equivalente de lo anterior en lógica de primer orden es:

 Soltero(x)  NoCasado(x)  Adulto(x)  Masculino(x)

Como se ve, la lógica descriptiva permite efectuar operaciones lógicas


directas en los predicados, en lugar de tener que crear primero oraciones
que se unen mediante conectores.

El aspecto más importante de la lógica descriptiva es el


énfasis que se pone en la maleabilidad de la inferencia. Los
problemas se resuelven mediante su descripción y
cuestionando si pueden ser subsumidos mediante una de las
varias categorías posibles de solución. (Russell y Norvig,
2004, p. 402)
Sintaxis del lenguaje Classic. (Fuente: Russell y Norvig, 2004, p. 402)

Razonamiento con información por defecto


Vimos que el mecanismo de herencia en las redes semánticas implementa
la sobre-escritura de valores por defecto de forma simple y natural.

Mundos abiertos y cerrados:


Podemos decir que la lógica de primer orden difiere de las convenciones de
los humanos para la comunicación en dos puntos:

 Asunción del mundo cerrado: Se refiere a que si asumimos que la


información proporcionada es completa, entonces todas las
sentencias atómicas para las que no se dispone de una aserción que
diga que son ciertas deberán ser consideradas falsas.

 Asunción de nombre únicos: Hace referencia a que se asume que


nombres distintos se corresponden a objetos distintos.
La lógica de primer orden no asume estas convenciones, por lo tanto, debe
ser más explícita. Es por ello que en lógica de primer orden se habla de la
completitud (o completitud de Clark).

Por lo general, podemos decir que la completitud contendrá una definición


(una sentencia si y sólo si) para cada predicado, y cada definición contendrá
una disyunción por cada cláusula definida, colocando el predicado al
comienzo de todo.

Podemos decir (formalmente) que la completitud se construye como sigue:

 Unir todas las cláusulas con el mismo nombre de predicado (P) y la


misma cardinalidad (n).

 Transformar cada cláusula en forma normal de Clark:

P(t1,…, tn)  Cuerpo

Donde t, son términos con:

P(v1,…, vn)  w1,…, wm [v1,…, vn] = [t1,…, tn]  Cuerpo

Donde vi son las variables inventadas y wi son las variables que


aparecen en la clausula original. Usar el mismo conjunto de vi para
cada cláusula. Esto proporciona el siguiente conjunto de cláusulas:

P(v1,…, vn)  B1

P(v1,…, vn)  Bk

 Combinar todo esto junto a una cláusula disyuntiva:

P(v1,…, vn)  B1  …  Bk

 Formar la completitud reemplazando él  con la equivalencia:

P(v1,…, vn)  B1  …  Bk

La asunción del mundo cerrado nos permite encontrar un modelo mínimo


de relación. Para las bases de conocimiento de Horn, siempre hay un modelo
mínimo único. Nótese que la asunción de nombres únicos también se aplica
a la relación de igualdad: cada término es igual sólo a él mismo.
Completitud de Clark. (Fuente: Russell y Norvig, 2004, p. 404)

Es posible coger un programa de Horn, generar la completitud de Clark y


pasar el resultado obtenido a un demostrador de teoremas para realizar
inferencia; pero a menudo es más eficiente utilizar un mecanismo de
inferencia de propósito específico, como es Prolog, que tiene implementado
en el mecanismo de inferencia las asunciones del mundo cerrado y nombres
únicos.

Según tu criterio y leyendo la bibliografía, ¿podrías


explicar la negación como fallo?
Bibliografías de referencia
Ascolano, F., Cazorla, M. A., Alfonso, M. I., Otto, C. y Lozano, M.A. (2003).
Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid: Paraninfo.

Gamarra Moreno, Abraham (s. f.). Aprendizaje con redes neuronales artificiales.
Recuperado de http://goo.gl/y4pqoq

García, A. (2012). Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Gómez Blas, M. M. y Guzmán Montoya, E. (21/01/1997). Implementación del


algoritmo de retropropagación para el entrenamiento de redes neuronales
(Proyecto de investigación II). Recuperado de http://goo.gl/M9mMMC

Ponce Cruz, P. (2010). Inteligencia Artificial Con Aplicaciones a la Ingeniería.


Méjico: Alfaomega.

Russell, S. J. y Norvig, P. (2004). Inteligencia artificial. Un enfoque moderno (2ª ed.).


Madrid: Prentice Hall

Vergara Quiche, R. I. (s. f.). Redes Neuronales Artificiales – RNA. Universidad


Nacional José Faustino Sánchez Carrión. Recuperado de http://goo.gl/7y0oPa

Artículo: Perceptrón Multicapa (10/06/2014). En Wikipedia, la enciclopedia libre.


Recuperado el 25 de Julio de 2014 a las 17:00 de http://goo.gl/ifjCjy
Hardware

Inteligencia
Artificial
Hardware
Sensores y actuadores que permiten a
los agentes interactuar

¿Cuáles son los efectores físicos que permiten a nuestros


agentes moverse e interactuar con el mundo real?

Introducción
En este módulo veremos los principales aspectos de la robótica, otro campo
apasionante de la IA, el cual es, quizás, el más conocido. Podemos comenzar
diciendo que un robot es todo aquel agente físico que lleva a cabo sus tareas
por medio de la manipulación física del mundo. Para realizar dichas tareas
estos están equipados con efectores como piernas, ruedas, articulaciones y
pinzas. El fin de los efectores es transmitir fuerzas físicas al entorno. También
los robots están equipados con sensores (desde cámaras y ultrasonidos para
medir el entorno hasta giroscopios y acelerómetros para medir su propio
movimiento), que les permiten percibir el entorno.

Cabe aclarar la diferencia entre efectores y actuadores: un actuador es una


línea de control que transmite un comando a un efector, y el efector es el
dispositivo físico en sí mismo.

Actualmente podemos clasificar a la mayoría de los robots en:


 Manipuladores: o brazos robóticos están físicamente anclados en su
lugar de trabajo. El caso más común es el de la línea de producción
automotriz utilizado ya sea para pintar, soldar, etcétera.

 Robots móviles: se desplazan por el entorno utilizando ruedas,


piernas o mecanismos similares. El caso más conocido son los robots
utilizados por la NASA para exploración planetaria en cada una de sus
misiones.

 Robot móvil equipado con manipuladores (robots híbridos): Los


robots híbridos pueden aplicar sus efectores en un campo más
amplio que los robots anclados, pero las tareas que llevan a cabo se
vuelven más complejas. Dentro de esta categoría entran los llamados
robots humanoides.

El robot móvil de la NASA llamado Sojourner. (Russell y Norvig, 2004, p. 1024)

Los robots reales normalmente suelen hacer frente a ambientes que sólo
son observables parcialmente, estocásticos, dinámicos y continuos. Algunos
de estos ambientes son a la vez secuenciales y multiagente.
Los Robots Humanoides P3 y Asimo construidos por Honda. (Russell y Norvig, 2004, p.
1024)

Sensores
Los sensores son la interfaz que le permite percibir a un robot lo que está
pasando en su entorno.

Tenemos dos tipos de sensores:

 Sensores pasivos: capturan las señales que son generadas por otras
fuentes en el entorno. Dentro de este grupo tenemos a las cámaras,
por ejemplo.

 Sensores activos: emiten energía dentro del entorno. Se basan en la


idea de que dicha energía será reflejada y devuelta al sensor.

Los sensores activos suelen proporcionar más información que los pasivos,
pero a expensas de un mayor consumo y con el peligro de causar
interferencias cuando se usan múltiples sensores al mismo tiempo. Pero, ya
sean activos o pasivos, podemos decir que los sensores se pueden dividir en:

 Sensores que determinan distancias a objetos: como pueden ser los


scaners de rango, de entre los cuales los más comunes son los
sensores de sonar, también conocidos como transductores
ultrasónicos. Estos emiten ondas de sonido direccionales que son
reflejadas por objetos haciendo que parte del sonido vuelva al
sensor. El tiempo y la intensidad de la señal de retomo proporcionan
información sobre la distancia hasta dichos objetos. También dentro
de este grupo tenemos a los GPS (Sistema de Posicionamiento
Global), los cuales miden la distancia a una serie de satélites que
emiten señales de pulso.

 Sensores que toman imágenes del entorno: dentro de estos, los más
comunes son las cámaras que proporcionan a los robots imágenes
del entorno, para las cuales se utilizan complicadas técnicas de
tratamiento de visión artificial.

 Sensores que miden o toman propiedades del robot: estos también


son llamados sensores perceptores y son los que informan al robot
sobre su propio estado. Por ejemplo, para medir la configuración de
una articulación robótica sus motores están normalmente equipados
con decodificadores de ejes que cuentan las revoluciones de los
motores con pequeños incrementos. Otro ejemplo de estos tipos de
sensores son los de fuerza y torsión, sobre todo si el robot debe
manipular cosas de su entorno.

Escáner de rango SICK LMS basado en Láser. (Russell y Norvig, 2004, p. 1026)
Efectores
Los efectores permiten a los robots moverse y cambiar la forma de sus
cuerpos. Pero, para entender esto, conviene hablar primero del concepto de
grados de libertad. Nosotros contamos los grados de libertad como cada
dirección independiente del robot en la cual uno o varios de sus efectores se
pueden mover. Por ejemplo, un brazo rígido de robot que tiene seis grados
de libertad, tendrá tres para los ejes x, y, z que permitirán su localización en
el espacio, y los otros tres nos darán su orientación angular, denominados
por lo general como desvío, balanceo y cabeceo (yaw, roll y pitch). Estos seis
grados nos dan el estado de pose (o cinemático) del robot. El estado
dinámico del robot incluye una dimensión adicional para evaluar el cambio
cinemático de cada dimensión. Seis grados de libertad son los mínimos
requeridos para poner un objeto en una posición y orientación
determinadas.

Para un brazo robótico el poseer una mayor cantidad de grados de libertad


en cada una de sus articulaciones le otorga una mayor flexibilidad para, por
ejemplo, posicionar una herramienta en un lugar determinado.

Los robots con menos grados de libertad se hacen más difíciles de controlar
que aquellos que poseen más grados de libertad.

Para los robots móviles, los grados de libertad no son necesariamente los
mismos que el número de elementos actuadores. Por ejemplo, un automóvil
se puede mover hacia delante y hacia atrás, y puede girar, es decir que tiene
sólo dos grados de libertad. Pero la cinemática de un automóvil es
tridimensional, es decir que en una superficie abierta puede fácilmente
moverse hacia cualquier punto (x, y) en cualquier orientación. De esta
manera, vemos que el automóvil tiene tres grados efectivos de libertad pero
sólo dos grados controlables de libertad.

A aquellos robots que poseen más grados de libertad efectivos que


controlados se los denomina no holonómicos, y a aquellos que poseen el
mismo número se denominan holonómicos. Los robots holonómicos son
más fáciles de controlar, pero son complejos mecánicamente. La mayoría de
los brazos robóticos son holonómicos, al igual que la mayoría de los robots
móviles son no holonómicos.
Los robots holonómicos están formados por ligaduras como lo son los
brazos y los manipuladores.

El manipulador de Standford: un brazo de robot con cinco articulaciones de revolución (R)


y una articulación prismática (P), para un total de seis grados de libertad. (Russell y Norvig,
2004, p. 1028)

Para los robots móviles, existen muchos mecanismos de movimiento, desde


ruedas, orugas y piernas. Si un robot posee dos ruedas independientes
decimos que tiene impulsión diferencial. Una alternativa a este tipo de
inpulsión es la conducción sincronizada en la que cada rueda se mueve y rota
sobre su propio eje. Tanto la impulsión diferencial como la conducción
sincronizada son no holonómicas. Respecto de las piernas robóticas
podemos decir que, a diferencia de las ruedas, pueden manejarse por
terreno abrupto. Sin embargo, las piernas suelen ser muy lentas en
superficies planas (y son mecánicamente difíciles de construir). Decimos que
un robot que puede permanecer vertical mientras camina es
dinámicamente estable, y si un robot puede permanecer vertical sin mover
sus piernas, entonces es estáticamente estable.

Pero los sensores y actuadores, por si solos, no hacen un robot. Un robot


también necesita una fuente de energía para hacer funcionar sus efectores.
El motor eléctrico, la neumática y la hidráulica son las técnicas más
empleadas para la locomoción y manipulación. También muchos robots
cuentan con dispositivos para la comunicación digital (como una red
inalámbrica). Finalmente, debe haber un cuerpo para ensamblar las
diferentes piezas del robot.

Percepción Robótica
El proceso mediante el cual los sensores del robot construyen un mapa del
entorno utilizando una determinada representación interna se denomina
percepción. Esta suele ser un proceso complejo porque es común que los
sensores tengan ruido y el entorno sea parcialmente observable,
impredecible y dinámico. Por esto, una buena representación interna suele
tener tres propiedades:

 contar con la información suficiente para que el robot tome las


decisiones apropiadas;

 debe estar estructurada, para que se pueda actualizar


eficientemente;

 debe ser natural (las variables internas han de corresponder con


estados en el mundo real).

Los robots logran tener percepción gracias a sus sensores. A dichos


sensores se los clasifica como exteroceptivos y propioceptivos. Los
primeros le permiten al robot interactuar con su entorno y los segundos le
brindan información robot acerca del estado de sus componentes internos.

Localización
Cuando hablamos de localización, nos referimos al problema de determinar
dónde están las cosas. La localización es una de las cuestiones más
importantes de la percepción robótica, ya que el conocimiento sobre dónde
están las cosas es el núcleo principal para una satisfactoria interacción del
robot con el mundo real. Por ejemplo, los manipuladores del robot deben
saber la localización de los objetos que han de manipular. Los robots
navegadores deben saber dónde están para poder encontrar las
localizaciones requeridas.
Podemos decir que el problema de la localización esta dado por tres formas
con dificultad incremental:

 Si se conoce la posición inicial del objeto, entonces la localización es


un problema de seguimiento (tracking). Los problemas de
seguimiento tienen una incertidumbre limitada.

 Luego tenemos (un poco más difícil) el problema de la localización


global, si la posición inicial del objeto es desconocida. La localización
global se transforma entonces en un problema de seguimiento, una
vez que el objeto de interés ha sido localizado.

 Finalmente, tenemos lo que se denomina el problema de secuestro,


que se da cuando se “secuestra” el objeto que está intentando
localizar.

Generación de Mapas
Por lo general, en robótica se intentan localizar muchos objetos. El ejemplo
más común es la construcción de mapas mediante robots. Si tenemos un
robot al que no se le da un mapa del entorno, entonces, el robot debe
construir su propio mapa. La generación de mapas mediante robots se suele
denominar localización y mapeado simultáneo o SLAM. El robot debe ser
capaz de construir el mapa y, además, lo debe hacer sin tener ningún
conocimiento sobre dónde está ubicado. SLAM es uno de los problemas
principales y más complejos de la robótica.

Cabe aclarar que no toda la percepción robótica es sobre la localización y la


generación de mapas únicamente, puesto que los robots también reciben la
temperatura, olores, señales acústicas, etcétera. Muchas de estas
percepciones se pueden estimar probabilísticamente, como la localización y
la generación de mapas. Todo lo que se necesita para dichos estimadores
son distribuciones de probabilidad condicionada que describan la relación
entre las medidas y los estados de las variables.
Mapa generado por la percepción del robot BellBot. (Fuente: http://goo.gl/U0mGFc)

Planear el movimiento
Podemos decir que el movimiento punto a punto consiste en situar al robot,
o a sus efectores, en una posición determinada. Además, tenemos el
problema del movimiento obediente en el cual un robot se desplaza
mientras está en contacto físico con un obstáculo, como por ejemplo: un
robot que manipula un destornillador con una bombilla o un robot que pone
una caja encima de una mesa.

Antes que nada, debemos encontrar una buena representación por medio
de la cual los problemas de planificación puedan ser descritos y
solucionados. Tenemos, por un lado, lo que se denomina como espacio de
configuración, que no es otra cosa que el espacio de los estados del robot
definido por la localización, orientación y ángulos de las articulaciones.
Resulta que este espacio de configuración es una abstracción mejor para
trabajar que el espacio original, en tres dimensiones, del mundo real. Por lo
tanto, el problema de planificación de trayectorias consistirá en encontrar
un camino desde una configuración a otra del espacio. Algo para destacar es
que la planificación requiere espacios continuos. Las aproximaciones más
comunes se conocen como descomposición en celdas y esqueletización.
Cada una reduce el problema continuo de planificación en la búsqueda sobre
un grafo discreto mediante la identificación de algunos estados canónicos y
caminos entre el espacio libre.

Espacio de configuración: es el espacio de los estados del robot definido


por la localización, orientación y ángulos de las articulaciones.

Espacio de configuración
El primer paso hacia la solución del problema es encontrar una
representación apropiada para el problema. Para ello, consideremos el
brazo de robot que tiene solo dos articulaciones que se mueven
independientemente.

Representación del área de trabajo de un brazo robótico con dos grados de libertad. El
área de trabajo es una caja con un obstáculo plano colgando del techo. (Russell y Norvig,
2004, p. 1042)

El robot de la figura mueve sus articulaciones y altera las coordenadas (x, y)


del codo y de la pinza (el brazo no puede moverse en la dirección de z).
Podemos decir que la configuración puede ser descrita por una coordinación
cuatro-dimensional:
 (xe, ye) para la localización del codo relativa al entorno.

 (xg, yg) para la localización de la pinza.

Es obvio que estas cuatro coordenadas caracterizan el estado del robot. Ellas
constituyen lo que se conoce como representación del área de trabajo, en
la que las coordenadas del robot se especifican con el mismo sistema de
coordenadas que los objetos que busca para manipular (o evitar). Podemos
decir que si el robot y todos los objetos dentro del área de trabajo se pueden
representar por modelos poligonales simples, entonces la representación de
dicha área de trabajo está bien adaptada para la comprobación de
colisiones. El problema con la representación del área de trabajo es que no
todas las coordenadas de dicha área son realmente alcanzables, aún con la
ausencia de obstáculos. Por ejemplo, la posición del codo (xe, ye) y de la pinza
(xg, yg) distan siempre una distancia fija porque están unidas por un brazo
rígido. Un planificador de movimiento de un robot dado, sobre un área de
trabajo con coordenadas, se enfrenta al problema de generar soluciones que
soporten dichas limitaciones.

Si utilizamos una representación del espacio de configuración, en vez de


representar el estado del robot por las coordenadas cartesianas de sus
elementos, nos resultara más fácil planificar. Ya que el robot del ejemplo
tiene dos articulaciones podemos representar su estado con dos ángulos: s
y e para la articulación del hombro y del codo, respectivamente. Es decir
que, cuando se planifica un determinado camino, se puede simplemente
conectar la configuración actual y la de la meta por una línea recta. Entonces,
para el siguiente camino el robot deberá cambiar sus articulaciones a
velocidad constante hasta que se alcance la meta.

Pero la tarea de un robot normalmente se expresa mediante coordenadas


del área del trabajo, no en coordenadas del espacio de configuración. Por
ejemplo, podemos querer que un robot mueva su efector final hacia una
cierta coordenada del área de trabajo con una especificación de su
orientación. Esto nos lleva al problema de cómo lograr convertir las
coordenadas del área de trabajo en las del espacio de trabajo. Por suerte, la
inversa de este problema se puede resolver por medio de una cinemática
inversa: se refiere a calcular la configuración del robot en el que la
localización de sus efectores se especifica en coordenadas del área de
trabajo.

El cálculo de la cinemática inversa se hace más dificultoso mientras más


grados de libertad tengamos en un robot.
Un problema con las representaciones del espacio de configuración se
encuentra en los obstáculos que pueden existir en el área de trabajo del
robot. En el gráfico de nuestro ejemplo tenemos varios obstáculos,
incluyendo uno obstáculo colgante que se introduce en el interior del área
de trabajo del robot. Si bien estos obstáculos, dentro del área de trabajo,
tienen formas geométricas simples, debemos saber cuál es el aspecto que
tienen en el espacio de configuración. Para ello, podemos descomponer el
espacio de configuración en dos sub-espacios:

 el espacio de todas las configuraciones que el robot puede alcanzar,


también llamado espacio libre.

 el espacio de las configuraciones inalcanzables, también


denominado espacio ocupado.

El espacio de configuración del robot, en donde sólo las regiones blancas en el espacio son
configuraciones libres de colisión. (Russell y Norvig, 2004, p. 1042)

En la figura anterior se evidencia que el área blanca representa o se


corresponde al espacio libre, y todas las demás regiones se corresponden
con el espacio ocupado. Más específicamente, se evidencia que:

 la región negra que rodea el espacio libre por entero equivale a las
configuraciones en las que el robot colisiona consigo mismo;
 las dos regiones ovales a ambos lados del robot corresponden a la
mesa donde el robot está montado;

 la tercera región oval corresponde a la pared izquierda;

 el obstáculo vertical molestando en el área de trabajo del robot. Este


objeto en el espacio de configuración tiene una forma extraña: es
altamente no lineal e incluso, en algunos lugares, cóncava.

Cabe destacar que el punto interior en la figura representa la configuración


de nuestro robot, según lo vimos en la primera figura.

Tres configuraciones para el robot, mostradas en el área de trabajo y en el espacio de


configuración. (Russell y Norvig, 2004, p. 1043)
Métodos de descomposición en
celdas
La descomposición en celdas desagrega el espacio libre en un número finito
de regiones continuas o celdas. Esto nos permite resolver el problema de
planificación de rutas (en una región simple) de manera simple. Lo que
estamos haciendo es transformar el problema de planificación de rutas en
un problema de búsqueda en un grafo discreto, como los ya vistos en
unidades anteriores.

(a) Función de valor y ruta encontrada para una aproximación de rejilla discreta de celdas
del espacio de configuración. (b) La misma ruta visualizada en coordenadas del área de
trabajo. (Russell y Norvig, 2004, p. 1044)

Como vemos, la descomposición en celdas más simple consiste en una rejilla


regular. Se ha conformado una cuadrícula para representar el espacio de
configuración del robot y una ruta con el camino óptimo para dicha
cuadrícula.
Este enfoque tiene la ventaja de ser muy simple, pero posee dos
desventajas:

 Primero: los espacios de configuración en los que puede usarse son


de reducida dimensión debido a que el número de celdas de la
cuadrícula crece exponencialmente conforme al número de
dimensiones.

 Segundo: debemos resolver el problema de las celdas “mixtas” (que


no se encuentran por entero ni en espacio libre ni en espacio
ocupado), ya que una solución que incluya una celda de este tipo
puede que no sea una solución real.

Según tu criterio y leyendo la bibliografía, ¿cómo


sería posible solucionar las dos desventajas del
método de descomposición en celdas?

Métodos de esqueletización
Estos tipos de algoritmos transforman el espacio libre del robot a una
representación unidimensional, haciendo que el problema de planificación
sea mucho más simple. La representación unidimensional del espacio libre
del robot es denominada esqueleto del espacio de configuración.
(a) El diagrama de Voronoi es un conjunto de puntos equidistantes a dos o más obstáculos
en el espacio de configuración. (b) Un itinerario probabilístico, compuesto de 400 puntos
elegidas al azar en espacio libre. (Russell y Norvig, 2004, p. 1046)

En la figura vemos representada una esqueletización, mediante el


denominado diagrama de Voronoi, del espacio libre del robot. Para
planificar rutas con este tipo de diagrama, el robot primero debe
transformar su configuración espacial en un punto en el grafo de Voronoi.
Luego el robot sigue el diagrama de Voronoi hasta llegar al punto más
cercano a la configuración objetivo. Por último, el robot deja el diagrama y
se desplaza al objetivo. Por lo tanto, podemos decir que el problema original
de planificación se trata simplemente de encontrar un camino dentro del
diagrama unidimensional de Voronoi.

Según tu criterio y leyendo la bibliografía, ¿podrías


explicar la alternativa de esqueletización al
diagrama de Voronoi, denominada itinerario
probabilístico?
Panificar movimientos inciertos
Muchos de los robots actuales utilizan algoritmos determinísticos para la
toma de decisiones, como los que vimos en los apartados anteriores, y la
mayoría deja de lado la incertidumbre, la cual es una característica clave
dentro de los problemas de la robótica. Dejar de lado o no considerar la
incertidumbre puede ser útil algunas veces, pero ineficiente en muchas otras
ocasiones.

En el campo de la robótica se han adoptado o intentado una gran cantidad


de técnicas para poder manejar la incertidumbre, pero la mayoría llevaron a
problemas muy grandes o complejos de resolver; por esto, siempre es
recomendable intentar mantener la menor incertidumbre posible. Un
ejemplo de ello es la heurística de navegación costera, que requiere que el
robot permanezca cerca de marcadores conocidos para disminuir su
incertidumbre de posicionamiento y, además, achicar gradualmente la
incertidumbre de la obtención de nuevos marcadores cercanos permitiendo
que el robot explore más territorio.

También hay otros enfoques que apuntan a la utilización de los llamados


métodos robustos. Un método robusto es aquel que considera una pequeña
cantidad limitada de incertidumbre en cada aspecto del problema y no
asigna probabilidades a los valores en el interior del intervalo permitido. Una
solución de este tipo funciona (siempre que se esté dentro del intervalo
considerado) sin importar cuáles son los valores actuales. Una forma
extrema de método robusto es la aproximación de planificación
conformista, la cual produce planes que funcionan sin ningún tipo de
información sobre el estado.

Según tu criterio y leyendo la bibliografía, ¿podrías


explicar a qué se refiere el concepto de Planificación
de movimiento certero o Fine-motion planning
(FMP)?
Bibliografías de referencia
Russell, S. J. y Norvig, P. (2004) Inteligencia artificial un enfoque moderno (2ª ed.)
Madrid: Prentice Hall.

Brooks, R. A. (1986). A robust layered control System for a mobile robot. IEEE
Journal o f Robotics and Automation, 2, 14-23.

Horswill. I. (2000). Functional programming of behavior-based systems.


Autonomous Robots, 9, 83-93.

Firby, J. (1994). Task networks for controlling continuous processes. In H am m on


d, K. (E d .), Proceedings o f the Second International Conference on Al Planning
Systems, pp. 49-54, Menlo Park: CA. AAAI Press.

García, P. (23-10-2010) Curso de robotica II. Recuperado el 21-08-2014 de


http://goo.gl/4MeXf2

Boerema, C. (07-04-2011) Beam Wiki. Recuperado el 21-08-2014 de


http://goo.gl/RqUP0P

Akin, H. (15-11-2010) Pm Wiki. Recuperado el 21-08-2014 de


http://goo.gl/lo80sQ

Kerry, M. (01-09-2011) Rtc Magazine. Recuperado el 21-08-2014 de


http://goo.gl/vjD7Gd

Pagnucco, M. (01-09-2011) Legolog. Recuperado el 21-08-2014 de


http://goo.gl/WKolMr

Staub, C. (01-01-2014) TUM. Recuperado el 21-08-2014 de http://goo.gl/tFQ3n0

Christiaens, A. (13-06-2013) Christiaens Agro Systems. Recuperado el 21-08-2014


de http://goo.gl/DKEFAc

López, J. (17-03-2011) Ride. Recuperado el 21-08-2014 de http://goo.gl/U0mGFc

Coabham. (29-03-2013) Gadgetstecnología.com. Recuperado el 23-08-2014 de


http://goo.gl/lVqHZZ

Artículo: Vehículo Aéreo no Tripulado (15/08/2014). En Wikipedia, la enciclopedia


libre. Recuperado el 25 de Agosto de 2014 a las 17:00 de http://goo.gl/LLg0v
Movimiento

Inteligencia
Artificial
Movimiento

¿Cómo se mueve un robot?

Los robots no solo planifican sus movimientos, sino que además


los llevan a cabo; por lo tanto, hay diferentes fuerzas (como por
ejemplo, la inercia) que deben ser tenidas en cuenta al
momento en que un robot ejecute sus movimientos.

Dinámica y Control
Cuando hablamos de efectores, vimos el estado dinámico de un robot: este
extiende el estado cinemático del robot, es decir que, por ejemplo, no solo
considera los ángulos de las articulaciones de un robot, sino que además
captura la velocidad de cambio del ángulo. Es muy común expresar por
medio de ecuaciones diferenciales los modelos de representación de un
estado dinámico que incluye el efecto de las fuerzas en esta velocidad de
cambio.

Como se ve, un estado dinámico es mucho más complejo que el espacio


cinemático y, si le añadimos los problemas acarreados por la
dimensionalidad, nos ocurrirá que los problemas de planificación de
movimiento serán inmanejables. Es por esto que se suelen usar, para
sistemas robóticos reales, planificadores de rutas sencillos.
Una técnica muy difundida es la utilización de controladores para mantener
al robot en ruta y compensar las limitaciones del planificador cinemático
empleado. Los controladores son mecanismos utilizados por separado.
Podemos definir los controladores como las técnicas usadas para generar
controles del robot en tiempo real, tomando retroalimentación del entorno,
y además para conseguir un objetivo de control.

Se los suele llamar controladores de referencia si cumplen con el objetivo


de mantener al robot dentro de una ruta planeada con anterioridad (ruta de
referencia). También podemos decir que serán controladores óptimos
todos aquellos que optimizan una función global de coste.

Control de brazo robótico utilizando (a) control proporcional con factor de ganancia 1,0;
(b) control proporcional con control de ganancia 0,1; y (c) control PD con factores de
ganancia 0,3 para el componente proporcional y 0,8 para el diferencial. (Russell y Norvig,
2004, p. 1053)

Lo que se ve claramente en la figura anterior (a) es que el controlador causa


que el robot vibre. Esta vibración se debe a la inercia propia del brazo
robótico. Recién cuando el brazo vuelve a su posición de referencia, el robot
puede llegar más allá. Esto producirá un error simétrico de signo opuesto.
Estos tipos de controladores se denominan controladores P o controladores
proporcionales. Y se llaman así porque indican que el control actual es
proporcional al error del manipulador del robot.

Más formalmente, podemos definirlo como sigue:

at = Kp(y(t) - xt)

Donde:

 y(t) es la ruta de referencia parametrizada por un índice t;

 at es el control generado por un controlador P;

 xt es el estado del robot en el instante t;

 Kp es el parámetro de ganancia del controlador que regula cuánto


corrige la desviación el controlador entre el estado actual xt y el
deseado y(t).

Se puede llegar a pensar que achicar Kp resolverá el problema, pero, como


se ve en las figuras anteriores, este no es el caso ya que sigue existiendo
oscilación. Lo que sí se logra es producir una menor oscilación, pero esta no
desaparecerá; incluso sin movimiento el controlador seguir oscilando
indefinidamente.

Podemos decir que un controlador es estable si pequeñas perturbaciones


llevan a un error limitado entre el robot y la señal de referencia, y que es
estrictamente estable si es capaz de retomar a su ruta de referencia a pesar
de tales perturbaciones.

Si equipamos un robot, que debe seguir una linea recta pintada en el piso,
con un controlador P, lo más probable que ocurra es que si el robot se sale
por la izquierda o derecha de la línea recta y el controlador P corrige esa
situación girando al robot en el sentido opuesto al que se dirigía y así
sucesivamente, veremos que el robot va zigzagueando a lo largo de su
trazado por encima de la línea recta, como consecuencia de la utilización
de un controlador P.
Según tu criterio y leyendo la bibliografía, el
controlador P descripto hasta aquí, ¿es estable y
estrictamente estable? ¿Por qué?

Existe un tipo de controlador muy simple que consigue ambos tipos de


estabilidad y es el denominado controlador PD. Se lo denomina así porque
este tipo de controlador es Proporcional y Derivativo.

La ecuación que da una definición formal de este tipo de controladores es:

at = Kp(y(t) - xt) + Kd *((y(t) - xt)/t)

Los controladores PD son una extensión de los controladores P y, como


vemos en la ecuación anterior, a esta extensión la logra por medio de un
componente diferencial, el cual es la primera “derivada” del error (y(t) - xt)
con respecto al tiempo, dicha “derivada” sirve para amortiguar el sistema.

En la figura anterior, en el apartado (c) de la misma, vemos que se ha usado


un controlador PD en el brazo robótico (parámetros de ganancia K p = 0,3 y
KD = 0,8) y la ruta resultante es mucho más suave y no tiene ninguna
oscilación obvia. Esto nos dice que el término diferencial ayuda a hacer
estable al controlador, que de otra forma no lo es.
Diagrama de bloques de control PID. (Fuente: Curso de robótica II, http://goo.gl/4MeXf2)

Según tu criterio y leyendo la bibliografía, ¿qué


sucedería si el mismo error persistiera y no
cambiara? ¿El controlador PD seguiría sirviendo
para reducir la oscilación? ¿Podrías describir el
controlador PID?

Control de campo potencial


Para lograr este tipo de control debemos especificar una fuerza atractiva que
empuje al robot hacia su configuración objetivo y un campo potencial
repulsivo que empuje al robot lejos de los obstáculos. Esto quiere decir que
el robot transita por un campo potencial compuesto de fuerzas repulsivas,
obtenidas a partir de los obstáculos, y fuerzas atrayentes que corresponden
a la configuración objetivo.

Control por campo de potencial. (a) Ruta con éxito; (b) Óptimo local. (Russell y Norvig,
2004, p. 1055)

Las técnicas de campo potencial son muy buenas para control local del
robot, pero necesitan de planificación global. Además, dichas técnicas
tienen el inconveniente de que las fuerzas que generan dependen sólo de la
posición del robot y de los obstáculos (son un método cinemático), no de la
velocidad del robot, por lo cual este tipo de control puede fallar si el robot
se mueve rápidamente.

Control reactivo
Hasta ahora nos referimos a lograr controlar un robot por medio de técnicas
que requieren algún modelo del entorno, ya sea para construir una ruta de
referencia o un campo potencial. Pero vimos que este tipo de técnicas
acarrean diferentes inconvenientes:

 los modelos que son lo suficientemente precisos son complejos de


obtener;
 la complejidad computacional y el error de localización pueden hacer
a estas técnicas inviables.

Es por esto que muchas veces conviene diseñar un agente robótico guiado
por sus reflejos, o lo que también se conoce como: control reactivo.

(a) Un robot hexápodo; (b) Un autómata finito aumentado (AFSM o Augmented Finite
State machine) para el control de una única pierna. (Russell y Norvig, 2004, p. 1056)

De esta manera, para el robot con piernas de la figura anterior lograr definir
una ley de control se convierte en algo muy simple con el nivel de
abstracción correcto. Una ley correcta debería coordinar las seis piernas de
tal forma que tres de ellas (opuestas) estuvieran siempre en tierra para
darle al robot el adecuado soporte físico. Este patrón de control es excelente
para terreno plano y es fácilmente programable. En un terreno abrupto (con
obstáculos) puede producirse oscilación, pero esto se soluciona fácilmente
con la siguiente sencilla regla de control: cuando se bloquea el movimiento
hacia delante de una pierna, retrasar la misma, elevarla más alto y volver
a intentar.

Como se ve, este tipo de controlador no responde a ningún modelo y no usa


deliberación o búsqueda para generar controles. Por ello, cuando se ejecuta
un controlador de este tipo, la retroalimentación del entorno representa un
papel central en el comportamiento del robot.

Estamos frente a lo que comúnmente se denomina comportamiento


emergente, ya que se da por la interacción entre un controlador simple y un
entorno complejo. El software de nuestro robot no define qué sucederá
cuando el robot se coloque en el entorno, es decir que no hay modelo, de
ningún tipo, previamente construido.
Bibliografías de referencia
Russell, S. J. y Norvig, P. (2004) Inteligencia artificial un enfoque moderno (2ª ed.)
Madrid: Prentice Hall.

Brooks, R. A. (1986). A robust layered control System for a mobile robot. IEEE
Journal o f Robotics and Automation, 2, 14-23.

Horswill. I. (2000). Functional programming of behavior-based systems.


Autonomous Robots, 9, 83-93.

Firby, J. (1994). Task networks for controlling continuous processes. In H am m on


d, K. (E d .), Proceedings o f the Second International Conference on Al Planning
Systems, pp. 49-54, Menlo Park: CA. AAAI Press.

García, P. (23-10-2010) Curso de robotica II. Recuperado el 21-08-2014 de


http://goo.gl/4MeXf2

Boerema, C. (07-04-2011) Beam Wiki. Recuperado el 21-08-2014 de


http://goo.gl/RqUP0P

Akin, H. (15-11-2010) Pm Wiki. Recuperado el 21-08-2014 de


http://goo.gl/lo80sQ

Kerry, M. (01-09-2011) Rtc Magazine. Recuperado el 21-08-2014 de


http://goo.gl/vjD7Gd

Pagnucco, M. (01-09-2011) Legolog. Recuperado el 21-08-2014 de


http://goo.gl/WKolMr

Staub, C. (01-01-2014) TUM. Recuperado el 21-08-2014 de http://goo.gl/tFQ3n0

Christiaens, A. (13-06-2013) Christiaens Agro Systems. Recuperado el 21-08-2014


de http://goo.gl/DKEFAc

López, J. (17-03-2011) Ride. Recuperado el 21-08-2014 de http://goo.gl/U0mGFc

Coabham. (29-03-2013) Gadgetstecnología.com. Recuperado el 23-08-2014 de


http://goo.gl/lVqHZZ

Artículo: Vehículo Aéreo no Tripulado (15/08/2014). En Wikipedia, la enciclopedia


libre. Recuperado el 25 de Agosto de 2014 a las 17:00 de http://goo.gl/LLg0v
Arquitectura de
subsunción y de
tres capas

Nombre de la
materia
Arquitectura de subsunción y de
tres capas
¿Cómo se estructuran los robots?

¿Cuáles son las arquitecturas de software robótico más


conocidas? ¿Cuáles son los lenguajes de programación que
permiten construir el software de los robots?

Introducción
Podemos decir que una arquitectura de software es una metodología para
estructurar algoritmos, y podemos denominar a una arquitectura, de
manera general, como al conjunto de lenguajes y herramientas que
permiten desarrollar programas, así como también una filosofía global de
cómo esos programas deben estructurarse y unirse.

Podemos decir que una arquitectura de software es una metodología para


estructurar algoritmos.

En la robótica las arquitecturas del software son fundamentales para decidir


cómo combinar controles reactivos y controles deliberativos basados en
modelos. El control reactivo y el deliberativo basado en modelos tienen
puntos contrapuestos. Así, el control reactivo es guiado por sensores y es
adecuado para tomar decisiones de bajo nivel en tiempo real, pero muy
pocas veces da una solución adecuada a un nivel global. Para este tipo de
problemas el control deliberativo es más apropiado. Es por esto que la
mayoría de las arquitecturas robóticas utilizan una combinación de ambos
tipos de control, es decir que en los niveles más bajos usan técnicas reactivas
y en los niveles más altos utilizan técnicas deliberativas. Las arquitecturas
que combinan técnicas reactivas y deliberativas son normalmente llamadas
arquitecturas híbridas.

Arquitectura de subsunción
En la arquitectura de subsunción las conductas complejas son el resultado
evolutivo de funciones conductuales simples. Se comienza por diseñar una
red de procesadores y otros equipos capaces de producir conductas
sencillas. No se añaden al sistema de conductas nuevas hasta que las
conductas que subsumen no están perfectamente a punto y en marcha.

Podemos decir que es una plataforma que permite armar autómatas finitos
por medio de la unión de controladores reactivos simples.

El profesor Rodney Brooks fue quien postuló la Arquitectura de Subsunción.


En efecto, según Brooks (1986): “los insectos deben organizar su inteligencia
de alguna manera mejor, que les permite movilizarse tan bien”; este
pensamiento lo llevó a pensar en cómo reorganizar los cómputos de un
robot de manera que pudiera movilizarse en el mundo real en tiempo real.

Una manera simple de ver esta arquitectura es como si fuese un conjunto


de autómatas finitos (que suelen tener temporizadores internos) trabajando
al unísono para lograr avanzar. Es por esto que es muy común que se los
llame Autómatas Finitos Aumentados o AFSMs (Augmented Finite State
Machines). El término aumentado es debido a los temporizadores internos
utilizados para controlar el tiempo que se necesita para atravesar cada arco
del mapa interno del robot.

La arquitectura de subsunción permite al programador humano desarrollar


controladores más complejos de manera incremental, de abajo hacia arriba;
de esta forma se podría empezar con AFSMs para piernas individuales,
seguido por un AFSMs para coordinar las múltiples piernas, etcétera.
Diagrama en bloques de un robot basado en la arquitectura de subsunción. (Fuente:
BEAM Wiki, http://goo.gl/RqUP0P)

Robot construido utilizando la arquitectura de subsunción. (Fuente: Pm Wiki,


http://goo.gl/lo80sQ, 2010)
Según tu criterio y leyendo la bibliografía, ¿cuáles
son los principales problemas por los que la
arquitectura de subsunción no es muy utilizada
comercialmente?

Arquitectura de tres capas


De entre todas las arquitecturas híbridas, esta es quizás la más difundida, y
se la denomina así porque consiste en:

 Capa reactiva: esta provee un control de bajo nivel para el robot, en


donde las decisiones están en el orden de los milisegundos.
Generalmente está compuesta por un bucle sensor-acción.

 Capa ejecutiva: esta permite unir la capa reactiva con la capa


deliberativa. Acepta órdenes provenientes de la capa deliberativa y
las envía a la capa reactiva de una manera ordenada. Los ciclos de
decisión en la capa ejecutiva están en el orden del segundo de
tiempo. Y esta capa es también responsable de integrar la
información de los sensores en una representación interna del
estado del robot.

 Capa deliberativa: genera soluciones globales para tareas complejas.


Su ciclo de decisión suele estar en el rango de varios minutos debido
a las tareas complejas con las que se enfrenta. Los modelos que se
usan en esta capa (para la toma de decisiones) pueden ser pre-
suministrados o aprendidos de los datos recolectados de la capa
ejecutiva.
Diagrama en bloques de un robot basado en una arquitectura en capas. (Fuente: RTC,
http://goo.gl/vjD7Gd)

Robots construidos con una arquitectura en capas. (Fuente: RTC, http://goo.gl/vjD7Gd)


Bibliografías de referencia
Russell, S. J. y Norvig, P. (2004) Inteligencia artificial un enfoque moderno (2ª ed.)
Madrid: Prentice Hall.

Brooks, R. A. (1986). A robust layered control System for a mobile robot. IEEE
Journal o f Robotics and Automation, 2, 14-23.

Horswill. I. (2000). Functional programming of behavior-based systems.


Autonomous Robots, 9, 83-93.

Firby, J. (1994). Task networks for controlling continuous processes. In H am m on


d, K. (E d .), Proceedings o f the Second International Conference on Al Planning
Systems, pp. 49-54, Menlo Park: CA. AAAI Press.

García, P. (23-10-2010) Curso de robotica II. Recuperado el 21-08-2014 de


http://goo.gl/4MeXf2

Boerema, C. (07-04-2011) Beam Wiki. Recuperado el 21-08-2014 de


http://goo.gl/RqUP0P

Akin, H. (15-11-2010) Pm Wiki. Recuperado el 21-08-2014 de


http://goo.gl/lo80sQ

Kerry, M. (01-09-2011) Rtc Magazine. Recuperado el 21-08-2014 de


http://goo.gl/vjD7Gd

Pagnucco, M. (01-09-2011) Legolog. Recuperado el 21-08-2014 de


http://goo.gl/WKolMr

Staub, C. (01-01-2014) TUM. Recuperado el 21-08-2014 de http://goo.gl/tFQ3n0

Christiaens, A. (13-06-2013) Christiaens Agro Systems. Recuperado el 21-08-2014


de http://goo.gl/DKEFAc

López, J. (17-03-2011) Ride. Recuperado el 21-08-2014 de http://goo.gl/U0mGFc

Coabham. (29-03-2013) Gadgetstecnología.com. Recuperado el 23-08-2014 de


http://goo.gl/lVqHZZ

Artículo: Vehículo Aéreo no Tripulado (15/08/2014). En Wikipedia, la enciclopedia


libre. Recuperado el 25 de Agosto de 2014 a las 17:00 de http://goo.gl/LLg0v
Programación y
dominios de
aplicación

Inteligencia
Artificial
Programación y dominios de
aplicación
Cuando definimos una arquitectura, hablamos de lenguajes y herramientas
que nos permiten desarrollar programas para nuestros robots. Es por ello
que en este apartado hablaremos de algunos de los lenguajes de
programación para la robótica.

Muchos programas desarrollados para la arquitectura de subsunción fueron


creados utilizando lenguajes de propósito especial, como es el lenguaje
desarrollado por Brooks, en 1990, denominado Lenguaje de
comportamientos (behavior language). Este es un lenguaje de control
basado en reglas y en tiempo real, utilizado para compilar controladores
AFSM. Tiene una sintaxis parecida a Lisp y utiliza el paso de mensajes para la
comunicación entre módulos.

El lenguaje de comportamientos está limitado a AFSMs simples, al igual que


la arquitectura de subsunción. Es por esto que ha surgido un conjunto de
lenguajes mucho más poderosos y rápidos, basados en el lenguaje de
comportamientos. Uno de estos lenguajes es el lenguaje robótico genérico
(Generic Robot Language, o GRL) creado por Horswill en el año 2000. Este
es un lenguaje de programación funcional que permite crear grandes
sistemas de control modulares. Al igual que el lenguaje de
comportamientos, el lenguaje robótico genérico utiliza autómatas finitos
como bloques básicos de construcción.

Según tu criterio y leyendo la bibliografía, ¿qué


extensiones provee el lenguaje robótico genérico
que lo hace más poderoso que el lenguaje de
comportamientos?

Dentro del desarrollo de software robótico concurrente, uno de los


lenguajes más difundidos es RAPS o Sistema de Panificación de Acción
Reactiva (reactive action plan system). RAPS fue creado en 1994 por Firby y
permite que los programadores definan objetivos, planes asociados con
estos objetivos y condiciones bajo las que estos planes pueden llegar a tener
éxito. Con RAPS también es posible manejar los fallos (inevitables) que
pueden producirse en los sistemas robóticos reales. El desarrollador puede
especificar rutinas de decisión para varios tipos de fallo y proporcionar una
rutina de manejo de excepciones para cada tipo. RAPS es muy utilizado en
la capa ejecutiva de los robots construidos con arquitecturas de tres capas
para manejar situaciones que no requieren de planificación.

Hay otros lenguajes, como GOLOG (alGOl in LOGic), que permiten el


aprendizaje y el razonamiento en los robots. GOLOG permite mezclar de
manera clara la resolución deliberativa de problemas (planificación),
conjuntamente con la especificación directa de control reactivo.

GOLOG es un lenguaje que permite desallorral agentes de “alto” nivel y


posee otras variantes como ConGolog (una versión de colog que añade
interrupciones y características de concurrencia) y LeGolog (versión de
Golog que permite desarrollar agentes de alto nivel usando la arquitectura
Lego).

Robot desarrollado en la Universidad de Toronto con una variante de GOLOG denominada


LEGOGOG. (Fuente: Legolog, http://goo.gl/WKolMr)
Según tu criterio y leyendo la bibliografía, ¿cómo es
formulado, a grandes rasgos, un programa en el
lenguaje GOLOG?

CES es otro lenguaje utilizado para el desarrollo de sistemas empotrados.


Éste es un lenguaje extendido de C++ que añade probabilidades y
aprendizaje. El nombre proviene de C++ for Embedded System. CES maneja
los tipos de datos como distribuciones de probabilidad, permitiendo que el
desarrollador realice cálculos con información imprecisa, sin tener que
implementar técnicas probabilísticas. También CES hace posible entrenar el
software robótico, ya que permite dejar “espacios” en el código que son
rellenados por funciones que son aprendidas inductivamente en fases de
entrenamiento explícitas donde el entrador debe especificar el
comportamiento de salida deseado. Para dominios continuos y parcialmente
observables, CES ha demostrado trabajar muy bien.

Una de las mejores herramientas para el desarrollo de sistemas


embebidos, mediante el lenguaje C, es la tecnología Arduino la cual se
compone de una placa de desarrollo y un conjunto de módulos
(denominados Shields) que permiten extender las funcionalidades, muy
facilmente, de nuestro sistema.

Sistema robótico desarrollado con C++ utilizado para minimizar las cirugías invasivas al
corazón. (Fuente: TUM, http://goo.gl/tFQ3n0)
ALisp es un lenguaje, el cual surge como una extensión de Lisp. Mediante
ALisp podemos hacer que un robot aprenda inductivamente la acción
correcta mediante aprendizaje por refuerzo. ALisp permite la incorporación,
de manera flexible, de conocimiento del dominio. ALisp sólo ha sido aplicado
a problemas robóticos en simulación, pero parece ser una metodología
prometedora para construir robots que aprendan a través de la interacción
con el entorno.

Dominios de Aplicación
Del mismo modo en que analizamos de manera genérica la IA, en este
apartado veremos cuáles son los principales campos de aplicación de la
robótica.

Industria y Agricultura
Por lo general, los robots fueron y son desarrollados para llevar a cabo las
tareas que resultan complejas o son muy pesadas para que sean realizadas
por los humanos.

En lo referido a la agricultura, muchas de las máquinas pesadas utilizadas


para sembrar, fumigar, cosechar o excavar han sido transformadas en
robots.

Robot utilizado para cosechar espárragos. (Fuente: Christiaens Agro Systems,


http://goo.gl/DKEFAc)
Otro clásico ejemplo son las líneas de ensamblaje donde los robots realizan
de manera rutinaria las tareas de soldar, pintar, armar, acomodar, etcétera.
En muchas de estas tareas los robots se han hecho más rentables que los
humanos.

Debe quedar claro que, si bien muchos de los sistemas utilizados


actualmente son aún prototipos, solo es cuestión de tiempo para que
remplacen a los humanos en los trabajos o tareas semi-mecanizadas.

Transporte:
En este ámbito tenemos desde helicópteros autónomos, que entregan
objetos a localizaciones inaccesibles, hasta sillas de ruedas automáticas.

Otro claro ejemplo son los robots autónomos que transportan carga, por
ejemplo, desde barcos a camiones en muelles de carga.

Robot Bellbot utilizado para transportar pedidos a las habitaciones de un hotel. (Fuente:
Ride, http://goo.gl/U0mGFc)
Posible escenario de transporte dentro de un hotel para Bellbot. (Fuente: Ride,
http://goo.gl/U0mGFc)

En el aspecto del transporte todavía los robots requieren modificaciones de


su entorno para poder llevar a cabo sus funciones. Estas modificaciones
suelen ser las ayudas para la localización, como lo son faros activos,
etiquetas con códigos de barra o códigos QR y satélites GPS. Es por esto que
todavía es una cuestión “por lograr” el diseño de robots que puedan navegar
en entornos naturales en donde no exista ninguna de las ayudas artificiales
antes mencionadas.
Entornos peligrosos:
Quizás las aplicaciones más reconocidas en este ámbito son los robots
utilizados para limpiar los residuos nucleares en desastres conocidos, como
Chernobyl y Three Mile Island.

Otra aplicación muy conocida es la de los robots utilizados para desactivar


bombas o armamentos peligrosos.

El robot desactiva bombas Teodor Cobham. (Fuente: Gadgetstecnología.com,


http://goo.gl/lVqHZZ)
Exploración:
Es quizás una de las principales aplicaciones de los robots: desde la
exploración del suelo de Marte hasta la exploración submarina, ayudando a
construir mapas de embarcaciones hundidas.

Actualmente, los Drones (vehículos aéreos no tripulados) son utilizados para


realizar todo tipo de operaciones militares.

Es decir que los robots son la herramienta ideal para recabar información en
ámbitos peligrosos o de difícil acceso.

El Dron Fulmar fabricado por Aerovisión durante un vuelo de reconocimiento. (Fuente:


Wikipedia, http://goo.gl/LLg0v)
Bibliografías de referencia
Russell, S. J. y Norvig, P. (2004) Inteligencia artificial un enfoque moderno (2ª ed.)
Madrid: Prentice Hall.

Brooks, R. A. (1986). A robust layered control System for a mobile robot. IEEE
Journal o f Robotics and Automation, 2, 14-23.

Horswill. I. (2000). Functional programming of behavior-based systems.


Autonomous Robots, 9, 83-93.

Firby, J. (1994). Task networks for controlling continuous processes. In H am m on


d, K. (E d .), Proceedings o f the Second International Conference on Al Planning
Systems, pp. 49-54, Menlo Park: CA. AAAI Press.

García, P. (23-10-2010) Curso de robotica II. Recuperado el 21-08-2014 de


http://goo.gl/4MeXf2

Boerema, C. (07-04-2011) Beam Wiki. Recuperado el 21-08-2014 de


http://goo.gl/RqUP0P

Akin, H. (15-11-2010) Pm Wiki. Recuperado el 21-08-2014 de


http://goo.gl/lo80sQ

Kerry, M. (01-09-2011) Rtc Magazine. Recuperado el 21-08-2014 de


http://goo.gl/vjD7Gd

Pagnucco, M. (01-09-2011) Legolog. Recuperado el 21-08-2014 de


http://goo.gl/WKolMr

Staub, C. (01-01-2014) TUM. Recuperado el 21-08-2014 de http://goo.gl/tFQ3n0

Christiaens, A. (13-06-2013) Christiaens Agro Systems. Recuperado el 21-08-2014


de http://goo.gl/DKEFAc

López, J. (17-03-2011) Ride. Recuperado el 21-08-2014 de http://goo.gl/U0mGFc

Coabham. (29-03-2013) Gadgetstecnología.com. Recuperado el 23-08-2014 de


http://goo.gl/lVqHZZ

Artículo: Vehículo Aéreo no Tripulado (15/08/2014). En Wikipedia, la enciclopedia


libre. Recuperado el 25 de Agosto de 2014 a las 17:00 de http://goo.gl/LLg0v

Vous aimerez peut-être aussi