Sei sulla pagina 1di 17

Inteligencia Artificial.

- Introducción a la Inteligencia Artificial.

CAPITULO I: INTRODUCCION A LA INTELIGENCIA ARTIFICIAL.

1.1. Análisis del término Inteligencia Artificial (I.A.).

En la literatura especializada no existe aún ninguna definición única y


rigurosa para el término “Inteligencia Artificial”. Por otra parte, quienes
trabajan en esta esfera de la Ciencia de la Computación utilizan expresiones
ambiguas como: máquina de inferencias, ingeniería de conocimiento, reglas de
producción, redes semánticas, entre otras. Realmente existe un estado de
opinión nebuloso que contribuye muy poco al progreso de este campo. Por
tanto se hace necesario esclarecer las ideas principales sobre qué se conoce
por Inteligencia Artificial.

Como sabemos, los problemas que se presentan comunmente en la práctica


pueden ser algorítmicos tratables, algorítmicos no tratables y no algorítmicos.
En estos últimos no es posible encontrar un algoritmo para su solución. Esto
nos indica que se debe reconsiderar la noción determinística desarrollada de
algoritmo por una noción más flexible que incluya métodos de aproximación a
la solución de un problema, como los que pone en práctica el ser humano
cuando se halla ante problemas para los cuales no posee un algoritmo
específico de solución. Estos métodos se caracterizan por los siguientes rasgos
fundamentales: no siempre nos conducen al resultado, no siempre el resultado
es único y no siempre dan un resultado óptimo. La introducción de tales
métodos en el diseño y programación de algoritmos computacionales es tarea
del área de la I.A.

Los problemas algorítmicos tratables se pueden resolver con las técnicas


tradicionales. Los algorítmicos no tratables, llamados también NP-completos,
son aquellos para cuya solución existen algoritmos no deterministas que se
ejecutan de manera tratable, pero que hasta el momento se duda de que
pueda existir un algoritmo determinista que los resuelva de manera tratable.
Las técnicas de I.A. nos permiten resolver algunos de estos problemas, como
son:
- Problema del viajante: Se tienen n ciudades y las distancias entre ellas y
se desea saber el recorrido de una persona por todas las ciudades con la
mínima distancia.
- Colorear un grafo con la cantidad mínima de colores sin que dos nodos
adyacentes tengan el mismo color.
- Problema de la mochila: Dada una mochila con una capacidad en peso
dada y una cantidad de objetos, cada uno de ellos con su peso y un valor
dados, determinar qué objetos echar en la mochila sin sobrepasar su peso
y de manera que almacene el mayor valor.
- Determinar el mayor subgrafo completo dentro de un grafo dado.

En el caso de los problemas no algorítmicos, las técnicas de I.A. ayudan


también a resolverlos. Tales son, por ejemplo, el diagnóstico médico, la
traducción automática, detección de fallas, problemas de pronóstico y
generación automática de planes. Otro que no logra resolverse completamente,
pero sí de una manera parcial (para determinadas subclases de fórmulas) es la

1
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

determinación de la validez de una fórmula del cálculo de predicados de


primer orden.
Los primeros trabajos que realizaron las computadoras consistían en la
ejecución de laboriosos cálculos numéricos, donde superaron todo lo
imaginablemente previsto. Por tanto, era tentador explorar también la
ejecución de otros trabajos intelectuales como jugar al ajedrez, demostrar
teoremas, traducir idiomas. Sin embargo, había una diferencia entre estos
tipos de trabajos y los primeros que se hicieron.

El grupo de labores al que pertenecía el cálculo numérico, contenía tareas que


podían ser explicadas en detalle por las personas que las realizaban. Mientras
que en el otro grupo, era muy difícil detallar cómo se ejecutaban, pues eran
complejas y difíciles de analizar con las técnicas algorítmicas, por ejemplo, la
decisión del movimiento que debe hacerse en un juego de ajedrez o cómo
determinar que dos oraciones distintas significan lo mismo. El intento de
abordar este otro grupo de tareas difíciles de realizar a través de las
computadoras marcó el origen de la Inteligencia Artificial, como un campo más
de la Ciencia de la Computación.

Sin embargo, el término Inteligencia Artificial para ese naciente campo


computacional en vez de ayudar a esclarecer sus propósitos y métodos,
provoca sombras y obstáculos en su camino de desarrollo.

Primero, porque el nombre es nebuloso. Si la inteligencia natural todavía no


está definida con precisión, mucho menos lo estaría la artificial. En
consecuencia, todo trabajo realizado por un artefacto, que de alguna manera
ejecute una actividad intelectual, debería también denominarse Inteligencia
Artificial. En esta clasificación entrarían, con plena justicia, la calculadora y el
ábaco. ¿Qué es entonces la Inteligencia Artificial?.

Segundo, porque ese nombre evoca futuros tan lejanos que sugiere quimeras,
nada útil ni en el presente actual, ni en el cercano.

Y tercero, porque en la frase Inteligencia Artificial está contenida una


competencia con el hombre, que se siente amenazado de ser sustituido en lo
que considera su valor más humano: el intelecto.

Por estas razones se levantó en sus inicios una barrera en contra de este
nombre y de todo lo que él significa. No obstante el uso histórico acuñó el
nombre de Inteligencia Artificial para ese campo de la Ciencia de la
Computación.

Una forma de comprender qué se entiende por Inteligencia Artificial hoy en


día, es buscar rasgos distintivos. En esta dirección, el Laboratorio de
Inteligencia Artificial de Standford clasificó los campos de trabajo
computacionales de acuerdo con el tipo de información que manejan y con el
tipo de método que emplean para procesar esa información. El resultado se
muestra en la figura 1.1.

