Download Introducción a la inteligencia artificial - Página DICyG

Document related concepts

Historia de la inteligencia artificial wikipedia , lookup

Red neuronal artificial wikipedia , lookup

Inteligencia artificial wikipedia , lookup

Google DeepMind wikipedia , lookup

Inteligencia artificial simbólica wikipedia , lookup

Transcript
Capítulo 1
Introducción a la inteligencia artificial
Objetivo
El alumno podrá justificar por qué estudiar, y explicar cuáles son los campos de la Inteligencia
Artificial (1766)
Programa: Realizar un programa que realice operaciones con números complejos:
} Módulo y ángulo
} Suma y resta
} Multiplicación y División
} Potenciación
Desarrollar un programa que realice las siguientes operaciones de polinomios de grado n:
} Valor en un punto
} Suma
} Resta
} Multiplicación
} Derivada
} Integral
Introducción
¿Qué es la inteligencia? (http://bit.ly/75jhjs). Del latín intellegentı̆a, es la capacidad de
entender, asimilar, elaborar información y utilizarla para resolver problemas. Sin embargo, no
parece existir total acuerdo para definirla (http://bit.ly/3FvhR7). En 1983, Howard Gardner
(http://bit.ly/caGRo6) hizo notar que no existe algo que pueda definirse como “la inteligencia”, sino que existen diversos tipos de inteligencias (http://bit.ly/6zexry). Una persona puede,
por ejemplo, ser una campeón de ajedrez, un gran científico o un poeta extraordinario y, al mismo
1
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
2
tiempo ser un inepto para otras actividades. Además, Gardner dice que hay personas que tienen
inteligencia individual, mientras que otras poseen capacidades afectivas que les permiten funcionar
mejor en una comunidad: inteligencia colectiva.
Existen diversas formas de medir la inteligencia como el examen de IQ (http://bit.ly/mSiVMi),
aunque hay un programa que obtiene el puntaje (http://bit.ly/WpCx8o) de genios históricos
(http://bit.ly/124R3DE).
Este video presenta una ecuación para medir inteligencia, y la relaciona con el concepto de
entropía (http://bit.ly/1d9Krh4).
La Inteligencia Artificial (IA) es la inteligencia de las máquinas y la rama de la ciencia computacional que busca los medios para dotar a los sistemas informáticos de dicha inteligencia. El
objetivo de la IA es crear una máquina pensante que sea inteligente, tenga consciencia, capacidad
de aprender, libre albedrío y que sea ética. La IA es una campo joven, el término fue acuñado por
John McCarthy (http://bit.ly/b9ArwT) en 1956. Ya antes Alan Turing (http://bit.ly/Hl8F) había
diseñado el Test de Turing (http://bit.ly/xVoh6) como una forma de probar el comportamiento
inteligente de una máquina (http://bit.ly/dVyfm9).
Existen profundos problemas filosóficos en IA y algunos investigadores creen que sus objetivos son imposibles o incoherentes. Esta visión es compartida entre otros por Hubert Dreyfus
(http://bit.ly/OMWYce) y John Searle (http://bit.ly/fdCL2M). Aún si la IA es posible, existen
consideraciones morales que deben tomarse en cuenta como la explotación de las máquinas por el
hombre y si esto es o no ético. Joseph Weizenbaum (http://bit.ly/NO1er)1 argumentó que la IA
no es ética.
Recientemente Stuart Russell (http://bit.ly/1KgY9uJ), Peter Norvig, Steve Wozniak y Stephen Hawking entre otras muchas personalidades de la ciencia han firmado una Open Letter sobre
las prioridades de invetigación para una inteligencia artificial robusta y benéfica (http://futureoflife.org/AI/open_le
Tarea:
} Leer el artículo “Computing machinery and intelligence” (http://bit.ly/dVyfm9) de Alan
Turing y dar una opinión corta (media cuartilla por cada integrante); después elegir alguna
de las visiones opuestas y exponer (con argumentos) si estás o no de acuerdo con ella (media
cuartilla por cada integrante).
} Leer el artículo “Reverse Turing Tests: Are Humans Becoming More Machine-Like?” (http://bit.ly/2b6vB0C)
de John Danaher y dar una opinión corta (media cuartilla por cada integrante).
} Leer el artículo de divulgación sobre IA en la revista ¿Cómo ves? de la UNAM (http://bit.ly/1dbpJhH)
y dar una opinión corta (media cuartilla por cada integrante).
1.1.
Facetas del comportamiento inteligente
La IA es emocionante, pero ¿Qué es? Existen varias definiciones de IA, la tabla siguiente
muestra ocho diferentes en dos dimensiones. Las definiciones superiores se ocupan de procesos
mentales y razonamiento, mientras que las inferiores aluden al comportamiento. Las definiciones
1
Weizenbaum fue un psicólogo inventor de ELIZA (http://bit.ly/ThrCF), este programa simulaba un psicólogo
en diálogo con un paciente. Inicialmente tenía una postura a favor de la IA, pero posteriormente fue un crítico de
ésta.
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
3
de la izquierda miden el éxito en términos de fidelidad con el comportamiento humano, mientras
que las de la derecha se comparan contra una medida ideal de desempeño, llamada racionalidad.
Un sistema es racional si “hace lo correcto”, dado sus conocimiento.
Pensar humanamente
Pensar racionalmente
“El emocionante esfuerzo para hacer que las
“El estudio de facultades intelectuales
computadoras piensen ... máquinas con
mediante el uso de modelos computacionales”
mente en sentido literal y completo”
(Charniak y McDermott, 1985)
(Haugeland, 1985)
“[La automatización de] actividades que
“El estudio de los cálculos (cómputos) que
asociamos con el pensamiento humano, tales hacen posible percibir, razonar y actuar”
como toma de decisiones, resolución de
(Winston, 1992)
problemas, aprendizaje ...” (Hellman, 1978)
Actuar humanamente
Actuar racionalmente
“El arte de crear máquinas que ejecutan
“Inteligencia computacional es el estudio del
funciones que requieren inteligencia cuando
diseño de agentes inteligentes” (Poole et al,
son relizadas por personas” (Kurzweil, 1990) 1998)
“El estudio de cómo hacer computadores que “IA ... se refiere al comportamiento
realicen cosas en las que, por el momento, las inteligente en artefactos” (Nilsson, 1998)
personas son mejores” (Rich y Knight, 1991)
Históricamente los cuatro enfoques se han utilizado, cada uno por diferentes autores con diferentes métodos. Un enfoque centrado en el humano es en parte una ciencia empírica que incluye
observaciones e hipótesis sobre el comportamiento humano. Un enfoque racionalista combina matemáticas e ingeniería. Actualmente grupos de ambos enfoques trabajan en conjunto para lograr
mejores resultados.
1.1.1.
Actuar humanamente: El enfoque del Test de Turing
El Test de Turing propuesto en 1950 por Alan Turing, fue diseñado para proveer una definición
operacional satisfactoria de inteligencia. Una computadora pasa esta prueba si un interrogador
humano, después de plantear varias preguntas por escrito, no puede decidir si las respuestas escritas
provienen de una persona o una computadora. Para que una computadora pase satisfactoriamente
esta prueba, es necesario realizar mucho trabajo, las capacidades necesarias son:
} Procesamiento natural del lenguaje para poder comunicarse fluídamente
} Representación del conocimiento para almacenar lo que sabe o aprende
} Razonamiento automático para utilizar la información almacenada para contestar preguntas
y derivar conclusiones nuevas
} Aprendizaje de máquina (machine learning) para adaptar nuevas circunstancias, así como
detectar y extrapolar patrones
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
4
Figura 1.1: Test de Turing
La prueba evita deliberadamente la interacción física directa entre el interrogador y la computadora, porque la simulación física de una persona no es necesaria para la inteligencia. Sin embargo,
el llamado Total Turing Test (http://bit.ly/162msjy) incluye señal de video para que el interrogador pueda probar capacidades perceptivas, así como la oportunidad de entregar objetos físicos
por una pequeña compuerta. Para pasar el Total Turing Test, la computadora necesita además:
} Visión por computadora para distinguir objetos
} Robótica para manipular objetos
Estas seis disciplinas componen gran parte de la IA y Turing merece el crédito por diseñar una
prueba que sigue siendo relevante 60 años después. Actualmente la IA dedica menos esfuerzo a
tratar de pasar la prueba de Turing con la idea de que es más importante estudiar los principios
fundamentales de la inteligencia que tratar de duplicar una existente.
Figura 1.2: Test de Turing: http://xkcd.com/329/
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
5
Figura 1.3: Completely Automated Public Turing test to tell Computers and Humans Apart:
http://bit.ly/YupSy
1.1.2.
Pensar humanamente: El enfoque del modelado cognitivo
Si se desea obtener un programa que piensa como un humano, primero es necesario determinar
la forma en la que los humanos pensamos: es necesario adentrarse en los procesos de la mente
humana. Existen tres formas de realizar esto:
1. Mediante introspección: tratando de captar nuestros pensamientos mientras suceden
2. Mediante experimentos psicológicos: observando a una persona en acción
3. Mediante imágenes cerebrales: observando al cerebro en acción
Una vez que se tenga una teoría de la mente suficientemente precisa, será posible expresar esa
teoría como un programa computacional. Si el comportamiento del programa corresponde con el
comportamiento humano, se tendrá evidencia de que algunos de los mecanismos del programa
operan de la misma forma en los humanos. Por ejemplo, Allen Newell (http://bit.ly/124SPox)
y Herbert Simon (http://bit.ly/KGOu3J) quienes desarrollaron el General Problem Solver (GPS
http://bit.ly/WxTTSX), no estuvieron satisfechos por obtener un programa capaz de resolver
problemas correctamente. Les interesaba más comparar los pasos de GPS con los que sigue un
humano al resolver los mismos problemas. El campo de la ciencia cognitiva combina modelos
computacionales de la IA y técnicas experimentales de la psicología para construir teorías precisas
y comprobables de la mente humana.
En los primeros años de la IA existía gran confusión entre los enfoques: un autor argumentaba
que un algoritmo se desempeña bien en una tarea y que, por tanto, es un buen modelo del comportamiento humano, o viceversa. En la actualidad estas afirmaciones se presentan por separado
y esta distinción ha permitido que tanto la IA como la ciencia cognitiva se hayan desarrollado
más rápidamente.
1.1.3.
Pensar racionalmente: El enfoque de “las leyes del pensamiento”
El filósofo griego Aristóteles fue uno de los primeros en intentar codificar el “pensamiento
correcto”, es decir, procesos de razonamiento irrefutables. Sus silogismos proveen patrones para
estructuras de argumentos que siempre lleven a conclusiones correctas cuando las premisas dadas
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
6
sean correctas. Por ejemplo: Sócrates es un hombre; todos los hombres son mortales; por tanto,
Sócrates es mortal. Supuestamente estas leyes del pensamiento deben gobernar la operación de la
mente: sus estudios iniciaron el campo llamado lógica.
Los lógicos del siglo 19 desarrollaron notaciones precisas para declaraciones acerca de cualquier
tipo de objetos del mundo y las relaciones entre ellos, en contraste con la notación aritmética que
sirve sólo para representar números. En 1965 existían programas que, en principio, podrían resolver
cualquier problema descrito en notación lógica. La llamada tradición lógica de la IA espera poder
construir sistemas inteligentes sobre esos programas.
Existen dos obstáculos principales para este enfoque.
1. No es fácil tomar conocimiento informal y plasmarlo en términos formales como lo requiere
la notación lógica, especialmente cuando no se tiene el 100 % de la certeza del conocimiento
2. Existe gran diferencia entre resolver un problema “en principio” y resolverlo en la práctica
Aún problemas con sólo unos cientos de hechos pueden agotar los recursos computacionales de
cualquier computadora, amenos que se tenga cierta guía sobre qué pasos del razonamiento tomar
primero. Si bien estos obstáculos aplican a cualquier intento de construir sistemas de razonamiento
computacional, se encontraron primero en la tradición lógica.
1.1.4.
Actuar racionalmente: El enfoque del agente racional
Un agente es algo que realiza acciones (del latín agere, “hacer”). Cualquier programa computacional hace algo, pero se espera que los agentes computacionales hagan más: operar de forma
autónoma, percibir el entorno, seguir funcionando sobre periodos temporales prolongados, adaptarse al cambio así como crear y perseguir sus metas. Un agente racional es aquel que actúa de
tal forma que obtiene la mejor salida o, cuando hay incertidumbre, le mejor salida esperada.
En este enfoque, el énfasis era en las inferencias correctas. Sin embargo, hacer inferencias
correctas es solo una parte de ser racional porque una forma de actuar racionalmente es razonar
lógicamente hacia la conclusión que tomando cierta acción alcanzará sus objetivos. Por otro lado
una inferencia correcta no es todo de la racionalidad; en ocasiones no existe la opción correcta, pero
de cualquier forma debe hacerse algo. También puede actuar racionalmente sin tener que realizar
una inferencia; por ejemplo, apartar la mano de una superficie caliente es un reflejo usualmente
más exitoso que tomar una acción bien pensada.
El enfoque del agente racional tiene dos ventajas sobre otros enfoques.
1. Es más general que el enfoque de “las leyes del pensamiento” porque una inferencia correcta
es solo uno de los muchos posibles mecanismos para ser racional
2. Es más sencillo de utilizar en el desarrollo científico que los enfoques basados en el comportamiento o en el pensamiento humano. El estándar de racionalidad está matemáticamente
bien definido.
Un punto importante que debe tomarse en cuenta: veremos que alcanzar la racionalidad perfecta,
es decir, siempre hacer lo correcto, no es factible en entornos complicados, la demanda computacional es demasiado grande. Sin embargo, suponer racionalidad perfecta de inicio simplifica
definir el problema y posteriormente se puede tomar el enfoque de racionalidad acotada: actuar
apropiadamente cuando no se tienen los recursos computacionales que se requieren.
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
1.2.
1.2.1.
7
Formas de hacer inteligencia artificial
IA fuerte vs IA débil
La conjetura sobre máquinas que pueden programarse para exhibir comportamiento inteligente se conoce como IA débil y es ampliamente aceptada por la comunidad dedicada a IA. Sin
embargo, la conjetura sobre máquinas programadas para poseer inteligencia y tener consciencia,
conocida como IA fuerte, es muy debatida. Los opositores a la IA fuerte argumentan que una
máquina es intrínsecamente diferente a un humano y, por tanto, nunca podrá tener sentimientos,
diferenciar el bien del mal o discernir sobre sí misma, tal como lo hace un humano. Por el contrario,
sus partidarios sostienen que la mente humana está construida por componentes que de manera
individual no son humanas ni tienen consciencia, pero combinadas lo son y cuestionan: ¿Por qué
no sería posible reproducir este fenómeno con máquinas?
El problema para resolver la IA fuerte es que atributos como inteligencia y consciencia son
características internas y no pueden identificarse directamente. Tal como lo indicó Alan Turing:
“decimos que otros humanos son inteligentes porque se comportan inteligentemente, aún cuando no
podemos ver sus estados mentales internos. ¿Estamos preparados para otorgar el mismo beneficio
a una máquina que exhiba características externas similares?”
Existen diversas formas de hacer programas que cumplen con IA débil, a continuación se
presentan los enfoques más utilizados.
Figura 1.4: Amor criptográfico: Alice & Bob
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
8
Programa: Consiste en hacer un código que se encargue de cifrar y descifrar texto de acuerdo
al método mostrado a continuación.
1. Este tipo de cifrado por columna con palabra clave consiste en formar una tabla con tantas
columnas como letras tenga la palabra clave; a continuación, se escribe el texto en la tabla
de izquierda a derecha y de arriba hacia abajo (sin espacios y, si hace falta, se rellenan los
espacios de la última fila con algún caracter):
Texto : LA CRIPTOGRAFIA ES ROMANTICA
Clave : HOLA
H
L
I
G
I
R
N
A
O
A
P
R
A
O
T
S
L
C
T
A
E
M
I
S
A
R
O
F
S
A
C
S
2. A continuación se reordenan las columnas alfabéticamente de acuerdo a la palabra clave (si
hay repetición, el criterio de desempate es el orden de aparición en la palabra):
A H L O
R L C A
O I T P
F G A R
S I E A
A R M O
C N I T
S A S S
3. Finalmente se toman los caracteres por columna de arriba hacia abajo y de izquierda a
derecha obteniendo finalmente el texto codificado:
ROFSACSLIGIRNACTAEMISAPRAOTS
Para descifrar un texto codificado con este método, es necesario saber la palabra clave, y a continuación se aplican las operaciones siguientes, mostradas para descrifrar el ejemplo anterior:
Texto : ROFSACSLIGIRNACTAEMISAPRAOTS
Clave : HOLA
1. Se divide el texto en tantas partes como letras tiene la palabra clave (es exacta):
Grupos :
ROFSACS
LIGIRNA
CTAEMIS
APRAOTS
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
9
2. Se ordena alfabéticamente la palabra clave:
Clave :
Ordenada :
3. Se coloca
A H
R L
O I
F G
S I
A R
C N
S A
HOLA
AHLO
cada grupo bajo cada letra de la palabra clave ordenada:
L O
C A
T P
A R
E A
M O
I T
S S
4. Se reacomoda
H O L
L A C
I P T
G R A
I A E
R O M
N T I
A S S
la palabra clave junto con su columna correspondiente:
A
R
O
F
S
A
C
S
5. Se concatena cada línea de la tabla para obtener el texto el claro:
LACRIPTOGRAFIAESROMANTICASSS
1.2.2.
Sistemas expertos
Un sistema experto es un sistema computacional que contiene el conocimiento de uno o más
humanos expertos sobre un tema específico. Estos sistemas permiten guardar más conocimiento
y extraerlo inteligentemente. La idea de los sistemas expertos surgieron en IA durante los 60’s y
desde entonces se han desarrollado diversas aplicaciones.
Un sitema experto es un programa creado a partir de un conjunto de reglas (conocimiento)
proporcionado por los expertos del tema, el éxito del sistema experto depende mucho de la calidad
de las reglas proporcionadas. Además, incluye un componente para resolver problemas así como
recomendar el curso de acción más apropiado. Es decir, el sistema experto tiene capacidad de
razonar para obtener conclusiones a partir de hechos que conoce. Es claro que el almacenamiento
del conocimiento y la estrategia de solución de problemas son asuntos distintos.
Los sitemas expertos han sido un gran éxito en la historia de la IA, se han empleado en diversas
áreas como diagnósticos médico, reparación de equipo y análisis de inversiones. Los sistemas
expertos, en general, se conforman de los siguientes componentes:
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
10
Componente
Base de conocimiento
Descripción
La base de conocimiento es desarrollada por los expertos del
tema particular, el sistema será tan bueno como sea el
conocimiento proporcionado por los expertos
Medio de comunicación
Este componente permite al usuario comunicarse con el sistema
experto, permite al usuario hacer preguntas al sistema y recibir
respuestas (o viceversa)
Ayuda sensitiva al
Generalmente se muestra en cada pantalla y la ayuda es
contexto
apropiada de acuerdo a donde se encuentra actualmente el
usuario
Componente de solución
Se encarga de analizar el problema y utiliza su motor de
de problemas
inferencia para deducir el curso de acción apropiado para
resolverlo; el motor de inferencia es un programa que interactúa
con el usuario y las reglas de la base de conocimiento
El motor de inferencia se contruye sobre varias reglas de inferencia usadas para obtener conclusiones. Se pueden agregar o eliminar reglas con afectar otras reglas, esto refleja la actualización
normal de conocimiento humano: conocimiento obsoleto se elimina y no se utiliza en el razonamiento mientras que conocimiento nuevo se aplica en la obtención de nuevas conclusiones.
Un sistema experto utiliza dos formas principales de razonamiento: hacia adelante y hacia
atrás. El razonamiento hacia adelante inicia con los datos disponibles y utiliza las reglas de inferencia para obtener conclusiones inmediatas, repite este procedimiento con estas conclusiones
hasta llegar al objetivo deseado. El razonamiento hacia atrás inicia con un conjunto de objetivos
y trabaja hacia atrás para determinar si alguno de sus objetivos se puede alcanzar con los datos
disponibles.
1.2.3.
Redes neuronales artificiales
El término “red neuronal ” (biológica o artificial) se refiere a un grupo interconectado de elementos de procesamiento, llamados nodos o neuronas. Estas neuronas cooperan y trabajan en
conjunto para producir una función de salida. Una red neuronal artificial se diseña para simular
algunas propiedades de una red neuronal biológica (como el cerebro humano).
El procesamiento de información en una red neuronal se realiza en paralelo y no de forma
serial. Otra propiedad de una red neuronal es la tolerancia a fallas, es decir, puede seguir trabajando aún si algunas neuronas no funcionan. Además, hay sistemas de redes neuronales artificiales
que pueden aprender a resolver problemas complejos a partir de un conjunto de ejemplos, estos
sistemas pueden también utilizar el conocimiento adquirido para generalizar y resolver problemas
no previstos.
Una red neuronal biológica se compone de miles de millones de neuronas (células nerviosas).
Una neurona puede estar físicamente conectada a cientos de neuronas y el número total de neuronas y conexiones puede resultar extremadamente grande. Las conexiones se forman a través de
los axones hacia las dendritas y, de esta forma, las neuronas pueden enviar señales eléctricas entre
ellas. Estos mensajes no son solamente señales binarias, en su lugar se puede variar la intensidad
permitiendo que varíe también la influencia de cierta neurona hacia sus vecinos.
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
11
Figura 1.5: Una neurona biológica
Es decir, cada conexión tiene un número (peso) asociado que indica su influencia, cada neurona
envía su valor de salida a todas las neuronas con las que tiene una conexión de salida. La salida de
una neurona puede influenciar las activaciones de otras neuronas causando que se enciendan. La
neurona que recibe los valores calcula su activación tomando la suma ponderada de sus señales de
entrada y determina su salida con una función de basada en la activación recibida. Una red neurnal
aprende cambiando los pesos de las conexiones. Muchos aspectos del funcionamiento del cerebro,
especialmente el proceso de aprendizaje, se asocian con el ajuste de los valores de las conexiones.
La actividad cerebral se representa con patrones particulares de actividad de encendido entre
la red de neuronas. Este comportamiento de cooperación simultánea de una gran cantidad de
unidades simples de procesamiento es el núcleo del poder computacional del cerebro humano.
Figura 1.6: Neurona artificial
Las redes neuronales artificiales pretenden simular varias propiedades de redes neuronales
biológicas, son computadoras cuya arquitectura toma como modelo al cerebro. Consisten de gran
cantidad de unidades simples de procesamiento que están conectadas mediante una compleja red
de comunicación, cada unidad es un modelo simplificado de una neurona real que se enciende si
recibe una señal de entrada suficientemente fuerte de las neuronas a las que está conectada. La
intensidad de estas señales puede variarse para que la red neuronal ejecute diferentes tareas que
corresponde con patrones diferentes de actividad neuronal. El objetivo es resolver un problema
particular y las redes neuronales artificiales han mostrado ser muy útiles en reconocimiento de
voz, análisis de imágenes, además de modelado cognitivo entre otros. Muchas redes neuronales
artificiales están basadas en estimación estadística y teoría de control.
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
12
Figura 1.7: Dos redes neuronales artificiales con diferentes pesos
Ejemplo:
} Probar las dos redes de la figura 1.7 con los valores de entrada [1, 1].
Tarea:
} Probar las dos redes de la figura 1.7 con los valores de entrada
• [0, 0].
• [0, 1].
• [1, 0].
• [1, 1].
Existen similitudes entre el cerebro humano y computadoras poderosas con procesamiento paralelo avanzado, las redes neuronales artificiales han proporcionado modelos simplificados del
procesamiento neuronal que se lleva a cabo en el cerebro. El reto para este campo es determinar
qué propiedades deben ser reproducidas por neuronas individuales para producir representaciones
útiles de inteligencia.
Los orígenes de las redes neuronales artificiales se encuentran en los intentos por modelar el
procesamiento de información en sistemas biológicos, esto se basa más en procesamiento paralelo
así como reconocimiento de patrones a partir de cómo se percibe el exterior. Los nodos de una red
neuronal artificial se componen de unidades de procesamiento muy simples conectadas a una red,
su poder computacional depende de trabajar en conjunto (procesamiento paralelo) y no existe
una unidad central de procesamiento que siga una secuencia lógica de instrucciones. El cómputo
se realiza mediante un proceso dinámico de encendido de neuronas, esta estructura es mucho más
cercana a la operación del cerebro humano y abre paso a computadoras que pueden ser usadas para
resolver problemas más complejos. Además, es importante notar que el diseño de la arquitectura
de redes neuronales artificiales es muy distinta al modelo de von Neumann (http://bit.ly/7O4gV).
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
1.2.4.
13
Algoritmos genéticos
Existen problemas demasiado complejos para resolver: ejecutar un programa que los resuelva
excede la memoria disponible o no terminaría en una cantidad razonable de tiempo. Para estos
problemas, una solución puede encontrarse mediante procesos evolutivos que involucrean varias
generaciones de soluciones de prueba. La estrategia mencionada es el fundamento de los algoritmos
genéticos: esencialmente, un algoritmo genético descubre una solución utilizando comportamiento
aleatorio combinado con la teoría reproductiva y el proceso de selección natural.
Un algoritmo genético comienza generando un conjunto aleatorio de soluciones de prueba, cada
solución es una suposición. Cada solución de prueba se llama cromosoma y cada componente del
cromosoma es una gen.
Como cada cromosoma inicial es una suposición aleatoria, es muy poco probable que represente una solución del problema a resolver. Por tanto, el algoritmo genético genera un nuevo
conjunto de cromosomas (descendencia) en el que cada cromosoma es un hijo de dos cromosomas
del conjunto anterior (padres). Los padres también se eligen aleatoriamente, pero se asigna mayor
probabilidad a aquellos que aparentemente tienen mejor oportunidad de llevar a una solución, de
esta forma emulan el principio evolutivo de supervivencia del más apto: determinar qué cromosomas son los mejores candidatos es el paso más problemático en un algoritmo genético. Cada
descendiente es una combinación aleatoria de genes de los padres, además, un descendiente puede
mutar de alguna forma. Eventualmente, si se repite este proceso muchas veces, se obtienen cada
vez mejores soluciones hasta llegar a una suficientemente buena. Desafortunadamente no se tiene
seguridad de que el algoritmo genético encontrará una solución al final de este proceso repetido,
pero investigaciones recientes han mostrado que los algoritmos genéticos pueden ser muy efectivos
para resolver una gama sorprendemente amplia de problemas complejos.
Cuando se aplican al desarrollo de programas, el enfoque de algoritmos genéticos se conoce
como programación evolutiva. Aquí, el objetivo es desarrollar programas permitiéndoles que evolucionen, en lugar de escibirlos. La propuesta es iniciar con una gran colección de funciones: esta
colección conforma el “conjunto de genes” de los que las futuras generaciones de programas serán
construidos. Después se permite que el proceso evolutivo se ejecute por varias generaciones esperando que cada generación tenga mejor desempeño que la anterior hasta llegar a la mejor solución
del problema propuesto.
Figura 1.8: Algoritmo genético con verificación de seguridad
Ejemplo de algoritmo genético: mejor villano.
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
1.2.5.
14
Combinación de estrategias
En la actualidad la IA utiliza diversas técnicas combinadas para resolver problemas, es muy
común que en la fase de entrenamiento de una red neuronal artificial se utilice un algoritmo
genético para determinar los valores óptimos para los pesos asociados a valores de entrada en una
neurona y, a su vez es común usar redes neuronales artificiales para que los motores de inferencia
de una sistema experto funcionen de mejor manera.
1.3.
Generalidades de aplicaciones desarrolladas y en desarrollo
Existen muchos ejemplos de aplicaciones que utilizan conceptos de IA para resolver problemas
específicos, a continuación se mencionan algunos.
1.3.1.
Ajedrez
Claude Shannon (http://bit.ly/bhm9bX) consideró el problema de tener un programa que
jugara ajedrez a finales de los 40’s y distinguió una estrategia de fuerza bruta en la que el programa podría buscar en todas las combinaciones de movimientos de otra estrategia en la que en
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
15
conocimiento sobre el ajedrez podría er usado para examinar sólo un subconjunto de esas combinaciones. Alan Turing también desarrollo programas para que una computadora (aún hipotética)
pudiera jugar ajedrez. ¿La capacidad de jugar ajedrez es una característica que se puede considerar
inteligente aún cuando la máquina no tiene consciencia de que está jugando ajedrez?
Los primeros programas que jugaban ajedrez no eran muy sofisticados y se desempeñaban
muy mal contra seres humanos, los programas modernos son bastante exitosos y han mostrado ser
mejores que sus competidores humanos. Garry Kasparov (http://bit.ly/2pO71o) fue el campeón
mundial fue vencido por una computadora: Deep Blue (http://bit.ly/lKPt2f) de IBM en 1997.
1.3.2.
Sistemas expertos exitosos
Existen muchos ejemplos de sistemas expertos que se han desempeñado bastante bien en
diversos campos.
1.3.2.1.
Dendral (Dendritic Algorithm) (http://bit.ly/124TtCk)
Desarrollado por la Universidad de Stanford a mediados de los 60’s fue el primer uso de la
IA en investigación médica. Su objetivo era asistir en la identificación de compuestos y moléculas orgánicas desconocidas utilizando espectrometría computarizada. Fue escrito en LISP
(http://bit.ly/b1xDM) y mostró que un sistema experto puede emplear reglas, heurísticas y juicios
para guiar a los científicos en su trabajo.
1.3.2.2.
Mycin (http://bit.ly/124TO7Y)
Desarrollado también el Universidad de Stanford en los 70’s utilizando como base Dendral, fue
diseñado para diagnosticar enfermedades infecciosas de sangre y para recomendar los antibióticos
apropiados, así como las dosis correspondientes al peso del paciente. Tenía un desempeño razonablemente bueno: cerca del 65 % de diagnósticos acertados; que es mejor que la mayoria de los
médicos no especialistas, sin embargo, era menor que lo expertos: 80 %.
Aún cuando su rendimiento era bueno, nunca fue utilizado por razones legales y éticas: ¿Si la
máquina daba un diagnóstico equivocado, quién sería el responsable?
1.3.2.3.
Colossus (http://bit.ly/124TR3C)
Un sistema experto utilizado por compañias de seguros: ayuda a los ajustadores de seguros
a evaluar lesiones y mejorar la consistencia de los procesos de reclamos de seguros. Su objetivo
es hacer que los reclamos sean justos y objetivos guiando al ajustador mediante evaluaciones
objetivas de diversos parámetros. Fue desarrollado por la Computer Sciences Corporation (CSC).
1.3.3.
Watson: ganando Jeopardy (http://bit.ly/iSg56x)
Es un sistema computacional (Hardware + Software) desarrollado por el equipo DeepQA
(http://ibm.co/c3slR4) de IBM, tiene capacidad para responder preguntar planteadas en lenguaje
natural. Su nombre es en honor al primer presidente de IBM Thomas J. Watson (http://bit.ly/dxbCoN).
Es un sistema de preguntas y respuestas (QA), IBM lo describe como “una aplicación avanzada
de procesamiento de lenguaje natural, recuperación de información, representación de conocimiento
y razonamiento, así como tecnología de aprendizaje de máquina en el campo de preguntas y
respuestas abiertas”.
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
16
En la actualidad se está buscando aplicar sistemas como Watson en diversas áreas: “sistemas cognitivos como Watson pueden transformar lo forma en la que las organizaciones piensan,
actúan y operarán en el futuro. Aprender mediante interacciones, entregan respuestas orientadas a mejores resultados basadas en evidencias”. Por ejemplo, para realizar diagnósticos médicos
(http://bit.ly/1fo3kAy) o para hacer recetas de comida (http://bit.ly/1fo3s31) e incluso para
llegar a la presidencia de los Estados Unidos en 2016 (http://watson2016.com).
IBM Bluemix: Build integrated, scalable enterprise apps that take full advantage of cognitive
data and analytics services. https://www.ibm.com/cloud-computing/
1.3.4.
Verificación de modelos
La verificación de modelos (model checking o property checking: http://bit.ly/fGjrpu) se refiere
al siguiente problema: dado el modelo de un sistema, verificar de forma automática si ese modelo
cumple alguna especificación de interés. Generalmente la especificación contiene requerimientos
de seguridad como la ausencia de deadlocks o estados críticos similares que pueden causar que
el sistema deje de funcionar. La verificación de modelos es una técnica para verificar de forma
automática propiedades de corrección de un sistema de estados finitos.
Para poder resolver algorítmicamente este tipo de problemas, tanto el modelo del sistema
como la especificación se formulan en algún lenguaje matemático preciso: se utiliza algún tipo de
lógica. Un problema sencillo de verificación de modelos es comprobar si una fórmula de la lógica
proposicional es satisfecha por cierta estructura.
Figura 1.9: state-of-the-art en IA [http://abstrusegoose.com/496] [http://what-if.xkcd.com/5]
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
1.4.
17
Subcampos de la inteligencia artificial
La IA actualmente tiene muchas áreas de desarrollo, algunas de las más conocidas son:
} Visión por computadora
} Reconocimiento de patrones
} Robótica
} Razonamiento automatizado
} Procesamiento de lenguaje natural
} Aprendizaje de máquina (machine learning), etc.
1.5.
Relaciones de la inteligencia artificial con otras disciplinas
Los fundamentos de la IA van de la mano con los fundamentos de la computación e incluye
trabajos de científicos, ingenieros y matemáticos muy importantes; tales como Boole, Babbage,
Shannon, von Neuman y Turing. Es un campo multidisciplinario y algunas de sus ramas están
íntimamente relacionadas con:
} Computación y computabilidad
} Lógica y filosofía
} Lingüistica
} Visión artificial
} Epistemología y representación de conocimiento
} Ciencia cognitiva
} Matemáticas
} Ética
El matemático británico Alan Turing contribuyó al debate sobre máquinas pensantes, con consciencia e inteligencia (http://bit.ly/dVyfm9) a inicios de los 50’s. Su artículo tuvo y aún tiene
gran influencia al plantear la posibilidad de programar una computadora para que se comporte
de forma inteligente.
Tarea: Buscar al menos 3 aplicaciones desarrolladas a partir de la IA por integrante del equipo
y describirlas brevemente (una cuartilla en total).
CAPÍTULO 1. INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL
18
Programa: mejor villano (algoritmo genético).
Notas:
1. El programa creará la primera generación de 100 villanos con cada habilidad como un número
aleatorio entre 0 y 9.
2. El programa elegirá aleatoriamente a un villano por cada columna para tomar ese valor
como la habilidad de un nuevo villano (Megamente).
3. El programa repetirá el paso 2 para generar otro villano (Sedusa).
4. Al tener a los dos nuevos supervillanos, el programa deberá mezclar sus habilidades utilizando un número aleatorio entre 1 y 10, como se muestra en el ejemplo:
5. Repetir los pasos 2, 3 y 4 hasta obtener 10 nuevos supervillanos (Sedumente[0..9]).
6. Finalmente, aplicar los pasos 2, 3 y 4 sobre la nueva población de 10 Sedumentes para
obtener al mejor supervillano.