Está en la página 1de 64

El amanecer de una nueva ciencia.

    La Inteligencia Artificial "nació" en 1943 cuando Warren McCulloch y


Walter Pitts propusieron un modelo de neurona del cerebro humano y
animal. Estas neuronas nerviosas abstractas proporcionaron una
representación simbólica de la actividad cerebral.

    Más adelante, Norbert Wiener elaboró estas ideas junto con otras, dentro
del mismo campo, que se llamó " cibernética", de aquí nacería , sobre los
años 50, la Inteligencia Artificial.

    Los primeros investigadores de esta innovadora ciencia, tomaron como


base la neurona formalizada de McCulloch y postulaban que :

" El cerebro es un solucionador inteligente de problemas, de modo que


imitemos al cerebro".

    Pero si consideramos la enorme complejidad del mismo esto es ya


practicamente imposible, ni que mencionar que el hardware de la época ni el
software estaban a la altura para ralizar semejantes proyectos.

    Se comenzó a considerar el pensamiento humano como una coordinación


de tareas simples relacionadas entre sí mediante símbolos. Se llegaría a la
realización de lo que ellos consideraban como los fundamentos de la
solución inteligente de problemas, pero lo difícil estaba todavía sin empezar,
unir entre sí estas actividades simples.

   Por lo tanto podemos decir a grandes rasgos que la Inteligencia Artificial


es una ciencia que intenta la creación de programas para máquinas que
imiten el comportamiento y la comprensión humana, que sea capaz de
aprender, reconocer y pensar, aunque esto último está por ver, ya que,
realmente, ¿qué significa pensar? y ¿en qué consiste el pensamiento?.

Historia

 
 

   Ya hemos comentado anteriormente en la introducción que los primeros investigadores se


habían quedado en elaborar sistemas inteligentes basados en el modelo de McCulloch.

   Es en los años 50 cuando se logra realizar un sistema que tuvo cierto éxito, se llamó el
Perceptrón de Rossenblatt. Éste era un sistema visual de reconocimiento de patrones en el
cual se aunaron esfuerzos para que se pudieran resolver una gama amplia de problemas,
pero estas energías se diluyeron enseguida.

    Fué en los años 60 cuando Alan Newell y Herbert Simon, que trabajando la
demostración de teoremas y el ajedrez por ordenador logran crear un programa llamado
GPS (General Problem Solver: solucionador general de problemas). Éste era una sistema en
el que el usuario definía un entorno en función de una serie de objetos y los operadores que
se podían aplicar sobre ellos. Este programa era capaz de trabajar con las torres de Hanoi,
así como con criptoaritmética y otros problemas similares, operando, claro está, con
microcosmos formalizados que representaban los parámetros dentro de los cuales se podían
resolver problemas. Lo que no podía hacer el GPS era resolver problemas ni del mundo
real, ni médicos ni tomar decisiones importantes. El GPS manejaba reglas heurísticas
(aprender a partir de sus propios descubrimientos) que la conducían hasta el destino
deseado mediante el método del ensayo y el error.

   En los años 70, un equipo de investigadores dirigido por Edward Feigenbaum comenzó a
elaborar un proyecto para resolver problemas de la vida cotidiana o que se centrara, al
menos, en problemas más concretos. Así es como nació el sistema experto.

   El primer sistema experto fue el denominado Dendral, un intérprete de espectrograma de


masa construido en 1967, pero el más influyente resultaría ser el Mycin de 1974. El Mycin
era capaz de diagnosticar trastornos en la sangre y recetar la correspondiente medicación,
todo un logro en aquella época que incluso fueron utilizados en hospitales (como el Puff,
variante de Mycin de uso común en el Pacific Medical Center de San Francisco, EEUU).

   Ya en los años 80, se desarrollaron lenguajes especiales para utilizar con la Inteligencia
Artificial, tales como el LISP o el PROLOG. Es en esta época cuando se desarrollan
sistemas expertos más refinados, como por el ejemplo el EURISKO. Este programa
perfecciona su propio cuerpo de reglas heurísticas automáticamente, por inducción.
 Introducción....

Un Sistema Experto es una aplicación informática que simula el comportamiento de un


experto humano en el sentido de que es capaz de decidir cuestiones complejas, si bien en un
campo restringido. Para esto, se debe tener en cuenta que la principal característica del
experto humano viene a ser el conocimiento o habilidades profundas en ese campo
concreto, por consiguiente, un Sistema Experto debe ser capaz de representar ese
conocimiento profundo con el objetivo de utilizarlo para resolver problemas, justificar su
comportamiento e incorporar nuevos conocimientos. Se podría incluir también el hecho de
poder comunicarse en lenguaje natural con las personas, si bien esta capacidad no es tan
determinante como las anteriores de lo que se puede definir como Sistema Experto.

Para entender la estructura interna y el funcionamiento de un SE, primeramente tenemos


que entender los fundamentos conceptuales básicos de la Solución de Problemas con IA,
dado que un SE es una aplicación de técnicas de IA. Pero qué es I.A.?.

Conceptos. . . . . . . .

Para la solución del problema, cualquier enfoque exigiría observar qué movimientos
diferentes nos permitirían cambiar la cantidad de agua en cada balde. La solución del
problema incluye la ejecución de algunas secuencias de las acciones representadas en la
tabla. La tabla enuncia las acciones de acuerdo con la descripción de las condiciones bajo
las cuales se puede aplicar la cada acción. (cada acción es una fila de la tabla).

El enfoque más directo sería simplemente implementar la solución específica a este


problema concreto.

ENFOQUE 1.

De acuerdo a lo anterior el analista (programador) ordenará las acciones de manera lógica


para así, generar un programa que instalado y ejecutado en la computadora nos arroje
resultados exactos a los requerimientos del problema.

ENFOQUE 2.

Para abordar el problema de una manera muy diferente, en lugar de permitir que el analista
determine y codifique la solución completa del problema en concreto, podríamos ofrecer
una representación más general del ambiente del problema y dejaríamos que el computador
buscara una solución dentro de los límites de dicho ambiente.

El primer paso en este enfoque es observar el ambiente del problema como un espacio
específico que está constituido por un conjunto de estados discretos que representan las
posibles configuraciones de los elementos involucrados en el problema. Para el problema
en mensión consideramos los estados que representan los contenidos de los baldes y
definamos la pareja (0,S) para representar el estado que corresponde a un volumen de 0 en
el balde de 8 galones y el volumen S en el balde de 6 galones. Así un estado de (1,2) indica
que el balde de 8 gal contiene 1 gal. y el balde de 6 gal. contiene 2 gal. En razón que los
baldes originalmente están vacíos el estado inicial (0,0).

Dado un estado conocido, podemos identificar otro estado válido mediante la aplicación de
la acción apropiada según la tabla de acciones, por ejemplo, si empezamos con el estado
(0,0) y aplicamos la regla 1, el estado resultante es (8,0).

Empleando este concepto, podemos desarrollar un espacio de estados (también llamado


espacio problema) que incluye todos los posibles estados para un problema dado. La figura
1 muestra una parte del espacio de estados del problema de los baldes que se representa
gráficamente con un árbol. Dada esta representación del problema, el proceso de solución
equivale a buscar un paso que conduzca de un estado inicial a otro estado requerido (por ej.
cualquier estado en que 0 tenga un valor de 4)...

Principios. . . . . . . .

o Las técnicas de la IA intentan en forma explícita, trasladar el proceso de


razonamiento hacia el programa.

... y cuando se consideran los criterios prácticos para el éxito de un SE tenemos en cuenta lo
siguiente:

o Un SE se dedica a un problema de un área específica. No se intenta enfocar las


capacidades humanas en todas las áreas.
o Habitualmente esperamos de una persona un desempeño aceptable, pero no le
exigimos una solución óptima en todos los casos.

o Un SE busca una solución satisfactoria tal que sea lo suficiente buena para hacer.

o El nivel de exactitud de precisión que exige una solución satisfactoria se dictamina


por el dominio del problema.

Prueba de Turing

La prueba de TURING es un procedimiento bien conocido para evaluar el éxito de un


programa de IA.

La prueba consiste en que un Entrevistador se comunica vía textual de entrada y salida, con
un sistema de IA y con otra persona que participa en la prueba.. el entrevistador no se da
cuenta cuál respuesta viene del computador y cuál de la otra persona. si después de hacer
suficientes preguntas el entrevistador no puede diferenciar entre el hombre y la máquina,
entonces el sistema pasa la prueba y se estima que es exitoso.
Ningún sistema de IA existente podría pasar una prueba de Turing verdaderamente y no es
probable que tal sistema exista en un futuro cercano.

Ilustraciones

En este gráfico se ilustra el espacio parcial de estados para el problema de los dos baldes.

**********************************************************************

Introducción

La Inteligencia Artificial o IA en Español e AI en Inglés, es una ciencia perteneciente a la


rama de la Cibernética, que estudia el mecanismo de la inteligencia humana con el fin de
crear máquinas inteligentes, capaces de realizar cálculos y de “pensar”, elaborar juicios y
tomar decisiones.

Sus orígenes se remontan miles de años atrás, pues en casi todas las mitologías existe algún
tipo de “máquina” divina o casi divina de ésta naturaleza. Definir su comienzo en la Edad
Moderna y Contemporánea es muy difícil pues son muchos los inventores y genios que han
ido contribuyendo a crear éstas máquinas, Leonardo Da Vinci, Blas Pascal, Charles
Babbage o Alan Turing y uno cometería grandes errores e injusticias. No obstante, son
muchos los especialistas en computación que en las últimas décadas consideran como
primera máquina inteligente a la “máquina de Turing”, creada por Alan Turing. Ver al
respecto Máquinas Desorganizadas y el Cerebro Humano, por Craig Webster

Algunas definiciones, Fuentes y sitios interesantes


o Faq’s
o Vida Artificial
o Zooland
o TechnoSpehere

 ***********************************************************************

¿Por qué? y ¿para qué?

Primero hay que explicar porque hay que intentar simular la realidad, ya sea la vida o
incluso la inteligencia. Simple, la ciencia a diferencia de las creencias siempre trata de
fundamentar las cosas. No basta con decir que las cosas están vivas y ya está, intentan darle
explicación normalmente mediante la utilización de ejemplos y contraejemplos. ¿que
diferencia hay entra las cosas vivas y las que no?, pues con esta pregunta se ha intentado
explicar que es lo que está vivo de lo que no. Parece ser que el límite entre lo vivo y lo
muerto no esta claro, no sabemos si podemos considerar un virus como ser vivo, ya que
posiblemente su origen previo fuera un ser vivo que evolucionó hacia atrás para ser capaz
de perpetuarse sin necesidad de metabolismo propio. Tal vez el límite esté en los priones.
Los priones son moléculas proteicas, proteínas, que al igual que una encima tienen cierta
función metabólica. En teoría solo pueden ser creados por seres vivos mediante
conversiones del ADN a aminoácidos, o tal vez por azahares de la química, pero no se
pueden replicar por si mismas. Pero parece ser que los priones tienen como función
metabólica la de convertir otras enzimas en ellas mismas. Las más conocidas son las que
atacan al sistema nervioso y que provocaron la epidemia de "las vacas locas". Me colé,
bueno aunque lo anterior no es exactamente de lo que va esta página era interesante, ¿no?,
bueno prosigo.

Pero ¿cómo se pudo generar la vida a partir de caldos ricos en aminoácidos, o cómo a partir
de pequeñas moléculas se crean estructuras complejas, o cómo funcionan los genes, etc,etc?

Pues ahí es donde entra en juego la computación. Mediante la computación se pueden


demostrar o mostrar los fallos de las teorías científicas. Mediante la SIMULACIÓN,
podemos crear todo un mundo virtual para que la gente comprenda que es posible, que al
igual que pasa en una pantalla de ordenador mediante un programa que usted mismo puede
llegar a entender, pudo pasar en la tierra hace millones de años o de hecho pasa ahora.

Mediante ejemplos se trata de explicar el cómo de las cosas, aquí sobra la fe, puedes creer o
no, pero está claro es que si no quieres creer nadie te impide que demuestres lo contrario
( en teoría ya que a nadie le gusta que le digan que está equivocado).

Volver a Inicio

SOFTWARE:
Vida Artificial:

Biomorfos programas basados en el algoritmo de Dawkins:


Estos programas lo que simulan es la evolución genética, el mejor el que está hecho en
España, simplemente porque esta hecho mejor, y es más moderno. Loes he ido colocando
de principio a fin de menores a mayores según interés científico.
 
 pc063mf1.zip 35.4 k
Biomurfus V 1.3 12 de Mayo 1988 by B J Murphy
Este programa para MSDOS simula la evolución genética de un ser. Los genes son unos
cuantos valores que representan las dimensiones de las formas que irá tomando. Tú vas
seleccionando el ser que generará la siguiente evolución.
 vida.zip
Infoartrópodos, Ernesto J. Carmena MUY RECOMENDABLE
Es una gran ampliación del programa anterior, utiliza círculos, rayas de distintos colores
para representar las variaciones genéticas. Me parece uno de los mejores programas que he
visto de este tipo. El programa es para DOS. También puedes utilizar la versión en JAVA
en la dirección del autor.
http://mars.interec.com/hwebensis
 pc064mf1.zip 35.4 k
MUY RECOMENDABLE Programa que además de evolucionar genéticamente mueve a
los seres vivos en un entorno donde se pueden reproducir, alimentar y evolucionar. En
PASCAL y en versión MSDOS. De la revista PCMANIA 64
OTROS:

 Techno Sphere III


http://www.technosphere.org.uk/
Lo último que he descubierto sobre vida artificial es una dirección de internet donde a
través de CGI's y cosas así puedes crear e introducir en un mundo virtual soportado por una
estación Silicon Graphics animales con ciertas características o genes y una vez dentro
devorar a otros animales si son carnívoros, o comer hierba si son herbívoros. Además se
reproducen. No está mal pero es muy limitado, las variantes genéticas son mínimas pero es
un paso adelante en lo que a mundos virtuales y vida artificial se refiere. A continuación los
dos participantes en este juego de el Baúl. El primero eliminador3 , un herbívoro , su ID es
942900 por si quieres saber como va, el otro el carnívoro es el 942860 y se llama
eliminador1. ¿que que pasó con el eliminador 2? , la palmó. Eliminador 3 se convirtió al
canivalismo, y eliminador 1 murió.
Ecosist (conejos y lobos)
s eEcosist es un programa de Rafael Hernández, escritor de Metaformática. El programa
simula un ecosistema muy simple, donde hay dos tipos de animales que pueden
representarse como conejos y lobos. El lobo se alimenta de los conejos, y los conejos se
alimentan del medio. El programa representa a dos poblaciones que fluctuan en el tiempo,
si hay muchos conejos, los lobos aumentarán de poblacion, si hay muchos lobos, los
conejos disminuyen, y a su vez los lobos disminuyen... Es curioso, asi se pueden pasar
eternamente fluctuando aletoriamente, pero también es posible que los lobos se coman a
todos los conejos, con lo que mueren los conejos y los lobos, o que los lobos mueran, y los
conejos se multipliquen hasta ocupar todo el territorio para siempre. Es curioso.

 Charca.zip 1.17 kb
Este programa lo saqué de la revista PCMANIA, de la sección METAFORMÁTICA,
sección que recomiendo.  Está en BASIC, por lo que necesitarás el QBASIC de Microsoft u
otro similar. Simula la vida en una charca donde dos especies una que se alimenta del
medio y otra que es carnívora sobreviven.
 
 plantas.zip 35.4 kb
Otro programa de la fantástica sección METAFORMÁTICA de PCMANIA. Haz clic aquí
para leer el artículo antes de ejecutar el programa. Este programa para MS-DOS, con el
código fuente en PASCAL, es una maravilla. Trata el tema del Jardín de Lindenmayer, que
era un sistema de crear cierto tipo de simulación vegetal a partir de unos "genes" en forma
de 0's y 1's. Es interesante porque a partir de un 0 o un 1 se puede crear toda una planta
bidimensional informática. Se supone que los patrones que están preestablecidos para que
un 0 o un 1 den lugar a otros 0's y 1's y así aparezca la planta, son comparables al medio en
la vida real y los genes. Muy bonito, y muy recomendable.
Lenguaje Artificial
Hay una rama de la búsqueda de la vida o de la inteligencia artificial que es el lenguaje
artificial. La idea es que si podemos propramar un propgrama que converse con nosotros
como lo haria un humano, entonces habremos creado a un ser inteligente artificial, simepre
y cuando consideremos a un humano que habla más o menos racionalmente, como
inteligente.
 Herbie.zip 78.4 kb