2
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

TIPO DE TIPO DE INFORMACION


PROCESAMIENTO
Numérica Simbólica o no numérica
Algorítmico I) Cálculo científico tradicional II) Procesamiento de datos

Heurístico III) Grandes simulaciones numéricas INTELIGENCIA


que requieren suposiciones para ARTIFICIAL
reducir los estados posibles

Fig. 1.1. Clasificación de los campos computacionales.

Ejemplos de problemas dentro de estos campos son:

I) Resolver sistemas de ecuaciones, hallar el máximo común divisor de dos


enteros, etc.
II) Buscar los artículos sobre una determinada información y buscar una
subcadena en una cadena.
III) Métodos de MonteCarlo: son métodos que usan generación de números
aleatorios. Estos métodos se usan para el cálculo aproximado de una
integral, en problemas de optimización, de cálculo del mínimo de una
función, etc.

El cuadrante que ocupa la Inteligencia Artificial se contrapone diagonalmente


a lo algorítmico y numérico, pero tiene amplias fronteras de contacto con los
campos que poseen fuertes componentes heurísticas y no numéricas. De
manera que todo el conjunto conforma la herramienta de trabajo llamada
computación.

La Inteligencia Artificial aborda problemas poco estructurados, donde no se


conoce de antemano cuál es el mejor método para resolverlo. Hay que
descubrir, si acaso, alguna solución. Esta es la razón de la palabra heurística
cuyo significado se asocia a búsqueda. La esencia de la palabra heurística es
contraria a la de algoritmo en el sentido de que ella es un camino para buscar
lo nuevo, mientras el algoritmo es un camino para realizar lo ya muy bien
conocido. Así se comprende que el paradigma primario para la resolución de
problemas en Inteligencia Artificial sea la búsqueda de la solución orientada
por la heurística, para tratar de reducir la explosión combinatoria que genera
la búsqueda de todos los caminos posibles que se presenta en la mayoría de
los problemas reales.

Este enfoque, aunque tampoco se puede tomar como una definición, permite
al menos ubicar el campo de trabajo de la Inteligencia Artificial respecto a los
otros campos de la computación.

Otros autores han hablado en relación a este vocablo.

Según Schildt un “programa inteligente” es uno que muestra un com-


portamiento similar al humano cuando se enfrenta con un problema. No es
necesario que el programa resuelva realmente el problema de la misma
forma que el hombre.

3
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Alan Turing se expresa análogamente al señalar que “si durante el


intercambio entre una computadora y el usuario, este último cree que está
intercambiando con otro humano, entonces se dice que el sistema es
inteligente”. Esto se conoce como el Test de Turing y fue formulado en 1950.
“Pasará mucho tiempo hasta que un computador pase el test de Turing.
Algunos creen que nunca será posible”.

Para Forsyth la I.A. se relaciona con problemas que han escapado de una
caracterización matemática.

Para Cuena, mientras la computación tradicional se basa en el empleo de


algoritmos en los cuales el conocimiento y el procedimiento de solución
están integrados en un proceso unificado, los sistemas de Inteligencia
Artificial utilizan procedimientos standards que permiten modificar los
procesos sin tener que modificar el conocimiento.

Para Rich, la I.A. es el estudio de cómo lograr que los computadores hagan
cosas que, por el momento, las personas hacen mejor. Esta definición es
algo efímera debido a que hace referencia al estado actual de la Ciencia de
la Computación. Sin embargo, la rapidez con que puede variar el significado
de esta definición no es en absoluto tanta como pudiera pensarse. Ejemplo:
En el cálculo numérico la máquina aventaja sustancialmente al hombre,
pero en la traducción automática el hombre supera a la máquina
considerablemente.

La I.A. es una rama de la Ciencia de la Computación dedicada a la creación de


hardware y software que imita el pensamiento humano. Su principal objetivo
es llevar a la computadora las amplias capacidades del pensamiento humano
y, para ello, se convierten a las computadoras en “entes inteligentes” con la
creación de software que les permite imitar algunas de las funciones del
cerebro humano en aplicaciones particulares. El fin no es reemplazar al
hombre, sino proveerlo de una herramienta poderosa para asistirlo en su
trabajo.

La I.A. se ocupa de la representación, adquisición y procesamiento de


conocimientos de forma automatizada, de la arquitectura de los programas
para estas actividades y de los lenguajes en los que se expresan tales
programas. La modelación computacional de los procesos cognoscitivos es
también un área de interés de la Inteligencia Artificial. Además se incluyen la
percepción, la comprensión y síntesis del lenguaje natural, la robótica
inteligente, la modelación del razonamiento, la programación automática y
otras más, todas ellas de naturaleza no numérica y todavía del dominio de la
heurística.

1.2. Surgimiento del término Inteligencia Artificial.

En el año 1956, durante un congreso en Dartmouth (U.S.A.) se propuso el


término de Inteligencia Artificial para agrupar a todos los métodos, técnicas e
intentos de simular el intelecto humano en la computadora. Casi todos los
especialistas están de acuerdo con esto, y quien acuñó este término fue el
matemático John McCarthy (creador del LISP), profesor del Instituto de

4
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Tecnología de Massachusetts. Además de McCarthy, son considerados padres


de esta disciplina Marvin Minsky también del Instituto de Tecnología de
Massachusetts y Herbert Simon y Allen Newell de la Universidad de Carnegie-
Mellon.

Desde su surgimiento, la I.A. ha tenido muchos críticos como Hebert Dreyfus,


Joseph Weizenbaum , John Searle, los cuales ven a la I.A. como un fraude o
una ciencia ilegítima.

1.2.1. Evolución histórica.

