PDF de programación - inteligencia artificial (I) Aplicaciones prácticas

Imágen de pdf inteligencia artificial (I) Aplicaciones prácticas

inteligencia artificial (I) Aplicaciones prácticasgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.432 visualizaciones desde el 14 de Enero del 2017
322,6 KB
5 paginas
Creado hace 18a (15/09/2005)
Ciencia e Investigación

Inteligencia Artificial (I)
AApplliiccaacciioonneess pprrááccttiiccaass
AApplliiccaacciioonneess pprrááccttiiccaass

David Arroyo Menéndez

En este artículo se mostrarán algunas
de las principales aplicaciones para las
cuales se utilizan las técnicas de
inteligencia artificial. Así mismo, se
ilustrarán estas aplicaciones mediante
explicaciones de código y de
aplicaciones libres disponibles.
Introducción

Este artículo ha sido titulado Aplicaciones
Prácticas de Inteligencia Artificial, esta introduc-
ción debería explicar tal título. Por aplicación prác-
tica entendemos utilizar alguna técnica derivada
de un área del conocimiento para resolver un pro-
blema concreto que afecta a nuestra vida cotidia-
na. Para no complicarnos definiremos inteligencia
artificial tal y como lo hacen Rich y Knight, esto es,
lograr que las máquinas realicen tareas que por el
momento hacen mejor los humanos.

de

Turing

Turing pensó que si una máquina se comporta
en todos los aspectos como inteligente, entonces
debe ser inteligente. Por lo que si un número alto
de humanos no puede diferenciar a una máquina
de una persona en una conversación es porque se
comporta de manera inteligente. Esto se llamó el
Test
(http://plato.stanford.edu/
entries/turing-test) y el primer programa en pasar-
lo fue Eliza, que imitaba el comportamiento de un
psicoanalista en un chat de Internet. Eliza daba res-
puestas que eran preguntas acerca de lo que esta-
bas diciendo, con lo cual sin ningún conocimiento
real de psicología Eliza pasaba el test de Turing. Las
soluciones que se aportan a las tareas que realizan
mejor los humanos suponen muchas veces un
compromiso entre parecer que se comporta de
manera inteligente y realizar los procesos mentales
que hacemos los humanos. Para ver una imple-
mentación libre de Eliza podéis hacer:
Esc-x doctor

Profundidad, por Maurits
Cornelis Escher.

Logo de Clips.

En vuestro emacs.

MMUUNNDDOO

Linux

nnºº7755

24

Demos un repaso para ver cuáles pueden ser
esas tareas que los humanos realizan mejor que
las máquinas:
 Juegos. Durantes algunos años los fabrican-
tes de ordenadores demostraban la potencia
de su tecnología jugando a ajedrez o damas
contra campeones mundiales.

 Consejos. Los humanos solemos pedir con-
sejo a otros humanos cuando padecemos
una enfermedad, se nos estropea el coche,
ante la compra de una casa o para otras
decisiones que necesitamos de un conoci-
miento que no siempre poseemos. Desde
hace años los sistemas basados en conoci-
miento o sistemas expertos hacen esta tarea
con efectividad similar a como lo haría un
experto en la materia.

 Lenguaje Natural. Hoy en día las máquinas
no hablan nuestro idioma: lenguajes de pro-
gramación, líneas de comando o interfaces
gráficas nos sirven para comunicarnos con
estos, pero el comunicarnos con ellos como
nos comunicamos con personas constituye
un reto que revolucionaría la informática
con aplicaciones inimaginables.

 Aprendizaje. Una de las principales diferen-
cias entre seres vivos e inertes es la capaci-
dad de adaptarse a los cambios, la capacidad
de aprender. Algoritmos de aprendizaje
automático son cada día más utilizados en
una cantidad creciente de aplicaciones.

 Empatía. Rara vez el ordenador se pone en el
lugar del humano comprendiendo su objeti-
vo abstracto y ayudándole a solucionarlo.
¿Pueden las máquinas hacer tal cosa?

 Sentido común. Existe una gran cantidad
de conocimiento que aprendemos en
nuestra más tierna infancia, que las perso-
nas conocemos como lo relativo a consi-
deraciones del tiempo, el espacio, los
materiales... y que incluso las aplicaciones
que requieren cierta inteligencia, como los
sistemas basados en conocimiento, rara
vez incluyen.

 Pensar con neuronas. Tal vez si conseguiéra-
mos crear un sistema artificial que simulara
nuestro sistema neurológico y lo entrenára-
mos en un entorno adecuado pudiera llegar

http://digital.revistasprofesionales.com

Inteligencia Artificial (I)

a tener un nivel de inteligencia similar
al nuestro. Lo cierto es que este tipo de
sistemas está obteniendo muy buenos
resultados en problemas que había
sido muy difícil abordar por otras vías,
como por ejemplo el reconocimiento
de formas.

En este artículo veremos que las técnicas
que solucionan o se aproximan a la solu-
ción de tales problemáticas nos ayudan a
resolver cuestiones de nuestra vida cotidia-
na y que, además, esto puede hacerse utili-
zando software libre.
Juegos

La mayoría de los juegos de mesa y una
gran cantidad de problemas informáticos
pueden resolverse mediante una adecuada
modelización en estados y aplicando un
algoritmo de búsqueda entre estos estados.
Para acotar el problema, pensemos en un
juego de tablero de 2 jugadores, por ejem-
plo, las 3 en raya, las damas, el ajedrez, el
othello, etc. ¿Cómo podría programarse un
juego de este tipo?

