UNIVERSIDAD YACAMBÚ
MAESTRÍA EN GERENCIA DE LAS FINANZAS Y DE LOS NEGOCIOS
SISTEMAS DE INFORMACIÓN GERENCIAL
FECHA: ABRIL - JUNIO 2007
Prof. Msc. Yaros Pérez
FORO
SISTEMAS DE APOYO A LA TOMA DE DECISIONES
Autor: Franklin Marcano
REDES NEURALES. SISTEMAS DE LÓGICA DIFUSA. REALIDAD VIRTUAL. ALGORITMOS GENÉTICOS.
1.- Redes neuronales
Introducción
Una Red Neural, es un sistema compuesto por un gran número de elementos básicos (Artificial Neurons), agrupados en capas (Layers) y que se encuentran altamente interconectados (Synapses). Esta estructura posee varias entradas y salidas, las cuales serán entrenadas para reaccionar (valores O), de una manera deseada, a los estímulos de entrada (valores I).
Estos sistemas emulan, de cierta manera, al cerebro humano, pero lo tanto requieren aprender a comportarse (Learning) y alguien debe encargarse de enseñarles o entrenarles (Training), en base a un conocimiento previo del entorno del problema.
1.1. Definición
Una red neural (o neuronal) es una estructura computacional que permite resolver diversos problemas de optimización o clasificación, para lo que deben ser sometidas a un proceso de entrenamiento usando un conjunto de patrones conocidos. Una vez que la red ha "aprendido" a procesar correctamente estos patrones, ya está lista para responder a cualquier entrada, proporcionando una salida esperada. Desde un punto de vista matemático, el entrenamiento de una red neuronal es una sucesión de funciones de Rn en Rn que deben converger a la función que resuelve el problema para el que se está realizando dicho entrenamiento.
1.2.- Aplicación de las Redes Neurales
Las redes neurales son útiles en unos pocos y muy especiales problemas. A grandes rasgos, estas aplicaciones son aquellas en las cuales se dispone de un registro de datos y nadie sabe exactamente la estructura y los parámetros que pudieran modelar el problema. En otras palabras, grandes cantidades de datos y mucha incertidumbre en cuanto a la manera de como estos son producidos.
Las Redes Neurales (Neural Networks) son utilizadas, entre otras cosas para la predicción, la minería de datos (data mining), el reconocimiento de patrones y los sistemas de control adaptativo. Constituyen una parte muy importante en el estudio y desarrollo de la inteligencia artificial (AI) y el de la vida artificial (a-life).
Es importante considerar, que las Redes Neurales pueden también ser combinadas con otras herramientas, como la lógica difusa (lógica fuzzy), los algoritmos genéticos, los sistemas expertos, las estadísticas, las transformadas de Fourier, etc. para conseguir otras aplicaciones.
1.3.- Diseño de una Red Neural
La construcción de una Red Neural, se puede realizar de varias maneras:
a. A nivel de hardware, utilizando por ejemplo transistores a efecto de campo (FET) o amplificadores operacionales.
b. A nivel de software, con programas de computación.
Por lo tanto, esta tecnología puede ser desarrollada tanto en software como en hardware y con ella se pueden construir sistemas capaces de aprender, de adaptarse a condiciones variantes, o inclusive si se dispone de una colección suficiente grande de datos, predecir el estado futuro de algunos modelos. Estas técnicas son adecuadas para enfrentar problemas que hasta ahora eran resueltos sólo por el cerebro humano y resultaban difíciles o imposibles para las máquinas lógicas secuenciales. Un procesamiento paralelo realizado por un gran número de elementos altamente interconectados, es la clave de su funcionamiento.
Los aspectos más importantes que se deben considerar en una Red Neural son:
1.4.- Elemento Básico: Neurona Artificial
Una neurona artificial es un elemento con entradas, salida y memoria que puede ser realizada mediante software o hardware. Posee entradas (I) que son ponderadas (w), sumadas y comparadas con un umbral (t), como se muestra en la siguiente figura:
Tomado de http://www.answermath.com/
La señal computada de esa manera, es tomada como argumento para una función no lineal (f), la cual determinará el tipo de neurona y en parte el tipo de red neuronal (Neural Network). Esta función puede tener diferentes formas, siendo la más común la función sigmoidal (Sigmoid Function). A continuación se presentan algunos ejemplos:
Tomado de http://www.answermath.com/
1.5.- Estructura de una Red Neural: Interconexión de los Elementos Básicos
Es la manera como las unidades (artificial neurons) comunican sus salidas a las entradas de otras unidades. Por lo general estas están agrupadas en capas (layers), de manera tal, que las salidas de una capa están completamente conectadas a las entradas de la capa siguiente; en este caso se habla de una red “completamente conectada”. Es posible tener redes en las cuales sólo algunas de las unidades están conectadas, también se pueden presentar conexiones (Synapses) de realimentación, conectando algunas salidas hacia entradas en capas.
Tomado de http://www.answermath.com/
1.6.- Proceso de Entrenamiento o Aprendizaje de las Redes Neurales
Este proceso consiste en una adaptación progresiva de los valores de las conexiones sinápticas (Synaptic Connections), para permitir a la Red Neural (Neural Network) el aprendizaje de un comportamiento deseado. Para lograr esto, se alimenta la red con una entrada de los datos de entrenamiento, se compara la salida de la red con la salida de los datos de entrenamiento; la diferencia se usa para computar el error (cuadrático medio) de la respuesta de la red. Con un algoritmo apropiado es posible retocar los valores de los pesos sinápticos con el fin de reducir el error. Estas correcciones deben realizarse varias veces o en varios ciclos, para todo el conjunto de entradas-salidas de los datos de entrenamiento.
Tomado de http://www.answermath.com/
1.7.- Ejecución: Comportamiento Final de una Red Neural
Una Red Neural, debe ser alimentada con una NUEVA ENTRADA (nunca antes vista), es decir, una situación nueva, así, La Red Neural (Neural Network) producirá una respuesta razonable ó inteligente en sus salidas.
Puede tratarse de la predicción de un valor en la bolsa en ciertas circunstancias (Forcasting), el riesgo de un nuevo préstamo, una advertencia sobre el clima local ó la identificación de una persona en una nueva imagen (Pattern Recognition).
2.- Sistemas de Lógica Difusa (Lógica Fuzzy)
Introducción:
Esta área de la Inteligencia Artificial estudia los problemas de hacer que una computadora sea capaz de tomar decisiones (“pensar”) usando conocimiento incompleto o probabilístico.
2.1.- Definición
La Lógica Fuzzy es un tipo de lógica para procesar datos inciertos. En ella, un elemento puede tener infinitas graduaciones entre Verdadero y Falso.
2.2.- Elementos Básicos
La Lógica Difusa o Fuzzy, en general involucra las siguientes operaciones:
a. Fuzzificación (Fuzzyfication): Traducción de los valores del mundo real a valores difusos.
b. Evaluación de Reglas (Rule Evaluation): Determinación de la fuerza de las reglas, basado en los valores de entrada y las reglas.
c. Defuzzificación: Traducir de vuelta los resultados difusos a valores del mundo real.
2.3.- Fuzzificación (este punto será explicado a través de un ejemplo)
La traducción de valores del mundo real al ambiente Fuzzy mediante el uso de funciones de membresía. Las funciones de membresía de la siguiente figura traducen una velocidad= 55 en los valores difusos (Grados de membresía), SLOW(LENTO)=0.25, MEDIUM(MEDIO)=0.75 y FAST(RÁPIDO)=0.
Tomado de http://www.answermath.com/
2.4.- Evaluación de Reglas (Este punto será explicado a través de un Ejemplo):
Considerando la siguiente regla:
If SPEED=SLOW and HOME=FAR
Then GAS=INCREASE
Asumiendo que SLOW=0.25 y FAR=0.82.
La validez de la regla será 0.25 (El mínimo valor entre los antecedentes) y la variable fuzzy INCREASE sería también igual a 0.25.
Considerando ahora otra regla:
If SPEED=MEDIUM and HIGHER=SECURE
Then GAS=INCREASE
Asumiendo en este caso, MEDIUM=0.75 y SECURE=0.5.
Ahora la validez de la regla será 0.5 (El mínimo valor entre los antecedentes) y la variable fuzzy INCREASE resultará entonces igual a 0.5.
De esta manera, nos encontramos con dos reglas involucrando a la variable fuzzy INCREASE. Un "OR" fuzzy (ó difuso) entre los resultados de las dos reglas, será 0.5 (el máximo valor entre los dos operandos).
INCREASE=0.5
2.5.- Defuzzificación:
Después de computar las reglas fuzzy y evaluar las variables fuzzy, es necesario trasladar estos valores nuevamente hacia el mundo real. Para ello es necesaria una función de membresía (membership functions) para cada una de las variables de salida.
Continuando con el Ejemplo del punto anterior y considerando las siguientes variables:
DECREASE = 0.2
SUSTAIN= 0.8
INCREASE = 0.5, la siguiente figura ilustra el proceso de Defuzzificación:
Tomado de http://www.answermath.com/
Cada función de membresía (membership function) será truncada al valor de la respectiva variable fuzzy, tal como se muestra en la siguiente figura:
Tomado de http://www.answermath.com/
Se construye ahora, una nueva función de membresía (membership function) de salida, tomando para cada punto en el eje horizontal, el máximo valor entre las tres funciones de membresía. El resultado de esta operación es mostrada en la siguiente figura:
Tomado de http://www.answermath.com/
Para completar el proceso de defuzzyficación (Defuzzyfication), todo lo que nos resta por hacer es encontrar un punto de equilibrio. Una manera de realizar esto, es mediante el "método del centro de gravedad" ("Center of Gravity method", COG).
En el ejemplo considerado, se suministra el siguiente resultado,
COG ≈ 2.6
3.- Realidad Virtual
Introducción:
Una de las más recientes aplicaciones de la Inteligencia Artificial (I.A) es la Realidad Virtual. Básicamente consiste en la elaboración de programas que logran engañar a los sentidos del ser humano, haciéndolo creer que se encuentra flotando, corriendo o volando una nave espacial.
Estas aplicaciones han sido de gran utilidad en la simulación de vuelos para el entrenamiento de pilotos, astronautas, buzos, etc.
3.1.- Definición:
La realidad virtual (RV) es una simulación tridimensional generada o asistida comúnmente por computadora de algún aspecto del mundo real o ficticio, en el cual el usuario tiene la sensación de pertenecer a ese ambiente sintético o interactuar con él. La RV permite interactuar con mundos tridimensionales de una manera más natural, por ejemplo, un usuario puede realizar acciones dentro de un modelo virtual, desplazarse, moverse, caminar a través de él o levantar cosas, y de esta forma experimentar situaciones que se asemejan al mundo real.
La Enciclopedia Británica la define como: La utilización de la modelación y simulación que habilitan a la persona a interactuar con una visión tridimensional o a través de sensores ambientales. De tal forma que las aplicaciones inmergen o emergen al individuo en ambientes generados por computadora que simulan la realidad a través del uso interactivo de estos dispositivos, los cuales envían y reciben información.
3.2.- Principales Características:
Se destacan tres características idóneas de la RV:
Es inmersiva, es decir, el usuario se siente parte del ambiente virtual
3.3.- Aplicaciones:
Una de las principales aplicaciones se da en el área de entrenamiento o capacitación, donde el usuario tiene la oportunidad de poder trabajar en ambientes virtuales sin tener que ponerse en peligro o pagar un alto costo para adquirir cierta experiencia en un área determinada, además la RV se puede utilizar para elaborar prototipos de productos, (simuladores de vuelo) simulaciones de vuelo, educación médica (simulación quirúrgica, entrenamiento, simulaciones para tratamientos psiquiátricos), visualización de datos (como la modelación de moléculas), entre otras.
3.4.- Modelo genérico de un Sistema de Realidad Virtual
Las partes básicas de un sistema de realidad virtual son:
a. El modelo de simulación.
b. La representación del ambiente virtual.
c. La entrada/salida y por supuesto el usuario.
La siguiente figura muestra cada una de las partes básicas del Sistema de Realidad Virtual:
Tomado de http://telematica.cicese.mx
3.5.- Tipos de Realidad Virtual
Existen diferentes tipos de realidad virtual, los cuales se describen brevemente a continuación:
4.- Algoritmos Genéticos
Introducción:
Un Algoritmo Genético se define como una técnica computacional inspirada en modelos biológicos que han sido utilizados para realizar búsquedas eficientes en espacios de soluciones altamente complejos y grandes.
Los Algoritmos Genéticos son métodos adaptivos que pueden ser utilizados para implementar búsquedas y problemas de optimización.
Los Algoritmos Genéticos están basados en los procesos genéticos de los organismos biológicos, codificando una posible solución a un problema en un “cromosoma” compuesto por una cadena de bits o caracteres.
4.1.- Definición
Los algoritmos genéticos son métodos sistemáticos para la resolución de problemas de búsqueda y optimización que aplican a estos los mismos métodos de la evolución biológica: selección basada en la población, reproducción sexual y mutación.
Los algoritmos genéticos son métodos de optimización, que tratan de resolver un conjunto de problemas. En un algoritmo genético, tras parametrizar el problema en una serie de variables, (xi,...,xn) se codifican en un cromosoma. Todos los operadores utilizados por un algoritmo genético se aplicarán sobre estos cromosomas, o sobre poblaciones de ellos. En el algoritmo genético va implícito el método para resolver el problema; son solo parámetros de tal método los que están codificados, a diferencia de otros algoritmos evolutivos como la programación genética. Hay que tener en cuenta que un algoritmo genético es independiente del problema, lo cual lo hace un algoritmo robusto, por ser útil para cualquier problema, pero a la vez débil, pues no está especializado en ninguno.
4.2.- Principales aspectos de un Algoritmo Genético:
Un algoritmo genético consiste en lo siguiente:
4.3.- Ejecución de un Algoritmo Genético
El algoritmo genético procede de la forma siguiente:
Cada uno de los pasos consiste en una actuación sobre las cadenas de bits, es decir, la aplicación de un operador a una cadena binaria. Se les denominan, por razones obvias, operadores genéticos, y hay tres principales: selección, crossover o recombinación y mutación; aparte de otros operadores genéticos no tan comunes, que un algoritmo genético tiene también que fijar para cada ejecución, como lo son:
Ultima revisión: Mayo 2007