Este programa de 1987, programado íntegramente en España, es un interlocutor más o
menos "funcional", que es capaz de aprender. Para que aprenda algo tan solo debes de
decirle:" Cosa es eso . " El punto final es importante, si no no lo entiende. Y para
preguntarle lo que ha aprendido debes de decir :" Que es cosa? " y si todo sale bien te
responderá cambiando los determinantes y todo. También recuerda nombres y guarda en un
archivo .her lo que ha aprendido contigo. Si le preguntas por algo que no sabe, te
responderá aleatoriamente con cualquier chorrada que tenga programada. Otras preguntas
interesantes son Quien te ha programado? o Quien es Elisa?. Este programa es para MS-
DOS, y además va muy rápido, excesivamente rápido.
 
 Herbie2.zip
El mismo herbie pero para windows 3.1 o superior.
 Conversaciones en el país de las maravillas  Un artículo publicado en PCmania 83, de la
mano de Rafael Hernández.
Autómatas Celulares: El juego de la vida.
Texto explicativo obtenido de:
http://members.xoom.com/jeusamio/vida_artif.html
Software de autómatas realizado por:
Maikel 1998-99

Los Autómatas celulares son redes de autómatas simples conectados localmente que
producen una salida a partir de una entrada, modificando en el proceso su estado según una
función de transición.
En un autómata celular todos los autómatas simples o células pasan a la siguiente
generación al mismo tiempo, y según un mismo algoritmo de cambio que puede hacer
variar su estado dentro de un conjunto limitado de estados. El estado de una célula en una
generación determinada depende única y exclusivamente de los estados de las células
vecinas y de su  propio estado en la generación anterior.
Los autómatas celulares son herramientas muy útiles para modelizar cualquier sistema del
universo. Uno de los autómatas celulares mas conocidos es el que John Conway llamó el
Juego de la Vida. (Life Game)
El matemático de Cambridge John Conway dedicó cierto tiempo a experimentar con la
aplicación de distintos conjuntos de reglas para encontrar aquellas capaces de ofrecer un
mundo interesante, o al menos un comportamiento interesante.

De esta manera concluyó lo siguiente:


Una célula viva con dos o tres células vecinas sobrevive en el paso siguiente. Aquellas que
se encuentren rodeadas de menos células mueren de soledad y las que presenten un número
mayor de células vecinas mueren de asfixia.
Cada célula muerta con tres células vecinas activas, resucita en la siguiente generación .
Estas reglas ofrecen un mundo fascinante a explorar.

Ciertos modelos iniciales de células vivas se extinguen enseguida, algunos se reproducen


hasta alcanzar centenares de
generaciones, para extinguirse a continuación. Otros forman patrones estables, otros oscilan
entre dichos patrones y otros,
finalmente se desplazan por toda la cuadrícula.
En el juego de la vida, el destino de una célula depende del estrado de dicha célula, y el de
las ocho células colindantes. Existen doce combinaciones posibles para estos estados, de
manera que las reglas que deben comprender  cada uno de estos casos. Esto significa que
resultan necesarias doce reglas.

Sin embargo el Juego de la vida posee solamente dos. Esto no constituye ningún problema,
puesto que cada una de las reglas expresadas anteriormente combina realmente numerosos
grupos de reglas. Cabe considerar cada una de las reglas de Conway como una macrorregla
capaz de incorporar numerosas microrreglas.
 
 eljuegodelavida.zip 10.4 kb
El juego de la vida trata de demostrar que a partir de configuraciones iniciales de caos,
llegamos al orden. Partimos de el desorden y con el tiempo y gracias a unas reglas del
medio, que pueden equivaler por ejemplo a la atracción artómica u otro tipo de orden, las
partículas se ordenan, formando pequñas estructuras estables. Por cierto este software me lo
trabajé yo, Maikel. El programa está en Pacal y en ejecutable para PC 286 o superior con
640 k.
¿Que es la inteligencia artificial?

Existen numerosas definiciones de Inteligencia Artificial, dependiendo del autor o el campo


de especialización. Para hacernos una idea, aquí hay cuatro modelos bastante
representativos de esta ciencia.
 
 
 IA es la atribuida a las máquinas capaces de hacer operaciones propias de seres
inteligentes (DRAE).

 La IA es el estudio de las computaciones que permiten percibir, razonar y actuar


(Winston).

 La IA es el estudio de técnicas de resolución de problemas de complejidad


exponencial mediante el uso de conocimiento sobre el campo de aplicación del
problema (Rich)

 La IA estudia cómo lograr que las máquinas realicen tareas que, por el momento,
son realizadas mejor por los seres humanos. (Rich)

La Inteligencia Artificial tiene dos aspectos, uno como ciencia cognitiva y otro como
tecnología informática, y sus características esenciales son:

 Información simbólica preferente a la numérica.


 Métodos heurísticos preferente a los algorítmicos.
 Uso de conocimiento específico-declarativo.
 Informaciones incompletas o con incertidumbre.
 Multidisciplinaridad.

Nacimiento.

Si bien a principios de la década de los años 50 aparecieron ya los primeros programas de


cálculo formal (que permitían a los ordenadores, utilizados hasta entonces únicamente
como máquinas de calcular, manipular símbolos), lo que más tarde recibiría el nombre de
inteligencia artificial nación en realidad, en el campo de la informática, con la aparición del
primer programa capaz de demostrar teoremas de la lógica de las proposiciones (el Logic
Theorist creado por Newell, Shaw y Simon). Dicho programa fue presentado durante la
conferencia de investigadores que se celebró en el colegio de Darmouth (1956). En aquella
ocasión se acuño, también, el término de inteligencia artificial. Este avance era
consecuencia de la carencia de algoritmos que fuesen capaces de describir una cierta serie
de actividades cognitivas como el reconocimiento visual de un objeto, la comprensión de
los lenguajes naturales (hablados o escritos), el diagnóstico de enfermedades en el ser
humano o de averías en las máquinas, etc. La inteligencia artificial nació, pues, como
resultado de la confluencia de dos corrientes diversas: por un lado, la científica, que tenía
como objetivo intentar comprender los mecanismos de la inteligencia humana empleando
para ello, como modelo de simulación, los ordenadores y, por otro lado, la técnica, que
pretendía equipar a los ordenadores de capacidades de pensamiento lo más similares
posible a las humanas pero sin la pretensión de imitar con toda exactitud los pasos que
sigue el ser humano para llevar a cabo dichas actividades intelectuales. Este proceso se vio
además reforzado por la aparición de lenguajes de programación bien adaptados a la
inteligencia artificial, el LISP (creado por McCarthy a partir de 1960).

El periodo que abarca 1956 a 1968 se caracterizó, en este campo, por los intentos dirigidos
a la búsqueda y modelización de determinados principios generales de la inteligencia
(aplicaciones como la traducción automática, la percepción visual, etc.). A finales de la
década de los años 60, los trabajos se encaminaron hacia el desarrollo de sistemas
inteligentes de aplicación en la robótica (visión artificial, manipulación de objetos,
navegación automática, etc.) en los que era necesario incorporar una gran cantidad de
conocimientos específicos referidos a los problemas que se pretendía resolver con dichas
técnicas. Este proceso marcó el inicio del estudio de los llamados sistemas expertos.

VERTIENTES

El Clasificación de campos de la IA según la ACM:


 Programación automática: Verificación y síntesis.
 Razonamiento automático.
 Representación del conocimiento.
 Metodología de la programación en IA.
 Aprendizaje.
 Procesamiento del lenguaje natural.
 Resolución de problemas, métodos de control y búsqueda.
 Robótica.
 Interpretación de imágenes y visión artificial.
 Inteligencia artificial distribuida.

Aplicaciones de la IA:
 Tareas de la vida diaria:
o Percepción: visión y habla.
o Lenguaje natural: comprensión, generación y traducción.
o Sentido común.
o Control de robot.
 Tareas formales:
o Juegos: damas, ajedrez, go, ...
o Matemáticas: cálculo simbólico, demostración de teoremas.
o Computación: verificación de programas, aprendizaje automático.
 Tareas de expertos:
o Ingeniería: diseño, detección de fallos, planificación de manufacturación.
o Análisis científico.
o Diagnóstico y tratamiento médico.
o Análisis financiero.

El nombre de robot procede del término checo robota (trabajador, siervo) con el que el
escritor Karel Capek designó, primero en su novela y tres años más tarde en su obra teatral
RUR (Los robots universales de Rossum, 1920) a los androides, producidos en grandes
cantidades y vendidos como mano de obra de bajo costo, que el sabio Rossum crea para
liberar a la humanidad del trabajo. En la actualidad, el término se aplica a todos los
ingenios mecánicos, accionados y controlados electrónicamente, capaces de llevar a cabo
secuencias simples que permiten realizar operaciones tales como carga y descarga,
accionamiento de máquinas herramienta, operaciones de ensamblaje y soldadura, etc. Hoy
en día el desarrollo en este campo se dirige hacia la consecución de máquinas que sepan
interactuar con el medio en el cual desarrollan su actividad (reconocimientos de formas,
toma de decisiones, etc.).

La disciplina que se encarga del estudio y desarrollo de los robots es la robótica, una
síntesis de la automática y la informática. La robótica se centró, en primer lugar, en el
estudio y desarrollo de los robots de la llamada primera generación; es decir, incapaces de
detectar los estímulos procedentes del entorno y limitados a las funciones con una
secuencia predeterminada y fija. Estos robots han dado paso a los que constituyen la
segunda generación, capaces de desarrollar algún tipo de actividad sensorial. Los prototipos
multisensoriales que interactúan en un grado muy elevado con el entorno se agrupan en la
tercera generación. Para ello, la robótica se sirve de disciplinas como la mecánica, la
microelectrónica y la informática, además de incorporar a los ingenios técnicas como el
reconocimiento y análisis digital de las imágenes, el desarrollo de sistemas sensoriales, etc.

El creciente desarrollo de los robots y su contante perfeccionamiento ha hecho que cada día
se apliquen en mayor medida a los procesos industriales en sustitución de la mano de obra
humana. Dicho proceso, que se inició hacia 1970, recibe el nombre de robotización y ha
dado lugar a la construcción de plantas de montaje parcial o completamente robotizadas.
Este proceso conlleva, según sus detractores, la destrucción masiva de puestos de trabajo,
mientras que para sus defensores supone la satisfacción de necesidades socioeconómicas de
la población y lleva aparejado un aumento muy considerable de la productividad.
La IA en la robótica:
A finales de los años 70, se produjo un nuevo giro en el campo de la investigación
relacionada con la inteligencia artificial: la aparición de robots. Los robots experimentales
creados para estos efectos eran automatismos capaces de recibir información procedente del
mundo exterior (p. ej.., sensores, cámaras de televisión, etc.), así como órdenes de un
manipulador humano (expresadas en lenguaje natural). De este modo, el robo determinaba
un plan y, de acuerdo con él, ejecutaba las órdenes recibidas mediante el empleo de un
modelo del universo en el que se encontraba. Era incluso capaz de prever las consecuencias
de sus acciones y evitar, así, aquéllas que más tarde pudieran resultarle inútiles o, en algún
momento, perjudiciales. Estos primeros robots experimentales eran bastante más
inteligentes que los robots industriales, y lo eran porque disponían de un grado mucho
mayor de percepción del entorno que los robots empleados en las cadenas de producción.

El principal problema con el que se enfrenta la inteligencia artificial aplicada a los robots es
el de la visión. Mientras que la información recibida a través de sensores se puede
interpretar con relativa facilidad y entra a formar parte de la descripción del modelo de
universo que emplea el robot para tomar decisiones, la percepción de las imágenes captadas
y su interpretación correcta es una labor muy compleja. En cuanto a la interpretación de las
imágenes captadas mediante cualquier sistema, se ha logrado ya el reconocimiento de
formas preprogramadas o conocidas, lo que permite que ciertos robots lleven a cabo
operaciones de reubicación de piezas o colocación en su posición correcta a partir de una
posición arbitraria. Sin embargo, no se ha logrado aún que el sistema perciba la imagen
tomada mediante una cámara de ambiente y adapte su actuación al nuevo cúmulo de
circunstancias que esto implica. Así, por ejemplo, la imagen ofrecida por una cámara de
vídeo de las que se emplea en vigilancia y sistemas de seguridad no puede ser interpretada
directamente por el ordenador.

Los sistemas expertos se basan en la simulación del razonamiento humano. El


razonamiento humano tiene para ellos, un doble interés: por una parte, el del análisis del
razonamiento que seguiría un experto humano en la materia a fin de poder codificarlo
mediante el empleo de un determinado lenguaje informático; por otra, la síntesis artificial,
de tipo mecánico, de los razonamientos de manera que éstos sean semejantes a los
empleados por el experto humano en la resolución de la cuestión planteada. Estos dos
campos de interés han conducido a los investigadores que trabajan en el campo de la
inteligencia artificial (de la cual los sistemas expertos son un campo preferente) a intentar
establecer una metodología que permita verificar el intercambio con los expertos humanos
y aislar los diversos tipos de razonamiento existentes (inductivo, deductivo, formal, etc.),
así como construir los elementos necesarios para modelizarlos.

SISTEMAS EXPERTOS

Los sistemas expertos son, por lo tanto, intermediarios entre el experto humano, que
transmite sus conocimientos al sistema, y el usuario de dicho sistema, que lo emplea para
resolver los problemas que se le plantean con la competencia de un especialista en la
materia y que, además, puede adquirir una destreza semejante a la del experto gracias a la
observación del modo de actuar de la máquina. Los sistemas expertos son, pues,
simultáneamente, un sistema de ejecución y un sistema de transmisión del conocimiento.
Asimismo, los sistemas expertos se definen mediante su arquitectura; obtienen, por lo tanto,
una realidad palpable. Mientras que en las operaciones de programación clásicas se
diferencia únicamente entre el propio programa y los datos, en el caso de los sistemas
expertos se diferencian tres componentes principales. Son los siguientes:

 Base de conocimientos
 Base de hechos
 Motor de inferencia

La base de conocimientos aloja la totalidad de las informaciones específicas relativas al


campo del saber deseado Está escrita en un lenguaje específico de representación de los
conocimientos que contiene y en el cual el experto puede definir su propio vocabulario
técnico. A la inversa de lo que sucede en los programas clásicos, en la base de
conocimientos las informaciones entran tal como llegan, ya que el orden no influye en los
resultados obtenidos. Sucede así porque cada elemento de conocimiento es comprensible
por sí mismo tomado de forma aislada y, por lo tanto, no es necesario referirse al contexto
en el cual está inserto. La información se representa, por regla general, mediante reglas de
producción o redes semánticas. Las reglas de producción constituyen el método más
utilizado para construir bases de conocimientos en los sistemas expertos. Llamadas también
implicaciones lógicas, su estructura es la siguiente: para unas ciertas causas, unos efectos;
o, para determinadas condiciones, ciertas consecuencias. Junto a cada regla, se almacena
también su porcentaje en forma de probabilidad. Éste indica, mediante un tanto por ciento,
el grado de certeza de las consecuencias que se obtienen como resultado de la aplicación de
la regla de producción. En cuanto a las redes semánticas, se trata de un método de
construcción de bases de conocimientos en el cual los conocimientos se muestran mediante
un grafo en el que los vértices representan los conceptos u objetos y las aristas indican las
relaciones entre ellos.

