Está en la página 1de 35

¿Qué es la inteligencia artificial?

Lo más importante que se ha obtenido de la inteligencia artificial es que la inteligencia requiere


conocimiento. Sin embargo, el conocimiento tiene algunas propiedades no muy deseables:

es voluminoso

es difícil de caracterizar con precisión

constantemente está cambiando

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:

capture generalizaciones: las situaciones que comparten propiedades importantes se


agrupan juntas

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

puede ser usado en muchas situaciones incluso si no es 100% completo

Aspectos filosóficos
Artificial: algo que sólo existe / ocurre si algún humano lo crea

La inteligencia es un concepto radial que tiene las siguientes características:

resolver problemas

buscar / atender problemas

contexto / objetivos dirigen el comportamiento

meta-razonamiento

adaptabilidad (por contexto)

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

%Todos los perros son mamíferos

%ESTA ES UNA REGLA

mamifero(X):-perro(X).

%todos los galos son perros

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.

La base de conocimientos de Prolog está compuesta por:

hechos: conocimiento específico/constante

reglas: conocimiento general/variable

Cada hecho o regla se llama "una cláusula".


Aridad: cantidad de argumentos de un predicado.

Cada programa en Prolog, por su parte, está compuesto por

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),

write(" saluda a: "),

!,

prolog_pais(Pais2),

Pais2\==Pais1,

write(Pais2),

nl,

fail.

saludos2.

% va a hacer que japon salude a todos los países

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:-

write("Dame los nombres de varios países y escribe ya"),

write(" cuando quieras terminar."),

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.

Meta/objetivo: conjunto de estados que se considerarían estados finales (no se enumeran


explícitamente, sino que se proporcionan)

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

Solución a un problema de búsqueda: a veces se desea como solución una secuencia de


acciones que nos lleva del estado inicial a un estado final aceptable; en otras ocasiones sólo nos
interesa el estado final en sí
Árbol de búsqueda: el estado inicial de la búsqueda dentro del espacio se vuelve el nodo raíz
del árbol de búsqueda

Estados sucesores: se puede llegar directamente desde el estado en el que se esté actualmente

Expansión de un estado: implica encontrar los estados sucesores del estado

Frontera o lista abierta: estados que son nodos hoja del árbol de búsqueda que se está
construyendo

Algoritmo de búsqueda genérico

function GRAPH-SEARCH(problem) return a solutioin, or failure

    initialize the frontier using the initial state of problem

    initialize the explored set to be empty


    loop do

        if the frontier is empty then return failure

        chose a leaf node and remove it from the frontier

        if the node contains a goal state then return the corresponding solution

        add the node to the explored set

        expand the chosen node, adding the resulting nodes to the frontier

            only if not in the frontier or explored set        

Estrategias de búsqueda no informadas


Se basan únicamente en la información sobre qué estados existen, qué acciones se pueden
aplicar en cada uno de ellos y qué estados resultan de aplicar cada una de estas posibles
acciones estando en cada posible estado en las que son aplicadas

Búsqueda en profundidad DFS


Busca alejarse lo más posible del estado inicial durante la búsqueda, regresándose lo menos
posible sólo si llega a "callejones sin salida". Utiliza una pila para almacenar la frontera.
busquedaEnProfundidad(Nodo n,Conjunto explorados,Conjunto estadosFinales)

    if member(n,estadosFinales)

        return solución

    else

        explorados=explorados union makeset(n)

        suc=sucesores(n)

        foreach Nodo n1 in suc

            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.

Búsqueda de profundidad limitada


Este tipo de búsqueda sigue sin encontrar la solución más óptima, sin embargo, ya no se traba
con un espacio infinito, sino que sele pone un límite.
Búsqueda en amplitud BFS
Se utiliza una cola en lugar de una pila para almacenar los nodos que forman la frontera. En este
caso, la idea es alejarse lo menos posible del nodo raíz, sólo cuando ya se terminaron de
expandir/explorar todos los nodos del nivel actual, se agrega otro nivel.

Esta estrategia garantiza que el primer estado final encontrado será el óptimo.

Búsqueda de profundidad limitada iterativa


