[Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

17
Marcelo Andrés Quevedo /Microsoft Student Partner Inteligencia Artificial con C#

description

[Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Transcript of [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Page 1: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Inteligencia Artificial con C#

Page 2: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Agenda

¿Que es la Inteligencia Artificial (IA) ? Un poco de historiaSus aplicacionesMetodologías

1. Maquinas de estado finito2. Algoritmos genéticos3. Redes neuronales4. Sistemas expertos5. Lógica difusa

DEMO

Page 3: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

¿Que es la IA?

Ciencia que intenta crear un programa o una máquina que

imite el comportamiento y el pensamiento humano.

Según, ganador de un premio Pulitzer, Douglas Hofstadter, una entidad inteligente

debe cumplir con los siguientes requisitos:

• Responder a situaciones de forma flexible• Darle sentido a los mensajes ambiguos o contradictorios• Reconocer la importancia de diferentes elementos en una situación• Encontrar similitudes entre situaciones a pesar de las diferencias que

las separan• Encontrar diferencias entre situaciones a pesar de las similitudes que

las ligan.teoría software validación

Page 4: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Un poco de historia part 1

La idea de inteligencias artificiales siempre ha despertado

interés en la raza humana. Hablando de mitos, leyendas y

Hollywood podríamos mencionar a:

• Galatea: escultura de marfil que representa el ideal de mujer creada por un rey Pygmalión y despertada por Afrodita.

• Frankestein: necesita explicación ¿?• Pinocho• I robot (the movie)

Page 5: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Un poco de historia part 2

Volviendo a la realidad…Surge a partir de trabajos publicados en la década de 1940, a partir del

trabajo en1950 de Alan Turing, matemático británico, se abre una nueva disciplina

de las ciencias de la información.

Si bien las ideas fundamentales se remontan a la lógica y algoritmos de los griegos,

a las matemáticas de los árabes, varios siglos antes de Cristo, el concepto de

obtener razonamiento artificial aparece en el siglo XIV. A finales del siglo XIX se

obtienen lógicas formales suficientemente poderosas y a mediados del siglo XX, se

obtienen máquinas capaces de hacer uso de tales lógicas y algoritmos de solución.

Diagrama de Turing

Page 6: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Aplicaciones

Page 7: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Maquinas de estados finitos• Aparecen en sistemas de control • Sencillos• Cantidad finita de posibles estados• Cambiará de estado dependiendo de si se cumple o no la condición de

transición• La salida entre un estado y otro puede ser o no binaria

Do {If (calentador.estado == false) {

If (temperatura < 50) {calentador.estado = true}

 }Elseif (calentador.estado == true) {

If (temperatura > 100) {calentador.estado = false}

} } while (dispositivo.estado == true)

ON

OFF

Page 8: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Algoritmos genéticos part 1Inspirados en la forma en teoría de la evolución. (explicar)

Cálculo de

adaptación

Selección de padres

Cruce y mutación

1. Estado estable2. Ruleta3. Torneo

1. Punto sencillo2. Dos puntos3. Múltiples puntos

Mutacion: calculamos la relación de mutación. Este valor nos va a indicar la posibilidad que determinado cromosoma mute. Para la mutación se invierte el valor que debería ir en dicho cromosoma.

Page 9: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Algoritmos genéticos part 2Funciones elementales

CalcularAdaptacion() Primero obtenemos los factores (altura, fuerza, etc) que van a determinar los valores que prevalecen sobre el

resto. Segundo evaluamos la aptación de cada individuo de la población respecto a dichos valores.Con dichos valores conformamos un valor general de adaptación.

SeleccionarPadres()Recorriendo la población y comparando sus valores de adaptación seleccionamos los padres que tengan los

valores mas altos. Es decir, los mas adaptados

Cruce()Iniciamos la creación de la segunda generación. Cargamos los padres seleccionados. Y por último mediante la función random determino cuantos cromosomas serán heredados por cada iteración en la creación de la

generación. Ya con esto, analizo nuevamente mediante una función aleatoria si el gen que se pasa a dicho cromosoma en particular, es

de la madre o del padre.

Mutación() para ella damos la probabilidad deseada a un if con un random cargado para indicarle al sistema en que casos

plicaría la mutación de mas esta decir, randomizada.

Page 10: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Redes neuronales part 1

• Imitan la forma en que el cerebro procesa la información y pueden aprender.

• Contamos con varias capas. Cada capa esta formada por un conjunto de neuronas. Las diferentes neuronas de las diferentes capas se conectan entre sí.

proteínas

minerales

vitaminas

comer

NO comer

comer poco

en

trad

a

pro

ceso

salid

a

Datos necesarios para el procesamiento, se recomienda usar una nuerona para cada tipo de dato representativo.

Para cada entrada se usará una escala para graduar los valores

Cada neurona tendrá un valor de bias, que nos permitirá manejar los valores de tendencia en la salida

El valor de entrada se calculará como la sumatoria de todas (las neuronas * el peso que les corresponde) + (el bias de la neurona * su peso) Para procesar dicha información usamos funciones de activación.

Page 11: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Redes neuronales part 2Procesamiento de la información:

Funcion de pasoDonde la funcion es 0 para x < 0 y es 1 para x > 0

Función linealDonde la funcion es = x

Función logísticaFuncion = 1 / (1 + e(-x))

Aprendizaje supervisado: se analiza un problema ya resuelto, ingreso los valores de entrada y observo sus resultados. En base a los datos obtenido modifico los valores de tendencia hasta obtener el resultado teórico.

1. Calculo de error2. Actualización de datos

Page 12: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Sistemas expertos

• Trabajan como si fuera un experto en algún área en particular • Utiliza el tipo de reglas que el experto usaría para solucionar el problema (costos).• Existen reglas que nos permiten utilizar esos conocimientos importantes. • Conocimiento declarativo (informacion especifica) y procesal (requiere procsamiento).• Reglas y meta-reglas• Memoria de reglas y memoria de trabajo.

Base de conocimiento

Base de conocimient

o

Motor de inferencia

Interfaz de usuario

SISTEMA EXPERTO

Page 13: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Logica Difusa part 1Logica estrictaNos dice si algo es verdadero o falso. Por ejemplo, “estamos en CodeCamp" Pese

a El hombre trabaja con una lógica no tan estricta (vehículo) Procesamos información sin valores exactos

Logica DifusaGrado de membrecía, para el ejemplo, "que tanto doblo a la derecha”. Por

definicion, que grado de pertenencia tiene una proposición sobre un conjunto. Toma valores

entre 0 y 1.

Page 14: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Logica Difusa part 2Para crear una aplicacion necesitamos de 3 pasos fundamentales:

1. Fuzzificacion: consiste en tomar un valor de entrada y convertirlo en un dato difuso, averiguando su grado de membrecía en los conjuntos correspondientes

Funciones de membrecía (ifs)• de GradoInverso

• Triangulares : toma 3 valores siendo los puntos del triangulo y mas los datos de entrada que necesitemos, según entre que puntos este el valor de entrada será el grado devuelto.

• de Trapezoide

2. Reglas difusas: mediante reglas determinadas obtenemos el grado de membrecía de la entrada con relación a la salida del programa.

3. Desfuzzificacion: a veces es necesario convertir el valor de membrecía en un numero real

Page 15: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

Demo

Page 16: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner

¿Preguntas?

Page 17: [Code Camp 2009] Inteligencia Artificial con C# (Marcelo A. Quevedo)

Marcelo Andrés Quevedo /Microsoft Student Partner