Además el sistema dispone de la llamada base de hechos, que alberga los datos propios
correspondientes a los problemas que se desea tratar con la ayuda del sistema. Asimismo, a
pesar de ser la memoria de trabajo, la base de hechos puede desempeñar el papel de
memoria auxiliar. La memoria de trabajo memoriza todos los resultados intermedios,
permitiendo conservar el rastro de los razonamientos llevados a cabo. Puede, por eso,
emplearse para explicar el origen de las informaciones deducidas por el sistema en el
transcurso de una sesión de trabajo o para llevar a cabo la descripción del comportamiento
del propio sistema experto. Al principio del período de trabajo, la base de hechos dispone
únicamente de los datos que le ha introducido el usuario del sistema, pero, a medida que va
actuando el motor de inferencias, contiene las cadenas de inducciones y deducciones que el
sistema forma al aplicar las reglas para obtener las conclusiones buscadas.

El último elemento, el motor de inferencias, es un programa que, mediante el empleo de los


conocimientos puede resolver el problema que está especificado. Lo resuelve gracias a los
datos que contiene la base de hechos del sistema experto. Por regla general, el tipo de reglas
que forman la base de conocimientos es tal que, si A es válido, puede deducirse B como
conclusión. En este caso, la tarea que lleva a cabo el motor de inferencias es la de
seleccionar, validar y activar algunas reglas que permiten obtener finalmente la solución
correspondiente al problema planteado.
El sistema experto establecido se compone, por lo tanto, de dos tipos bien diferenciados de
elementos, los propios del campo de los expertos relacionados con el problema concreto (es
decir, la base de conocimientos y la base de hechos) y el que se puede aplicar de forma
general a una gran variedad de problemas de diversos campos (como el caso del motor de
inferencias). Sin embargo, el motor de inferencias no es un mecanismo universal de
deducción, ya que hay dos tipos diverso: los que emplean el razonamiento aproximativo
(para el cual el resultado puede ser erróneo) y aquellos que emplean un tipo de
razonamiento capaz de obtener un resultado (si llegan a él), con toda seguridad, verdadero.

Fases del proceso

Sin embargo, a pesar de no existir una metodología generalmente aceptada en cuanto a la


concepción de los sistemas expertos, se admite por regla general un esquema que consta de
tres fases. En la primera fase, la discusión con el experto o los expertos humanos en la cual
se intenta, por un lado, delimitar el problema a resolver y, por el otro, los modos de
razonamiento que se emplearán para su solución. La segunda fase comprende el desglose
del formalismo de expresión del conocimiento y la determinación del motor de inferencias
adecuado a dicho formalismo. Por último, la tercera etapa, corresponde a la creación de la
base de conocimientos (en colaboración con los expertos humanos), así como a la
comprobación y ajuste del funcionamiento del sistema experto mediante el empleo de
ejemplos.

Niveles de conocimiento
A pesar de no disponerse de un modelo general comúnmente aceptado, existe unanimidad
en cuanto a la aprobación de tres niveles distintos de conocimientos, a los que corresponde
tres fases diferentes de estudio y sobre los que se basa, en general, la concepción de un
sistema experto. Esos niveles son el de estructuración, el conceptual y el cognoscitivo. El
primero es el que define el mecanismo que genera la certeza. Este mecanismo varía según
el campo al que se aplique el sistema experto, ya que las evidencias asociadas a cada campo
no son idénticas. La determinación del nivel de estructuración permite definir un
formalismo de representación del conocimiento así como un mecanismo adecuado de
deducción. El nivel conceptual es el que determina el conjunto de los conceptos que emplea
el experto humano en la materia; cada uno de ellos corresponde a un nudo del razonamiento
del experto. Se le asocia un descriptor que se experimenta con el formalismo
correspondiente al nivel de estructuración. Finalmente, el nivel cognoscitivo corresponde al
conjunto de los conocimientos que el experto humano pone en práctica para la resolución
del problema planteado. Este conjunto de conocimientos debe poder traducirse al lenguaje
definido mediante el formalismo de representación del conocimiento adoptado. En cuanto
al desarrollo actual de la investigación en el campo de los sistemas expertos, la primera fase
corresponde al desarrollo de sistemas y programas que traten directamente el lenguaje
natural, si bien persisten todavía dos escollos importantes. Por un lado, el problema de
cómo emplear de un modo eficaz una gran cantidad de información sin necesidad de echar
mano de la combinatoria; es decir, cómo conseguir un sistema dotado de conocimientos
(metaconocimientos) que le permitan utilizar los conocimientos del sistema y que, a su vez,
le permitan deducir automáticamente nuevos conocimientos, ya que no cabe pensar en la
reunión de todos los conocimientos necesarios en casos de campos tan sumamente vastos
como el del diagnóstico en la medicina.

NEUROCOMPUTADORAS.

Introducción
La neurocomputación trata de alcanzar algunas de las ventajas que proporcionan las redes
neuronales biológicas, imitándolas tanto desde el punto de vista morfológico como desde el
punto de vista funcional, para lo que se basa en la realización de Redes Neuronales
Artificiales o ANN (del inglés Artificial Neural Networks). El motivo por el que se sigue
esta vía de investigación es la observación de que el cerebro humano (y no sólo el humano)
presenta ciertas notables y deseables características que no se encuentran ni en los
ordenadores, que siguen la clásica arquitectura propuesta por Von Neumann, ni en los
ordenadores paralelos modernos. Entre estas características cabe destacar el paralelismo
masivo, lo que les dota de una gran robustez y tolerancia a fallos, la capacidad de aprender,
la capacidad de generalizar, la capacidad de adaptación, la capacidad inherente de procesar
información contextual, y aunque parezca lo más anecdótico, un bajo consumo.
Es común el asombro que el ciudadano medio siente ante la enorme capacidad de proceso
numérico y simbólico asociado que presentan los ordenadores, capacidad que supera con
mucho, y desde hace tiempo, a la de cualquier ser humano. Sin embargo, cualquier persona
que haya tenido cierto contacto con un ordenador sabrá que es una "máquina tonta",
incapaz de realizar ninguna de las funciones citadas en el párrafo anterior. Y, de hecho, en
otro tipo de problemas, es el hombre (y cualquier animal) el que deja en ridículo al
superordenador más potente. Uno de los ejemplos más claros consiste en la resolución de
complejos problemas de percepción, como el reconocer a una persona entre una multitud,
problema que un ser humano puede resolver en un simple golpe de vista.
Por todos estos motivos, las redes neuronales artificiales tratan de imitar los principios de
organización, que se cree rigen el cerebro humano. La unidad funcional de estas redes es,
por tanto, la neurona artificial. Una neurona artificial no es otra cosa que un procesador
muy simple capaz de realizar instrucciones muy primitivas, pero a gran velocidad, y que
guarda la información aprendida en las conexiones con otras neuronas..
Pero antes de profundizar en el estudio de la neurona artificial, es conveniente echar una
mirada a la neurona biológica y lo que se puede aprender de ella.

I. La neurona biológica
II. Los orígenes: La neurona de McCulloch y Pitts
III. Aprendiendo y generalizando
IV. El perceptrón de Rossenblatt
V. Aprendizaje del perceptrón
VI. Minsky y Papert: comienza la etapa oscura

La neurona biológica
Nuestro sistema nervioso y, en especial, nuestro cerebro, está compuesto por un conjunto
de células nerviosas, también llamadas neuronas.
Una neurona es una célula altamente especializada en el proceso de la información, cuya
estructura básica puede observarse en la Figura 1. En ella se puede observar como la
morfología de una neurona comprende tres elementos principales: el soma, o cuerpo
principal; las dendritas, o terminaciones de la neurona que actúan como contactos
funcionales de entrada con otras neuronas; y el axón o eje, una rama más larga que será la
encargada de conducir el impulso nervioso y que finaliza también en diversas
ramificaciones.
La comunicación entre neuronas se realiza a través de las llamadas sinapsis, que son los
puntos de conexión entre las fibras terminales del axón de una neurona y una dendrita de
otra. Las sinapsis también reciben el nombre de saltos sinápticos, ya que en la mayoría de
los casos, fibras terminales y dendritas no están en contacto, sino separadas por una
pequeña distancia. Por ello, al contrario de lo que mucha gente piensa, el impulso nervioso
no es de naturaleza eléctrica, sino electroquímica.

Figura 1. Anatomía de una neurona biológica.

El impulso nervioso producido por una neurona se propaga por el axón y al llegar al
extremo, las fibras terminales presinápticas liberan unos compuestos químicos llamados
neurotransmisores. Los neurotransmisores se liberar en la membrana celular pre-sináptica y
alteran el estado eléctrico de la membrana post-sináptica. En función del neurotransmisor
liberado, el mecanismo puede resultar excitador o inhibidor para la neurona "receptora".
En el soma de una neurona se integran todos los estímulos recibidos a través de toda ss
dendritas (Figura 2 (A)). Si como resultado se supera un potencial de activación, la neurona
se "dispara" generando un impulso que se transmitirá a través del axón. Como puede
observarse en la Figura 2(A), este impulso no es, ni mucho menos, constante, y la
capacidad de reaccionar de la neurona varía con el tiempo hasta volver al estado de reposo.
La comunicación tiene lugar a través de trenes de pulsos, por lo que los mensajes se
encuentran modulados en frecuencia.

II. Los orígenes: La neurona de McCulloch y Pitts


En 1943 McCulloch y Pitts publicaron un trabajo en el que se hablaba, por primera vez, de
las neuronas artificiales y de cómo éstas podrían realizar cálculos lógicos en redes
neuronales. El modelo de neurona artificial propuesto consistía en una unidad binaria de
umbral similar a la que se observa en la Figura 3 y en la que se pueden distinguir los
siguientes elementos:
 
 Conjunto de conexiones de entrada.
 Valor de salida (binario).
 Función de proceso.

 Umbral de activación.

Figura 3. Neurona de McCulloch-Pitts


En definitiva, se trata de una unidad de proceso con n entradas, x1,...,xn y una única salida
(y), con dos únicos valores de salida posibles y constantes. La unidad realiza una función
de proceso sobre los valores de las entradas, y si el valor obtenido supera un umbral de
activación, se activa produciendo como respuesta el valor de activación. Por el contrario, si
el resultado de aplicar la función de proceso a los valores de entrada no superara este
umbral, la neurona permanecería inactiva y su salida sería nula.
La función de proceso de las entradas es, típicamente, una suma ponderada de los valores
de las mismas, lo que significa que no todos los valores de entrada tienen igual aportación
para la suma, sino que cada uno de ellos se modifica multiplicándolo por un valor de
ponderación o peso, wi, antes de proceder a sumar. Expresado de manera formal, el
comportamiento de la neurona se correspondería con una función de la forma:

[1]
donde representa a la función escalón; wi son los pesos sinápticos y u el umbral de
activación. Obsérvese que en función del signo de los pesos sinápticos, estos pueden actuar
tanto como activadores (signo positivo) como inhibidores (signo negativo).
Como se puede observar, este modelo de neurona artificial presenta numerosas analogías
con las neuronas biológicas: los cables o conexiones son análogos a dendritas y axones, los
pesos de ponderación de las conexiones equivalen a las sinapsis y el umbral de activación
representa la actividad del soma. 
En la practica, y por simplificar la notación y la programación, se suele emplear el "truco"
de incluir el umbral de activación dentro del sumatorio. Para ello, se le modela como una
entrada "fantasma" x0 de valor siempre idéntico a la unidad, a la que se asigna un peso de
w0=u. De esta forma, la expresión queda como:

[2]
similar a la anterior, con la salvedad de que, en esta ocasión , ha desaparecido el umbral,
pero se consideran las entradas a partir del subíndice 1 y no del subíndice 0. Ahora bien, si
se observa la expresión, no cuesta reconocer en ella la del producto escalar de dos vectores.
Por tanto, basta considerar el conjunto de n entradas de una neurona como un vector X de
dimensión n+1 (recuérdese que se arrastra la entrada x0=1), y el conjunto de pesos de la
neurona como otro vector W de la misma dimensión, para que la expresión de la función de
proceso de la neurona de McCulloch y Pitts quede reducida a

[3]
donde el operador "asterisco" (*) representa el producto escalar de dos vectores.
Desde la publicación del trabajo de McCulloch y Pitts ha habido numerosas
generalizaciones a su modelo de neurona, pero la más empleada consiste en la sustitución
de la función de salida que, en lugar de realizarse a través de una función escalón, se suele
sustituir por una función rampa, gaussiana o sigmoide (Figura 2(B), capitulo anterior).
 
Listado 1. Neurona Artificial  La más empleada de todas es esta última, que
"tonta" corresponde a la expresión: g(x)=1/[1+exp(-bx)],
class neurona_t { donde b es el parámetro que define la pendiente de la
private: curva.
   vector_t __pesos; El Listado 1 define en C++ todo el código necesario
   float __umbral_activacion; para una neurona artificial como la expuesta.
public: Obsérvese que las expresiones son tan simples porque
   neurona_t(void): tanto los pesos como las entradas se expresan en forma
__pesos(NUM_ENTRADAS) { de vector. En el ejemplo, con fines didácticos, no se ha
       __umbral_activacion=0: empleado el "truco" de la entrada número 0 y se indica
   } explícitamente el valor de umbral. Como ilustración de
   int salida(vector_t entrada { la simplicidad del concepto, el Listado 1 es adecuado.
       return(__pesos * entrada > Sin embargo, la neurona artificial del mismo es "tonta",
__umbral_activacion) ? 1 : 0; ya que no es capaz de aprender. Su comportamiento
   } dependerá de la forma en que se inicialice el vector de
}; //class neurona pesos. Por tanto, para que sea de utilidad, será
necesario dotarla de la capacidad de aprender y
  generalizar.
III. Aprendiendo y generalizando
¿Cómo se enseña a un niño a reconocer lo que es un osito? Se le enseñan ejemplos de osito
y se le dice "esto es un osito". Cuando el niño ve un "patito" y dice "osito", se le corrige y
se le dice "esto es un osito". Durante esta etapa del aprendizaje del niño, se puede esperar
que si se vuelven a presentar algunos de los ejemplos que ya han aparecido y se le pregunta
"¿es esto un osito?", el niño responderá correctamente. Pero no sólo eso. A partir de cierto
momento, si se le enseña al niño nuevos objetos, que no haya visto jamás antes, se podrá
esperar que sea también capaz de identificar cuáles de ellos son ositos y cuáles no. Por
supuesto, para que el aprendizaje sea efectivo, será necesario que el niño haya tenido un
número suficiente de ejemplos y que estos hayan sido suficientemente representativos. No
basta con enseñarle sólo un osito, ni un conjunto de ositos "picassianos". Por otra parte
siempre habrá casos en los que no estará muy claro si determinado peluche es un osito o
cualquier otro animal y es que, como diría Platón, intuimos la idea (el eidos) de "el osito" a
partir de realizaciones concretas de osito, que no son sino la sombra de éste en la caverna.
La capacidad de generalización de los ejemplos concretos conocidos a la clase general, es
uno de los ingredientes de la inteligencia. Pero, ¿cómo puede aprender una neurona
artificial? El primero en responder a esta cuestión fue Donald O. Hebb, que de las
observaciones de experimentos neurobiológicos dedujo que si las neuronas de ambos lados
de una sinapsis se activan simultáneamente repetidas veces, el valor de la sinapsis se
incrementa. Este principio es lo que se conoce como postulado de aprendizaje de Hebb. Así
pues, el aprendizaje de una neurona y de una red neuronal se traduce en la adaptación de los
pesos de sus conexiones sinápticas, para disminuir el error entre la salida producida ante
una entrada y la salida correcta.

En el Listado 2, se puede observar una neurona ya provista de capacidad de aprendizaje


gracias al método entrenamiento_supervisado, que acepta como argumentos un vector de
entrada y una salida correcta, y devuelve 0 en caso de acierto y 1 en caso de fallo.
 

Listado 2. Neurona Artificial capaz de aprender