Como rama de la Ciencia de la Computación, la I.A. ha evolucionado tanto en


la formalización, como en la implementación de sus técnicas. Un resumen
cronológico de su desarrollo puede ser el siguiente:

Cronología del desarrollo de la I.A.

1936 - Turing formaliza el concepto de computadora de propósito general.


1945 - Von Neumann concibe el diseño de “programa almacenado” para
computadoras digitales.
1946 - Aparece ENIAC, primera computadora digital de propósito general
dedicada.
1950 - Turing describe su test para conocer si una máquina es “inteligente”.
1955 - Bernstein desarrolla el primer programa para jugar ajedrez.
1956 - McCarthy organiza la conferencia de Dartmouth e introduce el
término Inteligencia Artificial.
Newell, Shaw y Simon desarrollan el Logic Theorist, primer
programa de Inteligencia Artificial exitoso.
1957 - McCarthy desarrolla el LISP (primer lenguaje de Inteligencia
Artificial).
Newell, Shaw y Simon comienzan los trabajos para encontrar un
solucionador general de problemas (GPS).
Chomsky introduce transformaciones gramaticales para modelar la
sintaxis de los lenguajes naturales.
1965 - Feigenbaum desarrolla DENDRAL (primer Sistema Experto).
Dreyfus publica el artículo “Alchemy and Artificial Intelligence”.
1966 - Quillian desarrolla las redes semánticas.
1967 - Greenblatt desarrolla MacHack, el primer programa de ajedrez
profesionalmente competente.
1970 - Aparece “Learning Structural Descriptions from Examples” de
Winston (primer artículo que se dedicó al Aprendizaje
Automatizado).
Colmerauer desarrolla el lenguaje de programación PROLOG.
1972 - Es desarrollado MYCIN, primer Sistema Experto en utilizar reglas de
producción.
Winograd completa el SHRDLU, un programa para el procesamiento
de lenguaje natural.
1974 - En su artículo “A framework for representing knowledge” Minsky
define los marcos.
1975 - El MIT inventa la máquina LISP, primera especializada en I.A.
1982 - Aparece una teoría sobre visión desarrollada por Marr.

5
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Comienzan las investigaciones de los japoneses y la Quinta


generación.
1986 - Se introduce la primera Máquina Conexionista por Thinking
Machines Corporation.
Aparece la primera microcomputadora de 32 bits.
1987 - Primera Conferencia Internacional sobre Redes Neuronales
Artificiales.
1988 - Primera computadora ajedrecista Hitech.

El desarrollo de la I.A. pudiera enmarcarse en las siguientes etapas:

- Oscura (década del 50) : Surgen la Redes Neuronales Artificiales (R.N.A.).


- De la razón (década del 60) : Desarrollo de la lógica y los demostradores de
teoremas.
- Romántica (década del 70) : Surgimiento de los Sistemas Expertos.
- Ilustración (década del 80) : Desarrollo del aprendizaje automatizado o
extracción automatizada del conocimiento.
- Renacimiento gótico (década del 90) : Resurgimiento de las R.N.A.

Los trabajos iniciales dentro del campo de la I.A. estuvieron dirigidos a emular
el proceso del pensamiento humano. Resultados relevantes fueron el intento
de Newell, Shaw y Simon de crear un Solucionador General de Problemas
(GPS), así como el éxito alcanzado a fines de la década de los 50 e inicios de
los años 60 por Rosemblatt al crear los Perceptrons. En ambos casos, otros
autores se encargaron de demostrar las limitaciones de ambos intentos. En
1973 Gödel demostró que era imposible la matematización del proceso de
razonamiento lo cual anulaba la posibilidad de crear, al menos en el presente,
un GPS como el pensado por Newell, Shaw y Simon. Minsky y Papert en los
años 60 mostraron las serias limitaciones del funcionamiento de un
perceptron simple a través del problema clásico del XOR. Es por esto que a
esta etapa se le denominó oscura.

Sin embargo, en América los trabajos en I.A. siguieron otra dirección. Se


planteaba que, si bien no existía una teoría universal de la inteligencia, sí era
posible crear inteligencias especializadas. En esta época se comenzó a dar más
importancia al papel del conocimiento que a los métodos potentes de solución
de problemas, todo lo cual llevó a la reactivación de los trabajos en este
campo.

Causas del vigor de la IA en la década de los 80.

La I.A. cobró vigor en la década de los 80, debido al éxito alcanzado por los
Sistemas Expertos, al proyecto japonés de Quinta Generación, el cual originó
un gran avance tecnológico y al éxito del uso de técnicas de I.A. en problemas
concretos como el reconocimiento de patrones, la robótica, la visión, etc.

Líneas de desarrollo de la IA en la actualidad

El desarrollo de la I.A. ha seguido dos líneas principales: la simbólica y la


subsimbólica. La primera se caracteriza por desarrollar modelos que
describen, formalizan e implementan aspectos sistematizables del
conocimiento en forma explícita (Sistemas Expertos, Razonamiento basado en
casos, etc). La otra se basa en los enfoques no representacionales de la I.A.

6
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

(R.N.A., algoritmos genéticos y sistemas difusos). El cálculo subsimbólico se


basa en el uso de representaciones analógicas, el conocimiento se reparte
entre diversas componentes del sistema que están enlazadas y que pueden
funcionar en paralelo.

Finalmente es necesario mencionar uno de los problemas fundamentales que


enfrenta actualmente la I.A.: el problema del aprendizaje automatizado, para el
que no existe actualmente una solución eficiente.

1.3. La Inteligencia Artificial y los modelos computacionales.

El desarrollo de la I.A. es, realmente, una etapa cualitativamente superior