Esta estrategia combina las ventajas de búsqueda en profundidad con profundidad limitada, con
búsqueda en amplitud.

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.

Estrategias de búsqueda heurísticas


Toman en cuenta lo mismo que las no informadas y una información adicional para escoger el
siguiente nodo la visitar. Para esto se le asocia un peso (costo o precio) a cada acción y/o se le
puede asociar un valor a cada estado. A este tipo de información adicional se le conoce como
heurística. El algoritmo que se ejecute para asignar este peso, se le conoce como la función
heurística.

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.

Búsqueda con escalada / búsqueda en gradiente


las decisiones son puramente locales: se compara el estado actual con sus estados sucesores y
se mueve al mejor sucesor, o se queda en el estado actual, dependiendo del resultado del
análisis comparativo. Si en la búsqueda se desea maximizar el valor de los estados entonces se
tiene la variante de ascenso más empinado, mientras que si lo que se desea es minimizar el
valor heurístico de los estados se tiene la variante de descenso más empinado.
Una ventaja de este tipo de estrategia es que no necesita almacenar un árbol de búsqueda
parcial en ningún momento, ya que siempre se fija únicamente en la región local. Una
desventaja es que puede quedarse "atorada" en un máximo local, en cuyo caso nunca podrá
encontrar el máximo global.

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)

//MaximizingPlayer es un valor booleano que indica a quién le toca jugar

    if depth = 0 or node is terminal node

        return the heuristic value of node

    if maximizingPlayer

        bestValue := -infinity

        for each child of node

            val := minimax(child, depth-1, FALSE) //Es una llamada recursiva al método

            bestValue:= max(bestValue, val)

        return bestValue

    else

        bestValue = infinity

        for each child node

            val := minimax(child, depth-1, TRUE)

            bestValue := min(bestValue, val)


        return bestValue

import java.util.*;

//Podemos asumir que el nodo tiene una lista de nodos hijos

//Nótese que primero tenemos que crear la clase nodo