             (__tasa_aprendizaje * entrada);


class neurona_t {
             __umbral_activacion += 
private:
                         __tasa_aprendizaje;
   vector_t __pesos;
          }else{
   float __umbral_activacion;
              __pesos=__pesos + 
   float __tasa_aprendizaje;
                 (__tasa_aprendizaje * entrada);
public:
   neurona_t(void):
              __umbral_activacion -=
__pesos(NUM_ENTRADAS)
                  __tasa_aprendizaje;
{
                  }
       __umbral_activacion=0;
                  return 1;
       __tasa_aprendizaje=0.1;
        }else{
}
                  return 0;
   int salida(vector_t entrada) {
         }
       return (__pesos * entrada >
      }
     __umbral_activacion) ? 1: 0;
      float getUmbralActivacion (void)
}
const {
   int entrenamiento_supervisado(vector_t
   return __umbral_activacion; }
entrada, int salidaOK) {
      float getTasaAprendizaje (void) const
       int resultado=salida(entrada);
{
       if (resultado != salidaOK) {
   return __tasa_aprendizaje; }
          if (resultado > salidaOK) {
      vector_t getPesos (void) const {
             __pesos=__pesos - 
   return __pesos; }
};  //class neurona_t

. El perceptrón de Rossenblatt
El primero al que se le ocurrió una aplicación práctica para la neurona de McCulloch y
Pitts, y aplicando las ideas de aprendizaje de Hebb, fue Frank Rossenblat que a finales de
los años 50 le iba dando vueltas a la idea de construir una máquina capaz de reconocer
objetos de forma visual. De esta forma, en 1958 nació el Perceptrón, la primera red
neuronal de la historia, compuesta por la astronómica cantidad de ¡1 neurona! El diseño del
perceptrón consistía en una capa de elementos sensores, cuyas salidas se conectaban a las
entradas de una neurona de McCulloch-Pitts (como se puede observar en la Figura 4) a
través de detectores de umbral. El número de detectores de umbral era inferior al de
elementos sensores, por lo que un detector podía conectarse a más de un sensor. La
distribución de estas conexiones era aleatoria.

Figura 4. El perceptrón de Rossenblatt

El perceptrón generó gran interés no sólo por su capacidad de generalizar a partir de sus
vectores de entrenamiento, sino también por el hecho de comportarse correctamente, aún
cuando sus entradas se conectaban de forma aleatoria. En primer lugar se procede a
entrenar a la red neuronal de una única neurona. Si el entrenamiento finaliza con éxito
(como se verá más adelante, Minsky y Papert demostraron que esto no es siempre posible),
se aprovechará la capacidad de generalización del perceptrón para "pedirle" que clasifique
nuevas entradas en función de lo aprendido. 

Si se presenta a la red un vector de entrada que no se encuentra en el conjunto de


entrenamiento, el perceptrón mostrará una capacidad de generalización, clasificándolo
correctamente (si ha aprendido correctamente, claro está).

. Aprendizaje del perceptrón.


El proceso de aprendizaje del perceptrón consiste en la presentación al mismo de un
conjunto de vectores de aprendizaje. El perceptrón no  aprende cuando su salida es correcta.
Sin embargo, si es incorrecta se reajustan los pesos sinápticos de acuerdo a una regla de
aprendizaje.
Se considera que el aprendizaje se ha completado cuando el perceptrón supera una pasada
completa de todos los vectores de entrenamiento, sin cometer ningún error.
Rossenblatt desarrolló una regla de aprendizaje para el perceptrón, que consiste en
actualizar los pesos de la siguiente forma:

wi = wi + n*(d-y)*xi

donde wi, es el peso asignado a la entrada i-ésima, xi; n es un valor denominado tasa de
aprendizaje que se suele ajustar entre 0 y 1; d es el valor teóricamente correcto de la salida;
e y es el valor de salida que ha producido el perceptrón. La actualización del valor umbral,
queda implícita en la ecuación anterior si se consideran las entradas y pesos de índice 0. De
forma explícita: 

u = u + n*(d-y)

Siendo u, nuevamente, el umbral de activación.


De la tasa de aprendizaje dependerá la velocidad y la corrección con que el perceptrón
aprenderá. A tasa mayores, mayor velocidad en principio, aunque también mayor riesgo de
producirse oscilaciones en el ajuste. La neurona del Listado 2 (capítulo III), aprende según
la regla de aprendizaje de Rossenblatt. Rossenblatt también demostró, con su regla de
aprendizaje, que si los patrones de entrenamiento se tomaban de dos clases linealmente
separables (concepto que se explica en el próximo capítulo), el procedimiento de
aprendizaje del perceptrón convergía en un número finito de pasos. A esto se le llama
teorema de convergencia del perceptrón. En lenguaje simple y llano significa que "si el
perceptrón puede aprender, con esta regla aprende".

Sin embargo, los patrones de entrenamiento no son siempre linealmente separables y , por
tanto, existen categorías que un perceptrón no es capaz de aprender a clasificar. Esto es lo
que Minsky y Papert demostraron, como se explica en el siguiente apartado.
 
 

La importancia de tener un buen profesor


Obsérvese que el conocimiento adquirido por una red neuronal es subsimbólico, ya que se
encuentra en los pesos. Esto es un problema debido a que, si bien con redes simples es
posible saber qué ha aprendido la red, con redes complejas apenas se puede obtener más
que una compleja expresión matemática de su función de transferencia. Esto ha
conducido a situaciones problemáticas como la de hace algunos años en la que el ejército
americano empleó una red neuronal para analizar las fotografías tomadas desde satélites
espía. El objetivo era reconocer la presencia de tanques en las fotografías, pero
cometieron la torpeza de emplear un conjunto inapropiado de fotografías de
entrenamiento. Así la red aprendió a distinguir sin ningún error entre todas las fotografías
utilizadas para el entrenamiento, aquellas que presentaban tanques de las que no los
presentaban. Pero durante la fase posterior de operación comenzaó a cometer muchos
errores. Al final se descubrió que la red había aprendido a reconocer nubes, no tanques, ¡y
todas las fotografías de entrenamiento que presntaban tanques, también presentaban
nubes! Por tanto, la elección de los vectores de entrenamiento es un aspecto fundamental
en el entrenamiento de una red neuronal.

VI. Minsky y Papert: comienza la etapa oscura


Cuando la investigación sobre redes neuronales se ofrecía ta prometedora, Minsky y Papert
publicaron un trabajo que sumiría esta línea de investigación poco menos que en el
conjunto de las proscritas durante un período de veinte años, ya que demostraron muchas
de las limitaciones del perceptrón. Entre estas limitaciones se encontraba la de no ser capaz
de aprender una operación lógica tan básica como el Or-exclusivo o XOR, que da la
casualidad de que es el operador de comparación. Así pues, un perceptrón no era capaz de
indicar si sus entradas eran iguales o distintas.
Como se ha indicado, un perceptrón es una red neuronal de una única neurona. Por tanto, su
función de salida se corresponderá con la de la fórmula 1 del capítulo II. Ahora bien, dado
que la salida del perceptrón es binaria, o devuelve el valor de activación o devuelve el valor
nulo. Por tanto, está claro que divide el espacio muestral de vectores de entrada en dos
regiones. si el perceptrón tiene dos entradas, el vector de entrada tendrá dimensión dos, por
tanto, todas las entradas se pueden representar como puntos en un plano, considerando la
primera entrada como coordenada x y la segunda como coordenada y. La función de salida
del perceptrón será:

1 si w1*y1 + w2*y2 - u > 0


0 si w1*y1 + w2*y2 -u <= 0

y la ecuación de la línea límite entre las dos regiones, con salida 0 y con salida 1, será,
precisamente,

w1*y1 + w2*y2 - u = 0

la ecuación de una recta en el plano. Si el perceptrón tiene tres entradas, por el mismo
razonamiento los vectores de entrada pueden considerarse coordenadas en el espacio y la
división entre las dos regiones correspondientes a cada posible salida, será un plano. En
general, para cualquier número de entradas, el límite entre estas dos regiones viene
determinado por la zona de transición de la función escalón, es decir:

que se corresponde con un hiperplano de dimensión n-1 en un espacio vectorial de


dimensión n. Esto es lo que se conoce como condición de separabilidad lineal del espacio
de entrada Figura 5(A).
Esta condición nos dice que, para que un perceptrón pueda distinguir entre dos categorías,
éstas deben ser separables linealmente o de lo contrario el perceptrón será incapaz de
aprender. Ahora bien, supóngase que se trata de entrenar un perceptrón para que clasifique
entradas según dos categorías que se corresponden con una operación lógica tan simple
como un XOR. Es decir, las entradas pertenecen a una categoría si ambas son iguales y a
otra si ambas son distintas. Bien, fíjese el lector en el problema del XOR, representado en
la Figura 5(B). Trate de separar las 2 categorías definidas por la tabla de verdad del XOR,
mediante una única linea recta: imposible. El problema surge cuando se desea emplear un
perceptrón para reconocer patrones y no se sabe, a priori, si estos son linealmente
separables.

Figura 5. A) Condición de separabilidad lineal. B) El problema del XOR.

El problema del perceptrón no era difícil de encontrar. Es fácil demostrar que si se


generaliza la idea del perceptrón a un perceptrón multicapa (con una segunda capa de
neuronas, procesando la salida de la primera capa), es posible realizar cualquier operación
lógica. El problema es que, al trabajar con redes multicapa, no se sabe sobre los pesos de
qué neurona ni de qué capa recae la responsabilidad de los errores de la red. Así pues, no
existía posibilidad de entrenar este tipo de redes neuronales.
En este punto se quedó la investigación en temas de redes neuronales a finales de los años
60. Durante un período de 20 años, las instituciones apenas se atrevían a financiar ningún
trabajo que girara alrededor de las mismas, ya que parecía un camino sin salida.
Sin embargo, a principios de los 80, esta disciplina resurgió de sus cenizas. Apareció el
algoritmo de retropropagación, capaz de entrenar perceptrones multicapa, y con él una
pléyade de nuevas arquitecturas y algoritmos de entrenamiento basadas en diversas ideas,
desde la original de Rossenblatt, hasta la mecánica estadística. Y en este nuevo período de
esplendor de la neurocomputación, se ha encontrado en otra disciplina de soft-computing,
una de las mejores formas de entrenar una red neuronal de cualquier grado de complejidad:
el uso de algoritmos genéticos.

Algoritmos Genéticos
1. Introducción

Los algoritmos genéticos (AG) proporcionan un método de aprendizaje basado en la


analogía con la evolución de las especies. Los AG generan un conjunto de hipótesis
mediante la mutación y recombinación de parte del conjunto de hipótesis conocido. En cada
paso el conjunto de hipótesis conocido como “población actual” se renueva remplazando
una proporción de esta población por los sucesores de las hipótesis más “adecuadas”
(mediante el uso de una función de evaluación).

La popularidad de los AG se debe en parte a que la evolución es un método robusto y bien


probado dentro de los sistemas biológicos naturales. Además son fácilmente paralelizables,
lo que supone una ventaja gracias al abaratamiento actual de los costes en hardware. Por
otra parte, los AG pueden realizar búsquedas en espacios de hipótesis que contienen
complejas interacciones entre las distintas partes, donde el impacto de cada parte sobre la
función de evaluación es difícil de especificar.

Aunque no se garantice encontrar la solución óptima, los AG generalmente encuentran


soluciones con un alto grado de acierto.

2. Algoritmos Genéticos

El objetivo de los AG es buscar dentro de un espacio de hipótesis candidatas la mejor de


ellas. En los AG la “mejor hipótesis” es aquella que optimiza a una métrica predefinida
para el problema dado, es decir, la que más se aproxima a dicho valor numérico una vez
evaluada por la función de evaluación.

El comportamiento básico de un algoritmo genético es el siguiente: de forma iterativa va


actualizando la población de hipótesis. En cada iteración, todos los miembros de la
población son procesados por la función de evaluación, tras lo cual una nueva población es
generada. La nueva generación estará compuesta por:

- Las mejores hipótesis de la población actual (seleccionadas


probabilísticamente)

- Y el resto de hipótesis necesarias para mantener el número, que se


consiguen mediante el cruce de individuos. A partir de dos hipótesis padre
(seleccionadas probabilisticamente a partir de la población actual) se
generan dos hipótesis hijas recombinando sus partes siguiendo algún criterio
establecido.

Una vez llegados a este punto (con una nueva población con el mismo número de
individuos), a un determinado porcentaje de la población se le aplica un operador de
mutación.

2.1 Representación de Hipótesis


Las hipótesis en los AG se suelen representar mediante cadenas de bits, de forma que
puedan ser fácilmente manipulables por los operadores genéticos de mutación y cruce.

Primero veamos como usar una cadena de bits para representar los posibles valores de un
atributo. Si un atributo puede tomar tres valores posibles (A,B y C), una manera de
representarlo es mediante tres bits de forma que:

Atributo (100) = puede tomar el valor A


Atributo (010) = puede tomar el valor B
Atributo (001) = puede tomar el valor C
Atributo (110) = puede tomar el valor A ó B (A or B)
Atributo (111) = puede tomar el valor A, B ó C (A or B or C). No importa el valor del
atributo.

De esta forma podemos representar fácilmente conjunciones de varios atributos para


expresar restricciones (precondiciones) mediante la concatenación de dichas cadenas de
bits. Ejemplo:

“Tiempo” puede ser Despejado, Nublado o Lluvioso.


“Viento” puede ser Fuerte o Moderado.
(Tiempo = Nublado ó Lluvioso) y (Viento = Fuerte) se representaría con la siguiente
cadena: 011 10.

Las postcondiciones de las reglas se pueden representar de la misma forma. Por ello una
regla se puede describir como la concatenación de la precondición y la postcondición.
Ejemplo:

“JugaralTenis” puede ser Cierto o Falso.


Si Viento = Fuerte entonces JugaralTenis = Cierto se representaría mediante la cadena 111
10 10. Donde los tres primeros bits a uno indican que el atributo “Tiempo” no afecta a
nuestra regla.

Cabe destacar que una regla del tipo 111 10 11 no tiene demasiado sentido, puesto que no
impone restricciones en la postcondición. Para solucionar esto, una alternativa es codificar
la postcondición con un único bit (1 = Cierto y 0 = Falso). Otra opción es condicionar los
operadores genéticos para que no produzcan este tipo de cadenas o conseguir que estas
hipótesis tengan una adecuación muy baja (según la función de evaluación) para que no
logren pasar a la próxima generación de hipótesis.

2.2 Operadores Genéticos

Los dos operadores más comunes son la “mutación” y el “cruce”.

El operador de cruce genera dos nuevos hijos a partir de dos cadenas padre recombinando
sus bits. Para elegir con que bits contribuye cada padre hacemos uso de una “máscara de
cruce”. Veamos un par de ejemplos:
Cruce Simple:

Cadenas padre Mascara de Cruce Hijos


     
11101001000 11101010101
11111000000
00001010101 00001001000

Cruce Doble:

Cadenas padre Mascara de Cruce Hijos

11101001000 11001011000
00111110000
00001010101 00101000101

El operador mutación produce un nuevo hijo de un solo padre cambiando el valor de uno de
sus bits elegido al azar. Generalmente se aplica después de hacer uso del operador cruce.

Otros operadores genéticos son “AddAlternative” y “DropCondition”. El primero de ellos


cambia un bit de un atributo de 0 a 1, es decir, permite que el atributo pueda tomar el valor
representado por dicho bit. El segundo pone todos los bits de un atributo a 1, con lo que
elimina la restricción impuesta por el atributo.

Una posibilidad interesante que surge con la aplicación de estos operadores, es la de incluir
nuevos bits en las cadenas que representan las hipótesis y que indiquen que operadores
pueden ser aplicados a dicha hipótesis (añadiendo un bit por operador). Como estos bits van
a sufrir modificaciones a causa de los operadores aplicados a la cadena, estaremos alterando
dinámicamente los métodos de búsqueda del algoritmo genético.

2.3 Función de evaluación y selección

La función de evaluación define el criterio para ordenar las hipótesis que potencialmente
pueden pasar a formar parte de la siguiente generación.

La selección de las hipótesis que formarán parte de la siguiente generación o que serán
usadas para aplicarles los operadores genéticos, puede realizarse de varias formas. Las más
usuales son:

- Selección proporcional al ajuste dado por la función de evaluación. En este


