Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
Historia
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.
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....
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).
ENFOQUE 1.
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).
Principios. . . . . . . .
... y cuando se consideran los criterios prácticos para el éxito de un SE tenemos en cuenta lo
siguiente:
o Un SE busca una solución satisfactoria tal que sea lo suficiente buena para hacer.
Prueba de Turing
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
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
***********************************************************************
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?
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:
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.
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?
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:
Nacimiento.
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
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.
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
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.
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.
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.
Umbral de activación.
[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.
. 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.
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.
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)
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.
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:
Algoritmos Genéticos
1. Introducción
2. Algoritmos Genéticos
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.
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:
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:
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.
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:
Cruce Doble:
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.
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.
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:
4. Programación Genética
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).
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.
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.
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:
- Grano Grueso
- Grano Fino
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.
(Tiempo=Soleado y Humedad=Normal) o
(Tiempo=Nublado) o
(Tiempo=Lluvioso y Viento=Debil)
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:
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:
En cuanto al operador de cruce, elegiremos uno de tipo uniforme con la siguiente máscara:
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
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:
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 R=0 entonces
Sino devolver NO
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
Fin mientras
Devolver la hipótesis con mayor fitness.
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.
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.
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).
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î.
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.
Alemania
Inglaterra
"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"
Dentro de la máquina
Eliza, la psicoterapeuta
El programa
Mi padre.
TU PADRE.
Tú no discutes conmigo.
Me tienes miedo.
Matones.
Los comentarios
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
Shrdlu, el robot
El programa
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.
EN LA CAJA.
CUATRO.
¿Es al menos uno de ellos más estrecho que el que te dije que cogieras?
ENTENDIDO.
Tengo bloques que no son rojos, pero no tengo nada en lo que se apoye una
pirámide.
ENTENDIDO.
¿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?
Una torre es una pila que consta de dos cubos verdes y una pirámide.
ENTENDIDO.
NO.
¿Podrías hacer una pila juntando los dos bloques rojos y encima, bien el cubo verde
o bien una pirámide?
OK.
OK.
¿Habías tocado alguna pirámide antes de poner la pirámide más pequeña encima del
bloque verde?
¿Cuándo la cogiste?
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?
El proyecto
El resultado
La idea
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 proyecto
Los ejemplos
La torre de Hanoi
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 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
La idea
Mycin
El programa
SI
1. Colistin (.98)
2. Polymyxin (.96)
3. Gentamicin (.96)
4. Carbenicillin (.65)
5. Sulfisoxazole (.64)
Las reflexiones.
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
¿Qué tal si dices "a winter´s day"? ¿Sigue las reglas de la métrica, no?
Mis futuros clientes nunca han visto una demostración del sistema.
¡Esto es ridículo!
¿Hay alguna razón por la que no pueda usar el ordenador ahora mismo?
Los problemas
¿Qué dices?
El programa
El problema
Shakey
Las reflexiones
Las opiniones
"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).
Las opiniones
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 representación
Un ejemplo
Los problemas
Las conclusiones
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
La organización
Un ejemplo
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
Micro-mundos
Los problemas
Las conclusiones
Un ejemplo
Las opiniones
Los problemas
El proyecto CYC
El proyecto
La idea
El método
La ontología
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
Los problemas
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
Las respuestas
La relevancia
Los problemas