dentro del progreso de la Ciencia de la Computación. Es importante, por tanto,
analizar la relación existente entre la I.A. y los modelos computacionales
convencionales. Existen diferentes modelos computacionales, entre los que
podemos mencionar:

- Programación procedural: Un programa es una secuencia de instrucciones


que transforman los datos para alcanzar la solución de un problema.
- Programación funcional: Un programa es considerado una función
matemática que describe una relación entre una entrada y una salida.
- Programación lógica: Un programa es un conjunto de cláusulas de Horn
que declaran lógicamente el conocimiento sobre el dominio de un
determinado problema.
- Programación orientada a objetos: Un programa es un modelo físico que
simula el comportamiento de una parte real o imaginaria del mundo. En
lugar de describir esa parte del mundo por medio de operadores y estructuras
de datos, funciones o ecuaciones matemáticas, se construye literalmente un
modelo físico del mismo.

La programación lógico/funcional y la programación orientada a objeto son dos


alternativas diferentes a los problemas relacionados con el concepto de estado
de la programación procedural. En la primera alternativa el enfoque es eliminar
el concepto de estado, mientras que en la programación orientada a objeto es
elevar el concepto de estado al primer plano.

Estos paradigmas difieren entre sí, pero tienen en común que los programas
están dirigidos a alcanzar la solución del problema dado. Es por ello que en
todo modelo computacional se identifican dos elementos básicos: la forma
utilizada para describir el conocimiento sobre el dominio de la aplicación que
se modela y el método utilizado para manipular este conocimiento en busca de
un objetivo concreto. En forma general un modelo computacional se puede
expresar como:

modelo computacional = formalismo + método de solución

Con el formalismo se describe el conocimiento que se tiene sobre el dominio


del problema. Abarca tanto la descripción como la forma en que se almacena
la información a procesar. Con el método de solución se brindan los
operadores y las estructuras de control que permiten resolver el problema.

7
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

En los paradigmas de programación convencionales, las dos componentes del


modelo no se pueden separar. Para modificar el conocimiento o el método de
solución hay que cambiar el programa completo.

En la actualidad el conocimiento ha desplazado del papel principal al método


de solución, siendo el factor determinante. Es por esto que las fronteras entre
ambas componentes se delimitan cada vez más.

El desarrollo de estas componentes se realiza mediante las técnicas de I.A.,


generándose de esa forma nuevos modelos computacionales para la solución
de problemas. La I.A. se dedica al estudio de nuevas formas de representación
del conocimiento, métodos de solución de problemas, razonamiento con
incertidumbre y otras.

El área donde la programación y la IA se aproximan más es en la programación


automática, en la que se combinan las técnicas de resolución de problemas con
una BD que contiene información, tanto del dominio de la tarea como del
conocimiento de la programación, para producir un sistema que genere
programas automáticamente. Los sistemas de programación automática difieren
en la forma en que aceptan las descripciones de los programas que deberían
escribir.

Una de las áreas de la I.A. donde más éxito se ha alcanzado es el desarrollo de


Sistemas Expertos (S.E.), que son programas que resuelven problemas de un
dominio de aplicación concreto de manera similar a como lo haría un experto
humano en esa materia.

1.3.1. Los SE como un ejemplo de modelo computacional.

La experticidad en un dominio dado se caracteriza por una alta calidad y


elevados resultados en las tareas de solución de problemas en el dominio. Un
experto humano resuelve problemas en su área de experticidad más
rapidamente, con más precisión y menos conciencia sobre su plan de acción que
un novato. Para alcanzar este nivel de ejecución el experto requiere gran
cantidad de conocimiento de varios tipos, y vías altamente efectivas de usar este
conocimiento. Los tipos de conocimiento que un experto necesita son sobre los
objetos y procesos que aparecen en el dominio, esquemas y métodos generales
de solución de problemas, y sobre clases específicas de problemas en el dominio
y los métodos que han sido probados como efectivos para los problemas de cada
clase.

Teniendo en cuenta lo anterior el experto artificial o Sistema Experto requiere al


menos de dos componentes esenciales: la Base de Conocimiento (B.C.), que
contiene el conocimiento sobre el problema y la Máquina de Inferencia (M.I.),
que contiene los métodos para manipular dicho conocimiento. Podemos ver
entonces al Sistema Experto como un modelo computacional:

S.E. = B.C. + M.I.

La B.C. almacena el conocimiento en una determinada notación, conocida


como forma de representación del conocimiento (F.R.C.), lo cual constituye el

8
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

formalismo de este modelo. La M.I., por su parte, implementa los métodos de


solución del problema (M.S.P). Un S.E. es entonces:

S.E.= F.R.C. + M.S.P.

Como hemos visto, el S.E. es un modelo computacional nuevo. La


independencia de sus dos componentes permite modificar una de ellas sin
alterar la otra.

1.4. El supuesto subyacente.

Como estudiamos en la sección 1.1, el campo de aplicación de la I.A. aborda


problemas que procesan, fundamentalmente, información de tipo simbólico.
Veamos primeramente cuáles son nuestras suposiciones subyacentes acerca
de la inteligencia.

Newell y Simon (1976) definieron el sistema de símbolos físicos como sigue:


“Un sistema de símbolos físicos consiste en un conjunto de entidades
llamadas símbolos, que son patrones físicos que pueden existir como
componentes de otro tipo de entidad llamada expresión (o estructura de
símbolos). Así una estructura de símbolos está compuesta por un número
de ocurrencias (o marcas) de símbolos relacionados de alguna manera física
(por ejemplo estando uno a continuación del otro). En cualquier momento el
programa contendrá una colección de estructuras de símbolos. Además de
estas estructuras, el sistema contiene también una colección de procesos
que operan sobre unas expresiones para producir otras expresiones:
procesos de creación, modificación, reproducción y destrucción. Un sistema
de símbolos físicos es una máquina que produce, a lo largo del tiempo, una
colección evolutiva de estructuras de símbolos. Tal sistema existe en un
mundo de objetos de forma más amplia que las expresiones simbólicas por
sí mismas”.