método la probabilidad de que una hipótesis sea seleccionada viene
determinada por:
Figura 1 - Probabilidad de que la hipótesis hi sea elegida.

- Selección mediante torneo. Se eligen dos hipótesis al azar. La más


“adecuada” (según la función de evaluación) tiene una probabilidad p
(prefijada de antemano) de ser elegida, mientras que la otra tiene una
probabilidad (1 – p).

- Selección por rango. Las hipótesis de la población actual se ordenan de


acuerdo a su adecuación. La probabilidad de que una hipótesis sea
seleccionada será proporcional a su posición en dicha lista ordenada, en
lugar de usar el valor devuelto por la función de evaluación.

3. Búsqueda en el espacio de Hipótesis

Una de las dificultades que nos encontramos en algunos algoritmos genéticos es el


problema del “crowding” (muchedumbre). Se trata de un fenómeno por el cual las mejores
hipótesis se reproducen rápidamente de manera que las nuevas generaciones una gran
proporción se debe a éstas hipótesis y a otras muy similares (descendientes), reduciendo así
la diversidad de la población, y por lo tanto, las posibilidades de la evolución. Para reducir
los efectos del “crowding” se usan varias estrategias. Una solución consiste en cambiar el
método de selección habitual (selección proporcional al ajuste) por alguno de los otros
vistos con anterioridad (selección mediante torneo o selección por rango). Otra opción
consiste en usar otra función de evaluación, “ajuste compartido”, de manera que el valor
devuelto por esta función se devalúa ante la presencia de otras hipótesis similares en la
población. Y una tercera alternativa es restringir el tipo de hipótesis a los que se les permite
la recombinación.

4. Programación Genética

La programación genética (PG) es una forma de computación evolutiva en la que los


individuos de la población son programas, en lugar de cadenas de bits.

4.1 Representación de Programas

Los programas usados en la programación genética suelen representarse mediante sus


árboles sintácticos. En esta notación, cada llamada a una función se representa por un nodo
en el árbol, y los argumentos de la función corresponden con los nodos hijos de éste. Para
aplicar programación genética a un dominio particular, es necesario que el usuario defina
de antemano las primitivas que se van a emplear así como el tipo de los nodos hoja. Por lo
tanto, la programación genética realiza una búsqueda evolutiva en un espacio de programas
descritos mediante sus arboles sintácticos.

De igual forma que los algoritmos genéticos, la programación genética itera sobre una
población de individuos produciendo una nueva generación mediante el empleo de la
selección, el cruce y la mutación. La adecuación de un programa viene determinada por los
resultados de su ejecución sobre unos datos de entrenamiento (función de evaluación).

Así, por ejemplo, el operador de cruce se implementa mediante el intercambio de


subárboles entre programas padres.

En la mayoría de los casos, el rendimiento de la programación genética depende


básicamente de la representación elegida y de la elección de la función de evaluación.

Figura 2 - Representación de un programa mediante su árbol.

5. Modelos de evolución y aprendizaje

En muchos sistemas naturales, los individuos aprenden a adaptarse durante sus vidas. Al
mismo tiempo distintos procesos biológicos y sociales permiten a la especie adaptarse a lo
largo de las distintas generaciones, por lo que surge una interesante pregunta: ¿Cuál es la
relación entre el aprendizaje individual de un organismo durante su vida y el aprendizaje
colectivo de la especie?
A esta cuestión intentan responder la teoría de la evolución Lamarckiana y la teoría del
efecto Baldwin.

5.1 Evolución Lamarckiana

Lamarck (científico de finales del siglo XIX) propuso que la experiencia de un individuo
afecta directamente a su descendencia, por lo que el conocimiento sería hereditario y las
siguientes generaciones no necesitarían adquirirlo. Se trata de una conjetura que mejora la
eficiencia de los algoritmos genéticos y la programación genética, en las cuales se ignoraba
la experiencia adquirida por el individuo durante su vida.
Aunque biológicamente esta teoría no es correcta como modelo de evolución, sin embargo
si es perfectamente aplicable al caso de la computación genética, donde recientes estudios
han demostrado su capacidad para mejorar la efectividad.

5.2 El efecto Baldwin

Se trata de otro mecanismo que sugiere como el aprendizaje de un individuo puede alterar
el curso de la evolución de la especie. Se basa en las siguientes afirmaciones:

- Si una especie evoluciona en un entorno cambiante, entonces los


individuos capaces de aprender durante su vida se verán favorecidos. De
hecho, la habilidad para aprender permite a los individuos maximizar su
capacidad de adaptación en el entorno.

- Los individuos con capacidad de aprendizaje dependerán en menor medida


de su código genético. Como consecuencia de lo anterior las nuevas
generaciones poseerán una diversidad genética mayor, lo que permitirá una
evolución más rápida. En resumen, la capacidad de aprendizaje de algunos
individuos provoca indirectamente una aceleración en la evolución de toda
la población.

6. Paralelismo en Algoritmos Genéticos

Los algoritmos genéticos son fácilmente paralelizables. A continuación se muestran las


posibilidades de paralelismo con AG’s:

- Grano Grueso

Se subdivide la población en una serie de grupos distintos (siguiendo algún


criterio), llamados “demes”. Cada uno de estos grupos se asigna a un nodo
de computación distinto, y a continuación se aplica un AG en cada nodo.
Los operadores de cruce se aplicaran generalmente entre individuos del
mismo grupo, y en menor porcentaje, entre individuos de distintos grupos.
En este entorno surge un nuevo concepto, denominado migración, que se
produce cuando un individuo de un grupo se copia o se traslada a otro/s. Un
beneficio del modelo de grano grueso es que se reduce el efecto “crowding”
que aparecía en los AG no paralelizados.

- Grano Fino

Se asigna un procesador a cada individuo de la población. La recombinación


se efectúa entre individuos vecinos en la red de computación. Algunos
ejemplos de redes de procesadores (especifican las reglas de vecindad) son
la malla, el toroide, etc.

7. Ejercicio
Diseñar un algoritmo genético que aprenda a clasificar conjunciones de reglas ara el
problema “Jugar al Tenis” descrito en el capítulo 3 [nota]. Describe detalladamente la
codificación de la cadena de bits para las hipótesis y el conjunto de operadores de cruce.

La expresión que soluciona el problema es la siguiente:

(Tiempo=Soleado y Humedad=Normal) o
(Tiempo=Nublado) o
(Tiempo=Lluvioso y Viento=Debil)

Los posibles valores de los atributos son:

Tiempo=(Soleado,Nublado,Lluvioso)
Humedad=(Alta,Normal)
Viento=(Fuerte,Debil)
JugarTenis=(Si,No)

Por lo tanto, para la cadena de bits de las hipótesis usaremos tres bits para “Tiempo”, dos
para “Humedad”, dos para “Viento” y uno para “JugarTenis”. Así, por ejemplo:

Si (Tiempo=Soleado y Humedad=Normal y Viento=Fuerte) -> JugarTenis=Si

se expresaría como: 100 01 10 1

Como la solución buscada es la disyunción de tres de estas reglas, las cadenas de bits de
nuestras hipótesis estarán formadas por la concatenación de tres cadenas. Ejemplo:

100 01 10 1 + 010 10 10 1 + 100 10 01 1

En cuanto al operador de cruce, elegiremos uno de tipo uniforme con la siguiente máscara:

Máscara de cruce = 11000011 11000011 11000011

Para elegir las hipótesis que pasarán a la siguiente generación, o que serán elegidas para
sufrir las operaciones de cruce, usaremos una selección probabilística tal que: ver Figura 1

A la hora de implementar el algoritmo, haremos uso de los siguientes parámetros:

r= % población que sufrirá la operación de cruce


p= número de hipótesis de la población
m= % de individuos (hipótesis) que mutan

Durante las iteraciones del algoritmo:

a) (1-r)p pasarán a la siguiente generación (Ps) intactos


b) (r*p)/2 parejas de hipótesis realizarán la operación de cruce
c) Y el m porciento de la “nueva” población sufrirán mutaciones. Este m porciento se elige
con una probabilidad uniforme.

Función Fitness (función de evaluación)

Dispondremos de una base de datos de entrenamiento, compuesta por cadenas de 7 bits tal
que nos indique que condiciones habrán de darse para jugar o no al tenis. Por ejemplo:

100 01 10 1 = (Tiempo=Soleado y Humedad=Normal) -> Si

En nuestro ejemplo, el número de combinaciones posible es 3x2x2=12 (lo cual no es


mucho y nos permite tener una muestra de entrenamiento completa).

El objetivo de la función es el de comprobar el porcentaje de reglas de entrenamiento que


nuestra hipótesis es capaz de clasificar correctamente para, de esta forma, dotar a cada
individuo de un valor numérico indicativo de su precisión (ajuste al modelo buscado).

Nuestra hipótesis (individuo) se puede representar en tres partes (A,B y C) donde Z es el bit
que indica si se juega o no al tenis en cada caso.

A   B   C
x x x x x x x x   x x x x x x x x   x x x x x x x x
z   z   z

Nuestra función de evaluación tomará una hipótesis y la procesará con todo el conjunto de
entrenamiento. Una cadena de entrenamiento se representa de la siguiente forma (donde R
es el bit que indica si se juega o no al tenis):

Entrenamiento
x x x x x x x x
Data (7 bits) R

Esta cadena de entrenamiento se compara con cada una de las partes de la hipótesis para ver
si alguna de las tres la clasifica correctamente. Para saber si una parte clasifica bien una
regla de entrenamiento procederemos de la siguiente forma:

Si R=1 entonces

Si ( (Entrenamiento AND A) = Entrenamiento) devolver SI


Sino devolver NO

Si R=0 entonces

Si ( (Data AND A) = Data)


Si R=Z devolver SI
Sino devolver NO

Sino devolver NO

Si se ha devuelto SI, procedemos con el siguiente dato de entrenamiento. Si se ha devuelto


NO, evaluamos la siguiente parte del individuo (B y después C).

Para cada individuo, la función de evaluación realiza esta tarea con todos los datos de
entrenamiento, devolviendo un número entre 0 y 1 que indique el porcentaje de
clasificaciones correctas de la hipótesis actual (0% a 100%). Así pues, cada individuo
estará asociado a un valor numérico que usará posteriormente la función de selección.