public static int minimax(Nodo n, int profundidad, boolean max){

int bestValue, val;

Nodo hijo;

if(profundidad == 0 or n.listaHijos.length == 0)

return n.getValor();

if(max){

bestValue = Double.NEGATIVE_INFINITY;

for(int i=0; i<n.listaHijos.length; i++){

hijo = n.listaHijos[i];

val = minimax(hijo, profundidad-1, false);

if(val > bestValue)

bestValue = val;

return bestValue;

}else{

bestValue = Double.POSITIVE_INFINITY;

for(i=0; i<n.listaHijos.length; i++){

hijo = n.listaHijos[i];

val = minimax(hijo, profundidad-1, true);

if(val < bestValue)

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

function alphabeta (node, depth, a, b, maximizingPlayer)

    if depth = 0 or node is terminar node

        return the heuristic value of the node

    if maximizingPlayer

        for each child of node

            a := max(a, aphabeta(child, depth-1, a,b,FALSE))

            if b<= a

                break //se corta a b

        return a

    else

        for each child of node

            b := min(b, aphabeta(child, depth-1, a,b,FALSE))

            if b<= a

                break //se corta a a

        return b     

llamada inicial:

aphabeta(origen, prof, -inf, inf, TRUE)


import java.util.*;

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){

for(int i=0;i<n.listaHijos.length; i++){

val = alphabeta(n.listaHijos[i], prof-1, a, b, false);

if(a < val)

a = val;

if(b<= a)

break;

return a;

}else{

for(int i=0;i<n.listaHijos.length; i++){

val = alphabeta(n.listaHijos[i], prof-1, a, b, false);

if(b > val)

b = val;

if(b<= a)

break;

return b;

public static void main(){

Arbol ar = Arbol();

alphabeta(a.getCabeza(), a.getProf(), Double.NEGATIVE_INFINITY,


Double.POSITIVE_INFINITY, true);

Representación del conocimiento


Cada que hagamos un programa de inteligencia artificial tenemos que decidir cuál
representación del conocimiento es la que más se ajusta a nuestras necesidades / nuestro
proyecto.

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

Se puede ver como un UML en POO

Procedural attachment: lleva a una función. Un valor se obtiene a través de un


procedimiento

Parte del marco pueden apuntar a algún otro marco, a alguna función...

Características de los marcos:

habilidad para documentar información sobre el modelo de un dominio

habilidad para acotar los valores permitidos que puede tomar un atributo

modularidad de la información, permitiendo la fácil expansión y mantenimiento de los


sistemas

sinitaxis más consistente y legible para referenciar objetos del dominio en las reglas

plataforma para construir una interfaz gráfica con objetos gráficos

mecanismo que permita restringir la cantidad de datos considerados durante el


encadenamiento

acceso a un mecanismo que soporte la herencia de información en una clase de jerarquía

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

Hermanos: tienen atributos similares

Podría darse el caso en ciertas situaciones en las que se repitan valores, pero es poco
probable y poco útil.

No importa el orden: a lo ancho, no importa el orden, a lo alto sí.

Partonomía (Part Of)


Nota: A la computadora se le tiene que dar toda la información para que sepa interpretar toda
la semántica. Por eso, el programador deber tener mucho cuidado con

Jerarquía de mando (Puede ser "Le reporta a...")

Como en los anteriores, el orden horizontal no importa, pero sí el vertical.

Árbol de decisiones
Entre cada nivel se hace una pregunta y dependiendo de la pregunta se va al nodo que
corresponda.

Los nodos hojas son las decisiones finales.


No son los únicos tipos de jerarquías que hay. En realidad, todo aquello que se pueda
representar como un árbol puede ser una jerarquía que no necesariamente se tiene que ajustar
a alguno de los tipos que hemos visto.

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.

Verbos: describen actividades

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.

Conceptualizaciones: familias de actividades que identificaron. Es cuál es la escencia detrás


del verbo que esté participando en la información

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.

ATRANS: Es una transferencia abstracta, de posesión o control.

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"

romper normalmente implica un PROPEL pero el resultado es un cambio de estado

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

EXPEL: contrario de INGEST

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

contar (contarle algo a alguien)

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

SPEAK: verbos que implican emitir sonidos

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

en generar, lo que se haga con los sentidos


Algunas oraciones sólo describen el estado de algo. Para eso se consideran otras categorías. Se
podrían usar escalas de -10 a 10 para decir qué tan bien es ese estado (siendo -10 lo peor y 10
lo mejor):

HEALTH: (dead, diseased, under the weather, tolerable, in the pink)

ANTICIPATION: (terrified, nervous, hoping, confident)

MENTAL STATE: (broken, depressed, all right, happy, ecstatic)

PHYSICAL STATE: (end of existance, damaged, OK, perfect)

AWARENES: (dead, uncunscious, asleep, awake, keen)

La flecha denota causalidad. Ej:

La acción DO representa alguna acción sin saber cuál fue.


Oculto detrás de que "John mató a Mary" está que John hizo algo lo cual mató a Mary.

"implica que el pie de John está en contacto físico con Mary"


LTM = Long Term Memory; inst = instrumental: podríamos haber puesto una flecha en lugar del
inst y significa lo mismo

Guiones
En la vida, es lo que le dice a las personas qué decir. También pueden ser acotaciones,
descripciones...

En el contexto de representación del conocimiento, sirven para representar secuencias


prototípicas de acciones del día a día. Sin embargo, el día a día de alguien que es profesional
jugando ajedrez va a ser diferente del día a día de una persona normal.

La idea de los guiones es juntar oraciones representativas que suceden en diversos contextos.

Guion de una ida a un restaurante


(K=cliente, H=host, M=menu, T=mesa, W=waiter, C=cook, P=pedido, B= bill)

ESCENA 1: Llegada al restaurante

        K PTRANS DE exterior al restaurante

        K SPEAK AL H <-- H MTRANS M a K

        <-- K MTRANS M a H

        K PTRANS a T <-- K BE ANTICIPATION(>0)

ESCENA 2: Pedir la comida

        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

        W MTRANS to C of pedido

        K DO wait

        C SPEAK to W "P ready"

        W GRASP P

        W PTRANS P to t

        W ATRANS P to K

        K INGEST P

ESCENA 4: pagar y salir

        K SPEAK to W "cuenta"

        W MTRANS to K CANT.B

        K ATRANS dinero to R <-- K MOVE mano to CARTERA

        K PTRANS de R to EXTERIOR

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:

hay componentes obligatorios:     

descripción del problema

solución que se produjo para el problema

hay componentes que dependen del problema


pasos de razonamiento que se llevaron a cabo para producir la solución

explicaciones acerca de los pasos de razonamiento

explicaciones acerca de aspectos de la solución

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)

se busca la diversidad de cobertura

Igualmente es importante el cómo se organizan los casos:

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:

metas del diseño y restricciones;

planos de diseño que especifican componentes de un edificio y una configuración


satisfactoria;

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

asociaciones / relaciones (por ejemplo, causales)

Podemos clasificar en dos categorías, en las cuales entran las reglas:

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 aleatoriamente (elimina el sesgo de elegir la primera) (requiere conocer


completamente la lista de reglas aplicables para elegir aleatoriamente)

elegir la regla candidata que menos / más se haya utilizado (puede que para ciertas
situaciones hubiera sido mejor otra)

aplicar / ejecutar / utilizar la regla elegida

Ese proceso se repite hasta que terminemos de resolver el problema.

Como conocimiento procedural


A veces queremos decirle a la computadora qué procedimiento realizar y cómo realizarlo.

Podríamos tener un sistema inteligente en el cual le queremos decir a la computadora: "


si estás en alto y el semáforo se pone en verde y hay un coche enfrente de ti y
el coche de enfrente empieza a moverse, entonces puedes meter la 1a velocidad y
lentamente soltar el clutch y apretar el acelerador".

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...

2. el semáforo se pone en verde...


3. hay un coche enfrente de ti...

4. el coche de enfrente se empieza a mover...

5. puedes meter la 1a velocidad...

6. lentamente soltar el clutch...

7. apretar el acelerador...

Las conclusiones de este tipo de reglas son acciones.

Tabla de pre/post condiciones

Pre-condiciones Post-condiciones

1 5

2 6

3 7

Producción

1,2,3,4 → 5,6,7

Instrucción condicional

IF 1 AND 2 AND 3 AND 4 THEN

4, 5, 6

Como conocimiento declarativo


Es más bien decirle a la computadora que existe tal conexión entre dos o más elementos. Por
ejemplo:

COVID → tos seca, dificultad para respirar

influenza → tos flemosa, flujo nasal

catarro → tos flemosa,, flujo nasal

alergia → flujo nasal


cirrosis → piel amarillenta

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)

Existen 3 tipos de inferencias (Humberto Eco):

1. deducción: es básicamente seguir las flechas. También se le llama encadenamiento hacia


adelante.

2. inducción: seguir las flechas en orden inverso. También se llama encadenamiento hacia
atrás.

3. abducción: inventar nuevas reglas basándose en datos

La deducción es la más certera, mientras que la abducción es la menos certera o confiable.

Razonamiento y resolución de problemas

Tipos de problemas / razonamiento

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.

Un razonador basado en casos: Pantic

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

es un modelo jerárquico (mapa jerárquico)

usa una búsqueda inter-zonas (conectar la zona del punto de origen con el punto de
llegada)

Diagramas de la estructura de las tareas (B. Chanrasekaram): diagrama de


tareas y métodos

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.

RBM: razonamiento basado en modelos

Casos con los que empieza:

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. Razonamiento basado en casos

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

2. adaptación de casos (obtenido en el punto anterior)

1. razonamiento basado en modelos (razonar basándose en modelos causales del


dispositivo asociado al caso que se obtuvo de la memoria)

1. diagnóstico (RBM)

2. reparación (RBM)

3. verificación (RBM)

Cosas en común entre router y critik:

combinan casos con modelos pero de manera diferente

en critik, cada modelo depende del caso

en router, son dos alternativas diferentes

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.

A pesar de su capacidad de explicar su razonamiento, no es usado porque no es suficiente para


que la gente confíe en su sistema.

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.

También podría gustarte