Por otro lado, se formula la hipótesis del sistema de símbolos físicos de la


siguiente manera: Un sistema de símbolos físicos posee los medios necesarios
y suficientes para acciones inteligentes en general.

Parece que no hay manera de probar o refutar esta hipótesis con fundamentos
lógicos, por lo que ella debe estar sujeta a validación empírica, o sea, a la
experimentación. En cada investigación se selecciona una tarea que requiere
inteligencia, se propone un programa para resolverla y se ensaya. La evidencia
a favor de la hipótesis no solamente viene desde áreas donde era más probable
encontrarla como los juegos, sino también de áreas como la percepción visual,
donde parecía más posible la existencia de procesos no simbólicos. Es posible
que la hipótesis sea parcialmente verdadera, o sea, que existan problemas que
no puedan ser modelados por el sistema de símbolos físicos. Sólo tiempo y
esfuerzo nos lo dirán. Esta hipótesis tiene importancia porque forma la base
de la creencia de que es posible construir programas que puedan realizar
tareas inteligentes que actualmente realizan las personas.

1.5. Papel del sentido común.

De modo que alcanzar una IA comprende tres tareas:

9
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

i) Desarrollar un lenguaje para expresar el conocimiento. Como uno de los


principios de la IA es que se pueda expresar explícita y declarativamente el
conocimiento para que se pueda usar por diversos programas, este
lenguaje debe poseer ambas cualidades.
ii) Desarrollar un conjunto de procedimientos para manipular (usar) el
conocimiento.
iii) Construir la base de conocimiento, o sea, codificar el conocimiento en el
lenguaje desarrollado en (i) de modo que una persona o una máquina le
pueda aplicar los mecanismos de razonamiento desarrollados en (ii).

A pesar de los grandes esfuerzos invertidos en (i) y (ii) actualmente la mayoría de


los programas llamados inteligentes sólo poseen una inteligencia aparente,
limitada o externa, pues su conocimiento solamente le permite actuar ante
situaciones previstas. Otro rasgo que los caracteriza es que modelan el
conocimiento especializado de individuos aislados. Para poder salvar esta
limitante es necesario determinar por qué los humanos pueden enfrentar
situaciones nuevas.

Los hombres poseen diversas formas para responder a situaciones nuevas


cuando éstas aparecen:

- pedir consejos a alguien que conozca sobre el tema,


- consultar literatura sobre el tema,
- usar conocimiento general incluido el sentido común (muchos consideran que
el sentido común se deriva del almacenamiento masivo de conocimiento y de
la habilidad para acceder rápidamente al conocimiento relevante),
- comparar con situaciones similares aunque no relacionadas con la que
apareció.

Todos estos caminos están cerrados a los programas inteligentes actuales: ellos
no comprenden realmente bien el lenguaje natural, no poseen conocimiento de
carácter general y su conocimiento no incluye información sobre otros dominios
de aplicación que no sea para el que está preparado. Una vía para abrir estos
caminos es fortalecer el esfuerzo que se invierte en (iii), lo cual significa crear
bases de conocimientos 10 ó 100 mil veces mayores que las que se crean actual-
mente para los sistemas expertos.

Esta BC contendría hechos y métodos de solución problemas generales, así


como una amplia recopilación de ejemplos y hechos específicos, y reglas para
definir analogías entre situaciones. Esta BC se distinguiría por su amplitud y
no tanto por su tamaño.

A esta nueva visión del desarrollo de la IA se le denomina IA distribuida, pues en


los sistemas inteligentes desarrollados bajo esta concepción existirán numerosos
agentes cada uno con determinado conocimiento pero que COOPERAN en la
solución de los problemas.

1.5. Técnicas de I.A.

10
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Para la resolución de problemas de I.A. se requieren técnicas que difieren de


las convencionales. En esta sección estudiaremos las características de estas
técnicas.

Los programas de I.A. requieren de conocimiento. En compensación por esta


arrolladora ventaja, el conocimiento tiene algunas propiedades menos
deseables como son:

- ser voluminoso.
- ser difícil de caracterizar y modelar con precisión.
- estar cambiando constantemente.

Una técnica de I.A. es un método para explotar el conocimiento, que debería


ser representado de tal manera que:

- Capte generalizaciones: No es una Base de Datos. No debe ser necesario


representar cada situación individual, sino que se agrupen las
situaciones que compartan propiedades importantes. Si no tiene esta
característica se necesitaría más espacio del disponible y más tiempo del
que tenemos para mantenerlo actualizado.
- Pueda ser comprendido por los especialistas que lo proporcionan.
- Deba ser modificable fácilmente.
- Pueda ser usado en muchas situaciones diversas, incluso si no es total-
mente preciso o completo.
- Pueda ser usado para extenderse a sí mismo.

Los lenguajes básicos para la implementación de las técnicas de I.A. son LISP
y PROLOG por las facilidades que brindan para el tratamiento simbólico, entre
otras razones. LISP permite diseñar las estructuras de datos y los algoritmos
que los manejan de una manera muy eficiente. PROLOG, a su vez, tiene muy
buen poder expresivo, permitiendo una formulación bastante natural y directa
en la solución de muchos problemas. En esto, los lenguajes procedurales son
muy malos. No se debe confundir las técnicas de I.A. con software de I.A. Se
deben diferenciar dos aspectos fundamentales:

- Software para el desarrollo de aplicaciones con técnicas de I.A.


Ejemplo: el shell de un sistema experto, máquina de inferencia más in-
terface con el usuario, puede ser escrito en cualquier otro lenguaje. De
hecho, el LISP y el PROLOG son malos para implementar shells debido a
su eficiencia computacional.
- Aplicaciones en el campo de I.A.
Ejemplos: Sistemas Expertos, traductores, demostradores de teoremas es-
pecíficos, etc. Para los traductores es mejor usar LISP y para los de-
mostradores de teoremas, es mejor el PROLOG.

Es posible resolver problemas de I.A. sin usar técnicas de I.A., aunque las
soluciones no son muy buenas. A su vez, es posible aplicar técnicas de I.A. a
problemas que no son de I.A.

Para intentar caracterizar las técnicas de I.A., analicemos varios enfoques del
problema del titafor que van aumentando en complejidad, uso de
generalizaciones, claridad del conocimiento y extensividad de su enfoque.

11
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Programa 1:

Estructura de datos: Se tiene un tablero expresado como un vector de 9


elementos que se corresponden con las posiciones del mismo de la siguiente
forma:
123
456
789
y donde el valor 0 indica casilla en blanco, el 1 casilla ocupada por el
jugador X y el 2 casilla ocupada por el jugador O. Además se tiene una tabla
de movimientos que es un vector de 39 elementos, cada uno de los cuales es
a su vez un tablero.

Algoritmo: Para hacer un movimiento proceder a lo siguiente:


1. Considerar al vector que representa el tablero como un número de base 3
y convertirlo a decimal.
2. Usar el número calculado en el paso 1 como un índice de la tabla de
movimientos y acceder al vector almacenado allí.
3. El vector seleccionado en el paso 2 representa el estado del tablero
después de hacer el movimiento. Por tanto, el tablero debe hacerse igual a
dicho vector.

Comentarios:
- Eficiente en términos de tiempo y juego óptimo.
- Ocupa mucho espacio para almacenar la tabla.
- Alguien tiene que hacer mucho trabajo para construir todas las entradas
del tablero.
- Es poco probable que se entren todas las entradas sin error.
- Si se quiere ampliar el juego, por ejemplo a tres dimensiones, hay que
hacer el programa nuevamente. Además la tabla de movimientos sería de
327 elementos lo cual sobrepasa la capacidad de memoria de las
computadoras.

Conclusión: Esta técnica no es de I.A.

Programa 2:

Estructura de datos: Se tiene un tablero representado en forma similar al


del programa 1, pero ahora el valor 2 indica casilla en blanco, el 3 casilla
ocupada por el jugador X y el 5 casilla ocupada por el jugador O. Además se
tiene una variable entera Turno, que indica el movimiento a realizar: 1 para
el primer movimiento y así sucesivamente, hasta 9 para el último.

Algoritmo: Necesita tres procedimientos:

- Hacer2: Intenta colocar dos X (O) en una fila. Primero intenta jugar en el
centro del tablero. Si no puede, intenta las casillas que no están en las
esquinas.

- Posgana(p): Devuelve 0 si el jugador p no puede ganar en el siguiente


movimiento. En caso contrario, devuelve la casilla que constituye un
movimiento ganador. Se llama, en primer lugar, para ver si podemos ganar

12
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

y cómo. Si se puede, realizaremos ese movimiento. Si no, llamaremos a


posgana otra vez para ver si el oponente puede ganar en el siguiente
movimiento. Si puede ganar, debemos bloquearlo. Posgana opera
comparando una a una cada fila, columna y diagonal. Debido a la forma
en que se enumeró, se puede comprobar esto, fácilmente, multiplicando
sus casillas. Si el producto es 18 (3*3*2), X puede ganar y si es 50 (5*5*2)
puede ganar O. Después de hallar la fila ganadora se comprueba cada
elemento de la misma para determinar cuál de ellos es el blanco.

- Ir(n): Realiza una jugada en la casilla n.

El algoritmo realiza los movimientos impares, si juega X o los pares, si juega


O. La estrategia para cada turno es como sigue:

Turno=1 Ir(1) {esquina superior izquierda}


Turno=2 Si tablero[5] es blanco, ir(5), si no ir(1)
Turno=3 Si tablero[9] es blanco, ir(9), si no ir(3)
Turno=4 Si posgana(X) no es 0, entonces ir(posgana(X)) {bloquear la victoria
del adversario}, si no ir(hacer2)
Turno=5 Si posgana(X) no es 0, entonces ir(posgana(X)) {gana}. Si no, si
posgana(O) no es 0 entonces ir(posgana(O)) {bloquear la victoria} y
si no, si tablero[7] es blanco entonces ir(7), si no ir(3). {Intentamos
hacer una horquilla}
Turno=6 Si posgana(O) no es 0 entonces ir(posgana(O)). Si no, si posgana(X)
no es 0 entonces ir(posgana(X)) y si no ir(hacer2)
Turno=7,8 ó 9 Si posgana(nosotros) no es 0 entonces ir(posgana(nosotros)).
Si no, si posgana(oponente) no es 0 entonces ir(posgana(oponente))
y si no ir a cualquier casilla.

Comentarios:
- No es tan eficiente respecto al tiempo como el primer programa, pues
debe comprobar varias condiciones antes de realizar cada movimiento.
- Es más eficiente respecto al espacio, pues no necesita almacenar la
enorme tabla de movimientos.
- Es más fácil de entender su estrategia o cambiarla si se desea.
- La estrategia aún ha sido calculada de antemano por el programador.
Cualquier fallo de éste, aparecerá en el programa.
- No se puede generalizar a un dominio diferente como el titafor
tridimensional.

Conclusión: Esta técnica no es de I.A.

Programa 3:

Estructura de datos: Se tiene un vector de 9 elementos que representa el


tablero, una lista de los tableros que pueden resultar del próximo
movimiento y un número que representa una estimación de la posibilidad
de que un movimiento nos conduzca a la victoria final.

Algoritmo: Para decidir el siguiente movimiento:

1. Mirar cuáles son los tableros resultantes de cada uno de los movimientos
que se pueden realizar a partir del tablero actual.

13
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

2. Decidir qué tablero es el mejor.


3. Realizar la jugada que conduce a ese tablero y asignar el valor de esa
jugada óptima como valor del tablero actual.
4. Para decidir cuál tablero es el mejor, de un conjunto de tableros, realizar
lo siguiente para cada uno de ellos:
a) Analizar si es jugada ganadora. Si lo es, calificarla como la mejor
jugada, dándole un valor muy alto.
b) De lo contrario, considerar todos los movimientos que el oponente
pueda realizar a continuación. Analizar cuál de ellos es peor para
nosotros (llamando recursivamente a este procedimiento). Suponer
que el oponente hará el movimiento que es peor para nosotros (el
mejor para él). Cualquiera que sea el valor del peor movimiento,
asignarlo como valor del tablero que estamos considerando.
c) El mejor tablero será aquel que tenga el mayor valor.

Comentarios:
Este procedimiento se llama procedimiento minimax, puesto que examina
un árbol de movimientos posibles suponiendo que para cada nivel
intentamos maximizar la posibilidad de ganar, mientras que el oponente
intenta minimizar dicha posibilidad. Requiere mucho más tiempo que los
anteriores, pues tiene que examinar el árbol de todos los movimientos
posibles antes de hacer cada movimiento. Pero es superior en algo
importante: puede ampliarse para manejar juegos más complicados, para
los cuales el enfoque de enumeración exhaustiva de dichos programas se
desmorona completamente. También se puede ampliar con una variedad de
conocimientos específicos sobre otros juegos y sobre la forma de jugarlos.
Por ejemplo, en vez de considerar todos los movimientos posibles en el
siguiente turno, se puede tener en cuenta sólo un subconjunto razonable,
determinado por medio de algún algoritmo sencillo y, en vez de analizar
cada serie de movimientos hasta que el jugador gane, puede examinar hasta
una profundidad fija y evaluar el mérito o valor del tablero resultante,
usando los criterios estáticos apropiados.

Conclusión: Esta es una técnica de I.A. Para problemas muy pequeños es


menos eficiente que otros métodos más directos, pero puede usarse en
situaciones en las que esos métodos fallarían. En el Capítulo 3,
abordaremos con más profundidad este procedimiento.

Este problema ilustra tres importantes técnicas de I.A.:

- Búsqueda: Proporciona una forma de resolver los problemas que no


permiten enfoques más directos, así como una estructura en la que
pueden encajar cualquiera de las otras técnicas más directas disponi-
bles.
- Uso del conocimiento: Proporciona una forma de resolver problemas
complejos, explotando las estructuras de los objetos involucrados.
- Abstracción: Proporciona una forma de separar las características y
variaciones importantes de aquellas que no la tienen, pues de lo
contrario, desbordarían cualquier proceso.

Analicemos otro ejemplo. Veamos, primeramente, un programa para ordenar


un arreglo de números utilizando el método de ordenación quicksort.

14
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Estructura de datos: Se tiene un arreglo A de n números.

Algoritmo: Recibe como argumento a A.

1. Si existen en A al menos dos valores distintos, entonces


a) Sea val el mayor de los dos primeros distintos.
b) Particionar A en dos subarreglos
i) A1 ... Ak-1 los menores que val.
ii) Ak ... An los mayores o iguales que val.
2. Llamar recursivamente al algoritmo pasándole como argumento el
arreglo de A1 a Ak-1.
3. Llamar recursivamente al algoritmo pasándole como argumento el
arreglo de Ak a An.
4. Retornar el arreglo A, el cual ya está ordenado.

Comentarios:
Este procedimiento ejecuta una tarea general para una gran variedad de
datos de entrada. Ordenar una lista sólo requiere comparar dos números y
si son mayores, invertirlos.

Veamos ahora el siguiente programa para calcular la derivada de una


función de una variable.

1. Si f(x) es de la forma u(x) + v(x), entonces retornar Der(u(x)) + Der(v(x)).


2. Si f(x) es de la forma u(x) - v(x), entonces retornar Der(u(x)) - Der(v(x)).
3. Si f(x) es de la forma u(x) * v(x), entonces retornar
v(x) * Der(u(x)) + u(x) * Der(v(x)).
4. Si f(x) = x, entonces retornar 1.
5. Si f(x) = c y c es una constante numérica, entonces retornar 0.
y así sucesivamente para cada caso.

Comentarios:
Este procedimiento ejecuta tareas específicas para pocas entradas, pues a
partir de patrones en un formato de entrada devuelve la salida deseada.
Calcular la derivada de una función requiere un conocimiento más
extensivo de los métodos a usar según la entrada. Podemos, por lo tanto,
considerarlo un programa inteligente.

Los programas inteligentes son programas basados en el conocimiento.

1.6. Criterios para el éxito.

Saber si estamos en presencia de un programa inteligente no es un problema


sencillo. A veces, sin embargo, es posible lograr una medida bastante precisa
de la ejecución de un programa. Por ejemplo, un programa para jugar ajedrez
puede obtener una puntuación de ajedrez de la misma forma que un humano.
Existen hoy en día programas que han obtenido puntuaciones más altas que
la mayoría de los jugadores humanos. DENDRAL es un sistema experto que
analiza componentes orgánicos para determinar su estructura. Es difícil obte-
ner una medida de comparación con los químicos humanos, pero ha produ-
cido análisis que han sido publicados como resultados originales de
investigación.