Función AG (Fitness,Umbral,p,r,m)
{

Inicializar población P.
Para cada hipótesis en P, calcular Fitness.
Mientras que max(Fitness) < Umbral hacer

Seleccionar (1-r)p individuos de P que pasan a


Ps.
Elegir (r*p)/2 parejas de P y aplicarles
operadores de cruce. Añadir los hijos a Ps.
Elegir m porciento sobre Ps y aplicar
mutación.
P <- Ps
Para cada hipótesis en P, calcular Fitness.

Fin mientras
Devolver la hipótesis con mayor fitness.

En nuestro caso el Umbral será 1 (100% de clasificaciones correctas) ya que disponemos en


la base de entrenamiento de todas las combinaciones posibles (algo que no ocurrirá en
problemas reales y no de juguete, como es éste)

Nota: Se trata de un ejemplo sencillo en el que una determinada persona juega al tenis
siempre y cuando se cumplan unas determindas condiciones atmosféricas.

8. Conclusiones

Como hemos podido observar, la principal ventaja de los algoritmos genéticos radica en su
sencillez. Se requiere poca información sobre el espacio de búsqueda ya que se trabaja
sobre un conjunto de soluciones o parámetros codificados (hipótesis o individuos). Se
busca una solución por aproximación de la población, en lugar de una aproximación punto
a punto. Con un control adecuado podemos mejorar la aptitud promedio de la población,
obteniendo nuevos y mejores individuos y, por lo tanto, mejores soluciones.

Se consigue un equilibrio entre la eficacia y la eficiencia. Este equilibrio es configurable


mediante los parámetros y operaciones usados en el algoritmo. Así, por ejemplo, bajando el
valor del umbral conseguiremos una rápida solución a cambio de perder en “calidad”. Si
aumentamos dicho valor, tendremos una mejor solución a cambio de un mayor tiempo
consumido en la búsqueda. Es decir, obtenemos una buena relación entre la calidad de la
solución y el costo.

Quizás el punto más delicado de todo se encuentra en la definición de la función de


evaluación. Al igual que en el caso de la heurística, de su eficacia depende el obtener
buenos resultados. El resto del proceso es siempre el mismo para todos los casos.

La programación mediante algoritmos genéticos suponen un nuevo enfoque que permite


abarcar todas aquellas áreas de aplicación donde no sepamos como resolver un problema,
pero si seamos conscientes de que soluciones son buenas y cuales son malas. Desde
aplicaciones evidentes, como la biología o la medicina, hasta otros campos como la
industria (clasificación de piezas en cadenas de montaje). Los algoritmos genéticos poseen
un importante papel en aplicaciones de búsqueda y optimización, pero desde nuestro punto
de vista, es en el aprendizaje automático donde encuentra un estupendo marco de trabajo.
La capacidad que poseen para favorecer a los individuos que explican bien los ejemplos, a
costa de los que no lo hacen, consigue una nueva generación con mejores reglas y, por lo
tanto el sistema será capaz de ir aprendiendo a conseguir mejores resultados.

La Computación Evolutiva en el Contexto de la Inteligencia Artificial

Carlos A. Coello Coello *

Indudablemente, la Inteligencia Artificial (IA) es una de las áreas que más expectación han
causado no sólo dentro de las Ciencias de la Computación, sino para la sociedad en general.
La búsqueda para comprender los mecanismos de la inteligencia ha resultado ser la piedra
filosofal de muchos científicos a lo largo de los años. De entre las áreas principales de la
Inteligencia Artificial, una de las que ha atraído más investigadores ha sido el aprendizaje
de máquina. Michalski definió ìaprendizajeî como: ìla cons-trucción o modificación de
representaciones de lo que se experimentaî. Esta definición se concentra en una
representación interna que el sistema de aprendizaje construye (ya sea una persona o un
programa de computadora) y modifica en base a su entorno (típicamente, lo que el sistema
de aprendizaje experimenta es su entorno, o al menos cierta parte de él). Indudablemente,
resulta vital en el proceso de emular comportamientos ìinteligentesî, que un sistema pueda
mejorar su comportamiento sobre la base de la experiencia que colecte al efectuar la misma
tarea en repetidas ocasiones, y que además desarrolle algún tipo de noción de lo que es un
error, y cómo evitarlo. La escuela clásica dentro de la IA, utiliza representaciones
simbólicas basadas en un número finito de primitivas y de reglas para la manipulación de
símbolos. El período simbólico de la IA se considera aproximadamente comprendido entre
1962 y 1975, seguido por un período dominado por los sistemas basados en el
conocimiento de 1976 a 1988. Sin embargo, en este segundo período las representaciones
simbólicas (por ejemplo, redes semánticas, lógica de predicados, etc.) siguieron siendo
parte central de dichos sistemas. En la actualidad, la IA empieza a extender sus áreas de
investigación en diversas direcciones y trata de integrar diferentes métodos en sistemas a
gran escala, en su afán por explotar al máximo las ventajas de cada esquema.

Curiosamente, el primer período de la Inteligencia Artificial, llamado sub-simbólico, data


de aproximadamente 1950 a 1965. Este período utilizó representaciones numéricas (o sub-
simbólicas) del conocimiento. Aunque la mayor parte de los libros de IA sólo enfatizan el
trabajo realizado por Rosenblatt y Widrow con redes neuronales durante este período, la
realidad es que otra importante escuela sub-simbólica se fraguó también en la misma época:
los algoritmos evolutivos.

En 1932, Cannon visualizó la evolución natural como un proceso de aprendizaje. Alan


Turing reconoció, en 1950, que ìdebe haber una cone-xió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 para manejarla, y que se implanto sobre la base de los votos de un comité de
jefes técnicos. Bajo este esquema, la planta se veía como a una especie en evolución. 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 IA de la época
prestó poca atención a su trabajo, y en algunas ocasiones lo atacó despiadadamente. Por
ejemplo, Minsky lo criticó duramente, argumentando que una búsqueda puramente
aleatoria era mucho mejor que el algoritmo de Friedberg (este argumento aún es es-grimido
infundadamente por algunos miembros de la comunidad científica en contra de los
algoritmos genéticos).

El trabajo de Bremermann, en 1958, se enfocó más a la optimización, introduciendo el


importante manejo de un valor de aptitud, y definiendo a un individuo como una cadena de
símbolos binarios (unos y ceros). Bremermann advirtió, acertadamente, que la mutación
jugaba un papel importante en la evolución, pues impedía el estancamiento en mínimos
locales. Aunque muchas de sus ideas se usan hoy en día, Bremer-mann cometió el error de
tratar de optimizar funciones lineales y convexas, obteniendo resultados decepcionantes,
pues sus algoritmos evolutivos tenían que ser complementados con otras heurísticas para
converger en una solución. Hoy sabemos que los algoritmos evolutivos difícilmente pueden
competir con las técnicas tradicionales de optimización en esos dominios.

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, en-fatizaron que ìel
método de Fogel no debía verse en su estado actual (en 1966) como algo particularmente
útil para resolver problemas, a excepción de los más simples posiblesî. Solo-monoff 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. Algunos investigadores fueron más duros en sus críticas.
Lindsay, por ejemplo, llegó a decir que la técnica de Fogel no era mejor que una búsqueda
completamente aleatoria, y que ìtemía que los sicólogos lo usaran para alienarse del
importante trabajo que se estaba haciendo en Inteligencia Artificialî.

Otra técnica evolutiva dirigida particularmente a la optimización de funciones continuas de


alta complejidad se desarrolló en Alemania, en 1965, por Rechenberg y Schwefel. Esta
técnica, llamada estrategia evolutiva, se utilizó inicialmente para resolver problemas
ingenieriles que desafiaban a los métodos de optimización tradicionales, como el gradiente
conjugado, y se basa en la modificación sistemática de un vector de números reales
(representando las variables de decisión del problema) mediante operadores probabilísticos,
usando ciertos criterios para decidir en qué dirección dirigir la búsqueda. La estrategia
evolutiva utiliza como operador principal a la mutación, y en su versión más reciente usa la
cruza como operador secundario.

Aunque el australiano Fraser propuso, desde fines de los 50, un proce-dimiento 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 contra-ejemplos 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 IA, 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.
Probablemente, y de manera análoga a como lo hace la Naturaleza, sólo el tiempo podrá
determinar el verdadero lugar que le correspode a los algoritmos evolutivos dentro de las
Ciencias de la Computación.

Los comienzos de la Inteligencia Artificial

I. La llegada del ordenador

Alemania

 1941. Konrad Zuse construye el primer ordenador programable para múltiples


aplicaciones.

Inglaterra

 1943. En Bletchley Park, Buckinghamshire, se construye el Colossus, una máquina


creada para descifrar mensajes en clave de la Wehrmacht.
 1948. En la Universidad de Manchester, F.C. Williams, T. Kilburn y su equipo
diseñan el Mark I, un ordenador programable para múltiples aplicaciones.
 1951. En febrero, Ferranti Ltd. empieza a instalar las versiones comerciales del
Mark I.
EEUU

 1945. En la Universidad de Pennsylvania, John Mauchly y J. Presper Eckert


construyen el ENIAC, un ordenador que tenía que ser recableado a mano antes de
cada nueva tarea.
 1951. Eckert y Mauchly diseñan el UNIVAC, el primer ordenador comercial de la
industria americana.

"La Inteligencia Artificial es la ciencia de construir máquinas que hagan cosas que
requerirían inteligencia si fueran hechas por seres humanos”"
Marvin Minsky, fundador del Laboratorio de Inteligencia Artificial de MIT,
"Semantic Information Processing", 1968.

"En la historia han ocurrido tres grandes eventos. El primero es la creación del universo. El
segundo es la aparición de la vida. El tercero, que considero de igual trascendencia, es la
aparición de la inteligencia artificial. Esta es una forma de vida muy diferente, y con unas
posibilidades de logros intelectuales que son difíciles de imaginar para nosotros. Estas
máquinas pueden evolucionar: unos ordenadores inteligentes diseñarán otros, y llegarán a
ser más y más inteligentes. (...) La pregunta es, ¿dónde quedaremos nosotros? Es bastante
complicado imaginar cómo podremos tener máquinas que son millones de veces más
inteligentes que la persona más inteligente y que, sin embargo, seguirán siendo nuestras
esclavas, para hacer lo que nosotros queramos. Quizá condesciendan con nosotros y hablen
con nosotros; quizá jueguen con nosotros a juegos que nos gusten; quizá, en cierto sentido,
nos mantengan como animales de compañía."

El "Logic Theorist"

 1956. Newell, Shaw y Simon programan un ordenador para buscar


demostraciones de teoremas lógicos.
Un teorema lógico tiene la siguiente forma: supuesto que o bien X o bien
Y es verdadera, y supuesto que Y es de hecho falsa, entonces X es
verdadera
 El "Logic Theorist" encontró la demostración de 38 de los 52 teoremas
presentes en el capitulo II de los "Principia Mathematica" de Bertrand Russell y
Alfred North Whitehead.

Alan Turing y la filosofía de la AI

"Me propongo considerar la siguiente cuestión: ¿Pueden pensar las máquinas?(...)


[Para final de siglo] el uso de las palabras y la opinión ilustrada general habrá
cambiado de tal manera que uno podrá hablar de máquinas pensantes sin esperar
que nadie le contradiga"
2. Algunos ejemplos deslumbrantes.

Dentro de la máquina

 100 PRINT "¿Cómo te llamas?"


 200 INPUT NAME$
 300 PRINT "Dime", NAME$, "¿tú crees que los ordenadores pueden pensar? Por favor,
responde con un simple SI o NO."
 400 INPUT ANSWER$
 500 IF ANSWER$ = "SI" THEN PRINT "Muchas gracias", NAME$, "Veo que vamos
a llevarnos muy bien."
 600 IF ANSWER$ = "NO" THEN PRINT "Bueno, bueno", NAME$, "esa es una
posición filosófica interesante. Imagínate que los psicólogos y los neurólogos descubren
que el cerebro humano funciona de la misma manera que un ordenador. ¿Significaría
entonces que tú tampoco piensas?"

Eliza, la psicoterapeuta

El programa

Todos los hombres son iguales.

¿EN QUÉ SENTIDO?

Siempre están dándonos la lata de una forma u otra.

¿PUEDES DARME UN EJEMPLO CONCRETO?

Por ejemplo, mi novio me ha hecho venir aquí.

TU NOVIO TE HA HECHO VENIR AQUÍ.

Dice que ando deprimida la mayor parte del tiempo.

ME DA PENA OÍR QUE ESTÁS DEPRIMIDA.

Es verdad, soy infeliz.

¿PIENSAS QUE EL VENIR AQUÍ TE VA A AYUDAR A NO SER


INFELIZ?

Sólo sé que necesito ayuda.

¿QUÉ SUPONDRÍA PARA TI EL RECIBIR AYUDA?


Quizás aprendería a llevarme bien con mi madre.

CUÉNTAME MÁS COSAS DE TU FAMILIA.

Mi madre cuida de mí.

¿QUIÉN MÁS EN TU FAMILIA CUIDA DE TI?

Mi padre.

TU PADRE.

Tú eres como mi padre en cierto sentido.

¿QUÉ PARECIDOS VES?

No eres muy agresiva, pero me parece que no quieres que lo note.

¿QUÉ TE HACE PENSAR QUE YO NO SOY MUY AGRESIVA?

Tú no discutes conmigo.

¿POR QUÉ CREES QUE NO DISCUTO CONTIGO?

Me tienes miedo.

¿TE GUSTA PENSAR QUE TE TENGO MIEDO?

Mi padre tiene miedo de todo el mundo.

¿QUÉ OTRAS COSAS SE TE OCURREN CUANDO PIENSAS EN TU


PADRE?

Matones.

¿TIENE ESTO ALGO QUE VER CON QUE TU NOVIO TE HAYA


HECHO VENIR AQUÍ?

Los comentarios

"No imaginaba que un contacto extremadamente breve con un programa


de ordenador relativamente simple podía provocar pensamientos
engañosos en gente por lo demás bastante normal"
Weizenbaum, J. 1976. "Computer Power and Human Reason:
From Judgement to Calculation". San Francisco: W.H. Freeman.
"[Una vez que el programa esté listo para su uso clínico] proporcionará
una herramienta terapéutica que puede ponerse ampliamente a disposición
de hospitales de enfermos mentales y centros psiquiátricos con escasez de
terapeutas...Un sistema de ordenadores diseñado para este fin podría tratar
varios cientos de pacientes cada hora."
Colby, K.M., Watt, J.B, Gilbert, J.P. 1966. "A Computer Method
of Psychotherapy: Prelimary Comunication", Journal of Nervous
and Mental Disease, 142, pp.148-152.

Las preguntas

 ¿Es cierto que hay en nuestra sociedad una voluntad, o incluso un deseo,
de confiar a los ordenadores el bienestar de los seres humanos?
 ¿Cual es la cuestión importante en AI: si las máquinas que persigue
podrán alguna vez construirse o si las maquinas que persigue deberán
jamás construirse?

Los problemas

 El programa carece de las capacidades que habitualmente asociamos a la


inteligencia:
o conocimiento del entorno
o capacidad de razonamiento
o diseño de planes de acción
o aprendizaje

o comprensión de los propios motivos

Shrdlu, el robot

El programa

Coge un bloque rojo grande.


OK.

Encuentra un bloque que sea más alto que el que estás aguantando y ponlo dentro de
la caja.

POR "LO" ENTIENDO QUE TE REFIERES AL BLOQUE QUE SEA MÁS ALTO
QUE EL QUE ESTOY AGUANTANDO.

¿Qué hay en la caja?

LA PIRÁMIDE AZUL Y EL BLOQUE AZUL.

¿En qué se apoya la pirámide?

EN LA CAJA.

¿Cuántos bloques no están dentro de la caja?

CUATRO.

¿Es al menos uno de ellos más estrecho que el que te dije que cogieras?

SÍ, EL CUBO ROJO.

¿Se apoya en algo?

SÍ, EN EL BLOQUE VERDE.

La pirámide azul es mía.

ENTENDIDO.

Tengo bloques que no son rojos, pero no tengo nada en lo que se apoye una
pirámide.

ENTENDIDO.

¿Tengo algo que esté dentro de la caja?

SÍ, DOS COSAS: EL BLOQUE AZUL Y LA PIRÁMIDE AZUL.

¿Hay algo que sea más grande que todas las pirámides, pero que no sea tan ancho
como aquello en que se apoya?
SÍ, EL BLOQUE AZUL.

En la cosa más pequeña que se apoya en el apoyo de la pirámide más alta, ¿se apoya
algo verde?

SÍ, LA PIRÁMIDE VERDE.

¿Hay alguna torre?

LO SIENTO, PERO NO SÉ QUÉ ES UNA TORRE.

Una torre es una pila que consta de dos cubos verdes y una pirámide.

ENTENDIDO.

¿Hay entonces alguna torre?

NO.

¿Podrías hacer una pila juntando los dos bloques rojos y encima, bien el cubo verde
o bien una pirámide?

OK.

¿Cuál es el bloque verde que está sobre la mesa?

EN EL QUE SE APOYA LA PIRÁMIDE ROJA.

Pon la pirámide más pequeña encima suya.

OK.

¿Habías tocado alguna pirámide antes de poner la pirámide más pequeña encima del
bloque verde?

SÍ, LA PIRÁMIDE VERDE.

¿Cuándo la cogiste?

CUANDO ESTABA APILANDO UN CUBO ROJO, UN CUBO VERDE


GRANDE Y UN BLOQUE ROJO GRANDE.

¿Por qué la cogiste?


PARA QUITARLA DE EN MEDIO.

¿Por qué hiciste eso?

PARA LIMPIAR EL CUBO ROJO.

¿Por qué limpiaste ese cubo?

PARA PONERLO SOBRE UN CUBO VERDE GRANDE.

¿Por qué hiciste eso?

PARA APILAR UN CUBO ROJO, UN CUBO VERDE GRANDE Y UN BLOQUE


ROJO GRANDE.

¿Por qué hiciste eso?

PORQUE TÚ ME LO PEDISTE.

Las preguntas

 ¿Se puede decir que la aparición de androides inteligentes sobre la Tierra está como
quien dice a la vuelta de la esquina?

Programas que juegan

El programa de damas de Samuel

El proyecto

[El objetivo era programar] un ordenador digital que se comportase de


manera tal que, si así se comportasen seres humanos o animales, se diría
que su conducta implica un proceso de aprendizaje
Samuel, A. L. 1959. "Some Studies in Machine Learning Using
the Game of Checkers". In Feigenbaum, E.A., Feldman, J. (eds)
1963. Computers and Thought. New York: McGraw-Hill, pp. 71-
105.

El resultado

 El primer programa de ordenador que fue capaz de mejorar sus resultados


mediante la práctica.
 El primer programa de ordenador que batió a su propio programador.
Las preguntas

 La derrota de Samuel a manos de su propio programa, ¿Contradice el


viejo dicho de que un ordenador nunca puede exhibir más inteligencia que
la persona que lo programa?
 ¿Tenemos también que rehacer el otro confortante dicho de que un
ordenador puede hacer únicamente aquello que su programador le dice?

La idea

 El programa contiene una "receta" para asignar "valores" a los estados


globales del tablero después de cada movimiento. La receta utiliza los
siguientes ingredientes,
o cuarenta rasgos distinguibles en cada tablero (por ejemplo,
"agujeros": cuadrados vacíos rodeados por tres o más piezas del
mismo color; y "diques": hileras de piezas del mismo color que
ocupan cuadrados diagonalmente adyacentes)
o un número, al que llamamos FIN, que representa la importancia
relativa de cada rasgo
 El programa calcula la utilidad de una configuración C del tablero para un
jugador contando los agujeros para ese jugador en C y multiplicando este
número por el número FIN de los agujeros, y lo mismo con los diques y
con el resto de rasgos distinguibles. Los totales para cada rasgo se suman
para obtener el valor global -una medida de la sabiduría de hacer un
movimiento que sitúa el tablero en la configuración C.

Los programas de ajedrez Deep Thought y Hitech

Deep Thought (Hsiung Hsu)

 1989. Gary Kasparov vence dos a cero a Deep Thought, entonces


campeón mundial de ajedrez entre los ordenadores. En la prensa, "Mente
contra Materia", "Gary Kasparov destroza a un computador en nombre de
toda la Humanidad".
 1991. En CeBit Hannover Fair, el upgraded Deep Thought2 vence a dos
grandes-maestros. En un mini-torneo con siete grandes-maestros, Deep
Thought acabó con 2,5 sobre 7.

Hitech (Hans Berliner)

 Hitech puede examinar 175,000 posiciones por segundo.

 Hitech alcanza entre 2400 y 2500 puntos. Kasparov sobrepasa los 2700.
Hitech eleva sus puntos inexorablemente cada año. A mediados de 1985
tenía por debajo de 2100. A principios de 1986, después de una importante
mejora del hardware, alcanzó los 2300

El "General Problem Solver"

El proyecto

 1969. Newell, Simon y Shaw: hacer que un ordenador busque


inteligentemente las soluciones de un problema.

Los ejemplos

La torre de Hanoi

La torre de Hanoi está construida con discos de piedra lisos y un poste


central de madera. Cada día, los devotos del templo mueven la torre de un
poste al siguiente. Mueven los discos uno a uno, y de un poste a otro.
(Está absolutamente prohibido dejar un disco en el suelo.) Además, la
tradición manda que los devotos que coloquen un disco sobre otro de
menor tamaño sean arrojados a los perros del templo. ¿Cómo mueven
entonces la torre?

Los misioneros y los caníbales

Tres misioneros van de viaje por una selva inhóspita con tres portadores
nativos. Los nativos son caníbales, pero la costumbre de su pueblo manda
no atacar a menos que las víctimas sean menores en número. Cada
misionero sabe bien lo que ocurrirá si el grupo llega a dividirse. Hacia el
final de la primera semana, el grupo alcanza la ribera de un río ancho y
profundo. Uno de los portadores se encuentra con una canoa para dos
personas. En menos de una hora, los seis componentes del grupo están
sanos y salvos en la otra orilla del rio. ¿Cómo lo lograron?

Las novelas de detectives

Benito Torelli, el jefe de un pequeño casino, aparece un buen día con la


yugular cortada por negarse a pagar a la "seguridad". La policia local
arresta a cinco sospechos, que hacen las siguientes declaraciones (cada
sospechoso dice dos verdades y una mentira). ¿Quién degolló a Benito?
o Theo: Yo no maté a Torelli. Además, yo nunca he usado una
cuchilla. Razor lo hizo.
o Roxanne: Yo no me cargué a Torelli. Estaba con Mustafah en ese
momento. Wally se lo cargó.
o Wally: Yo no maté a Torelli. Nunca he estado en un casino. Soy
un distinguido informático.
o Razor: Yo soy inocente. Todos los que dicen que lo hice están
mintiendo. Debe de haber sido Roxanne.
o Mustafah: Yo soy inocente. Nunca había visto a Roxanne hasta el
día de hoy. Razor lo hizo.

Las reflexiones

"Dado que GPS se comporta como los seres humanos (en un dominio
ciertamente limitado), y dado que GPS es un programa de ordenador, se
sigue que GPS constituye una incontestable evidencia que apoya la
siguiente hipótesis: “la conducta libre de un ser humano razonablemente
inteligente puede entenderse como el producto de un conjunto de leyes
complejo, pero finito y determinado."
Newell, A., Simon, H. 1961. "GPS, a Program that Simulates
Human Thought". In Feigenbaum, E. A., Feldman, J. (eds)1963.
Computers and Thought. New York: McGraw-Hill, pp. 279-93.

Las preguntas

 ¿Somos ordenadores? ¿nos comportamos de acuerdo con un conjunto de


leyes finito y determinado que constituye nuestro programa?
 Inteligencia artificial humana versus inteligencia artificial marciana:
o GPS: los investigadores tratan de escribir programas que simulen
la mente humana. Los trabajos recientes en redes neuronales
pueden considerarse dentro de esta misma línea de pensamiento.

o Las damas de Samuel: los programadores tienen libertad para


utilizar cualquier técnica, sin importar si tiene algo o nada que ver
con el modo de funcionamiento de la mente humana.

Los sistemas expertos

La idea

 Un sistema experto es un programa que soluciona problemas y da


consejos en un área especializada de conocimiento. Por ejemplo,
o diagnóstico médico
o diseño de automóviles
o prospecciones geológicas
 Un ingeniero del conocimiento dedica meses a observar y entrevistar
expertos humanos en el área de interés. Una vez la "masa de
conocimientos" es organizada y formalizada, se graba en la "base de
conocimientos" del programa.

Mycin

El programa

 Mycin es un sistema experto en tratamientos de infecciones


bacteriológicas en la sangre: partiendo de la información sobre los
síntomas del paciente y los resultados de los tests, trata de identificar el
organismo responsable de la infección.
 Durante la "consulta", Mycin puede requerir más informacion, formulando
cuestiones del tipo "¿Ha sufrido hace poco el paciente quemaduras?" o
"¿Es el paciente alérgico al Colistin?". El programa puede también sugerir
que se hagan nuevos tests.
 Una vez el diagnóstico ha sido encontrado, Mycin recomienda la
medicación que se debe seguir.
 Si se le pide, Mycin puede explicar el razonamiento que le lleva a su
diagnóstico.
 Se ha podido comprobar que Mycin tiene la misma competencia que un
especialista humano en infecciones de sangre y bastante mayor que la de
un médico de cabecera.

Las reglas de inferencia

 La mayoría de los sistemas expertos almacenan su conocimiento en forma


de reglas de inferencia: si esto, entonces eso; si eso, entonces aquello otro.
Las siguientes son dos de estas reglas presentes en la base de
conocimientos de Mycin:

regla para el diagnóstico

SI

 1. el lugar del cultivo es la sangre, y


 2. la tintura del organismo es gram-negativa, y
 3. la morfología del organismo es filiforme, y
 4. el paciente ha sufrido severas quemaduras

ENTONCES hay evidencia (.4) de que la identidad del organismo


es pseudonoma.

regla para la terapia


SI la identidad del organismo es pseudonoma

ENTONCES la terapia debe seleccionarse de entre las siguientes


medicinas:

 1. Colistin (.98)
 2. Polymyxin (.96)
 3. Gentamicin (.96)
 4. Carbenicillin (.65)
 5. Sulfisoxazole (.64)

Las reflexiones.

"Hay un peligro inherente en la etiqueta "sistemas expertos". Cuando


hablamos de un experto humano nos referimos a alguien con un
conocimiento profundo, que no le sirve únicamente para solucionar
problemas específicos adecuadamente formulados, sino también para
ponerlos dentro de un contexto más amplio. Nosotros distinguimos entre
un experto y un idiota erudito. Llamar a un programa un experto puede
llevar a conclusiones erróneas. (...) Estas desfiguraciones quizá sean útiles
para quienes traten de conseguir dinero para su investigación o traten de
vender programas, pero pueden crear esperanzas injustas en quienes
piensen en usarlos."

Una mirada cruda a los hechos

El test de Turing

La idea
Escenario: dos seres humanos y un ordenador; uno de los seres humanos,
el interrogador, debe averiguar cuál de los otros dos participantes es el
ordenador; el interrogador puede preguntar cualquier cosa, sin importar el
tema o la profundidad, y al ordenador se le permite hacer todo lo posible
por provocar la errónea identificación. El ser humano participante debe,
sin embargo, responder siempre verazmente a las cuestiones que se le
formulen.

Un ejemplo

En el primer verso de tu soneto, se lee: "Shall I compare thee to a summer


´s day". ¿No quedaría igual o incluso mejor decir "a spring´s day"?

ENTONCES RESULTARÍA UN VERSO AMÉTRICO.

¿Qué tal si dices "a winter´s day"? ¿Sigue las reglas de la métrica, no?

SÍ, PERO A NADIE LE GUSTA QUE LE COMPAREN CON UN DÍA


DE INVIERNO.

¿No dirías tú que Mr. Pickwick te recuerda el día de Navidad?

EN CIERTO SENTIDO, SÍ.

Pues el día de Navidad es un día de invierno, y no creo que a Mr.


Pickwick le importe la comparación.

SUPONGO QUE NO ESTÁS HABLANDO EN SERIO. "A WINTER´S


DAY" SIGNIFICA UN TÍPICO DÍA DE INVIERNO, Y NO UN DÍA DE
INVIERNO TAN ESPECIAL COMO EL DÍA DE NAVIDAD.

¿Ha pasado algún programa (Eliza) el test?

¿Un test con éxito?

¿Sabes si puedo utilizar el ordenador esta mañana?

¿POR QUÉ ME LO PREGUNTAS?

Porque quizá pueda hacer algunas ventas más.

¿POR QUÉ NO ESTÁS SEGURO DE SI PUEDES HACERLAS?

Mis futuros clientes nunca han visto una demostración del sistema.

¿IMPORTA ESO MUCHO?

Por supuesto que importa.

PARECES BASTANTE CONVENCIDO DE ESO.

¡Esto es ridículo!

¿QUÉ QUIERES DECIR CON QUE ESTO ES RIDÍCULO?

¿Hay alguna razón por la que no pueda usar el ordenador ahora mismo?

CUÉNTAME ALGO MÁS ACERCA DE TUS FUTUROS CLIENTES.

¿Por qué rayos me estás tratando de forma tan asquerosa?

¿QUÉ QUIERES DECIR CON QUE TE ESTOY TRATANDO DE


FORMA ASQUEROSA?

Los problemas

 El procedimiento no se repitió con un número suficiente de


interrogadores.
 El interrogador no estaba tratando de distinguir un ordenador de una
persona.
 No hubo tres participantes, sino sólo dos.
Otro test con menos éxito

¿PODRÍAS, POR FAVOR, CONTARME TU PROBLEMA?

Me pregunto si los ordenadores pueden pensar.

¿POR QUÉ HABLAS AHORA DE ORDENADORES?

Dado que tú eres uno, pensaba que podría preguntarte si tú piensas.

¿PIENSAS TÚ QUE LOS ORDENADORES PUEDEN NO SER DE LOS


QUE TÚ PENSABAS QUE PODRÍAS PREGUNTARME SI YO
PIENSO?

Vamos a hablar sólo de tí, y no de mí. ¿Puedes pensar?

TE GUSTA PENSAR QUE YO -NO TÚ-, ¿NO?

¿Qué dices?

¿QUÉ TE SUGIERE ESO?

¿Qué te sugiere a tí?

CUÉNTAME MÁS COSAS DE LO QUE TE SUGIERE A MÍ?

Esto es absurdo. ¿A cuál de los dos te refieres con a mí?

¿POR QUÉ PIENSAS QUE ME REFIERO A TÍ?

La pregunta era a cuál de los dos se refiere la palabra.

SUPONTE QUE LA PREGUNTA SE REFIERE A CUÁL DE LOS DOS


NO SE REFIERE LA PALABRA.

Me parece que tú eres un programa completamente estúpido.

QUIZÁ TÚ QUIERAS SER UN PROGRAMA COMPLETAMENTE


ESTÚPIDO.

El programa

 Eliza analiza la frase de su "paciente" buscando estructuras (pattern): por


ejemplo, si la estructura "quizá" aparece en el input introducido por el
"paciente", el programa responde con una frase de una lista con respuestas
de la forma "TÚ NO PARECES MUY SEGURA" o si "todos" aparece en
el input, la respuesta se toma de otra lista con frases del tipo "TÚ TIENES
UNA PERSONA EN PARTICULAR EN LA CABEZA, ¿NO?"
 Eliza también puede construir respuestas, transformando las frases de su
"paciente". Por ejemplo, las siguientes estructuras,
o __you (*) me
o YOU LIKE TO THINK I (*) YOU - DON´T YOU?

se usan en el siguiente ejemplo,

o Why do you hate me?

o YOU LIKE TO THINK I HATE YOU- DON´T YOU?

Las evidencias para la hipótesis

El problema

 La manera más directa de proporcionar evidencias para apoyar la hipótesis


de partida del proyecto AI es la programación de ordenadores que
desarrollen tareas que un ser humano realiza utilizando su inteligencia.

Exitos de la inteligencia artificial

 Deep Thought y Hitech juegan ajedrez al nivel de los maestros.


 El programa de damas de Samuel no sólo vence a los campeones sino que
es un autodidacta.
 El General Problem Solver resuelve problemas como el de las Torres de
Hanoi o el de los misioneros y caníbales.
 El robot Shrdlu sostiene conversaciones en inglés coloquial sobre su
mundo de bloques y pirámides, puede formar y ejecutar planes, y puede
discutir sus motivos.
 El Logic Theorist demuestra teoremas en lógica simbólica que pondrían
en apuros a estudiantes de lógica.
 El sistema experto Mycin puede diagnosticar la enfermedad de un
paciente a partir de la información sobre los síntomas de la enfermedad y
el resultado de los análisis.

Shakey

 Shakey es un robot movil, construido en el Stanford Research Institute


(SRI), equipado con sensores de tacto y cámaras. Shakey habita en una de
varias habitaciones interconectadas, en medio de un montón de bloques de
madera.
 Si se le manda, por ejemplo, que mueva un bloque X desde su posición
sobre una plataforma en la habitación "A" a un lugar debajo de una
ventana, Shakey encuentra el camino hasta la habitación "A" examina la
situación; decide que necesita una rampa para alcanzar la plataforma; mira
alrededor; encuentra una rampa; la empuja contra la plataforma; sube la
rampa; baja el bloque hasta el suelo; y mueve el bloque hasta la posición
solicitada, debajo de la ventana -todo eso, sin ayuda humana de ningún
tipo.

Las reflexiones

 Estas evidencia, por supuesto, no son suficientes para establecer con


certeza que la hipótesis de partida del proyecto AI es verdadera. Sólo la
existencia de un ordenador completamente inteligente podría hacerlo. Los
logros de la AI hasta el momento sólo pueden aportar cierto apoyo a la
hipótesis. Este apoyo, ¿es grande, pequeño, o muy pequeño?

Las evidencias en perspectiva

Las opiniones

"Los logros de la investigación en AI son exíguos, incluso de juguete, si se


comparan con el objetivo final de construir un ordenador que funcione al
nivel de un ser humano inteligente en el complejo y caótico mundo real"
J. Copeland, B.J. 1993. "Artificial Intelligence: A Philosophical
Introduction". Oxford: Blackwell, pp. 85-86.
"Dentro de una generación, el problema de crear inteligencia artificial
estará sustancialmente solucionado."(M. Minsky, 1967)

"El problema con el que se enfrenta la AI es uno de los más difíciles con
los que la Ciencia se ha enfrentado jamás"(M. Minsky, 1986).

Ambas declaraciones recogidas en Dreyfus, H.L. 1986. Dreyfus,


S.E., "Mind over Machine". New York:Macmillan/The Free Press,
p.78
"Las actuales afirmaciones y esperanzas sobre progresos en la
construcción de ordenadores inteligentes son como la creencia de que
alguien subiendo a un árbol está haciendo progresos en su objetivo de
alcanzar la luna"

"Veinticinco años de investigación en AI han servido para hacer realidad


muy pocas de sus promesas y han fracasado en producir evidencia alguna
de que lo harán en el futuro"

Dreyfus, H.L. 1986. Dreyfus, S.E., "Mind over Machine". New


York:Macmillan/The Free Press, p.10 y p. xi, respectivamente
El "General Problem Solver"

Las opiniones

"Ahora, GPS es un término sin gracia que denota un programa


particularmente estúpido que soluciona puzzles. Pero al principio
significaba General Problem Solver, un programa que causó en todos
mucha excitación y muchas distracciones innecesarias"
McDermott, D. 1976. "Artificial Intelligence Meets Natural
Stupidity". In Haugeland, J. (ed.) 1981. Mind Design: Philosophy,
Psychology, Artificial Intelligence. Cambridge, Mass.: MIT Press,
pp. 143-60.

Las heurísticas

 GPS es un analizador de medios-fines: descrito el objetivo y la posición


inicial, y dado un listado de los medios disponibles, GPS hace los ensayos
necesarios hasta encontrar la manera de usar los medios hasta alcanzar el
objetivo.
 El método de ciego ensayo-error es un desesperado último recurso, más
que una manera inteligente de resolver un problema.
 GPS no es completamente ciego al aplicar el método de ensayo-error:
o no considera movimientos que le devuelven a la posición de
partida
o abandona cualquier cadena de movimientos que supera una
longitud predefinida
o tiene incorporadas instrucciones que le indican qué movimientos
debe intentar primero cuando hay varios posibles: las heurísticas.

Un ejemplo

 Suponemos que GPS tiene que resolver los movimientos que un robot
tiene que realizar para mover unos bloques de un lugar a otro. La lista de
los medios disponibles para el robot contiene las operaciones de moverse,
cogerunbloque, dejarunbloque, llevarunbloque, etc. Supongamos que el
robot tiene en su brazo el bloque X y que tiene que coger el bloque Y.
Antes de que cogerunbloque pueda emplearse sobre Y, el robot debe hacer
dos cosas: dejar libre su brazo y moverse hasta donde esté Y.
 ¿Qué medio debe aplicar primero el robot: moverse o dejarunbloque? El
programa puede contener una instrucción que manda que dejarunbloque
debe intentarse primero, dado que si el robot tiene su brazo libre puede
coger y apartar de su camino bloques que pueda encontrarse moviéndose
hasta Y. Sin embargo, el intento de dejarunbloque debe abandonerse
cuando dejar el bloque X obstruya el camino hacia Y. En estos casos,
moverse debe intentarse primero.

Los problemas

 La tarea de construir rankings para las aplicaciones de los medios se puede


convertir en un imposible si la lista de los medios disponibles es grande.
 Las heurísticas son programadas en GPS: ¿quién resuelve entonces los
problemas, el ordenador o el programador?

La representación

 GPS puede solucionar únicamente problemas de la forma: cómo alcanzar