Bien, en primer lugar, un tablero es una
estructura de datos de tipo matriz donde
cada elemento puede ser ocupado por el
jugador 1, ocupado por el jugador 2 o vacío
(en juegos como el ajedrez donde cada
jugador tiene diferentes fichas habría que
completar el enfoque). Una partida es una
secuencia de estados por los que pasa un
tablero. Ahora veamos cómo debería actuar
nuestro sistema inteligente para ganarnos
en una partida.
 Una primera aproximación podría ser
tener todas las posibles partidas en
memoria y aplicar solo los movimien-
tos que han llevado solo a partidas vic-
toriosas.

 Otro enfoque sería actuar en cada
turno, teniendo en cuenta ciertas
reglas estáticas (ciertos if). Un ejemplo
de reglas en las 3 en raya puede ser: si
tengo dos fichas alineadas entonces
ocupa el último lugar vacío y gana la
partida, si el oponente tiene 2 fichas
alineadas ocupa el lugar vacío y evita
la victoria del oponente, en cualquier
otro caso mueve de manera aleatoria.
 En general, para este tipo de juegos se
utiliza la estrategia minimax que imita
el comportamiento humano de exami-
nar por anticipado un cierto número
de jugadas, explorando el grafo de
tableros que se generarían tras un
movimiento dado. En este enfoque
existe una función de evaluación que
da un valor a cada posible movimiento.

Ciencia e Investigación

Listado 1

Extracto de código de tictactoe

# implements a simple win/block/random-move AI

def move_ai_easy

if (m = blockWin) >= 0

@gamefield.field[m] = 2

else

# set random point
while true

x = rand(3)
y = rand(3)
if @gamefield.get(x,y) == 0

@gamefield.set(x,y)
break

end

end

end
@nmoves += 1

end

# implements a more clever AI using the negamax tree search method
def move_ai_hard

best = -Inf
besti = -1
@gamefield.player = 1

order = [4,0,2,6,8,1,3,5,7] # see text
0.upto(8) do |ctr|

i = order[ctr]
if @gamefield.field[i] == 0

@gamefield.field[i] = 2
value = [email protected]
@gamefield.field[i] = 0
if value > best
best = value
besti = i

end

end

break if (@nmoves == 0) && (best == 0) # see text

end

@gamefield.player = 2
@gamefield.field[besti] = 2

@nmoves += 1

end

Para ilustrar la implementación de estos
enfoques recomiendo instalar el paquete
tictactoe que implementa las 3 en raya con
2 niveles de dificultad: easy (implementa
reglas tontas) y hard (implementa mini-
max). Dejo el código de las funciones clave
al lector (ver listado 1).

De este modo, queda ilustrado el modo
en que se pueden aplicar técnicas de inteli-
gencia artificial en los juegos.
Sistemas expertos

Los sistemas expertos resuelven problemas
que normalmente son solucionados por
expertos humanos.

Un sistema experto se compone de una
base de conocimiento del dominio en cues-
tión, mecanismos de razonamiento para
aplicar conocimiento a los problemas que
se proponen, mecanismos para explicar a
los usuarios el razonamiento utilizado a la
hora de ofrecer una respuesta y mecanis-

mos de aprendizaje y adquisición de nuevo
conocimiento.

Para crear una base de conocimiento es
necesario contar con al menos un experto
humano del dominio en cuestión; se puede
adquirir su conocimiento a partir de entre-
vistas o mediante interfaces amigables para
que lo introduzca. Pero también es muy
importante una adecuada modelización de
su conocimiento.

Los mecanismos de representación del
conocimiento que se pueden encontrar
son: lógica, redes, marcos y reglas. No obs-
tante, lo más utilizado es una adecuada
combinación de marcos y reglas.

Es posible representar el conocimiento
mediante hechos o instancias y reglas o
algún otro mecanismo para inferir nuevos
hechos. Pero deberemos plantearnos si a par-
tir de los hechos vamos a ir aplicando reglas
(encadenamiento hacia delante), o si por el
contrario nos interesa responder a una cues-
tión concreta (por ejemplo: ¿tengo gripe?) e

http://digital.revistasprofesionales.com

MMUUNNDDOO

25

Linux

nnºº7755

Ciencia e Investigación

Listado 2

Ejemplo de uso de clips

[darroyo@turing:/usr/share/doc/clips-doc/examples]$ clips
CLIPS> (load “auto.clp”)
Defining deffunction: ask-question
Defining deffunction: yes-or-no-p
Defining defrule: normal-engine-state-conclusions +j
...
CLIPS> (run)
CLIPS> (reset)
CLIPS> (run)

The Engine Diagnosis Expert System

Does the engine start (yes/no)?

comandos podemos ejecutar lo que se
muestra en el listado 2.

De este modo, podemos probar un ejemplo
de sistema experto cuyo objetivo es solucio-
nar averías del coche; el sistema va haciendo
preguntas acerca de los síntomas que presen-
ta el coche y finalmente otorga un diagnósti-
co. Para ejecutarlo el primer (run) no me fun-
cionó; probé a hacer un reset y luego volver a
hacer run y ya funcionaba. Os recomiendo
que le echéis un vistazo al fichero auto.clp.

Espero que este apartado nos haya servi-
do para entender que una máquina puede
modelar el c
  • Links de descarga
http://lwp-l.com/pdf29

Comentarios de: inteligencia artificial (I) Aplicaciones prácticas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad