Documentos de Académico
Documentos de Profesional
Documentos de Cultura
es voluminoso
difiere de lo datos en que se organiza de una forma que corresponde a la forma en la que
se va a usar.
La técnica de la Inteligencia Artificial que explota conocimiento que debe ser representado de
manera que:
la gente que lo debe proveer lo puede entender: el conocimiento que tiene un programa
tiene que se dado por personas en términos que entiendan
puede ser modificado fácilmente para corregir errores y reflexionar cambios en el mundo
Aspectos filosóficos
Artificial: algo que sólo existe / ocurre si algún humano lo crea
resolver problemas
meta-razonamiento
aprendizaje + experiencia
curiosidad
conocimiento
capacidad de comunicación
Concepto radial: se suelen definir a través de una definición concreta / concisa / clara /
precisa tal cual, sino a través de ejemplos prototípicos. Mientras más se aleje algo del
ejemplo prototípico, menos parecido es a lo que queremos decir.
Historia
Inició en 1956 en el Simposio de Dartmouth, en el cual se juntaron intelectuales de varias
profesiones para discutir cómo simular la inteligencia. Dos fundadores importantes son Marvin
Minsky (MIT) y John McCarthy (MIT/Stanford). Otros contribuyentes importantes son Herbert
Simon y Allen Newell, quienes contribuyeron con algoritmos.
Prolog
Se inventó en 1972/73 en la Universidad de Marsella, Francia. Su nombre surge de
"PROgrammation en LOGique" y está basado en la lógica matemática. Es un lenguaje declarativo
mamifero(X):-perro(X).
perro(X):-galgo.
%Firulais es un galgo
%ESTO ES UN HECHO
galgo(firulais).
%firulais es un mamífero
mamifero(firulais).
Las propiedades mamífero, perro, galgo se llaman predicados. Nótese que en lo hechos no hay
variables, sino sólo constantes, mientras que en las reglas sí hay variables.
hechos
reglas
consultas
Ejemplos de código
prolog_pais(japon).
prolog_pais(francia).
prolog_pais(hungria).
prolog_pais(bhutan).
prolog_pais(kenya).
prolog_pais(suriname).
saludos2:-
prolog_pais(Pais1),
write(Pais1),
!,
prolog_pais(Pais2),
Pais2\==Pais1,
write(Pais2),
nl,
fail.
saludos2.
main:-
saludos2.
main.
%LISTAS
pertenece_a(X,[X|_]):-
!.
pertenece_a(X,[_|Z]):-
pertenece_a(X,Z).
combina([],Lista,Lista):-!.
combina([X|Lista1],Lista2,[X|Lista3]):-
combina(Lista1,Lista2,Lista3).
%Bases de conocimeinto dinámicas
:-dynamic pais/1.
pais(holanda).
pais(francia).
escribe_paises:-
pais(X),
X\==ya,
write(X),
nl,
fail.
escribe_paises.
main:-
nl,
repite,
read(Pais),
asserta(pais(Pais)),
Pais==ya,
escribe_paises.
Búsquedas
Definiciones
Espacio de búsqueda: gráfica dirigida en la que los nodos son estados y las aristas son
transiciones entre estados.
Formulación del problema: dad una meta, especificación de qué acciones están disponibles y
qué variables forman parte de la descripción de los estados en el espacio de búsqueda
(formalización del problema)
Estrategia de búsqueda: cómo se va a navegar dentro del espacio de búsqueda; suponen que el
ambiente es observable, estático, discreto y determinístico
Estados sucesores: se puede llegar directamente desde el estado en el que se esté actualmente
Frontera o lista abierta: estados que son nodos hoja del árbol de búsqueda que se está
construyendo
if the node contains a goal state then return the corresponding solution
expand the chosen node, adding the resulting nodes to the frontier
if member(n,estadosFinales)
return solución
else
suc=sucesores(n)
if not(member(n1,explorados))
return busquedaEnProfundidad(n1,explorados)
end if
end foreach
end if-else
end busquedaEnProfundidad
Una desventaja es que, aún si encuentra la solución, no hay garantía de que sea la más óptima.
Además, puede que el árbol de búsqueda sea infinito.
Esta estrategia garantiza que el primer estado final encontrado será el óptimo.
La desventaja de esta búsqueda es que cada vez que el límite se aumenta, se repiten las
primeras etapas de las búsquedas anteriores, sin embargo, esto no es tan grave.
Búsqueda optimizadora
Combina algunas características de búsqueda en profundidad con búsqueda en amplitud, de tal
forma que el siguiente nodo de la frontera que se elija en la segunda instrucción del ciclo del
algoritmo de búsqueda genérico sea el que tenga el menor peso acumulado desde el nodo raíz.
Para lograr esto la mejor opción es almacenar los nodos que pertenecen a la frontera utilizando
una cola de prioridades.
Muchos autores utilizan el nombre g(n) para referirse a la función que calcula el peso total para
llegar del estado inicial de una búsqueda a un nodo n cualquiera (y a veces el nombre g para
referirse al valor entregado por dicha función).
A*
, se sigue una estrategia muy parecida a la de la estrategia de búsqueda optimizadora, pero
además de tomar en cuenta el peso total del camino que va del nodo inicio al nodo que
actualmente esté siendo visitado/considerado, también calcula y toma en cuenta el peso total
estimado para llegar del nodo actual a la meta. Se suele usar el nombre f(n) para referirse a la
función de evaluación utilizada por A*, donde h(n)=g(n)+h(n). h(n) es una función que debe
hacer una estimación del peso total faltante para llegar a la meta.
Algoritmo Minimax
Los círculos representan los movimientos de aquel que corre el algoritmo (el que busca
maximizar el valor con cada jugada); los rectángulos muestran los movimientos del oponente
(busca minimizar el valor con cada jugada, pues esto implica que su oponente - el círculo -
tendría un valor menor o podría perder). En este ejemplo se asume que hay un límite de
previsión de 4 movimientos.
Para el proyecto, entonces, tenemos que poder determinar cómo vamos a prever los movimientos
del contrincante para poder tomar las decisiones.
El algoritmo evalúa las hojas de manera heurística. Loas jugadas con las que gana el círculo
están marcadas con ∞ y las jugadas en las que gana el contrincante están marcadas con −∞.
Nótese que en cada nivel va cambiando quién es el que escoge el valor.
function minimax(node, depth, maximizingPlayer)
if maximizingPlayer
bestValue := -infinity
return bestValue
else
bestValue = infinity
import java.util.*;
Nodo hijo;
if(profundidad == 0 or n.listaHijos.length == 0)
return n.getValor();
if(max){
bestValue = Double.NEGATIVE_INFINITY;
hijo = n.listaHijos[i];
bestValue = val;
return bestValue;
}else{
bestValue = Double.POSITIVE_INFINITY;
hijo = n.listaHijos[i];
bestValue = val;
return bestValue;
Poda alfa-beta
Se pueden recortar partes del árbol para reducir el tiempo de búsqueda y optimizar el código
if maximizingPlayer
if b<= a
return a
else
if b<= a
return b
llamada inicial:
public static int aphabeta(Nodo n, int prof, int a, int b, boolean max){
int val;
if(prof == 0 or n.listaHijos.length == 0)
return n.getValor();
if(max){
a = val;
if(b<= a)
break;
return a;
}else{
b = val;
if(b<= a)
break;
return b;
Arbol ar = Arbol();
Marcos
Es un esquema de representación del conocimiento propuesto por Marvin Minsky ('72-73).
Describe el conocimiento (son características descriptivas). Ej: Marco que describe a un coche.
Tiene todas las características del coche. Pero igual, por ejemplo, el motor, tiene su propio
marco.
El marco del coche hacer referencia al marco del motor
Parte del marco pueden apuntar a algún otro marco, a alguna función...
habilidad para acotar los valores permitidos que puede tomar un atributo
sinitaxis más consistente y legible para referenciar objetos del dominio en las reglas
Jerarquías
Cualquier cosa que se pueda representar en forma de árbol. En algunos tipo de importancia
puede ser importante, en otros tal vez no. Hay muchos tipos de jerarquías.
Taxonomía (Is A)
La Taxonomía es que la semántica se traduzca a un IS-A
La semántica del árbol sería: Is-A ("Canine is a Mammal", "Primate is a Mammal"). Esto pasa
porque las flechas van de abajo a arriba. La semántica es la misma en cada uno de los
niveles/flechas
Podría darse el caso en ciertas situaciones en las que se repitan valores, pero es poco
probable y poco útil.
Árbol de decisiones
Entre cada nivel se hace una pregunta y dependiendo de la pregunta se va al nodo que
corresponda.
Jerarquía de marcos
Se pueden dar jerarquías de marcos (en pedacitos del marco).
Redes semánticas
Hay que etiquetar cada relación, porque puede que sea diferente a las demás. De hecho, cada
etiqueta puede ser más que sólo un nombre, pueden tener más información; pueden contener
jerarquías, marcos...
Navegar dentro de una red semántica
Tomas cualquier punto como nodo raíz, para de ahí dirigirse a los hijos.
En la inteligencia artificial está el conflicto de cómo traducir el lenguaje. Una opción podría ser
una red semántica con las definiciones de los términos o con las oraciones. Entonces se
resaltan/activan algunos nodos específicos y algunas conexiones para poder intentar extraer el
significado de la oración. A esto se le llama Propagación de activaciones.
Dependencia conceptual
Querían ver la forma de representar oraciones descriptivas de las cosas que las personas dicen
día a día.
Inventaron familias de verbos (verbos que se pareces) y les pusieron un nombre. El punto de
esto es que puede haber dos oraciones que superficialmente no se parezcan en nada, pero el
significado sea el mismo. Para esto sería necesario, entonces, una única representación
(sintácticamente son distintas, semánticamente son iguales). El punto es darle a la computadora
la capacidad de entender el significado de las cosas.
ej: "El niño corrió hacia la mesa" y "The kid ran towards the table"
Si a la hora de hablar omitimos detalles porque en el día a día son obvias o automáticas, en la
computadora sí debe estar implícita la información completa.
activas: representan movimiento, algo dinámico. Para eso mencionan cuál es el actor, la
conceptualización, el objeto, la dirección y tal vez el instrumento
estáticas: el objeto y el estado en el que está, tal vez cierta descripción de ese estado
Familia de verbo
Algunas acciones se representan con una sola familia, otras son una cadena de cosas acciones
que implican varias familias.
dar
tomar
comprar
PTRANS: transferencia física, como el que una persona vaya a otro lugar o colocar algo en
una mesa.
ir
poner
(tomar)
PROPEL: hay alguna fuerza física involucrada en la acción descrita. Normalmente implica un
PTRANS
empujar
jalar
lanzar
patear
"John pushed the table to the wall", "John threw the ball"
MOVE: no es lo mismo que PTRANS. Es el movimiento de una parte del cuerpo (mover un
brazo...).
patear
lanzar
besar
levantar la mano
GRASP:
agarrar
retener
soltar
lanzar
INGEST: el que algún objeto que estaba en el exterior de un ser animado, termine en el
interior
comer
beber
respirar
fumar
inyectar
sudar
escupir
llorar
MTRANS: transferencia mental. La información cambió de un lugar a otro o de un
organismo a otro
olvidar
aprender
conocer
ir a clase
ver
recordar
MBUILD: construir mentalmente algo. Crear un modelo mental: ojos observan cosas, se
integra la información y la mente integra todo.
imaginar
decidir
concluir
considerar
decir
tocar música
gritar
ladrar
ATTEND: estar atento a los sensores (ojos, oídos...). dirigir la concentración hacia cierta
fuente de información
escuchar
mirar
Guiones
En la vida, es lo que le dice a las personas qué decir. También pueden ser acotaciones,
descripciones...
La idea de los guiones es juntar oraciones representativas que suceden en diversos contextos.
<-- K MTRANS M a H
K MTRANS a W Pedido <-- K SPEAK a W <-- K MBUILD pedido in C.P(K) <-- K ATTEND ojos
to M
ESCENA 3: Preparación y espera
K DO wait
W GRASP P
W PTRANS P to t
W ATRANS P to K
K INGEST P
El punto de hacer estos guiones es para que la computadora sea capaz, no sólo de hacer, sino
de ver y repetir. Con este guion, por ejemplo, debería poder ver a alguien que va a un
restaurante e identificar esa acción.
Casos
Se estudian casos específicos (como en derecho o negocios). Es una experiencia específica, un
precedente, un ejemplo específico o un antecedente.
Se podría usar un marco para almacenar casos (no sería igual al de, por ejemplo, los coches). La
idea es que el sistema haga uso de la información almacenada en esos casos para resolver
problemas. Para eso hay que ver qué información puede ser útil o necesaria:
información contextual
espacio
tiempo...
resultados
Memoria de casos
Conjunto de casos que tengamos. Se puede tener más de uno en un sistema. Hay que
considerara cuántos y cuáles casos se van a incluir:
se deben evitar redundancias para así tener la menor cantidad posible (evitar ineficiencia y
ahorrar memora)
puede ser con un árbol de decisiones o algo que nos permita enfocarnos en un
subconjunto de los casos para escoger los que sean relevantes para el problema específico
a tratar
Archie
Es un sistema de librerías basado en computadoras, el cual ayuda a los arquitectos en las tareas
de alto nivel del diseño conceptual. Archie les da acceso a los arquitectos a otros diseños de
oficinas creados por otros arquitectos e indica los aspectos que deben ser considerados al
resolver un problema dado de diseño. Casa caso en Archie contiene varios tipos de información:
resultados que describen qué tan bien satisface el plano las metas y restricciones desde un
punto de vista específico;
lecciones que se deben aprender del caso, indicando en qué situaciones sería útil el caso,
dado a los usuarios como anotaciones textuales para que sean fáciles de entender.
El arquitecto usa el vocabulario de Archie para preparar un sondeo que represente lo que el
cliente quiere (Figura 2.)
Cada caja de la Figura 2 representa una "feature" en el sondeo. Con el sondeo, Archie evalúa el
valor de cada caso almacenado basado en qué tan cercano es cada valor de cada concepto al
valor en el sondeo.
Reglas
Son:
instrucciones
limitaciones / restricciones
conocimiento procedural
conocimiento declarativo
Prolog, por ejemplo, compara las conclusiones de las reglas que guarda con las consultas que le
damos. Ve las reglas disponibles y escoge las que son aplicables. Si hay más de una regla que
pudiera coincidir con las consultas, entonces:
se compara el estado actual del problema / búsqueda con pre- (deducción) o post-
condiciones (inducción), obteniendo un conjunto de reglas aplicables
elegir una de las reglas aplicables ("resolución de conflictos") para saber cuál de las
posibles elegir, obteniendo una sola regla como resultado, Algunos métodos pueden ser:
asignar prioridades a las reglas y elegir la de mayor prioridad (sin embargo, puede ser
complicado asignar esas prioridades y puede que haya reglas con el mismo nivel, lo
cual lleve a que no se resuelva el problema)
la primera regla que encuentre es la que aplica (pero puede causar sesgos inesperados
e injustos)
elegir la regla candidata que menos / más se haya utilizado (puede que para ciertas
situaciones hubiera sido mejor otra)
Pero esto no se le puede presentar así a un sistema, además de que únicamente representa una
regla cuando queremos varias. Entonces, podríamos subdividir la regla en partes:
1. si estás en alto...
7. apretar el acelerador...
Pre-condiciones Post-condiciones
1 5
2 6
3 7
Producción
1,2,3,4 → 5,6,7
Instrucción condicional
4, 5, 6
Nótese que lo que sea que haya del lado izquierdo de las flechas sólo aparecerá una vez: sólo
hay una regla para COVID; sólo hay una regla para influenza...
Las conclusiones de las reglas no son acciones sino estados del mundo.
Inferencia
Def: usar conocimiento para llegar a conclusiones (agregar conocimiento)
2. inducción: seguir las flechas en orden inverso. También se llama encadenamiento hacia
atrás.
Planeación
Es previo a algo. Dada una meta o un objetivo y un contexto , ¿cuáles son los pasos necesarios
para lograrla?
Diagnóstico
Es posterior a algo. Dado un contexto, un modelo y una indicación de una falla, ¿cuál es la causa
de la falla en lo que fue del modelo?
Diseño
Dados requerimientos o restricciones, objetivos, componentes, ¿cuál es el modelo que incluya a
los componentes y sus relaciones, y cumpla con los objetivos?
Métodos de razonamiento
incluye razonamiento basado en casos o por partes, pero también incluye la parte subsecuente:
una vez teniendo varios casos similares hay que ajustarlos a la situación.
retrieve / recuperación de casos: regresar algo que se había guardado antes, algunos casos
que pueden ser relevantes a la situación (se obtiene de la memoria de casos algún
subconjunto)
reuse / adapt / adaptación de casos: ajustar la información del caso a la nueva situación
revise: verificar que los casos obtenidos sí sirvan para ajustar el caso a la nueva situación
retain: aprenderse la nueva solución (del nuevo problema) y se puede guardar en la base de
casos.
Sistema basado en casos híbrido (router), es decir, puede usar las dos: razonamiento basado en
modelos combinado con razonamiento basado en casos
usa una búsqueda inter-zonas (conectar la zona del punto de origen con el punto de
llegada)
Critik
"El diseñador". Sistema para diseño o rediseño. También combina el razonamiento basado en
modelos con el razonamiento basado en casos, pero de manera diferente a la de router.
Empieza con modelo de casos; cada modelo es específico al caso que modela, pero sí puede
buscar si hay alguno parecido.
telescopio Hubble
timbre de puerta
enfriador de ácido nítrico
Diseño/rediseño es la tarea principal que emplea Critic. Las tareas y métodos que utiliza:
1. recuperación de casos
1. similitud de sustancias y/o componentes del nuevo problema en relación con las
de los otros casos para saber cuáles son importantes
1. diagnóstico (RBM)
2. reparación (RBM)
3. verificación (RBM)
Es necesario tener el modelo completo para que pueda llegar a resultados coherentes (no
puede tener modelos parciales). [En router sí hace sentido programar eso].
Basado en reglas
No tiene ni casos ni modelos, sino que utiliza reglas. Por ejemplo, un sistema de recomendación
de coches.
Utiliza una inferencia de deducción: siguiendo las reglas / flechitas entre las condiciones, se
llegará a la conclusión También se puede usar inductivamente, para conocer las pre-condiciones
o características iniciales (aunque normalmente es deductivo). Pero puede suceder que se
cumplan las condiciones de varias reglas, por lo que tenemos que poder analizar cuál es el que
conviene.
Mycin
Es un sistema experto: se dedica a una tarea especializada y la hace a nivel de un experto. Está
basado en reglas. Se creó en Stanford en los 70's. Este sistema diagnostica enfermedades
bacteriales del corazón o bacterias que atacan el cerebro.
Busca remplazar a un humano cuando no hay uno disponible para hacer el diagnóstico.
Como utiliza la inducción, necesita asociar probabilidades a cada una de las respuestas. Estas
probabilidades dependen de las opciones que haya, o del programa interno en general.
es un sistema monolítico, es decir, sólo hace una tarea/acción/cosa. Por eso es que no tiene
sentido hacer un diagrama de tareas para Mycin.
Sistemas expertos
Sistema inteligente (utiliza técnica de IA) que tiene un desempeño comparable al de un experto
humano en alguna tarea de razonamiento especializada y que tiene la mayor parte de su
conocimiento almacenado en forma de reglas.
Sistema basado en el conocimiento
Es parecido a un sistema experto, pues utiliza sistemas inteligentes y debe tener un desempeño
comparable con algún experto humano. Sin embargo, el conocimiento puede estar
representado con cualquier modelo de representación, no necesariamente reglas.
Ingeniería de conocimiento
Es el diseño y desarrollo de sistemas expertos o sistemas basados en el conocimiento. Requiere
que el ingeniero adquiera el conocimiento para resolver el problema.
Adquisición de conocimiento
Puede ser tratando de experimentar el problema o contactar a algún experto:
entrevistas
investigación
experiencias
artículos de investigación
Podemos notar que ésta es una parte difícil, pues si uno no es experto, adquirir el conocimiento
para luego transmitirlo y representarlo computacionalmente no es trivial.