Material Autoinstruccional
INTELIGENCIA ARTIFICIAL
TAPACHULA DE CÓRDOVA Y ORDÓÑEZ, CHIAPAS.
INTELIGENCIA ARTIFICIAL
UNIDAD I
Introducción.
La Inteligencia Artificial comenzó como el resultado de la investigación en psicología
cognitiva y lógica matemática. Se ha enfocado sobre la explicación del trabajo
mental y construcción de algoritmos de solución a problemas de propósito general.
Punto de vista que favorece la abstracción y la generalidad.
La Inteligencia Artificial es una combinación de la ciencia del computador, fisiología
y filosofía, tan general y amplio como eso, es que reúne varios campos (robótica,
sistemas expertos, por ejemplo), todos los cuales tienen en común la creación de
máquinas que pueden "pensar".
La idea de construir una máquina que pueda ejecutar tareas percibidas como
requerimientos de inteligencia humana es un atractivo. Las tareas que han sido
estudiadas desde este punto de vista incluyen juegos, traducción de idiomas,
comprensión de idiomas, diagnóstico de fallas, robótica, suministro de asesoría
experta en diversos temas.
Es así como los sistemas de administración de base de datos cada vez más
sofisticados, la estructura de datos y el desarrollo de algoritmos de inserción,
borrado y locación de datos, así como el intento de crear máquinas capaces de
realizar tareas que son pensadas como típicas del ámbito de la inteligencia humana,
acuñaron el término Inteligencia Artificial en 1956.
Trabajos teóricos fundamentales fueron el desarrollo de algoritmos matemáticos por
Warren McCullock y Walter Pitts, en 1943, necesarios para posibilitar el trabajo de
clasificación, o funcionamiento en sentido general, de una red neuronal. En 1949
Donald Hebb desarrolló un algoritmo de aprendizaje para dichas redes neuronales
creando, en conjunto con los trabajos de McCullock y Pitts, la escuela creacionista.
Esta escuela se considera hoy como el origen de la Inteligencia Artificial, sin
embargo se trató poco por muchos años, dando paso al razonamiento simbólico
basado en reglas de producción, lo que se conoce como sistemas expertos.
Nociones y Antecedentes Históricos de Inteligencia Artificial.
Definiciones sobre Inteligencia Artificial:
Disciplina científico-técnica que trata de crear sistemas artificiales capaces de
comportamientos que, de ser realizados por seres humanos, se diría que requieren
inteligencia.
Estudio de los mecanismos de la inteligencia y las tecnologías que lo sustentan.
(Newell, 91)
Intento de reproducir (modelar) la manera en que las personas identifican,
estructuran y resuelven problemas difíciles (Pople, 84)
Son ciertas herramientas de programación, entendiendo por herramientas:
• Lenguajes: LISP, PROLOG
• Entornos de desarrollo: shells
• Arquitecturas de alto nivel: nodo y arco, sistemas de producciones
Desde sus comienzos hasta la actualidad, la Inteligencia Artificial ha tenido que
hacer frente a una serie de problemas:
Los computadores no pueden manejar (no contienen) verdaderos significados.
Los computadores no tienen autoconciencia (emociones, sociabilidad, etc.).
Un computador sólo puede hacer aquello para lo que está programado.
Las máquinas no pueden pensar realmente.
En 1843, Lady Ada Augusta Byron, patrocinadora de Charles Babbage planteó el
asunto de si la máquina de Babbage podía "pensar".
Los primeros problemas que se trató de resolver fueron puzzles, juegos de ajedrez,
traducción de textos a otro idioma.
Durante la II Guerra Mundial Norbert Wiener y John Von Neumann establecieron los
principios de la cibernética en relación con la realización de decisiones complejas y
control de funciones en máquinas.
La teoría de la retroalimentación en mecanismos, como por ejemplo un termostato
que regula la temperatura en una casa, tuvo mucha influencia. Esto aún no era
propiamente Inteligencia Artificial. Se hizo mucho en traducciones (Andrew Booth y
Warren Weaver), lo que sembró la semilla hacia el entendimiento del lenguaje
natural.
En el año 1955 Herbert Simon, el físico Allen Newell y J.C. Shaw, programador de
la RAND Corp. y compañero de Newell, desarrolla el primer lenguaje de
programación orientado a la resolución de problemas de la Inteligencia Artificial, el
IPL-11. Un año más tarde estos tres científicos desarrollan el primer programa de
Inteligencia Artificial al que llamaron Logic Theorist, el cual era capaz de demostrar
teoremas matemáticos, representando cada problema como un modelo de árbol, en
el que se seguían ramas en busca de la solución correcta, que resultó crucial. Este
programa demostró 38 de los 52 teoremas del segundo capítulo de Principia
Mathematica de Russel y Whitehead.
En 1956, con la ahora famosa conferencia de Dartmouth, organizada por John
McCarthy y en la cual se utilizó el nombre de inteligencia artificial para este nuevo
campo, se separó la Inteligencia Artificial de la ciencia del computador, como tal. Se
estableció como conclusión fundamental la posibilidad de simular inteligencia
humana en una máquina.
En 1957 Newell y Simon continúan su trabajo con el desarrollo del General Problems
Solver (GPS). GPS era un sistema orientado a la resolución de problemas; a
diferencia del Logic Theorist, el cual se orientó a la demostración de teoremas
matemáticos, GPS no estaba programado para resolver problemas de un
determinado tipo, razón a la cual debe su nombre. Resuelve una gran cantidad de
problemas de sentido común, como una extensión del principio de retroalimentación
de Wiener.
Diversos centros de investigación se establecieron, entre los más relevantes están,
la Universidad Carnegie Mellon, el Massachusetts Institute of Technologie (MIT),
encabezado por Marvin Minsky, la Universidad de Standford e IBM. Los temas
fundamentales eran el desarrollo de heurísticas y el aprendizaje de máquinas.
En 1957 McCarthy desarrolló el lenguaje LISP. La IBM contrató un equipo para la
investigación en esa área y el gobierno de USA aportó dinero al MIT también para
investigación en 1963.
A finales de los años 50 y comienzos de la década del 60 se desarrolla un programa
orientado a la lectura de oraciones en inglés y la extracción de conclusiones a partir
de su interpretación, al cual su autor, Robert K. Lindsay, denomina "Sad Sam". Este
podía leer oraciones del tipo "Jim es hermano de John" y "La madre de Jim es Mary",
a partir de ella el sistema concluía que Mary debía ser también la madre de John.
Este sistema representó un enorme paso de avance en la simulación de inteligencia
humana por una máquina, pues era capaz de tomar una pieza de información,
interpretarla, relacionarla con información anteriormente almacenada, analizarla y
sacar conclusiones lógicas.
En el mismo período de tiempo hay trabajos importantes de Herbert Gelernter, de
IBM, quien desarrolla un "Demostrador Automático de Teoremas de la Geometría",
Alex Bernstein desarrolla un programa para el juego de ajedrez que se considera el
antecedente para "Deep Blue".
En 1961 se desarrolla SAINT (Simbolic Automatic INTegrator) por James Slagle el
cual se orienta a la demostración simbólica en el área del álgebra.
En 1964 Bertrand Raphael construye el sistema SIR (Semantic Information
Retrieval) el cual era capaz de comprender oraciones en inglés.
A continuación un ejemplo, traducido, de interacción entre SIR y un usuario:
Usuario: Todos somos personas
SIR: Comprendo
Usuario: Un dedo es una parte de la mano
SIR: Comprendo
Usuario: Cada persona tiene dos manos
SIR: La oración anterior es ambigua. Por favor reconstrúyala.
Usuario: En cada persona hay dos manos
SIR: Comprendo
Usuario: ¿Cuantos dedos tiene John?
SIR: La oración anterior es ambigua, pero asumo que TIENE significa TIENE COMO
PARTES. No se si los dedos forman parte de John.
Usuario: John es un chico
SIR: Comprendo
Usuario: ¿Cuántos dedos tiene John?
SIR: La oración anterior es ambigua, pero asumo que TIENE significa TIENE COMO
PARTES, ¿cuántos dedos por mano?.
Usuario: Cada mano tiene cinco dedos.
SIR: Comprendo
Usuario: ¿Cuántos dedos tiene John?
SIR: La respuesta es diez.
En la década del 60 se comienza en el MIT el estudio de la visión artificial, lo cual
implica no solo captar imágenes a través de una cámara, sino también la
comprensión, de lo que estas imágenes representan.
Un resultado importante en este trabajo lo constituye el "mundo de micro-bloques",
en el cual un robot era capaz de percibir un conjunto de bloques sobre una mesa,
moverlos y apilarlos; el éxito se debió a los investigadores Larry Roberts, Gerald
Sussman, Adolfo Guzman, Max Clowes, David Huffman, David Waltz, Patrick
Winston, y Berthold Horn.
Posteriormente se obtuvieron resultados importantes entre ellos el de mayor
resonancia fue el sistema SCHRDLU de Terry Winograd, pues permitía interrogar y
dar órdenes a un robot que se movía dentro de un mundo de bloques.
A continuación mostramos un ejemplo traducido:
Usuario: Toma un bloque rojo.
SCHRDLU: Ok.
Usuario: Busca un bloque más pequeño que el que tienes y ponlo dentro de la caja.
SCHRDLU: Asumo que PONLO se refiere al bloque más pequeño que el que tengo.
Usuario: ¿Qué contiene la caja?
SCHRDLU: La pirámide azul y el bloque azul.
Usuario: ¿Qué sostiene a la pirámide?
SCHRDLU: La caja.
Usuario: ¿Cuántos bloques no están sobre la mesa?
SCHRDLU: Cuatro.
Usuario: ¿Es al menos uno de ellos más estrecho que aquel que te dije que
recogieras?
SCHRDLU: Sí, el cubo rojo.
Usuario: ¿Lo sostiene algo?
SCHRDLU: Sí, la mesa.
Usuario: ¿Puede la mesa recoger bloques?
SCHRDLU: No.
Usuario: La pirámide azul es mía.
SCHRDLU: Comprendo.
Usuario: Todos los bloques que no son rojos son míos, pero no poseo nada que
sostenga una pirámide.
SCHRDLU: Comprendo.
Usuario: ¿Poseo una caja?
SCHRDLU: No
Usuario: ¿Poseo algo de la caja?
SCHRDLU: Si, dos cosas: El bloque azul y la pirámide azul.
Aunque parezca impresionante la capacidad del sistema para razonar y ejecutar
acciones, no se debe perder de vista el hecho que el robot se mueve en un mundo
muy simple de figuras geométricas, y que las relaciones entre ellas son muy
limitadas. En el mundo real existen tantos objetos diferentes y relaciones entre ellos,
que tratar de llevar este sistema a un entorno real resulta prácticamente imposible.
En los primeros años de la década del 60 Frank Rosemblatt desarrolla, en la
Universidad de Cornell, un modelo de la mente humana a través de una red neuronal
y produce un primer resultado al cual llama perceptrón. Este sistema era una
extensión del modelo matemático concebido por McCullock y Pitts para las
neuronas, y funcionaba basándose en el principio de "disparar" o activar neuronas
a partir de un valor de entrada el cual modifica un peso asociado a la neurona, si el
peso resultante sobrepasa un cierto umbral la neurona se dispara y pasa la señal a
aquellas con las que está conectada. Al final, en la última capa de neuronas,
aquellas que se activen definirán un patrón el cual sirve para clasificar la entrada
inicial.
Este trabajo constituye la base de las redes neuronales de hoy en día, sin embargo
a raíz de su desarrollo sufrió fuertes críticas por parte de Marvin Minsky
y Seymour Papert lo cual provocó que la mayoría de los investigadores interesados
en el tema lo abandonarán, y este no se retomara hasta los años 80.
En 1965-70, comenzaron a aparecer los programas expertos, que predicen la
probabilidad de una solución bajo un set de condiciones, entre esos proyectos
estuvo: DENDRAL, que asistía a químicos en estructuras químicas complejas
euclidianas; MACSYMA, producto que asistía a ingenieros y científicos en la
solución de ecuaciones matemáticas complejas, etc.
En la década 1970-80, creció el uso de sistemas expertos, muchas veces diseñados
para aplicaciones médicas y para problemas realmente muy complejos como
MYCIN, que asistió a médicos en el diagnóstico y tratamiento de infecciones en la
sangre. Otros son: R1/XCON, PIP, ABEL, CASNET, PUFF,
INTERNIST/CADUCEUS, etc. Algunos permanecen hasta hoy.
De 1975 en adelante, comienza la era de los lenguajes expertos (shells) como
EMYCIN, EXPERT, OPSS, etc. para luego tratar de que éstos sean más amigables
y funcionales.
Las definiciones de Inteligencia Artificial son muchas, pero podría decirse que son
programas que realizan tareas que si fueran hechas por humanos se considerarían
inteligentes.
Estos programas obviamente corren en un computador y se usan, como por
ejemplo, en control robótico, comprensión de lenguajes naturales, procesamiento
de imágenes basado en conocimientos previos, estrategias de juegos, etc.
reproduciendo la experiencia que un humano adquiriría y de la forma en que un
humano lo haría.
Para clasificar las máquinas como "pensantes", es necesario definir qué es
inteligencia y qué grado de inteligencia implica resolver problemas matemáticos
complejos, hacer generalizaciones o relaciones, percibir y comprender. Los estudios
en las áreas del aprendizaje, del lenguaje y de la percepción sensorial han ayudado
a los científicos a definir a una máquina inteligente. Importantes desafíos han sido
tratar de imitar el comportamiento del cerebro humano, con millones de neuronas y
extrema complejidad.
Características de la Inteligencia Artificial.
Una característica fundamental que distingue a los métodos de Inteligencia Artificial
de los métodos numéricos es el uso de símbolos no matemáticos, aunque no es
suficiente para distinguirlo completamente. Otros tipos de programas como los
compiladores y sistemas de bases de datos, también procesan símbolos y no se
considera que usen técnicas de Inteligencia Artificial.
Las conclusiones de un programa declarativo no son fijas y son determinadas
parcialmente por las conclusiones intermedias alcanzadas durante las
consideraciones al problema específico. Los lenguajes orientados al objeto
comparten esta propiedad y se han caracterizado por su afinidad con la
Inteligencia Artificial.
El comportamiento de los programas no es descrito explícitamente por el algoritmo.
La secuencia de pasos seguidos por el programa es influenciado por el problema
particular presente. El programa especifica cómo encontrar la secuencia de pasos
necesarios para resolver un problema dado (programa declarativo). En contraste
con los programas que no son de Inteligencia Artificial, que siguen un algoritmo
definido, que especifica, explícitamente, cómo encontrar las variables de salida para
cualquier variable dada de entrada (programa de procedimiento).
El razonamiento basado en el conocimiento, implica que estos programas
incorporan factores y relaciones del mundo real y del ámbito del conocimiento en
que ellos operan. Al contrario de los programas para propósito específico, como los
de contabilidad y cálculos científicos; los programas de Inteligencia Artificial pueden
distinguir entre el programa de razonamiento o motor de inferencia y base de
conocimientos dándole la capacidad de explicar discrepancias entre ellas.
Aplicabilidad a datos y problemas mal estructurados, sin las técnicas de Inteligencia
Artificial los programas no pueden trabajar con este tipo de problemas. Un ejemplo
es la resolución de conflictos en tareas orientadas a metas como en planificación, o
el diagnóstico de tareas en un sistema del mundo real: con poca información, con
una solución cercana y no necesariamente exacta.
La Inteligencia Artificial incluye varios campos de desarrollo tales como: la robótica,
usada principalmente en el campo industrial; comprensión de lenguajes y
traducción; visión en máquinas que distinguen formas y que se usan en líneas de
ensamblaje; reconocimiento de palabras y aprendizaje de máquinas; sistemas
computacionales expertos.
Los sistemas expertos, que reproducen el comportamiento humano en un estrecho
ámbito del conocimiento, son programas tan variados como los que diagnostican
infecciones en la sangre e indican un tratamiento, los que interpretan datos
sismológicos en exploración geológica y los que configuran complejos equipos de
alta tecnología.
Tales tareas reducen costos, reducen riesgos en la manipulación humana en áreas
peligrosas, mejoran el desempeño del personal inexperto, y mejoran el control de
calidad sobre todo en el ámbito comercial.
UNIDAD II
BÚSQUEDAS
Los algoritmos exhaustivos son aquellos que analizan todo el espacio de búsqueda
para encontrar una o todas las soluciones y garantizan que pueden encontrar una
solución óptima.
El retroceso o vuelta atrás es una técnica de resolución de problemas que realiza
una búsqueda exhaustiva, sistemática y organizada sobre el espacio de búsqueda
del problema, aplicable a problemas de optimización, juegos, búsquedas entre
otros.
Se llaman algoritmos de vuelta atrás, porque en el caso de no encontrar una solución
a una subtarea se retrocede a la subtarea anterior y se prueba otro camino diferente
a los probados anteriormente.
Estos algoritmos se asemejan al recorrido en profundidad dentro de un grafo, siendo
cada subtarea un nodo del grafo. El caso es que el grafo no está definido de forma
explícita (como lista o matriz de adyacencia), sino de forma implícita, es decir, que
se irá creando según avance el recorrido de la búsqueda. A menudo dicho grafo se
comporta como un árbol, que no contiene ciclos, es decir, es imposible llegar a una
misma soluciónpartiendo de dos subtareas distintas.
Este tipo de estrategias tienen una premisa fundamental que afirma que si un
problema tiene solución, este la encuentra.
Los problemas que manejan los algoritmos exhaustivos, se caracterizan por:
a. se trata generalmente de problemas de optimización, con o sin restricciones.
b. la solución es expresable en forma de una secuencia de decisiones.
c. existe una función denominada factible que permite averiguar si en una secuencia
de decisiones, la solución en curso, viola o no las restricciones.
d. existe una función, denominada solución, que permite determinar si una
secuencia de decisiones factible es solución al problema planteado.
FORMA GENERAL
El esquema general de solución presenta los siguientes pasos:
a. Vuelta Atrás hace un recorrido en profundidad del espacio de búsqueda
partiendo de la raíz.
b. El recorrido en profundidad regresa sobre sus pasos, retrocede, cada vez que
encuentra un camino que se ha acabado o por el que no puede continuar.
c. En un recorrido en profundidad o en anchura sobre un espacio de búsqueda
se conoce de antemano el orden en que se van a generar o recorrer, sus nodos.
UNIDAD III
Redes Neuronales.
Las Redes Neuronales surgieron del movimiento conexionista, que nació junto con
la Inteligencia Artificial simbólica o tradicional. Esto fue hacia los años 50, con
algunos de los primeros ordenadores de la época y las posibilidades que ofrecían.
La Inteligencia Artificial simbólica se basa en que todo conocimiento se puede
representar mediante combinaciones de símbolos, derivadas de
otras combinaciones que representan verdades incuestionables o axiomas.
Así pues, la Inteligencia Artificial tradicional asume que el conocimiento es
independiente de la estructura que maneje los símbolos, siempre y cuando la
'máquina' realice algunas operaciones básicas entre ellos. En contraposición, los
'conexionistas' intentan representar el conocimiento desde el estrato más básico de
la inteligencia: el estrato físico. Creen que el secreto para el aprendizaje y el
conocimiento se halla directamente relacionado con la estructura del cerebro:
concretamente con las neuronas y la interconexión entre ellas. Trabajan con grupos
de neuronas artificiales, llamadas Redes Neuronales.
La estructura básica de una neurona natural es:
Éstas funcionan como sigue:
Cada neurona puede tener infinitas entradas llamadas Dendritas que condicionan el
estado de su única salida, el Axón. Este Axón puede ir conectado a una Dendrita de
otra neurona mediante la Sinapsis correspondiente, de la siguiente manera:
El Axón da un nivel eléctrico correspondiente a sus entradas y a la importancia que
les da a cada una de ellas. De esta forma, una neurona puede no reaccionar ante
un nivel muy alto de una de sus entradas, o dar una salida muy favorable cuando
otra de ellas está mínimamente activa.
En las primeras etapas de nuestra vida, cuando realizamos el aprendizaje de
nuestros cerebros, entrenamos nuestras neuronas mediante el éxito o fracaso de
una acción a unos estímulos sensoriales.
Cuando cierta acción realizada en respuesta a alguna entrada sensorial es exitosa
(por ejemplo, al beber agua calmamos la sed), las conexiones sinápticas entre un
grupo de neuronas se fortalecen, de manera que cuando tengamos una sensación
sensorial parecida, la salida será la correcta. De esta forma se forman fuertes
conexiones entre grupos de neuronas, que pueden servir para realizar otras
acciones complejas.
Esta neurona funciona de la siguiente manera:
cada entrada x tiene su peso asociado w, que le dará más o menos importancia en
la activación de la neurona. Internamente se calcula la suma de cada entrada
multiplicada por su peso:
Con este valor de suma ponderada se calcula una función de activación, que será
la salida que dará la neurona. Las dos funciones de activación más usada son el
Escalón y la Sigmoidea:
Principalmente se diferencian en que la Sigmoidea (llamada así por su forma de S)
es diferenciable en todos sus puntos y la Escalón no.
El Perceptrón unicapa.
Un Perceptrón unicapa no es más que un conjunto de neuronas no unidas entre sí,
de manera que cada una de las entradas del sistema se conectan a cada neurona,
produciendo cada una de ellas su salida individual.
Como se ha dicho, un conjunto de neuronas no sirve para nada si previamente no
se le enseña qué debe hacer.
Existen tres métodos de aprendizaje para un Perceptrón: Supervisado, Por Refuerzo
y No Supervisado.
En el Aprendizaje Supervisado se presentan al Perceptrón unas entradas con las
correspondientes salidas que se quiere éste aprenda. De esta manera la red
primero, calcula la salida que da ella para esas entradas y luego, conociendo el error
que está cometiendo, ajusta sus pesos proporcionalmente al error que ha cometido
(si la diferencia entre salida calculada y salida deseada es nula, no se varían los
pesos).
En el Aprendizaje No Supervisado, solo se presentan al Perceptrón las entradas y,
para esas entradas, la red debe dar una salida parecida.
En el Aprendizaje Por Refuerzo se combinan los dos anteriores, y de cuando en
cuando se presenta a la red una valoración global de como lo está haciendo.
El Perceptrón multicapa.
Esta estructura nació con la intención de dar solución a las limitaciones del
Perceptrón clásico o unicapa, y supuso el resurgimiento del movimiento
conexionista. Como su nombre indica, se trata de un unos cuantos (dos o tres)
perceptrones unicapa conectados en cascada.
El problema de este tipo de Perceptrón está en su entrenamiento, ya que es difícil
modificar correctamente los pesos de la capa oculta (la capa 1 en el ejemplo
anterior). Para poder hacer aprender cosas a un Perceptrón de este tipo, se
implementó el algoritmo de BackPropagation, que tal como su nombre indica tiene
la función de ir propagando los errores producidos en la capa de salida hacia atrás.
El proceso de aprendizaje tiene un gran coste de tiempo. Debido a eso, todavía no
se ha estudiado a fondo. Las redes neuronales todavía se han de desarrollar mucho.
Aún se debe estudiar para qué sirven realmente, conocer en qué tareas pueden
resultar realmente útiles, ya que por ejemplo, es difícil saber cuánto tiempo necesita
una red para aprender cierta tarea, cuántas neuronas se necesitan como mínimo
para realizar cierta tarea, etc.
Las redes neuronales pueden llegar a ser algo realmente importante, pero todavía
hace falta tiempo para estudiar cómo almacenan el conocimiento para desarrollar el
hardware paralelo específico que requieren.
En la robótica, las redes neuronales también parecen prometer mucho, sobre todo
en su sensorización, para que el robot sea capaz de generalizar lo que siente como
estímulos individuales a considerar.
Algunos Casos y Antecedentes Históricos.
Los hitos más importantes en el desarrollo de los sistemas expertos son:
1928. John Von Neuman desarrolla su teorema "mínimos y máximos" utilizado
posteriormente en juegos.
1943. McCullock y Pitts proponen la arquitectura de redes neuronales para la
simulación de la inteligencia.
1945. Vannevar Bush publica "As we may think ...", o "Cabría imaginar ... ", en
Atlantic Monthly el cual sienta las bases de lo que hoy se conoce como Hipertexto,
Multimedia e Hipermedia.
1949. Shannon desarrolla la Teoría de la Información base fundamental de la
Informática y varias de sus áreas.
1950. Shannon propone el primer programa de ajedrez .
1950. Turing publica "Computing machinery and Intelligence".
1956. Newell, Shaw, y Simon crean "IPL-11" el primer lenguaje de programación
para IA.
1956. Newell, Shaw, y Simon crean "The Logic Theorist" para la resolución de
problemas matemáticos.
1957. Chomsky escribe "estructuras Sintácticas".
1957. Newell, Shaw, y Simon crean GPS.
1958. McCarthy introduce el lenguaje "LISP", para procesamiento simbólico de la
información.
1959. Rosenblatt introduce el Perceptron.
1959. EL programa de ajedrez de Samuel gana juegos contra grandes jugadores.
1963. ARPA da un fondo de investigación de dos millones de dólares al laboratorio
de IA del MIT.
1963. Quillian desarrolla las redes semánticas como modelo de representación del
conocimiento.
1963. Minsky escribe "Steps toward Artificial Intelligence".
1964. Bobrow desarrolla STUDENT.
1964. Se comienza el desarrollo de BBNLisp en BBN.
1965. Buchanan, Feigenbaum y Lederberg comienzan el proyecto DENDRAL, el
primer Sistema Experto.
1965. Iva Sutherland hace demostración del primer monitor en forma de casco para
realidad virtual.
1965. Dreyfus argumenta en contra de la IA.
1968. Minsky publica "Semantic Information Processing".
1969. Minsky y Papert critican el Perceptron.
1970. Colmerauer desarrolla PROLOG quizás el lenguaje de Inteligencia Artificial
más popular actualmente.
1970. Winograd crea SCHRDLU.
1972. Dreyfus publica "What Computers Can't Do".
1972. Se desarrolla el lenguaje SmallTalk en Xerox PARC.
1973. Shank y Abelson desarrollan los guiones, o scripts, base de muchas técnicas
actuales de la Inteligencia Artificial y la Informática en general.
1974. Edward Shortliffe escribe su tesis con MYCIN, uno de los Sistemas Expertos
más conocidos.
1974. Minsky publica "A Framework for Representing Knowledge".
1974. Se establece la red SUMEX-AIM para aplicaciones de la Inteligencia
Artificial en medicina.
1975. La DARPA lanza un programa de financiación para el procesamiento y
comprensión de imágenes.
1976. Greenblatt crea "CONS" el primer ordenador con arquitectura para LISP.
1976. Lenat introduce su "Automated Matematician".
1978. Xerox comienza a desarrolla ordenadores LISP.
1979. Raj Reddy funda el Instituto de Robótica en la Universidad Carnegie Mellon.
1980. Primera conferencia de la AAAI (American Association on Artificial
Intelligence) en Stanford, y primera Conferencia de Lisp y programación
funcional de la ACM.
1981. Kazuhiro Fuchi anuncia el proyecto japonés de quinta generación de
computadores.
1981. El PSL (Portable Standard Lisp) se puede ejecutar sobre varias plataformas.
1981. Se construyen máquinas LISP por Xerox, LMI y Simbolics, las cuales soportan
Programación Orientada a Objetos.
1981. Se sientan las bases del Common Lisp con aspectos comunes de las familias:
Lisp machine Lisp, MacLisp, NIL, S-1 Lisp, Spice Lisp y Scheme.
1982. John Hopfield resucita las redes neuronales.
1983. Feigenbaum y McCorduck publican "The Fifth Generation".
1984. Steele publica "Common Lisp the Language".
1984. La comunidad europea comienza el programa ESPRIT.
1984. Gold Hill crea el Golden Commom Lisp.
1985. General Motors y Campbell's Soup dejan de usar Lisp para sus Sistemas
Expertos.
1985. Se funda el Media Lab en el MIT.
1985. Minsky publica "The Society of Mind".
1985. Teknowledge, una compañía dedicada al desarrollo de sistemas en
Inteligencia Artificial, abandona Lisp y Prolog por el lenguaje C.
1986. Primera conferencia de la OOPSLA sobre programación orientada a objetos,
en la cual se presenta CLOS, Lisp Orientado a Objetos, como lenguaje
independiente de la comunidad de Lisp e IA.
1986. IBM desarrolla shells para Lisp, Prolog y Sistemas expertos y entra a la AAAI.
1986. McClelland y Rumelhart's publican "Parallel Distributed Processing" (Redes
Neuronales).
1986. Aparecen compañías dedicadas al desarrollo de Redes Neuronales.
1987. Existen alrededor de 1900 Sistemas Expertos en el mundo.
1987. Sistema experto XCON de DEC capaz de configurar ordenadores realizando
el trabajo de 300 personas, basándose para esto en 10.000 reglas.
1987. Japón establece su sistema AFIS para la identificación automática de huellas
digitales.
1988. El chip del 386 ofrece una velocidad a los PC’s comparable a la de las
máquinas Lisp.
1988. Minsky y Papert publican una revisión de "Perceptrons".
1988. Se establecen los lenguajes Orientados a Objetos.
1988. La compañía TI anuncia microExplorer una máquina Lisp con tecnología
Macintosh.
1990. Steele publica la segunda edición de "Common lisp the Language".
1992. Apple Computer introduce el lenguaje Dylan, de la familia Lisp, como su visión
del futuro en la programación.
1992. X3J13 crea una propuesta para la Sociedad Americana de Common Lisp.
1994. La versión para tiempo real del lenguaje CLOS, Lisp con Objetos, de Harlequin
se utiliza en sistema de intercambio de AT&T.
UNIDAD IV
Visión por computador
La visión artificial, también conocida como visión por computador (del inglés
computer vision) o visión técnica, es un subcampo de la inteligencia artificial. El
propósito de la visión artificial es programar un computador para que "entienda" una
escena o las características de una imagen.
Esquema de las relaciones entre la visión por computadora y otras áreas afines.
Los objetivos típicos de la visión artificial incluyen:
La detección, segmentación, localización y reconocimiento de ciertos objetos en
imágenes (por ejemplo, caras humanas).
La evaluación de los resultados (por ejemplo, segmentación, registro).
Registro de diferentes imágenes de una misma escena u objeto, es decir, hacer
concordar un mismo objeto en diversas imágenes.
Seguimiento de un objeto en una secuencia de imágenes.
Mapeo de una escena para generar un modelo tridimensional de la escena; este
modelo podría ser usado por un robot para navegar por la escena.
Estimación de las posturas tridimensionales de humanos.
Búsqueda de imágenes digitales por su contenido.
Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje
estadístico, geometría de proyección, procesamiento de imágenes, teoría de grafos
y otros campos. La visión artificial cognitiva está muy relacionada con la psicología
cognitiva y la computación biológica.
La visión por computadora es una rama de la inteligencia artificial que tiene por
objetivo modelar matemáticamente los procesos de percepción visual en los seres
vivos y generar programas que permitan simular estas capacidades visuales por
computadora.
Sus antecedentes se remontan a los años veinte, cuando se mejoró la calidad de
las imágenes digitalizadas de los periódicos, enviadas por cable submarino entre
Londres y Nueva York. Actualmente existen vehículos autónomos que han viajado
de costa a costa en Estados Unidos y sólo han sido asistidos por un operador
humano, el 3% del tiempo.
El proceso de visión por computadora puede subdividirse en seis áreas principales:
1. Sensado: Es el proceso que nos lleva a la obtención de una imagen visual
2. Preprocesamiento: Trata de las técnicas de reducción de ruido y enriquecimiento
de detalles en la imagen
3. Segmentación: Es el proceso que particiona una imagen en objetos de interés.
4. Descripción: Trata con el cómputo de características útiles para diferenciar un
tipo de objeto de otro.
5. Reconocimiento: Es el proceso que identifica esos objetos.
6. Interpretación: Asigna un significado a un conjunto de objetos reconocidos.
UNIDAD V
Reconocimiento de patrones
El reconocimiento de patrones —también llamado lectura de patrones, identificación
de figuras y reconocimiento de formas— consiste en el reconocimiento de patrones
de señales. Los patrones se obtienen a partir de los procesos de segmentación,
extracción de características y descripción dónde cada objeto queda representado
por una colección de descriptores. El sistema de reconocimiento debe asignar a
cada objeto su categoría o clase (conjunto de entidades que comparten alguna
característica que las diferencia del resto). Para poder reconocer los patrones se
siguen los siguientes procesos:
• adquisición de datos
• extracción de características
• toma de decisiones
El punto esencial del reconocimiento de patrones es la clasificación: se quiere
clasificar una señal dependiendo de sus características. Señales, características y
clases pueden ser de cualquiera forma, por ejemplo se puede clasificar imágenes
digitales de letras en las clases «A» a «Z» dependiendo de sus píxeles o se puede
clasificar ruidos de cantos de los pájaros en clases de órdenes aviares dependiendo
de las frecuencias.
Componentes básicos de un sistema de reconocimiento de patrones
Sistema básico de reconocimiento
Un sistema completo de reconocimiento de patrones incluye un sensor que recoja
fielmente los elementos del universo a ser clasificado, un mecanismo de extracción
de características cuyo propósito es extraer la información útil, eliminando la
información redundante e irrelevante, y finalmente una etapa de toma de decisiones
en la cual se asigna a la categoría apropiada los patrones de clase desconocida a
priori.
Sensor
El sensor es el dispositivo encargado de la adquisición de datos. Ha de ser capaz
de transformar magnitudes físicas o químicas, llamadas variables de
instrumentación, en magnitudes eléctricas. Las variables de instrumentación
dependen del tipo de sensor y pueden ser por ejemplo: temperatura, intensidad
lumínica, distancia, aceleración, inclinación, desplazamiento, presión, fuerza,
torsión, humedad, etc.
El sistema intenta imitar a los sensores biológicos y procesos cognitivos de los seres
humanos.
Extracción de características
Es el proceso de generar características que puedan ser usadas en el proceso de
clasificación de los datos. En ocasiones viene precedido por un preprocesado de la
señal, necesario para corregir posibles deficiencias en los datos debido a errores
del sensor, o bien para preparar los datos de cara a posteriores procesos en las
etapas de extracción de características o clasificación.
Las características elementales están explícitamente presentes en los datos
adquiridos y pueden ser pasados directamente a la etapa de clasificación. Las
características de alto orden son derivadas de las elementales y son generadas por
manipulaciones o transformaciones en los datos.
Selección de variables
Consiste en seleccionar cuál es el tipo de características o rasgos más adecuados
para describir los objetos. Para ello, se deben localizar los rasgos que inciden en el
problema de manera determinante.
Esta etapa también puede ser diseñada dentro de la clasificación.
La selección de variables puede diferenciarse según los objetivos buscados:
Para la clasificación: la selección de características relevantes, a partir del conjunto
total de características que describen a los objetos, se hace con dos motivos
fundamentales: mejorar la clasificación o aumentar la velocidad de procesamiento.
Para la representación: decidir qué características representan mejor a cierto tipo
de objetos.
Estrategias de selección de variables:
wrapper: la selección de características se hace usando información del mecanismo
de clasificación.
filter: la selección se hace con un criterio independiente del clasificador. Incluye
algunos métodos como:
Tablas de decisión: le busca un subconjunto mínimo de variables que no introduzca
confusión entre clases.
ID3: le crea un árbol de decisión y se selecciona un conjunto de variables que
permita discriminar entre clases.
Teoría de testores: le buscan todos los subconjuntos de variables discriminantes
minimales, con estos se evalúa la relevancia de cada variable y se seleccionan
aquellas con mayor relevancia.
Existen multitud de procesos para la selección de variables, pero agrupadas en dos
filosofías Clasificación
La clasificación trata de asignar las diferentes partes del vector de características a
grupos o clases, basándose en las características extraídas. En esta etapa se usa
lo que se conoce como aprendizaje automático, cuyo objetivo es desarrollar técnicas
que permitan a las computadoras aprender.
Utiliza habitualmente uno de los siguientes procedimientos:
Geométrico (Clustering): Los patrones deben ser graficables. En éste enfoque se
emplea el cálculo de distancias, geometría de formas, vectores numéricos, puntos
de atracción, etc.
Estadístico: Se basa en la teoría de la probabilidad y la estadística, utiliza análisis
de varianzas, covarianzas, dispersión, distribución, etc.
Supone que se tiene un conjunto de medidas numéricas con distribuciones de
probabilidad conocidas y a partir de ellas se hace el reconocimiento.
Sintáctico estructural: se basa en encontrar las relaciones estructurales que guardan
los objetos de estudio, utilizando la teoría de lenguajes formales, teoría de
autómatas, etc. El objetivo es construir una gramática que describa la estructura del
universo de objetos.
Neuro reticular: se utilizan redes neuronales que se ‘entrenan’ para dar una cierta
respuesta ante determinados valores.
Lógico combinatorio: se basa en la idea de que el modelado del problema debe ser
lo más cercano posible a la realidad del mismo, sin hacer suposiciones que no estén
fundamentadas. Se utiliza para conjuntos difusos y utiliza lógica simbólica, circuitos
combinacionales y secuenciales, etc.
Según tengamos constancia o no de un conjunto previo que permita al sistema
aprender, la clasificación pueder ser supervisada, parcialemente supervisada o no
supervisada.
a) Clasificación supervisada: también es conocida como clasificación con
aprendizaje. Se basa en la disponibilidad de áreas de entrenamiento. Se trata de
áreas de las que se conoce a priori la clase a la que pertenecen y que servirán para
generar una signatura espectral característica de cada una de las clases. Se
denominan clases informacionales en contraposición a las clases espectrales que
genera la clasificación no supervisada.
Algunos métodos de la clasificación supervisada:
Funciones discriminantes: si son dos clases, se busca obtener una función g tal que
para un nuevo objeto O, si g(O) ≥ 0 se asigna a la clase 1 y en otro caso a la 2. Si
son múltiples clases se busca un conjunto de funciones gi y el nuevo objeto se ubica
en la clase donde la función tome el mayor valor.
Vecino más cercano: un nuevo objeto se ubica en la clase donde esté el objeto de
la muestra original que más se le parece.
Redes neuronales artificiales: denominadas habitualmente RNA o en sus siglas en
inglés ANN. Se supone que imitan a las redes neuronales reales en el desarrollo de
tareas de aprendizaje.
Algunos métodos de la clasificación supervisada.
b) Clasificación parcialmente supervisada: también conocida como de
aprendizaje parcial. En éstos problemas existe una muestra de objetos sólo en
algunas de las clases definidas.
c) Clasificación no supervisada: también conocida como clasificación sin
aprendizaje. Se utilizan algoritmos de clasificación automática multivariante en los
que los individuos más próximos se van agrupando formando clases.
Restringida: el número de clases en la que se estructurará la muestra está
previamente definido.
Libre: el número de clases en la que se estructurará la muestra depende
exclusivamente de los datos.
Algunos métodos de la clasificación no supervisada:
Simple Link y Complete Link: parten de grupos unitarios de objetos y van uniendo
los grupos más parecidos en cada etapa, hasta cumplir alguna condición.
ISODATA: se van formando grupos que se ajustan iterativamente usando teoría de
probabilidades. En alguna versiones se puede hacer la unión o división de algún
grupo.
C-means: se define un grupo de semillas, se asocia cada objeto al grupo de la
semilla más parecida, se toman los centroides de cada grupo como nuevas semillas
y se itera hasta que se estabilice.
Criterios lógico-combinatorios: los criterios que se imponen a los grupos son tales
como ser conexos, completos maximales, compactos, etc.
Los algoritmos de la clasificación no supervisada son computacionalmente más
costosos y de una complejidad mayor
El reconocimiento de patrones es más complejo cuando se usan plantillas para
generará variantes. Por ejemplo, en castellano, las frases a menudo siguen el patrón
"sujeto-predicado", pero se requiere cierto conocimiento de la lengua para detectar
el patrón. El reconocimiento de patrones se estudia en muchos campos, incluyendo
psicología, etología, informática y procesamiento digital de señales.
Aplicaciones
Los sistemas de reconocimiento de patrones tienen diversas aplicaciones. Algunas
de las más relevantes y utilizadas actualmente son:
Previsión meteorológica: poder clasificar todos los datos meteorológicos según
diversos patrones, y con el conocimiento a priori que tenemos de las diferentes
situaciones que pueden aperecer nos permite crear mapas de predicción
automática.
Reconocimiento de caracteres escritos a mano o a máquina: es una de las utilidades
más populares de los sistemas de reconocimiento de patrones ya que los símbolos
de escritura son fácilmente identificables.
Reconocimiento de voz: el análisis de la señal de voz se utiliza actualmente en
muchas aplicaciones, un ejemplo claro son los teleoperadores informáticos.
Aplicaciones en medicina: análisis de biorritmos, detección de irregularidades en
imágenes de rayos-x, detección de células infectadas, marcas en la piel...
Reconocimiento de huellas dactilares: utilizado y conocido por la gran mayoría,
mediante las huellas dactilares todos somos identificables y con programas que
detectan y clasifican las coincidencias, resulta sencillo encontrar correspondencias.
Reconocimiento de caras: utilizado para contar asistentes en una manifestación o
simplemente para detectar una sonrisa, ya hay diferentes cámaras en el mercado
con esta opción disponible.
Interpretación de fotografías aéreas y de satélite: gran utilidad para propuestas
militares o civiles, como la agricultura, geología, geografía, planificación urbana...
Predicción de magnitudes máximas de terremotos.
Reconocimiento de objetos: con importantes aplicaciones para personas con
discapacidad visual.
Reconocimiento de música: identificar el tipo de música o la canción concreta que
suena.