15
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

Al empezar a diseñar un programa de I.A. deberíamos intentar especificar lo


mejor posible los criterios de éxito para ese programa particular funcionando
en su dominio restringido. Esto es lo mejor que podemos hacer por el
momento.

1.7. Aplicaciones de la I.A.

Son innumerables los campos de aplicación de las técnicas de I.A. Ejemplos de


ellos son los siguientes:

- Juegos.
Fueron precisamente, las primeras aplicaciones de la I.A., pues
constituían una excelente demostración de que las computadoras podían
realizar actividades inteligentes. Actualmente se han desarrollado
múltiples programas para jugar al ajedrez, las damas, resolver el cubo de
Rubik, entre otros.
- Solución general de problemas.
Para la solución de problemas no algorítmicos o intratables
computacionalmente la I.A. ofrece una alternativa eficiente. Se han
desarrollado, de esta forma, demostradores de teoremas, simplificadores
de fórmulas matemáticas, planificadores, entre otros.
- Sistemas Expertos.
Constituye hoy en día el área de aplicación de la I.A. de mayor éxito. Los
sistemas expertos permiten almacenar y utilizar el conocimiento de uno o
varios expertos humanos en un dominio de aplicación concreto. Su uso
incrementa la productividad, mejora la eficiencia en la toma de decisiones
o simplemente permite resolver problemas cuando los expertos no están
presentes. Muchos son los ejemplos de sistemas expertos desarrollados.
Entre ellos: MYCIN (para el diagnóstico médico), PROSPECTOR (para la
detección de yacimientos minerales), DENDRAL (para el análisis de la
estructura de sustancias químicas), etc.
- Procesamiento de lenguaje natural.
Los programas de procesamiento de lenguaje natural utilizan las técnicas
de I.A. para permitir que las computadoras comprendan y generen
interfaces en lenguaje natural, lo cual haría más fácil el uso de estos
programas por el usuario. La comprensión del lenguaje natural incluye el
análisis de la sintaxis o gramática, la semántica o significado y el contexto
del lenguaje. Un ejemplo de programas de procesamiento de lenguaje
natural son los traductores de idiomas.
- Visión.
La visión por computadora comprende el análisis y evaluación de la in-
formación visual. El uso de las técnicas de I.A. permite a las computa-
doras examinar imágenes reales e identificar sus objetos y rasgos. Un
sistema típico está compuesto por una cámara de video que capta las
imágenes, un convertidor analógico-digital que envía las señales a la
computadora y un software de I.A. que, mediante técnicas de búsqueda y
reconocimiento de patrones, analiza la imagen. Un ejemplo de aplicación
es el análisis de fotografías aéreas.
- Robótica.

16
Inteligencia Artificial.
- Introducción a la Inteligencia Artificial.

La robótica es el campo de la ingeniería dedicada a simular ciertas


capacidades físicas del hombre. Los robots no pueden actuar ante
situaciones cambiantes y tomar decisiones si no se dotan de softwares de
I.A. Un robot dotado de inteligencia puede decidir cambiar el orden de la
secuencia de sus operaciones, eliminar algunos pasos o modificar alguno
de ellos. Para eso se dotan a los robots de sensores de presión,
temperatura, de luz, de cámaras de video, etc., además de softwares para
la toma de decisiones. Al incorporar la I.A. a los robots aumenta su
flexibilidad y utilidad.
- Educación.
La I.A puede ser usada en la educación y el entrenamiento, mediante la
creación de programas que actúan como tutores inteligentes. Los
tutoriales convencionales son rígidos en el sentido de que sus textos son
fijos para todos los estudiantes. Al dotarlos de técnicas de I.A., ellos son
capaces de variar su contenido en dependencia del conocimiento,
habilidad e inteligencia del estudiante. Por otro lado, pueden proveerse de
interfaces en lenguaje natural e incluso pueden adquirir nuevo
conocimiento automáticamente en interacción con el tutor humano.
- Programación automática.
El desarrollo de un software tiene varias etapas. La primera consiste en la
definición del problema y el objetivo a resolver. Luego se diseña
funcionalmente el software, identificando los datos, los procesos y sus
interrelaciones. Por último, se implementa en un lenguaje de
programación concreto y se compila, llevándolo a código de máquina. La
programación automática, o sea, la automatización del proceso de
desarrollo de softwares significa permitirle al programador especificar qué
es lo que quiere, en lugar de cómo se debe realizar. Con la programación
automática se han obtenido muchos beneficios: reducción de errores,
incremento de la complejidad de los sistemas que se implementan y
liberación del programador de los detalles de implementación, dirigiendo
su atención al estudio profundo del problema, lo que le permite llegar a
soluciones más rápidas y correctas.

Bibliografía

[Ric88] - Inteligencia Artificial , Elaine.Rich, 1ra edición.


[Bell] - Modelos Computacionales Avanzados. Rafael Bello.
[Garc] - Cibernética Matemática, Luciano García.

RESUMEN

Este capítulo da a conocer al lector los tipos de problemas que pueden


resolverse en la Inteligencia Artificial, diferenciándolos de los paradigmas
anteriores. Desarrolla además los tipos de técnicas que son útiles para resolver
esos problemas, el cómo sabremos cuándo hemos logrado construir un
programa inteligente, la evolución histórica que esta rama de la ciencia ha
tenido, sus líneas de desarrollo y sus campos de aplicación.

17

Potrebbero piacerti anche