Inteligencia Artificial
Inteligencia Artificial
Introducción.
La Inteligencia Artificial es una combinación de la ciencia del computador, fisiología y filosofía, tan
general y amplio como eso, es que reúne varios campos (robótica, sistemas expertos, por
ejemplo), todos los cuales tienen en común la creación de máquinas que pueden "pensar".
La idea de construir una máquina que pueda ejecutar tareas percibidas como requerimientos de
inteligencia humana es un atractivo. Las tareas que han sido estudiadas desde este punto de vista
incluyen juegos, traducción de idiomas, comprensión de idiomas, diagnóstico de fallas, robótica,
suministro de asesoría experta en diversos temas.
Es así como los sistemas de administración de base de datos cada vez más sofisticados, la
estructura de datos y el desarrollo de algoritmos de inserción, borrado y locación de datos, así
como el intento de crear máquinas capaces de realizar tareas que son pensadas como típicas del
ámbito de la inteligencia humana, acuñaron el término Inteligencia Artificial en 1956.
1
I. Nociones y Antecedentes Históricos de Inteligencia Artificial.
Desde sus comienzos hasta la actualidad, la Inteligencia Artificial ha tenido que hacer frente a una
serie de problemas:
- Los computadores no pueden manejar (no contienen) verdaderos significados.
- Los computadores no tienen autoconciencia (emociones, sociabilidad, etc.).
- Un computador sólo puede hacer aquello para lo que está programado.
- Las máquinas no pueden pensar realmente.
En 1843, Lady Ada Augusta Byron, patrocinadora de Charles Babbage planteó el asunto de si la
máquina de Babbage podía "pensar".
Los primeros problemas que se trató de resolver fueron puzzles, juegos de ajedrez, traducción de
textos a otro idioma.
Durante la II Guerra Mundial Norbert Wiener y John Von Neumann establecieron los principios de
la cibernética en relación con la realización de decisiones complejas y control de funciones en
máquinas.
En el año 1955 Herbert Simon, el físico Allen Newell y J.C. Shaw, programador de la RAND Corp. y
compañero de Newell, desarrolla el primer lenguaje de programación orientado a la resolución de
problemas de la Inteligencia Artificial, el IPL-11. Un año más tarde estos tres científicos desarrollan
el primer programa de Inteligencia Artificial al que llamaron Logic Theorist, el cual era capaz de
demostrar teoremas matemáticos, representando cada problema como un modelo de árbol, en el
que se seguían ramas en busca de la solución correcta, que resultó crucial. Este programa
demostró 38 de los 52 teoremas del segundo capítulo de Principia Mathematica de Russel y
Whitehead.
En 1956, con la ahora famosa conferencia de Dartmouth, organizada por John McCarthy y en la
cual se utilizó el nombre de inteligencia artificial para este nuevo campo, se separó la Inteligencia
Artificial de la ciencia del computador, como tal. Se estableció como conclusión fundamental la
posibilidad de simular inteligencia humana en una máquina.
En 1957 Newell y Simon continúan su trabajo con el desarrollo del General Problems Solver
(GPS). GPS era un sistema orientado a la resolución de problemas; a diferencia del Logic
Theorist, el cual se orientó a la demostración de teoremas matemáticos, GPS no estaba
programado para resolver problemas de un determinado tipo, razón a la cual debe su nombre.
2
Resuelve una gran cantidad de problemas de sentido común, como una extensión del principio de
retroalimentación de Wiener.
Diversos centros de investigación se establecieron, entre los más relevantes están, la Universidad
Carnegie Mellon, el Massachusetts Institute of Technologie (MIT), encabezado por Marvin Minsky,
la Universidad de Standford e IBM. Los temas fundamentales eran el desarrollo de heurísticas y el
aprendizaje de máquinas.
En 1957 McCarthy desarrolló el lenguaje LISP. La IBM contrató un equipo para la investigación en
esa área y el gobierno de USA aportó dinero al MIT también para investigación en 1963.
En el mismo período de tiempo hay trabajos importantes de Herbert Gelernter, de IBM, quien
desarrolla un "Demostrador Automático de Teoremas de la Geometría", Alex Bernstein desarrolla
un programa para el juego de ajedrez que se considera el antecedente para "Deep Blue".
En 1961 se desarrolla SAINT (Simbolic Automatic INTegrator) por James Slagle el cual se orienta a
la demostración simbólica en el área del álgebra.
En 1964 Bertrand Raphael construye el sistema SIR (Semantic Information Retrieval) el cual era
capaz de comprender oraciones en inglés.
A continuación un ejemplo, traducido, de interacción entre SIR y un usuario:
En la década del 60 se comienza en el MIT el estudio de la visión artificial, lo cual implica no solo
captar imágenes a través de una cámara, sino también la comprensión, de lo que estas imágenes
representan.
3
Un resultado importante en este trabajo lo constituye el "mundo de micro-bloques", en el cual un
robot era capaz de percibir un conjunto de bloques sobre una mesa, moverlos y apilarlos; el éxito
se debió a los investigadores Larry Roberts, Gerald Sussman, Adolfo Guzman, Max Clowes, David
Huffman, David Waltz, Patrick Winston, y Berthold Horn.
4
SCHRDLU: No
Usuario: ¿Poseo algo de la caja?
SCHRDLU: Si, dos cosas: El bloque azul y la pirámide azul.
Aunque parezca impresionante la capacidad del sistema para razonar y ejecutar acciones, no se
debe perder de vista el hecho que el robot se mueve en un mundo muy simple de figuras
geométricas, y que las relaciones entre ellas son muy limitadas. En el mundo real existen tantos
objetos diferentes y relaciones entre ellos, que tratar de llevar este sistema a un entorno real
resulta prácticamente imposible.
Este trabajo constituye la base de las redes neuronales de hoy en día, sin embargo a raíz de su
desarrollo sufrió fuertes críticas por parte de Marvin Minsky
y Seymour Papert lo cual provocó que la mayoría de los investigadores interesados en el tema lo
abandonarán, y este no se retomara hasta los años 80.
En 1965-70, comenzaron a aparecer los programas expertos, que predicen la probabilidad de una
solución bajo un set de condiciones, entre esos proyectos estuvo: DENDRAL, que asistía a
químicos en estructuras químicas complejas euclidianas; MACSYMA, producto que asistía a
ingenieros y científicos en la solución de ecuaciones matemáticas complejas, etc.
En la década 1970-80, creció el uso de sistemas expertos, muchas veces diseñados para
aplicaciones médicas y para problemas realmente muy complejos como MYCIN, que asistió a
médicos en el diagnóstico y tratamiento de infecciones en la sangre. Otros son: R1/XCON, PIP,
ABEL, CASNET, PUFF, INTERNIST/CADUCEUS, etc. Algunos permanecen hasta hoy.
De 1975 en adelante, comienza la era de los lenguajes expertos (shells) como EMYCIN, EXPERT,
OPSS, etc. para luego tratar de que éstos sean más amigables y funcionales.
Las definiciones de Inteligencia Artificial son muchas, pero podría decirse que son programas que
realizan tareas que si fueran hechas por humanos se considerarían inteligentes.
Estos programas obviamente corren en un computador y se usan, como por ejemplo, en control
robótico, comprensión de lenguajes naturales, procesamiento de imágenes basado en
conocimientos previos, estrategias de juegos, etc. reproduciendo la experiencia que un humano
adquiriría y de la forma en que un humano lo haría.
Para clasificar las máquinas como "pensantes", es necesario definir qué es inteligencia y qué grado
de inteligencia implica resolver problemas matemáticos complejos, hacer generalizaciones o
relaciones, percibir y comprender. Los estudios en las áreas del aprendizaje, del lenguaje y de la
percepción sensorial han ayudado a los científicos a definir a una máquina inteligente. Importantes
desafíos han sido tratar de imitar el comportamiento del cerebro humano, con millones de neuronas
y extrema complejidad.
5
Características de la Inteligencia Artificial.
1) Una característica fundamental que distingue a los métodos de Inteligencia Artificial de los
métodos numéricos es el uso de símbolos no matemáticos, aunque no es suficiente para
distinguirlo completamente. Otros tipos de programas como los compiladores y sistemas de
bases de datos, también procesan símbolos y no se considera que usen técnicas de
Inteligencia Artificial.
Las conclusiones de un programa declarativo no son fijas y son determinadas parcialmente por
las conclusiones intermedias alcanzadas durante las consideraciones al problema específico.
Los lenguajes orientados al objeto comparten esta propiedad y se han caracterizado por su
afinidad con la Inteligencia Artificial.
4) Aplicabilidad a datos y problemas mal estructurados, sin las técnicas de Inteligencia Artificial
los programas no pueden trabajar con este tipo de problemas. Un ejemplo es la resolución de
conflictos en tareas orientadas a metas como en planificación, o el diagnóstico de tareas en un
sistema del mundo real: con poca información, con una solución cercana y no necesariamente
exacta.
La Inteligencia Artificial incluye varios campos de desarrollo tales como: la robótica, usada
principalmente en el campo industrial; comprensión de lenguajes y traducción; visión en máquinas
que distinguen formas y que se usan en líneas de ensamblaje; reconocimiento de palabras y
aprendizaje de máquinas; sistemas computacionales expertos.
Los sistemas expertos, que reproducen el comportamiento humano en un estrecho ámbito del
conocimiento, son programas tan variados como los que diagnostican infecciones en la sangre e
indican un tratamiento, los que interpretan datos sismológicos en exploración geológica y los que
configuran complejos equipos de alta tecnología.
Tales tareas reducen costos, reducen riesgos en la manipulación humana en áreas peligrosas,
mejoran el desempeño del personal inexperto, y mejoran el control de calidad sobre todo en el
ámbito comercial.
Diferentes teorías:
Diferentes metodologías:
6
1) La lógica difusa: permite tomar decisiones bajo condiciones de incerteza.
2) Redes neuronales: esta tecnología es poderosa en ciertas tareas como la clasificación y el
reconocimiento de patrones. Está basada en el concepto de "aprender" por agregación de un
gran número de muy simples elementos.
Este modelo considera que una neurona puede ser representada por una unidad binaria: a cada
instante su estado puede ser activo o inactivo. La interacción entre las neuronas se lleva a cabo a
través de sinapsis. Según el signo, la sinapsis es excitadora o inhibidora.
El perceptrón está constituido por las entradas provenientes de fuentes externas, las conexiones y
la salida. En realidad un perceptrón es una Red Neuronal lo más simple posible, es aquella donde
no existen capas ocultas.
Para cada configuración de los estados de las neuronas de entrada (estímulo) la respuesta del
perceptrón obedece a la siguiente dinámica: se suman los potenciales sinápticos y se comparan
con un umbral de activación. Esta suma ponderada es también llamada campo. Si el campo es
mayor que un umbral, la respuesta de la neurona es activa, si no, es inactiva.
Con una arquitectura tan simple como la del perceptrón no se puede realizar más que una clase de
funciones "booleanas" muy simples, llamadas linealmente separables. Son las funciones en las
cuales los estados de entrada con salida positiva pueden ser separados de aquellos a salida
negativa por un hiperplano. Un hiperplano es el conjunto de puntos en el espacio de estados de
entrada, que satisfacen una ecuación lineal. En dos dimensiones, es una recta, en tres
dimensiones un plano, etc.
Si se quieren realizar funciones más complejas con Redes Neuronales, es necesario intercalar
neuronas entre las capas de entradas y de salida, llamadas neuronas ocultas. Una red multicapas
puede ser definida como un conjunto de perceptrones, ligados entre si por sinapsis y dispuestos en
capas siguiendo diversas arquitecturas. Una de las arquitecturas más comúnmente usada es
llamada feedforward: con conexiones de la entrada a las capas ocultas y de éstas hacia la salida.
7
I.1. Objetivos de la Investigación en Inteligencia Artificial.
Otros investigadores están trabajando en el reto del reconocimiento de patrones donde se espera
un rápido progreso en este campo que abarca la comprensión y la síntesis del habla, el proceso de
imágenes y la visión artificial.
- deducción, que permite obtener conclusiones de reglas cuyas premisas hemos comprobado
- inducción que produce reglas a partir de observaciones parciales.
Estos dos tipos principales pueden utilizarse de un modo analítico (el razonamiento se divide en
submódulos que son más difíciles de manejar, o de un modo sintético (inverso del proceso anterior,
juntando elementos que se separaron anteriormente).
La inducción puede tener lugar cuando se comparan situaciones que son casi similares, con
parámetros desconocidos en una situación dada asignándole los valores que tienen ya en una
situación de referencia; este es un razonamiento por analogía.
Los métodos para razonar son variados. La iteración significa repetir la misma secuencia de
razonamiento hasta que se alcance una condición de final; la recursión consiste en una forma
particular del razonamiento que se llama a sí misma, como aquellas muñecas rusas que están
unas dentro de otras, hasta llegar a un problema simple que es fácil de resolver.
8
I.2. Símbolos vs. Métodos Numéricos.
La Programación Lógica tiene sus orígenes más cercanos en los trabajos de J. A. Robinson que
propone en 1965 una regla de inferencia a la que llama resolución, mediante la cual la
demostración de un teorema puede ser llevada a cabo de manera automática.
La resolución es una regla que se aplica sobre cierto tipo de fórmulas del Cálculo de Predicados de
Primer Orden, llamadas cláusulas y la demostración de teoremas bajo esta regla de inferencia se
lleva a cabo por reducción al absurdo.
Otros trabajos importantes de esa época que influyeron en la programación lógica, fueron los de
Loveland, Kowalski y Green, que diseña un probador de teoremas que extrae de la prueba el valor
de las variables para las cuales el teorema es válido.
Estos mecanismos de prueba fueron trabajados con mucho entusiasmo durante una época, pero,
por su ineficiencia, fueron relegados hasta el nacimiento de Prolog, que surge en 1971 en la
Universidad de Marsella, Francia.
Actualmente, la programación lógica ha despertado un creciente interés que va mucho más allá del
campo de la Inteligencia Artificial y sus aplicaciones. Los japoneses, con sus proyectos de
máquinas de la quinta generación, dieron un gran impulso a este paradigma de programación.
La Lógica de Primer Orden, es uno de los formalismos más utilizados para representar
conocimiento en Inteligencia Artificial. La Lógica cuenta con un lenguaje formal mediante el cual es
posible representar fórmulas llamadas axiomas, que permiten describir fragmentos del
conocimiento y, además consta de un conjunto de reglas de inferencia que aplicadas a los
axiomas, permiten derivar nuevo conocimiento.
El Alfabeto del Lenguaje de la Lógica de Primer Orden contiene dos tipos de símbolos:
a) Símbolos lógicos, entre los que se encuentran los símbolos de constantes proposicionales true
y false; los símbolos de operadores proposicionales para la negación, la conjunción, la
disyunción y las implicaciones (=>, <=); los símbolos de operadores de cuantificación como el
cuantificador universal; el cuantificador existencial; y los símbolos auxiliares de escritura como
corchetes [,], paréntesis (,) y coma.
9
A partir de estos símbolos se construyen las expresiones válidas en el Lenguaje de Primer Orden:
los términos y las fórmulas.
Un término es cualquiera de las tres expresiones siguientes: una constante, por ejemplo, el
número "100", la palabra "alfredo" y la letra "c"; o una variable, por ejemplo, "X" o bien una
expresión de la forma "f(t1,...,tn)" donde "f" es un símbolo de función n-aria y t1,...,tn son términos.
Ejemplos de funciones son: f(100,X), padre(Y) y sucesor(X).
Esta última establece una regla que dice que, si X tiene fiebre y cefalea (dolor de cabeza), X debe
tomar una aspirina.
El Lenguaje de Primer Orden posee un amplio poder de expresión, los términos permiten nombrar
los objetos del universo, mientras que las fórmulas permiten afirmar o negar propiedades de éstos
o bien establecen las relaciones entre los objetos del universo.
Puede decirse que la Programación Lógica utiliza la Lógica de Primer Orden como lenguaje de
programación. Prolog es un ejemplo de lenguaje basado en la Lógica de Primer Orden y aunque
toma su nombre de este término ("PROgramming in LOGic"), no abarca toda la riqueza de la
Lógica de Primer Orden para resolver problemas, pues está restringido al uso de cierta clase de
fórmulas denominadas cláusulas definidas o cláusulas de Horn.
Un programa lógico está formado por un conjunto finito de cláusulas de programa que son hechos
o reglas. Por ejemplo:
padre(luis,miguel). hecho
padre(miguel,jose). hecho
padre(jose,juan). hecho
abuelo(X,Y):-padre(X,Z), padre(Z,Y). regla
Este programa está formado por cuatro cláusulas de programa, las tres primeras son del tipo hecho
y definen la relación padre/2 y la cuarta una regla que define la relación abuelo/2. Nótese el uso de
las variables X,Y y Z en esta cláusula, las cuales permiten definir de manera general en Prolog la
relación "ser abuelo de", pues la lectura declarativa de dicha cláusula es la siguiente: "Para
cualesquiera X,Y,Z se cumple que: X abuelo de Y, si X padre de Z y Z padre de Y".
En Prolog es posible hacer preguntas sobre objetos y relaciones del dominio y estas preguntas se
formulan como objetivos o metas, que son evaluadas por el intérprete de Prolog utilizando su
mecanismo de inferencia interno, el cual determina si la meta a demostrar es una consecuencia
lógica del programa, aplicando reglas de deducción para obtener la respuesta.
Por ejemplo, del programa anterior, utilizando la cláusula de tipo meta ?abuelo(X,juan), para
preguntar ¿quién es el abuelo de Juan? o bien ¿quiénes son los abuelos de Juan?, es posible
deducir que Luis es abuelo de Juan, aunque implícitamente no existe en el programa ningún hecho
que así lo afirme.
En este caso la ejecución del programa, para dicha meta, arrojaría como resultado que X=luis.
El método de deducción utilizado por Prolog, para dar respuesta a los objetivos planteados, se
basa en el uso de una única regla de inferencia: el Principio de Resolución.
10
Los primeros trabajos de prueba automática de teoremas utilizaban la resolución, aplicada a
cláusulas cualesquiera, pero el problema de las deducciones con cláusulas generales es el gran
número de combinaciones posibles para llevar a cabo las resoluciones.
Por ello Prolog restringe el conjunto de cláusulas, lo que le permite llevar a cabo una prueba
dirigida y, en la mayoría de los casos, con un universo de posibilidades explorable en tiempo de
ejecución.
11
I.3. Algoritmos.
Cuando una tarea se realiza por medio de un algoritmo perfectamente definido de almacenamiento,
clasificación o cálculo, lo puede hacer un computador. Este concepto de algoritmo, secuencial, fijo
y de determinadas operaciones, es incapaz de manejar problemas donde el camino del
razonamiento es variable y donde deben afrontarse situaciones diversas sin haber sido
especificadas.
La Inteligencia Artificial hace uso de un tipo de lenguaje diferente como es el caso de LISP y
PROLOG.
En 1932, Cannon visualizó la evolución natural como un proceso de aprendizaje. Alan Turing
reconoció, en 1950, que debe haber una conexión obvia entre el aprendizaje de máquina y la
evolución, y señaló que se podrían desarrollar programas para jugar ajedrez usando esta técnica.
Campbell conjeturó en 1960 que en todos los procesos que llevan a la expansión del conocimiento,
se involucra un proceso ciego de variación y supervivencia selectiva.
Los primeros intentos de aplicar de manera formal la teoría de la evolución, a problemas prácticos
de ingeniería, apareció en las áreas de control de procesos estadísticos, aprendizaje de máquina y
optimización de funciones. Tal vez el primer intento serio de este tipo se dio en el trabajo que
realizaron Box y sus colegas en 1957, en el desarrollo de una técnica que denominaron operación
evolutiva, la cual se aplicó a una planta de manufactura, y que se implanto sobre la base de los
votos de un comité de jefes técnicos. Bajo este esquema, la calidad del producto avanzaba a
través de mutaciones aleatorias y la selección era determinada por el comité.
Por su parte, Friedberg intentó, en 1958, hacer que un programa en lenguaje máquina se mejorara
a sí mismo, seleccionando instrucciones que se asociaran más frecuentemente con un resultado
exitoso. Aunque Friedberg nunca mencionó explícitamente estar simulando la evolución natural,
esa es la interpretación más comúnmente aceptada de su trabajo, y a pesar de que tuvo cierto
éxito evolucionando manipuladores de bits y determinando las interconexiones de una caja negra
de 1400 terminales, la comunidad de Inteligencia Artificial de la época prestó poca atención a su
trabajo. Por ejemplo, Minsky lo criticó duramente, argumentando que una búsqueda puramente
aleatoria era mucho mejor que el algoritmo de Friedberg.
Barricelli ofreció, en 1954, una de las primeras simulaciones que usaba principios evolutivos,
utilizando los mismos procedimientos generales que se usan hoy en día en la disciplina conocida
como vida artificial. Sin embargo, en este trabajo, así como el que Reed realizó posteriormente en
1967, se concluyó que la cruza no parecía mejorar la velocidad de la adaptación selectiva, y el
operador primordial era la mutación.
Fue Fogel el que introdujo la primera técnica evolutiva que realmente funcionó más o menos dentro
de los lineamientos actuales de la computación evolutiva. Su programación evolutiva consistía en
hacer evolucionar autómatas de estados finitos por medio de mutaciones. Fogel introdujo los
importantes conceptos de población y selección, y aunque las revisiones iniciales de su trabajo
fueron favorables, algunos investigadores, como Solomonoff, enfatizaron que el método de Fogel
no debía verse en su estado actual (en 1966) como algo particularmente útil para resolver
12
problemas, a excepción de los más simples posibles. Solomonoff vio a la programación evolutiva
como una especie de búsqueda escalando la colina modelada mediante autómatas, y otros
investigadores como Holland, Kieras, Rada y Lenat compartieron esa opinión.
Aunque el australiano Fraser propuso, desde fines de los 50, un procedimiento muy similar al que
John Holland llamó planes evolutivos a fines de los 60, es al segundo al que se le suele atribuir la
creación de la técnica que se conoce como algoritmo genético, a raíz de que Holland publicara el
libro “Adaptation in Natural and Artificial Systems” en 1975.
La principal diferencia del algoritmo genético con las técnicas antes mencionadas, es que utiliza la
cruza como operador principal y a la mutación como operador secundario (e incluso opcional). El
algoritmo genético, al igual que las redes neuronales, funciona como una caja negra que recibe
ciertas entradas y produce (tras una cantidad de tiempo indeterminada) las salidas deseadas. Sin
embargo, a diferencia de éstas, los algoritmos genéticos no necesitan entrenarse con ejemplos de
ningún tipo, sino que son capaces de generar sus propios ejemplos y contraejemplos que guíen la
evolución a partir de poblaciones iniciales totalmente aleatorias.
Los mecanismos de selección del más apto y de reproducción sexual del algoritmo genético, son
los encargados de preservar las características más adecuadas de cada individuo a fin de hacer
converger a la población en soluciones óptimas.
Los algoritmos genéticos se distinguen también por no quedar atrapados fácilmente en mínimos
locales, como la mayor parte de las técnicas de búsqueda clásicas, además de usar operadores
probabilísticos más robustos que los operadores determinísticos, que las otras técnicas suelen
usar.
No obstante, siendo una heurística, tampoco pueden garantizar encontrar siempre la solución
óptima, si bien la experiencia acumulada hasta la fecha parece demostrar que, cuando se utilizan
apropiadamente, pueden proporcionar soluciones muy aceptables y, en la mayoría de los casos,
superiores a las encontradas con otras técnicas de búsqueda y optimización.
Aunque aún atacados por algunos sectores de la comunidad de Inteligencia Artificial, los algoritmos
genéticos, al igual que las redes neuronales, se han ido ganando poco a poco, y sobre la base de
la efectividad de sus resultados en aplicaciones prácticas, el reconocimiento de los investigadores
como una técnica efectiva en problemas de gran complejidad, como lo demuestra un número
creciente de conferencias y publicaciones especializadas alrededor del mundo, en los últimos años.
13
I.4. Base de Conocimiento. Sistemas Basados en Conocimiento.
La aplicación de estas ideas dio lugar al desarrollo de los denominados Sistemas Basados en
Conocimiento (Knowledge Based Systems) y al aparecimiento de la Ingeniería Cognoscitiva, como
una rama de la Inteligencia Artificial, que estudia los sistemas basados en el conocimiento. La
definición de un sistema basado en conocimiento puede ser la siguiente:
La solución es esencialmente la misma que hubiera dado un ser humano confrontado con idéntico
problema, aunque no necesariamente el proceso seguido por ambos puede ser igual.
El simple concepto dado, puede causar confusión ya que muchos sistemas basados en programas
convencionales podrían ser incorrectamente categorizados como sistemas basados en
conocimiento. Esta inconsistencia puede ser aclarada, sobre la base de tres conceptos
fundamentales que distinguen a los sistemas basados en conocimiento de los programas
algorítmicos convencionales y de los programas generales basados en búsqueda:
14
I.4.1 Experiencia, Habilidades y Conocimiento.
Los tipos de experiencia que son de interés en los sistemas basados en conocimiento, pueden ser
clasificados en tres categorías: asociativa, motora y teórica.
Puede ser que no se comprenda exactamente lo que ocurre al interior de un sistema (caja negra),
pero se pueden asociar entradas o estímulos con salidas o respuestas, para resolver problemas
que han sido previamente conocidos.
La experiencia teórica y el conocimiento profundo permite que los humanos puedan resolver
problemas que no se han visto antes, es decir, no existe una posibilidad asociativa. El
conocimiento teórico y profundo se adquiere a través de estudio y entrenamiento formal, así como
por medio de la resolución directa de problemas.
Debido a su naturaleza teórica, este conocimiento se puede olvidar fácilmente, a no ser que se use
en forma continua. Al momento, los sistemas convencionales basados en conocimiento tienen
muchas dificultades para duplicar este tipo de experiencia. Sin embargo, los Sistemas de
Razonamiento Basado en Modelos representan un notable intento de encapsular este
conocimiento profundo y razonar con él.
15
Estructura de un sistema basado en conocimiento
La segunda parte es el sistema que realiza la función de razonamiento para resolver problemas
(Motor de Inferencia). Finalmente, la tercera parte la conforman las unidades de entrada y salida
que permiten la comunicación entre el sistema y su entorno.
El lenguaje de programación debe ser adecuado, se usan principalmente el LISP y PROLOG, que
difieren de los lenguajes clásicos en que sus reglas (que también contienen hechos) entran
masivamente, y que el programa, es decir, el motor de inferencia, encontrará el camino a través de
reglas.
Por otra parte, la programación procedural consiste en una cuidadosa descripción de los algoritmos
que marcan el camino de los diferentes procedimientos y funciones en los programas.
Estos dos modos de programación son teóricamente iguales, pero en la práctica difieren.
Las ventajas en los sistemas expertos es la modularidad, no hay un solo camino para responder a
un problema y son fáciles de leer, lo que simplifica comprobar su consistencia.
16
Fases en la adquisición del conocimiento:
Desde el punto de vista tecnológico, los Sistemas Basados en Conocimiento pueden presentar
varias formas de aplicación:
• Aislada: un Sistema Basado en Conocimiento único se relaciona con el entorno.
• Integrada: varios Sistemas Basados en Conocimiento conectados a bases de
conocimiento comunes. Tipo Front-End cuando todos los hechos y datos están físicamente
en la base común. Tipo Back-End cuando los hechos y datos necesarios que no estén en
las bases comunes, pueden obtenerse de otros SBC.
• Embebida: un Sistema Basado en Conocimiento está integrado con otros sistemas y no se
lo distingue.
17
I.5. Motor de Inferencia.
Un motor de inferencia interpreta y evalúa los hechos en la base de conocimientos para proveer
una respuesta. Este debe ser independiente del conocimiento y de los hechos. Se puede
caracterizar por:
En un sistema experto, dado un estado particular de la base de datos, se deben reconocer las
reglas aplicables y esto se llama filtrado o identificación de patrones, operación especialmente
larga, ya que muchos sistemas realizan una preselección de las reglas antes de que comience la
identificación propiamente tal. Es decir, se considera un subconjunto de reglas y entre éstas, las
aplicables. Esto, es lo que se llama restricción.
Adicionalmente puede existir una Base de Datos con información puntual sobre problemas
específicos anteriormente resueltos por el sistema, y que se usa como información adicional en el
proceso de inferencia.
Una vez que las reglas han sido reconocidas deben ser elegidas, dependiendo de la estrategia de
control, que es la selección.
Al módulo central del sistema experto que maneja estas tres operaciones se le denomina motor de
inferencia o intérprete de reglas. Hay diversos tipos de motores de inferencia según los métodos
con que se manejan las tres operaciones precedentes.
Identificación de patrones.
Esta operación determina cuáles son las reglas potencialmente aplicables en un estado dado de la
base de datos.
Hay ciertos métodos típicos para resolver problemas mediante Inteligencia Artificial como:
descomposición de problemas, inferencia deductiva, deducción lógica, etc.
No es necesario que la búsqueda se aplique a todas las reglas, el sistema de control puede decidir
cuáles no son necesarias a ese nivel.
18
El filtrado significa tener el conocimiento para encontrar las reglas cuya precondición se satisfaga.
Se debe comparar por tanto la precondición con la base de datos. Si es una regla deductiva "si
premisa entonces conclusión", la parte a ser probada de la regla, se llama disparador o activador
(tigger) es siempre una fórmula bien formada ya sea de lógica proposicional o de lógica de primer
orden. Puede aplicarse a cualquier hecho.
Los procesos de identificación de patrones pueden mejorarse examinando, dentro del activador de
cada regla, primero los predicados con más restricciones, es decir, los que tienen el menor número
de variables libres. Otra forma de proceder es que, para cada regla o parte de su activador, se
guarda en la memoria el resultado de las posibles unificaciones para cada parte del activador.
Después de cada ciclo del motor de inferencia, esta memoria se actualiza y se denomina filtrado
por propagación.
Después de la fase de filtrado, cuando una regla está reconocida como aplicable, teniendo en
cuenta la base de datos existente, solo resta ejecutarla. Si hay varias posibles reglas, la elección la
realiza la estrategia de control.
La conclusión de la regla tiene por objeto modificar la base de conocimiento, creando, modificando
o suprimiendo un hecho.
La fase de restricción.
En un sistema dirigido por los datos, el filtrado consiste en retener todas las reglas cuyas premisas
son verdaderas teniendo en cuenta los hechos (verdaderos) presentes en la base de datos. Este
sistema funciona en encadenamiento hacia delante.
Si el sistema es a la vez dirigido por los datos y por los objetivos, se denomina mixto.
La restricción también puede estar especificado explícitamente por el experto para utilizar reglas
dentro de las reglas, es decir, meta reglas. Indica qué grupo de reglas debe ser retenido, por
prioridad, o definir un orden en los subconjuntos de las reglas.
El conocimiento puede organizarse en forma de red como en las redes semánticas utilizadas en el
análisis sintáctico del lenguaje. Su posición dentro de la red dirige las restricciones utilizando
heurísticas. Esta formulación es particularmente eficiente si se establece válidamente una
organización jerárquica del conocimiento, en este caso existiría una taxonomía de los hechos.
Otro modo de gobernar las restricciones es organizar las reglas en paquetes o esquemas, lo que
genera una estructura de árbol en reglas, lo que es una ventaja.
La fase de selección.
Como después de las fases anteriores quedan varias reglas se debe seleccionar una y luego de
procesada el programa debe saber dónde volver.
- La búsqueda en anchura, que elige una, generalmente la primera y se van ejecutando por turno
antes de comprobar que se ha alcanzado la condición final. Si no es así se inicia otro ciclo del
motor de inferencia. Este tipo de búsqueda es exhaustiva y la usa el sistema experto MYCIN.
19
- Otra estrategia es la de elegir una regla entre las aplicables por medio de una heurística,
procesarla y modificar la base de datos. Si no se alcanza la condición final, comienza otro ciclo
del motor de inferencia. Es por lo tanto, una estrategia en profundidad.
Cada una de las estrategias pueden ser irrevocables o avanzar por prueba y error.
Muchos sistemas efectúan marcha atrás, si no hay regla aplicable, pero si el sistema está bajo un
control irrevocable se detendrá.
o bien:
(CONJUNTO_DE_PREMISAS) CONSECUENCIA
Afirmación:
o bien:
En este caso CATEDRÁTICO y DOCTOR representan de nuevo relaciones que deben estar
representadas sobre el sistema.
Como todo sistema informático los SE pueden operar sobre un conjunto finito de elementos, para
esto es necesario definir el universo de trabajo dentro del cual probaremos nuestras reglas. Sobre
esta base la definición de la relación SER CATEDRÁTICO o CATEDRÁTICO, según sea la
representación usada, debe hacerse puntualmente para cada individuo del universo, por ejemplo:
CATEDRÁTICO("Mario Pérez")
CATEDRÁTICO("Manuel Fernández")
20
CATEDRÁTICO("Maria González")
Para extraer una conclusión, o inferencia, se hace necesario, antes que nada, saber el objetivo a
satisfacer, o problema a resolver. Este problema se plantea en forma de objetivo que se toma por
el Motor de Inferencia el cual a través de la activación y encadenamiento de reglas trata de llegar a
una solución. Al seguir con el ejemplo:
Objetivo:
"Es Mario Pérez Doctor"?
Solución:
Al aplicar la regla: SI (x ES CATEDRÁTICO) ENTONCES (x ES DOCTOR)
Encadenamientos de reglas:
Se produce cuando el objetivo propuesto al sistema hace que se ejecute una regla, y la conclusión
obtenida permite que se ejecute otra, y así sucesivamente hasta llegar a una respuesta, positiva o
negativa. El punto final se detecta cuando no se pueden producir más encadenamientos, por
ejemplo cuando se llega a un axioma.
Por ejemplo:
Al evaluar el objetivo: "Mario Pérez es Jefe_Dpto"?, se dispara la regla (1), la cual a su vez se
encadena con la (2), en este momento no se pueden producir más encadenamientos pues la regla
(2) es un axioma. Llegado a este punto el Motor de Inferencia retrocede y da una respuesta
positiva a la pregunta.
Consiste en, dado un objetivo, buscar una regla que permita establecer dicha conclusión, el
proceso se repite hasta encadenar con la regla cuya conclusión satisfaga el objetivo propuesto, o
se detecte que dicho problema no se puede resolver positivamente. Por ejemplo para averiguar si
21
"Mario Pérez es doctor" se busca un regla que tenga esta afirmación en sus consecuencias.
Analizando las reglas anteriores vemos que la regla:
Satisface estas condiciones; siguiendo esta regla hacia atrás tenemos que buscar una nueva que
permita validar si "Mario Pérez" es catedrático, lo cual se hace con el axioma (2).
Los encadenamientos constituyen, de esta manera, una de las herramientas fundamentales del
Motor de Inferencia; el Lenguaje PROLOG solamente soporta el encadenamiento hacia atrás, el
cual constituye el más frecuentemente implementado.
22
II. Sistemas Expertos como Sistemas de Información
Orientados al Servicio.
Los hechos para una base de conocimiento deben ser adquiridos a partir de
experiencias humanas a través de entrevistas y observaciones. Este conocimiento
es usualmente representada en la forma de reglas "if-then" (reglas de producción):
" si alguna condición es verdadera, entonces la siguiente inferencia puede ser
hecha (o alguna acción tomada)". La base de conocimientos de un sistema
experto mejor incluye miles de reglas. Un factor de probabilidad es con frecuencia
unido a las conclusiones de cada regla de producción, porque la conclusión no es
una certeza.
Por ejemplo, un sistema para el diagnóstico de enfermedades del ojo debe indicar,
basado en información que apoye esto, un 90% de probabilidad de que una
persona tiene glaucoma, y este puede también listar conclusiones con más bajas
posibilidades.
23
credibilidad de su recomendación y es útil como una herramienta de aprendizaje
para estudiantes.
Los expertos humanos frecuentemente emplean las reglas heurísticas, o "regla del
pulgar", además de la simple producción de reglas. Por ejemplo, un administrador
de crédito puede saber que un solicitante con una historia pobre de crédito, con un
registro limpio desde que adquirió un nuevo empleo, puede actualmente ser un
buen sujeto de crédito.
24
II.1. Definición y Antecedentes.
Los sistemas de información proveen apoyo para las operaciones o servicios que
organizaciones realizan para la sociedad. Los sistemas son orientados
verticalmente a sectores específicos e industrias, ej. Manufactura, servicios
financieros, publicidad, educación, salud y entretenimiento. Más que dirección
administrativa y funciones administrativas, ellos apoyan actividades y procesos
que son la razón para una existencia organizacional (en muchos casos, algún tipo
de actividad manufacturera o el desarrollo de servicios.
Los sistemas de este tipo varían enormemente, pero ellos tienden a caer dentro de
tres tipos principales: manufactura, transacciones y Sistemas Expertos.
25
analizando y modificando. El procesador evalúa el requerimiento y ejecuta éste
inmediatamente. Partes de la función de procesamiento pueden ser llevadas a un
terminal inteligente que distribuye el requerimiento en la carga computacional. El
tiempo de respuesta (el lapso de tiempo entre el final de un requerimiento y el
comienzo de la respuesta) es una característica importante de este tipo de sistema
de teleproceso en tiempo real.
El foco del sistema es el recipiente de servicios más que el operador del sistema.
Debido a esto, un agente viajero local es capaz de planear un itinerario completo
de un viajero: incluyendo las reservaciones en aerolíneas, hoteles, arriendo de
autos, programas culturales y deportivos, e incluso restaurantes, en cualquier
continente y ajustar éstos al programa y presupuesto del viajero.
26
II.2. Componentes: software de interfaz, base de datos, programa
computacional.
27
2) La base de datos, llamada la base de conocimiento que consiste de axiomas
(hechos) y reglas para hacer inferencias a partir de esos hechos acerca del
dominio del sistema.
28
algunas de las aplicaciones también requiere de transacciones de larga duración
(por ejemplo, el objeto es tan grande que su actualización toma mucho tiempo),
transacciones interactivas y cooperativas.
Existen dos razones principales por las que la metodología orientada a objetos es
un sólido fundamento para la nueva generación de tecnología de base de datos.
29
3) El programa computacional, llamado el motor de inferencia, ejecuta el
proceso de hacer inferencias, interpreta y evalúa los hechos en la base de
conocimiento para proveer una respuesta.
Los sistemas expertos son una variedad comercial de una clase de programas
computacionales llamados sistemas basados en conocimiento. El conocimiento en
sistemas expertos es altamente in estructurado, esto es, el proceso de solucionar
problemas de un dominio no es manifiesto. Y es establecido explícitamente en
relaciones o deductivamente inferidos desde la cadena de proposiciones.
Dado que cada condición que puede ser encontrada puede ser descrita por una
regla, los sistemas expertos basados en reglas no pueden manejar eventos no
anticipados, pero pueden evolucionar con el uso, y permanece limitado a un
estrecho dominio de problemas.
Otra variante de sistemas expertos, uno que no posee esta limitación, emplea una
base de conocimiento que consiste de descripciones estructuradas de situaciones,
de problemas del mundo real y de decisiones actualmente hechas por expertos
humanos.
Dada una gran base de datos con tales registros en una especialidad médica, el
médico puede indagar acerca de eventos análogos a los relacionados con el
paciente. Esto en contraste con el sistema que idealmente intenta reemplazar al
30
ser humano, ya que en casos como estos sólo podría usarse este tipo de
conocimiento como una herramienta que ayuda en la toma de decisiones.
Se percibe este trabajo como una tarea para el ingeniero y consiste de:
- Identificación y análisis de los requerimientos del usuario.
- Desarrollo de las especificaciones del sistema (software y hardware).
- Diseño del software.
- Implementación
- Testeo
- Mantención
31
II.2.1. Tecnologías Involucradas.
Lenguajes de Programación
En principio, cualquier lenguaje de programación puede ser utilizado. Siendo así
de amplio el espectro en el cual se puede escoger un lenguaje para programar un
sistema experto. Atendiendo a la forma de estructurar sus instrucciones, se los
puede dividir en:
• IMPERATIVOS: PASCAL, C/C++.
• FUNCIONALES: LISP.
• DECLARATIVOS: PROLOG, CHIP, OPS5.
• ORIENTADOS A OBJETOS: SmallTalk, Hypercard, CLOS.
Tradicionalmente LISP y PROLOG han sido los lenguajes que se han utilizado
para la programación de sistemas expertos.
Estos lenguajes ofrecen características especialmente diseñadas para manejar
problemas generalmente encontrados en Inteligencia Artificial. Por este motivo se
los conoce como lenguajes de inteligencia Artificial.
Una de las principales características que comparten los lenguajes LISP y
PROLOG, como consecuencia de su respectiva estructura, es que pueden ser
utilizados para escribir programas capaces de examinar a otros programas,
incluyendo a ellos mismos. Esta capacidad se requiere, por ejemplo, para hacer
que el programa explique sus conclusiones.
Esto sólo puede hacerse si el programa tiene la capacidad de examinar su propio
modo de operación.
Lisp
Su nombre se deriva de LISt Processor. LISP fue el primer lenguaje para
procesamiento simbólico. John McCarthy lo desarrolló en 1958, en el Instituto de
Tecnología de Massachusetts (MIT), inicialmente como un lenguaje de
programación con el cual los investigadores pudieran implementar eficientemente
programas de computadora capaces de razonar.
Rápidamente LISP se hizo popular por su capacidad de manipular símbolos y fue
escogido para el desarrollo de muchos sistemas de Inteligencia Artificial.
Actualmente, LISP es utilizado en varios dominios que incluyen la escritura de
compiladores, sistemas para diseño VLSI, sistemas para diseño mecánico asistido
por computadora (AUTOCAD), animaciones gráficas y sistemas basados en
conocimiento.
32
Prolog
PROgramming in LOGic (PROLOG), es otro de los lenguajes de programación
ampliamente utilizados en IA. PROLOG fue desarrollado en Francia, en 1973 por
Alain Colmenauer y su equipo de investigación en la Universidad de Marseilles.
Inicialmente fue utilizado para el procesamiento de lenguaje natural, pero
posteriormente se popularizó entre los desarrolladores de aplicaciones de IA por
su capacidad de manipulación simbólica. Utilizando los resultados del grupo
francés, Robert Kowalski de la Universidad de Edimburgo, en Escocia, desarrolló
la teoría de la programación lógica. La sintaxis propuesta por Edimburgo, se
considera el estándar de facto del PROLOG.
A partir de 1981 tuvo una importante difusión en todo el mundo, especialmente
porque los japoneses decidieron utilizar PROLOG para el desarrollo de sus
sistemas de computación de quinta generación. Actualmente existen varios
dialectos del PROLOG para diferentes plataformas.
OPS5
Official Production System 5 (OPS5), es un lenguaje para ingeniería cognoscitiva
que soporta el método de representación del conocimiento en forma de reglas.
Incorpora un módulo unificador, un intérprete que incluye un mecanismo de
encadenamiento progresivo, y herramientas para edición y depuración de los
programas.
OPS5 es un miembro de la familia de lenguajes de programación desarrollados en
la Universidad Carnegie - Mellon. Varias compañías han desarrollado
implementaciones comerciales de OPS5, para diferentes plataformas.
Sistemas de Desarrollo
Históricamente, los primeros Sistemas Basados en Conocimiento fueron
desarrollados utilizando lenguajes de programación como el LISP y el PROLOG. A
medida que el desarrollo de Sistemas Basados en Conocimiento iba aumentado
en cantidad y complejidad, la comunidad científica comenzó a buscar formas de
desarrollar los sistemas en menor tiempo y con menor esfuerzo.
Esto dio lugar al aparecimiento, en primer lugar a sistemas vacíos como el
EMYCIN, a los que denominó shells, ya que ofrecen toda la arquitectura de un
Sistema Basado en Conocimiento a la que hay que incorporar la base de
conocimientos.
Posteriormente ingresaron al mercado otras herramientas que incorporaron,
además de opciones de representación del conocimiento, esquemas de inferencia
y control. Estas herramientas tomaron el nombre de Entornos de Desarrollo de
Sistemas Basados en Conocimiento.
33
A continuación se dan algunos ejemplos de sistemas comerciales:
Plataformas de Computación
Íntimamente asociado a los Sistemas Expertos, están los sistemas
computacionales (Hardware). Actualmente el software disponible para el desarrollo
de Sistemas Basados en Conocimiento, cubre todo el rango de computadoras y
sistemas operativos, desde PC’s hasta máquinas especialmente dedicadas para
procesamiento simbólico:
• Computadoras Personales (DOS, OS, Mac, WINDOWS, UNIX, LINUX).
• Estaciones de trabajo (VMS, UNIX).
• Máquinas simbólicas (LISP, PROLOG).
• Máquinas de arquitectura paralelo.
34
II.2.2. Redes Neuronales.
Las Redes Neuronales surgieron del movimiento conexionista, que nació junto con
la Inteligencia Artificial simbólica o tradicional. Esto fue hacia los años 50, con
algunos de los primeros ordenadores de la época y las posibilidades que ofrecían.
Cada neurona puede tener infinitas entradas llamadas Dendritas que condicionan
el estado de su única salida, el Axón. Este Axón puede ir conectado a una
Dendrita de otra neurona mediante la Sinapsis correspondiente, de la siguiente
manera:
35
El Axón da un nivel eléctrico correspondiente a sus entradas y a la importancia
que les da a cada una de ellas. De esta forma, una neurona puede no reaccionar
ante un nivel muy alto de una de sus entradas, o dar una salida muy favorable
cuando otra de ellas está mínimamente activa.
cada entrada x tiene su peso asociado w, que le dará más o menos importancia en
la activación de la neurona. Internamente se calcula la suma de cada entrada
multiplicada por su peso:
36
Con este valor de suma ponderada se calcula una función de activación, que será
la salida que dará la neurona. Las dos funciones de activación más usada son el
Escalón y la Sigmoidea:
El Perceptrón unicapa.
37
Existen tres métodos de aprendizaje para un Perceptrón: Supervisado, Por
Refuerzo y No Supervisado.
El Perceptrón multicapa.
Esta estructura nació con la intención de dar solución a las limitaciones del
Perceptrón clásico o unicapa, y supuso el resurgimiento del movimiento
conexionista. Como su nombre indica, se trata de un unos cuantos (dos o tres)
perceptrones unicapa conectados en cascada, como en la siguiente figura:
38
tiempo necesita una red para aprender cierta tarea, cuántas neuronas se
necesitan como mínimo para realizar cierta tarea, etc.
Las redes neuronales pueden llegar a ser algo realmente importante, pero todavía
hace falta tiempo para estudiar cómo almacenan el conocimiento para desarrollar
el hardware paralelo específico que requieren.
En la robótica, las redes neuronales también parecen prometer mucho, sobre todo
en su sensorización, para que el robot sea capaz de generalizar lo que siente
como estímulos individuales a considerar.
39
II.3. Algunos Casos y Antecedentes Históricos.
1945. Vannevar Bush publica "As we may think ...", o "Cabría imaginar ... ", en
Atlantic Monthly el cual sienta las bases de lo que hoy se conoce como Hipertexto,
Multimedia e Hipermedia.
1956. Newell, Shaw, y Simon crean "The Logic Theorist" para la resolución de
problemas matemáticos.
1963. Quillian desarrolla las redes semánticas como modelo de representación del
conocimiento.
40
1964. Se comienza el desarrollo de BBNLisp en BBN.
1965. Iva Sutherland hace demostración del primer monitor en forma de casco
para realidad virtual.
1974. Edward Shortliffe escribe su tesis con MYCIN, uno de los Sistemas Expertos
más conocidos.
1976. Greenblatt crea "CONS" el primer ordenador con arquitectura para LISP.
41
1980. Primera conferencia de la AAAI (American Association on Artificial
Intelligence) en Stanford, y primera Conferencia de Lisp y programación funcional
de la ACM.
1981. El PSL (Portable Standard Lisp) se puede ejecutar sobre varias plataformas.
1981. Se construyen máquinas LISP por Xerox, LMI y Simbolics, las cuales
soportan Programación Orientada a Objetos.
1981. Se sientan las bases del Common Lisp con aspectos comunes de las
familias: Lisp machine Lisp, MacLisp, NIL, S-1 Lisp, Spice Lisp y Scheme.
1985. General Motors y Campbell's Soup dejan de usar Lisp para sus Sistemas
Expertos.
1986. IBM desarrolla shells para Lisp, Prolog y Sistemas expertos y entra a la
AAAI.
42
1987. Sistema experto XCON de DEC capaz de configurar ordenadores realizando
el trabajo de 300 personas, basándose para esto en 10.000 reglas.
1988. El chip del 386 ofrece una velocidad a los PC’s comparable a la de las
máquinas Lisp.
1992. X3J13 crea una propuesta para la Sociedad Americana de Common Lisp.
1994. La versión para tiempo real del lenguaje CLOS, Lisp con Objetos, de
Harlequin se utiliza en sistema de intercambio de AT&T.
43
II.4. Aplicaciones.
Agentes Autónomos
• primero, que son proactivos, no sólo actúan respondiendo a una acción del
usuario, sino que también actúan siguiendo sus propios objetivos.
Esta autonomía implica que sean agentes situados, es decir, que haya una clara
diferencia entre el agente y su entorno. Y la persistencia e independencia del
entorno permite que algunos agentes sean móviles, llevando su bagaje de
información allí donde van, y siguiendo quizás a su usuario .
Algunas aplicaciones.
Mind-it. Este servicio gratuito de Internet envía un mensaje por correo electrónico
cada vez que una página web (u otro documento) ha sido actualizado.
Permite seleccionar una parte de la página web para saber si ha sido actualizada.
44
Notifica al usuario, de forma automática, cuándo un documento ha sido trasladado
a otra dirección. Otro servicio parecido es Informant.
Leticia, bautizada así en homenaje a un texto de Jorge Luis Borges, está dotada
de un talento especial: dispone del suficiente grado de autonomía como para
introducir en sus acciones una cierta dosis de azar e improvisación.
45
[Link]ótica.
En 1960 se construyó un robot que podía mirar una torre de cubos y copiarla, pero
la falta de sentido común lo llevó a hacer la torre desde arriba hacia abajo,
soltando los bloques en el aire. Hoy, los intentos por construir máquinas
inteligentes continúan... y prometen maravillas.
Las tres leyes básicas de la robótica enunciadas por Asimov, padre de esta
ciencia, en 1950, son:
- un robot no puede hacer daño a un ser humano, ni permitir, con su actitud
pasiva, que lo sufra
- un robot debe obedecer las órdenes que le den los seres humanos excepto
cuando entren en conflicto con la primera ley
46
- un robot debe proteger su propia existencia siempre que ello no entre en
conflicto con las dos leyes anteriores.
47
posteriormente en el lenguaje VAL comercial para Unimation por Victor
Scheinman y Bruce Simano.
• 1974 ASEA introdujo el robot IRb6 de accionamiento completamente
eléctrico.
• 1974 Kawasaki, bajo licencia de Unimation, instaló un robot para soldadura
por arco para estructuras de motocicletas.
• 1974 Cincinnati Milacron introdujo el robot T3 con control por computadora.
• 1975 El robot «Sigma» de Olivetti se utilizó en operaciones de montaje, una
de las primitivas aplicaciones de la robótica al montaje.
• 1976 Un dispositivo de Remote Center Compliance (RCC) para la inserción
de piezas en la línea de montaje se desarrolló en los laboratorios Charles
Stark Draper Labs en Estados Unidos.
• 1978 Se introdujo el robot PUMA (Programmable Universal Machine for
Assembly) para tareas de montaje por Unimation, basándose en diseños
obtenidos en un estudio de la General Motors.
• 1978 El robot T3 de Cincinnati Milacron se adaptó y programó para realizar
operaciones de taladrado y circulación de materiales en componentes de
aviones, bajo el patrocinio de Air Force ICAM (Integrated Computer-Aided
Manufacturing).
• 1979 Desarrollo del robot del tipo SCARA (Selective Compliance Arm for
Robotic Assembly) en la Universidad de Yamanashi en Japón para montaje.
Varios robots SCARA comerciales se introdujeron hacia 1981.
• 1980 Un sistema robótico de captación de recipientes fue objeto de
demostración en la Universidad de Rhode Island. Con el empleo de la
visión de máquina, el sistema era capaz de captar piezas en orientaciones
aleatorias y posiciones fuera de un recipiente.
• 1981 Se desarrolló en la Universidad Carnegie-Mellon un robot de
impulsión directa. Utilizaba motores eléctricos situados en las articulaciones
del manipulador sin las transmisiones mecánicas habituales empleadas en
la mayoría de los robots.
• 1982 IBM introduce el robot RS-l para montaje, basado en varios años de
desarrollo interno. Se trata de un robot de estructura de caja que utiliza un
brazo constituido por tres dispositivos de deslizamiento ortogonales. El
lenguaje de robot AML, desarrollado por IBM, se introdujo también para
programar el robot RS-1.
• 1983 Informe emitido sobre la investigación en Westinghouse Corp. bajo el
patrocinio de National Science Foundation sobre un «sistema de montaje
programable-adaptable» (APAS), un proyecto piloto para una línea de
montaje automatizada flexible con el empleo de robots.
• 1984 Varios sistemas de programación fuera de línea se demostraron en la
exposición Robots 8. La operación típica de estos sistemas permitía que se
desarrollaran programas de robot utilizando gráficos.
• 1985. Un robot de la Kawasaki mata a un mecánico japonés en un mal
funcionamiento.
• 1986. El robot jugador de tenis de mesa de Anderson le gana a un ser
humano.
48
• 1986. La máquina de ajedrez HiTech de CMU compite en un torneo de nivel
master.
• 1986. La policía de Dallas usa un robot para entrar en las casas.
Por su simpleza hay quienes opinan que a este tipo de máquinas no se les
debería llamar robots; sin embargo, en ellas se encuentran todos los elementos
básicos de un robot: son programables, automáticas y pueden realizar gran
variedad de movimientos.
Otro tipo de robots más sofisticados son los que llevan servomecanismos, el uso
de servomecanismos va ligado al uso de censores, como los potenciómetros, que
informan de la posición del brazo o la pieza que se ha movido del robot para
asegurar su correcta posición.
49
Un cuarto tipo de robots comprende aquellos que se pueden controlar mediante
computadora. Con ella es posible programar el robot para que mueva sus brazos
describiendo cualquier figura geométrica entre puntos preestablecidos. El
movimiento de sus brazos se especifica mediante varios sistemas de coordenadas
según la referencia que se tome.
50
III.2. Aplicaciones Tecnológicas.
Robots Mosquitos.
Descritos como una "cucaracha metálica" que se arrastra con gran destreza por la
arena, un verdadero insecto, Atila avanza a 2 km/h, tratando de no tropezar con
las cosas, es «gramo por gramo el robot más complejo del mundo», según su
creador, Rodney Brooks. En su estructura de 1,6 kg y 6 patas, lleva 24 motores,
10 computadores y 150 censores, incluida una cámara de video en miniatura.
Provistos de minúsculos escalpelos, podrán arrastrarse por el ojo o las arterias del
corazón para realizar cirugía. Vivirán en las alfombras, sacando continuamente el
polvo partícula a partícula. Infinidad de ellos cubrirán las casas en vez de capas de
pintura, obedeciendo la orden de cambiar cada vez que se quiera el color.
51
El punto importante es la detección de los obstáculos (que no siempre son los
mismos ni están en el mismo sitio) y la maniobra para eludirlos y seguir trabajando
con la aspiradora.
52
En este parque de diversiones se pueden encontrar una gran variedad de
aplicaciones de la robótica, desde pájaros cantores, elefantes en movimiento,
cocodrilos, osos, hasta simuladores de vuelo, androides, submarinos, etc.
53
IV. Perspectivas Futuras.
Para los que apoyan la postura débil, sus modelos son solamente
representaciones simbólicas de los síntomas biológicos naturales, modelos
ciertamente muy útiles para conocer dichos sistemas, pero sin mayores
pretensiones.
Para los que defienden la versión fuerte, dicen que se puede crear vida auténtica a
partir de un programa de ordenador que reproduzca las características básicas de
los seres vivos.
Desde este punto de vista, la vida se divide en vida húmeda, que es lo que todo
el mundo conoce como vida, vida seca, formada por autómatas físicamente
tangibles, y vida virtual, formada por programas de computador. Las dos últimas
categorías son las que integran lo que genéricamente se conoce como Vida
Artificial.
Para defender un punto de vista tan radical, los defensores de la postura fuerte,
aluden a un conjunto de reglas que comparten las tres categorías anteriores:
- La biología de lo posible.
54
La Vida Artificial no se restringe a la vida húmeda tal como la conocemos, sino que
"se ocupa de la vida tal como podría ser". La biología ha de convertirse en la
ciencia de todas las formas de vida posibles.
- Método sintético.
La actitud de la Vida Artificial es típicamente sintética, a diferencia de la biología
clásica, que ha sido mayoritariamente analítica. Desde este punto de vista, se
entiende la vida como un todo integrado, en lugar de desmenuzarlo en sus más
mínimas partes.
Granja de Evolución.
55
Bio-Land es una granja virtual donde vive una población de criaturas basadas en
redes neuronales.
Los biots pueden usar sus sentidos de la vista, el oído e incluso el olfato y tacto
para encontrar comida y localizar parejas. Los biots cazan en manadas, traen
comida a su prole y se apiñan buscando calor.
Lo que su creador quiere que hagan es hablar entre ellos, con la esperanza de
que desarrollen evolutivamente un lenguaje primitivo.
A partir de ese lenguaje, con el tiempo podrían surgir niveles más altos de
pensamiento.
56
V. Conclusiones.
Dentro del ámbito de las Ciencias de la Computación la Inteligencia Artificial es una de las áreas
que causa mayor expectación, incluso dentro de la sociedad en general, debido a que la búsqueda
para comprender los mecanismos de la inteligencia, ha sido la piedra filosofal del trabajo de
muchos científicos por muchos años y lo sigue siendo.
Que un sistema pueda mejorar su comportamiento sobre la base de la experiencia que recoge al
efectuar una tarea repetitiva y que además, tenga una noción de lo que es un error y que pueda
evitarlo, resulta apasionante.
Las redes de neuronas formales son máquinas que poseen esta capacidad de aprendizaje. Son
máquinas propuestas como modelos extremadamente simplificados del funcionamiento del cerebro
que sienta las bases de un modelo colectivo, donde el sistema global presenta propiedades
complejas que no pueden predecirse a partir del estudio individual de sus componentes.
Los estudios teóricos de redes de neuronas reflejan estos dos aspectos: el de la modelización de
fenómenos cognitivos y el del desarrollo de aplicaciones.
Por ejemplo para una máquina, la clasificación de rostros, datos médicos o reconocimiento de
letras son tareas difíciles, más que para un ser humano. La máquina necesita del aprendizaje,
donde el asunto consiste en adaptar los parámetros de un sistema, en este caso artificial, para
obtener la respuesta deseada.
Los métodos tradicionales en Inteligencia Artificial que permitieron el desarrollo de los primeros
sistemas expertos y otras aplicaciones, ha ido de la mano de los avances tecnológicos y las
fronteras se han ido expandiendo constantemente cada vez que un logro, considerado imposible
en su momento, se vuelve posible gracias a los avances en todo el mundo, generando incluso una
nueva mentalidad de trabajo que no reconoce fronteras físicas ni políticas. Se entiende como un
esfuerzo común.
57
58
Bibliografía.
59