un cierto objetivo desde una determinada posición inicial.

Un ejemplo

 Suponemos el siguiente problema: un hombre deja una cabaña en la cima


de una montaña al mediodía y baja a otra cabaña en la base del monte. Al
día siguiente, un mujer deja la cabaña, de nuevo al mediodía, de la base y
sube hasta la cabaña de la cima. La cuestión es, ¿Hay algún momento, una
hora x, tal que a la hora x en la segunda tarde, la mujer está exactamente
en el mismo punto del camino que el hombre a la hora x de la primera
tarde?
 No hay forma natural de representar este problema en la forma: partiendo
de la posición inicial utilizar los medios de la lista hasta alcanzar el
objetivo. En este caso,¿cuál es el objetivo?¿cuál la posición inicial?
¿cuáles son los medios?

Los problemas

 Con frecuencia, la parte más difícil al resolver un problema es encontrar la


manera adecuada de representarlo. Una vez encontrada la representación
correcta, dar con la solución es sencillo. Por ejemplo, en el caso de los
montañeros basta con considerar que las personas estan bajando y
subiendo el camino la misma tarde.

Las conclusiones

 La filosofía de GPS era que las técnicas para solucionar un problema


pueden separarse del conocimiento específico sobre el problema. GPS es
general en el sentido de que no contiene ningún conocimiento específico
sobre problema.

 La lección más importante que se puede sacar del fracaso de GPS es que
los programas que no saben mucho no pueden hacer mucho.
La programación del sentido común

El problema del conocimiento

La organización

Un ejemplo

 Fermín introduce en su ordenador el nombre y la dirección de cada


persona residente en Pamplona. Después, trata de encontrar la dirección de
Amaya. Dado que Fermín metió los datos en desorden, el ordenador tiene
que buscar laboriosamente en toda la memoria hasta encontrar "Amaya".

 El conocimiento debe ser almacenado en orden: pero, ¿en qué orden? No


podemos poner toda la realidad en orden alfabético.

La actualización

Un ejemplo

 Suponemos que nos han ofrecido un nuevo trabajo: tenemos entonces que
poner la casa a la venta, encontrar un colegio para los niños, decidir que
muebles vender, dar la noticia a los amigos, y un largo etc. que va desde
cancelar nuestro periódico en el kiosko hasta repensar nuestros planes a
largo plazo.
 Añadir un pequeña pieza de conocimiento, "cambiar de trabajo", ha
supuesto un sinnumero de actualizaciones en toda nuestra compleja red de
creencias, planes y perspectivas.

 Hay que diseñar métodos que permitan al ordenador hacer todas las
actualizaciones necesarias para asegurar que un cambio tiene efecto en su
inmenso memoria de datos interconectados: el frame problem

La relevancia

 Dado un problema, ¿cómo sabe el ordenador cuál es la información


relevante para solucionarlo?
 El conocimiento almacenado debe organizarse de forma que el ordenador
tenga algún medio de saber cuáles son los datos relevantes en un
determinado problema.
Shrdlu

Micro-mundos

 1960. La respuesta a los problemas planteados por el almacenamiento de


conocimiento en un ordenador fue empezar a trabajar en mundos
pequeños, simples y artificiales, y desarrollar las técnicas para organizar el
limitado conocimiento propio de esos mundos. La esperanza era que más
adelante esas técnicas podrían generalizarse y ser aplicadas al complejo
mundo real.
 Un clásico ejemplo de micro-mundo es el mundo de Shrdlu: una mesa,
una caja y unos pocos bloques de colores.

Los problemas

 El conocimiento que Shrdlu tiene de su mundo es mínimo: bloque no


significa para Shrdlu nada más que una cosa cuya posición él puede
alterar; no sabe si los bloques son sólidos o no, pesados o no, etc.;
tampoco sabe si rojo es algo que uno ve u oye: Shrdlu no conoce
realmente lo que es un bloque rojo.

Las conclusiones

 Cuando Shrdlu apareció, fue reconocido como un auténtico salto


cualitativo en la investigación. En la actualidad, hay un acuerdo general en
que Shrdlu, fue -en palabras de su creador- un callejón sin salida.
 Las técnicas desarrolladas en el mundo de Shrdlu no han sido nunca
aplicadas para solucionar problemas en mundos mas amplios e
interesantes. La hipótesis original resultó no ser acertada.

Programar el sentido común

Un ejemplo

 A Fermín le acaban de dar un nuevo equipo de cubos. Estaba abriendo la


caja cuando Amaya entró.
o ¿Quién estaba abriendo la caja?
o ¿Qué había en la caja?

Las opiniones

"La área en la que AI se encuentra con las mayores dificultades es la


programación del sentido común…. Hace tiempo que se ha reconocido
que es mucho más fácil escribir un programa que lleve a cabo complicadas
operaciones formales, que un programa que refleje el sentido común de un
perro"
Winograd, T.A., Flores, F. 1986. "Understanding Computing and
Cognition". Norwood, N.J.: Ablex, p. 98.
"Quizá la crítica más importante al trabajo reciente en AI es que todavía
no ha conseguido formalizar lo que llamamos sentido común"
Waltz, D.L. 1982. "Artificial Intelligence". Scientific American,
247 (4), p. 122.

Los problemas

 La transición desde los micro-mundos hasta el mundo real, sólo puede


llevarse a cabo si somos capaces de traspasar a los ordenadores porciones
del inmenso almacen de conocimientos que usamos en nuestra vida diaria.

 La comunidad de AI no tiene una idea clara de cómo hacer este traspaso ni


de si se puede hacer: el problem of common knowledge.

El proyecto CYC

El proyecto

 El proyecto comenzó en Microelectronics and Computer Technology


Corporation en Texas en 1984, con un presupuesto inicial de 50 millones
de dólares.
 El objetivo es construir una base de datos que contenga una parte
significativa de los conocimientos de sentido común de la cultura
occidental de este siglo.
 El lider del proyecto, Doug Lenat, afirmaba que para finales de 1994 la
base de datos contendría del 30 al 50 por ciento de los conocimientos de
sentido común.

La idea

"Cuantos más se conoce, más (y más rápido) se aprende"(M. Minsky)


Esta declaración se recoge en Lenant, D.B., Feigenbaum, E.A. "On
the Thresholds of Knowledge". Artificial Intelligence, 47, p. 203.
"Los sistemas expertos funcionan en una plataforma elevada de
conocimientos y de competencia hasta que... se precipitan
extrepitosamente en niveles últimos de incompetencia. Las personas tiene
el mismo problema, pero su plataforma es más amplia y la caída más
suave... Si se carece... de simples conceptos de sentido común, los
sistemas expertos cometen errores que frecuentemente aparecen como
ridículos a los ojos de los hombres. Por ejemplo, cuando un programa que
autoriza concesiones de créditos para la compra de coches, concede un
crédito a un adolescente que afirma que lleva trabajando veinte años en la
misma oficina;... o cuando un sistema médico prescribe una absurda dosis
a una paciente embarazada, cuyo peso (105) y edad (35) habian sido
accidentalmente intercambiados durante la introducción de datos en el
ordenador. En la medida en que construimos programas más complejos, y
les dotamos de mayor poder, la gracia desaparece".
Lenant, D.B., Feigenbaum, E.A. "On the Thresholds of
Knowledge". Artificial Intelligence, 47, p. 223.
 En cuanto uno de estos errores aparece, unas cuantas líneas extras de
programa bastan para asegurar que nunca más volverá a ocurrir.
 La tesis de Lenant es que no importa cuantos errores se arreglen de esta
manera, siempre habrá otros que no se han podido considerar. Lenant
sostiene que la única solución general es dotar a los sistemas expertos de
conocimientos de sentido común.

El método

 CYC es un proyecto a gran escala que supone la introducción a mano de


cerca de 100 millones de sentencias. Hacia el final de los primeros seis
años del proyecto, un millón de sentencias se han aido ya introducido
manualmente. Se estima que se requerirá el trabajo de dos personas
durante un siglo para introducir los 100 millones de sentencias necesarias
para que CYC pueda empezar a aprender por sí mismo. Hasta el momento,
al menos 30 personas han estado introduciendo datos en el ordenador
simultaneamente.
 Los introductores de conocimiento analizan artículos de periódicos y
revistas, definiciones en enciclopedias y anuncios, sentencia a sentencia.
Introducen en la base de datos no sólo lo que aparece explícitamente
dicho, sino también (y es la parte más importante de su trabajo) los datos
que el escritor asume que el lector conoce: los seres vivos se ponen
enfermos, el agua corre hacia abajo, los objetos sólidos tienden a impedir
que otros objetos sólidos ocupen el mismo volumen de espacio que ellos...
 CYC no es sólo una enciclopedia electrónica, sino el complemento de toda
enciclopedia. El objetivo principal del proyecto es introducir en un
ordenador el conocimiento que cualquier persona o máquina debe tener
antes de entender una enciclopedia.

La ontología

 ¿Qué hay en el mundo?


 La respuesta que provisionalmente CYC ha adoptado es que en el mundo
hay objetos que se pueden tocar, objetos que no se pueden tocar, objetos
compuestos (como los seres humanos, que tienen una parte tangible y una
parte intangible), sucesos y objetos matemáticos.

Los problemas
 Ejemplos de objetos intangibles: la recesión en el mundo, el dolor de las
personas, el significado de la sentencia "Los pimientos pican". ¿Qué
tienen que ver entre si?
 Eventos versus objetos: dos objetos diferentes no pueden estar en el
mismo lugar al mismo tiempo; sin embargo, Fermín puede estar al mismo
tiempo saltando un río y escapando de un toro.
 Papa Noel: ¿es un objeto? Si no lo es, ¿qué decimos cuando afirmamos
que tiene una barba blanca? Y si es un objeto, entonces tiene que ser un
objeto que no existe, pero ¿qué es un objeto que no existe?
 Por la misma razón que CYC necesita saber que el hacer cosas requiere
energía, necesita saber si dos objetos pueden estar o no en el mismo lugar
al mismo tiempo, y si todos los objetos existen o no.
 La ontología de CYC se reflejará en la calidad de los razonamientos que
haga: dado el suceso “Fermín untó de mantequilla una tostada lentamente
a las 6am”, CYC debería inferir que Fermín hizo algo.

La epistemología

 ¿Qué sabemos cuando sabemos que P (donde P es una afirmación


cualquiera)?
 ¿Qué sabemos cuando sabemos que un suceso X causa otro suceso Y? La
afirmación de que X causa Y, establece
o que hay algún tipo de conexión necesaria entre X e Y, esto es, que
X tiene algo que hace necesario Y, o
o que todos los sucesos X vienen seguidos por un suceso Y
(coincidencia)
 CYC usa un método muy simple para representar la causalidad: la
afirmación que X implica Y se etiqueta con el símbolo "causal" y se
interpreta como implicación material.
 Una analogía: podemos definir "afirmación general" como una afirmación
que contiene la palabra "todos". Con este criterio, una persona que no
hable castellano podría detectar afirmaciones generales incluso cuando no
tuviera idea de lo que la palabra "todos" significa. Del mismo modo, CYC
puede detectar cuando una afirmación es o no causal, examinando la
etiqueta.

Los problemas

 Este método de representar la causalidad tiene desventajas. Por ejemplo,


las siguientes afirmaciones son verdaderas, simplemente porque nosotros
nos moriremos en algún momento,
o Si tú lees algún otro libro de filosofía te morirás.
o Si tú no lees nunca más un libro de filosofía te morirás.

La lógica
 CYC utiliza lógica no-monotónica. Una inferencia es monotónica si
continúa siendo válida no importa cuantas premisas se le añadan. Por
ejemplo,
o Premisa 1. Todos los filósofos tienen cerebro
o Premisa 2. Sócrates fue un filósofo
o Conclusión. Sócrates tenía un cerebro.
 La conclusión sigue siendo válida si se le añaden como premisas:
"Socrates era griego", "Socrates tenía una cabeza inusualmente pequeña",
etc. La conclusión sigue siendo válida incluso si se le añaden como
premisas la negación de una o de las dos premisas originales.
 Una inferencia no-monotónica puede dejar de ser válida cuando se le
añaden nuevas premisas. Por ejemplo, partiendo de la información de que
los "biggles" son un tipo de pájaro, y de que los pájaros vuelan, CYC debe
ser capaz de inferir la consecuencia (de sentido común) de que los
"biggles" vuelan.
 Sin embargo, CYC tiene también que ser capaz de retractarse de su
conclusión por defecto si más adelante aprende que los "biggles" son un
tipo de kiwi de Nueva Zelanda, y que los kiwis no vuelan.

Los problemas

 Se dice que una colección de sentencias es inconsistente cuando implican


una contradicción.
 Hay muchas maneras por las que una KB (base de conocimientos) puede
llegar a ser inconsistente: errores tipográficos, desacuerdos entre aquellas
personas que introducen los datos, conclusiones obtenidas por la KB
misma... Sin embargo, es claro que una KB debe permanecer consistente.
 "Quodlibet": de una contradicción se sigue cualquier cosa.
 Supongamos que la siguiente instrucción está programada en una KB:

Si se pregunta si X es verdad y resulta que X o bien está en o bien


se sigue de las afirmaciones ya contenidas en la KB, entonces la
respuesta es "Sí".

 Entonces, si una KB con esta instrucciones llega a ser inconsistente,


responderá "Sí" a cualquier pregunta que se le haga. Por ejemplo, una KB
militar a la que se le han introducido informes metereológicos
inconsistentes, responderá "Sí" si se le pregunta si estamos bajo un ataque
nuclear.

Las respuestas

 Una primera solución es modificar la instrucción, de la siguiente manera:

Si se pregunta si X es verdad y resulta que X o bien está en o bien se sigue


de las afirmaciones ya contenidas en la KB, entonces la respuesta es "Sí",
a menos que No X o bien está en o bien se sigue de la afirmaciones ya
contenidas en la KB.

 El problema de los comprobadores de consistencia es que pueden ser


tremendamente lentos (los misiles pueden caer sobre nosotros antes de que la KB
consiga saber si eso es consistente o no). Un problema más grave es que todo
comprobador de consistencia fallará alguna vez (Gödel).

 TMS es uno de los mecanismos incluidos en CYC para mantener la verdad


(no-monótonica) del sistema. A cada conclusión que CYC alcanza se le etiqueta
con las premisas utilizadas en su deducción. Cuando CYC advierte que una
conclusión está en conflicto con otra anterior, vuelve atrás y examina más en
detalle las premisas ligadas a cada conclusión: "los biggles son un tipo de pajaro"
y "los pajaros vuelan" en el caso de "los biggles vuelan", y "los biggles son un
kiwi" y "los kiwis no vuelan" en el caso de "los biggles no vuelan".
 Cuando CYC examina en detalle la etiqueta de la afirmación "los pájaros
vuelan", observa que es verdad sólo de los pajaros típicos, y advierte que los
kiwis son un pájaro atípico. De esa forma, CYC puede en ocasiones descubrir de
qué conclusión se debe retractar.
 Otra manera de mantener la consistencia es hacer una clasificación de las
inferencias, utilizando "criterios de preferencia" y rechazando aquellas inferencias
que aparezcan al final de la clasificación.
 "Prefiere la inferencia con mayor sabor causal"
 "Prefiere la inferencia con la menor distancia entre las premisas y la
conclusión"
 "Prefiere argumentaciones constructivas frente a no-constructivas"

La relevancia

 Axiomas generales de relevancia:


o Proximidad temporal: es necesario considerar únicamente aquellos
eventos que estén cercanos en el tiempo al suceso que se
considere.
o Proximidad espacial: es necesario considerar únicamente aquellos
eventos que ocurran cerca del suceso que se considere, a menos
que haya alguna conexión (como una línea de teléfonos).
o Adecuado nivel de detalle.

Los problemas

 Un ser humano viendo la televisión jamás consideraría que el que en la


pantalla sólo se vean rayas tiene algo que ver con la cena que está
tomando.

 Añadir más y más axiomas generales de relevancia puede volver la


búsqueda de información intratable.

También podría gustarte