M

MathIADI-O

Usuario (Argentina)

Primer post: 9 feb 2016Último post: 9 feb 2016
1
Posts
0
Puntos totales
0
Comentarios
Algunas herramientas para su desarrollo
Algunas herramientas para su desarrollo
Ciencia EducacionporAnónimo2/9/2016

Hola gente, en el siguiente texto se expondrán algunas herramientas para desarrollo de software que pueden ser considerado ramas de la Inteligencia Artificial. El área de la inteligencia artificial es muy extensa, a decir verdad, en sí, es un concepto que aún está en formación, sin embargo, desde ya hace varios años, las herramientas que nos brindan, nos permiten el desarrollo, surgimiento y solución de varios problemas. Desde un aldeano en el Age of Empire, hasta el control de una aeronave, las siguientes herramientas que nos brinda la Inteligencia Artificial, pueden sernos útiles a la hora del manejo de información. La Inteligencia Artificial es la parte de las Ciencias de la Computación que se ocupa del diseño de sistemas inteligentes, esto es sistemas que exhiben características que asociamos con la inteligencia en las conductas humanas. Feigenbaum y Barr ’80s Existen dos modelos importantes, los MODELOS COGNITIVOS y los MODELOS CONEXIONISTAS MODELOS COGNITIVOS Sistemas Basados en Conocimiento Tal vez el desarrollo mas familiar, y sencillo de una herramienta de la IA sea el Sistema Experto, o Sistema Basado en Conocimiento, esto, es un software cuya característica principal, es la diferenciación de un base de conocimiento con el de su motor de inferencia, lo cual permite una edición constante de su base de hechos y reglas (la base de conocimiento). Existen varios lenguajes que nos permiten crear un SBC, entre ellos esta LIPS, JESS, CLIPS. LISP deriva del "LISt Processing" (Proceso de Listas). Es uno de los lenguajes de programación de alto nivel mas antiguos, y su sintaxis es completamente entre paréntesis. JESS Java Expert System Shell, es la versión de CLIPS pero en JAVA, que, al igual que LISP, tienen una sintaxis similar, reglas entre paréntesis. CLIPS es un acrónimo de C Language Integrated Production System (Sistema de Producción Integrado en Lenguaje C). Todos los lenguajes nombrados permiten manejar una amplia variedad de conocimiento, soportando tres paradigmas de programación: el declarativo, el imperativo, y el orientado a objetos. La programación lógica basada en reglas permite que el conocimiento sea representado como reglas heurísticas que especifican las acciones a ser ejecutadas dada una situación. La POO permite modelar sistemas complejos como componentes modulares. La programación imperativa permite ejecutar algoritmos de la misma manera que en C, Java, y otros lenguajes. ¿Que es lo principal que debo saber yo para crear un Sistema Basado en Conocimiento? Uno introducirá una serie de reglas del estilo IF~THEN, cuando la situación del ambiente cumpla con las condiciones de dicha regla, esta puede dispararse, y así ocurrirá con todas las reglas del modulo actual. Es importante no darles una notoria prioridad a todas las reglas por separado, sino, que por medio de la sintaxis las prioridades de cada una sean tácitas . El inconveniente es que todos estamos acostumbrados a mayor o menor medida, a la programación procedural o incluso a la orientada a objetos, (que es muy utilizada en la programación basada en reglas que estamos desarrollando) por lo que, uno se se acostumbra a que todo el código puede ejecutarse al mismo tiempo si las condiciones lo permiten. En este caso, es posible pensarlo como "Nosotros ponemos todo lo que sabemos y las circunstancias harán que el programa haga lo que tenga que hacer" Un ejemplo, sacado de la Inteligencia Artificial del Age of Empire II de como se ven los sistemas basados en reglas. (defrule (game-time greater-than 45) (building-type-count town-center less-than 1) (can-build town-center) => (build town-center) ) (defrule (current-age == castle-age) (building-type-count town-center less-than 3) (can-build town-center) => (build town-center) ) (defrule (building-type-count-total castle less-than 1) (can-build castle) => (build castle) ) En el código anterior, vemos 3 reglas, que serán ejecutadas en el juego cuando las condiciones anteriores a "=>" sean válidas, o en una terminología mas adecuada "Se haga Matching". Los Sistemas Basados en Reglas, son una forma sencilla en que la PC haga lo que nosotros queremos que haga, conforme lo robusto de las reglas que se carguen, el comportamiento será lo mas próximo a lo que un humano puede hacerlo. Existe una amplia bibliografía sobre las sintaxis de todas las herramientas expuestas anteriormente, es fundamental recurrir a ellas conforme se desarrolle el proyecto, no creo tenga sentido explicar los pormenores de la sintaxis de cada lenguaje por separado, ya que con el ejemplo didáctico anterior, se muestra la estructura de un sistema basado en reglas. Sistemas Difusos El problema principal de los sistemas basados en reglas que vimos arriba, es su lógica dura, es decir, la situación o es Verdadera o es Falsa, sin embargo, no todas las situaciones son rígidas, por lo que, se desarrollaron herramientas, para afrontar situaciones donde las reglas son difusas. Redes Bayesianas Las Redes Bayesianas son redes de relaciones probabilistas entre proporciones (variables aleatorias) relacionadas semánticamente (relaciones causales) Se componen por: NODOS: Proposiciones (variable o conjunto de variables) ARCOS: Relaciones Causales (X ejerce influencia directa sobre Y) PESO DE ARCOS: Probabilidad Condicional (Tabla de Probabilidad Condicional) Para crear una Red Bayesiana hay que establecer: Topología de la red: Podría considerarse como una base de conocimientos abstractos, válida en una gran cantidad de escenarios diversos. Representa la estructura general de los procesos causales del dominio Probabilidades condicionales: La incertidumbre inherente a los distintos enlaces (relaciones causales) representan las situaciones no representadas explícitamente. Las probabilidades resumen un conjunto de posibles circunstancias en que pueden ser verdaderas (falsas) las variables de un nodo. En general, es posible calcular cada una de las entradas de la distribución conjunta desde la información de la red. (Fundamental repaso de estadística). P(x1, ..., xn) = Π P(xi / Padres (xi)) i= 1,n Una aplicación muy útil para el desarrollo, y análisis de Redes Bayesianas es JavaBayes nos permitirá realizar los grafos, y observar el desarrollo del mismo. MATLAB FUZZY Otra herramienta que nos permite trabajar con situaciones de control difuso, es el Fuzzy Logic Toolbox de MatLab. Mediante el Toolbox, podemos diseñar controladores cuyas entradas, son tomadas como conjuntos difusos, diseñar un conjunto de reglas y mediante el método optado, desfuzzificar la salida. Existen numerosas metodologías de fuzzificación y desfuzzificación, aunque, siempre sea recomendado la utilización de un modelo matemático a la hora de afrontar el control de algún suceso, es posible que dicho modelo o no exista o sea muy costoso de desarrollar, por lo que los controladores Fuzzy, son una herramienta útil a la hora de encontrar una solución aproximada de forma rápida. El método optado para la fuzzificación, o el grupo de reglas, siempre dependerá de la situación. Gracias a lo gráfico del desarrollo y la posibilidad de múltiples simulaciones, la puesta a punto de los controladores Fuzzy suele ser una actividad que a niveles básicos no causa mayores dificultades. MODELOS CONEXIONISTAS Hasta el momento, nombramos herramientas que nos permitían crear softwares basados en reglas, las cuales eran cargadas por la persona, a continuación, nombraremos dos formas de crear aplicaciones que formen sus propias reglas, es decir, programas que tengan la capacidad de aprender. Árboles de Clasificación Los árboles de clasificación, o decisión se dividen en dos grandes tipos ID3 y C4.5 aunque existan refinamiento de algoritmos que desembocan en mas grupos. En el ámbito de la teoría de la información la entropía, también llamada entropía de la información, mide la incertidumbre de una fuente de información. Entropía(S)≡- p⊕log2 p⊕- pΘlog2 pΘ p⊕= proporción de ejemplos positivos. pΘ= proporción de ejemplos negativos. S: conjunto de datos actual. En general: Entropía(S) = -∑i=1,c pi log2 pi Ganancia de información Mide la reducción esperada de entropía sabiendo el valor del atributo A Gain(S,A) ≡ Entropía(S) -∑v∈Valores(A) (|Sv|/|S|)Entropía(Sv) Valores(A): Conjunto de posibles valores del atributo A Sv: Subconjunto de S en el cual el atributo A tiene el valor v En pseudocódigo, el algoritmo general para construir árboles de decisión es: Comprobar los casos base Para cada atributo a. Encontrar la ganancia de información normalizada de la división de a Dejar que a_best sea el atributo con la ganancia de información normalizada más alta Crear un nodo de decisión que divida a_best Repetir en las sublistas obtenidas por división de a_best, y agregar estos nodos como hijos de nodo ID3 (Interactive Dichotomizer Version 3) Se utiliza para atributos discretos, por lo cual, suelen dar árboles de un tamaño menor C4.5 Se utiliza con atributos continuos, fraccionando el intervalo en valores acordes a lo necesario. Implementación Es perfectamente posible desarrollar el algoritmo en pseudocódigo con las fórmulas matemáticas en cualquier lenguaje, pero, MatLab, con la clase classregtree nos permite manipular árboles de regresión y árboles de decisión, como todas las funciones del ambiente, cuenta con una extensa bibliografía y ejemplos que demuestran su funcionamiento. Redes Neuronales Otra forma en que la aplicación que estamos desarrollando tenga la capacidad de crear sus propias reglas, son las redes neuronales. Este método emula el funcionamiento de las neuronas biológicas, cada neurona, cuenta con un numero finito de entradas y una única salida, las conexiones cuentan con un "peso" y cada neurona cuenta con una función de salida. El aprendizaje, consta a groso modo, en la edición de los valores de los pesos entre las neuronas, cuando un peso es 0, esa conexión está muerta, es decir, que lo que la neurona de la capa anterior haya enviado, no es relevante. Características de las Redes Neuronales Arquitectura (Topología). Número de capas. Número de neuronas por capa.Tipo de conexiones. Normalmente, todas las neuronas de una capa reciben señales de la capa anterior (más cercana a la entrada) y envían su salida a las neuronas de la capa posterior (más cercana a la salida de la red). Tipo de aprendizaje. Redes Feedforward las neuronas de una capa se conectan con las neuronas de la capa siguiente (hacia adelante). Las más conocidas son: PerceptrónAdalineBackpropagation Son útiles en aplicaciones de reconocimiento o clasificación de patrones. Mecanismo de Aprendizaje En las Redes Neuronales se considera que el conocimiento se encuentra representado en los pesos de las conexiones. El proceso de aprendizaje se basa en cambios en estos pesos. Los cambios en el proceso de aprendizaje se reducen a destrucción, modificación y creación de conexiones entre las neuronas.de conexiones entre las neuronas. La creación de una conexión implica que el peso de la misma pasa a tener un valor distinto de cero. Una conexión se destruye cuando su valor pasa a ser cero. Una regla de aprendizaje es un procedimiento para modificar los pesos y umbrales de una red. Este proceso también puede ser llamado algoritmo de entrenamiento. El aprendizaje puede ser supervisado o no supervisado. En este punto se vuelve trivial el hecho de desarrollar las diferentes metodologías, aún también, las diferentes formas en que pueden ser utilizadas las redes, dado que aún las aplicaciones como MatLab, constantemente evolucionan las funciones que las utilizan, y su manejo se vuelve altamente intuitivo. Es posible crear códigos en C u otros lenguajes que se comporten como redes, aunque no veo la necesidad, ya que su función principal y la que nosotros explotaremos en primer medida, el reconocimiento de patrones en grandes bases de datos, es tan simple de llevarla adelante en las nuevas versiones de Matlab que con tan solo cinco clicks, el ambiente efectúa todo el desarrollo por si mismo. Es una herramienta muy poderosa, robusta a la hora del procesamiento de datos, aún cuando estos datos contengan ruido, suelen arrojar resultados mas que decentes en poco tiempo. Si bien considero que en especial, estos últimos dos temas son los mas interesantes de la inteligencia artificial (Las Redes Neuronales y los Sistemas Multi-Agentes que vendrán a continuación) son también los que daré el pantallazo mas general. Sistemas Multi-Agentes MAS (Multi-Agent Systems) Los problemas están físicamente distribuidosEl mundo está compuesto por entidades autónomasEstas entidades interactúan entre si y con el entorno Un Agente es una entidad física o virtual que posee ciertas características generales: Es capaz de percibir el entornoPosee una representación parcial del entorno.Es capaz de actuarsobre el entornoPuede comunicarsePosee un conjunto de objetivos que gobiernan su comportamientoPosee recursos propios Sistemas Multiagentes (MAS) Los agentes deben compartir conocimientos sobre el problema y las posibles soluciones.Los agentes en un MAS pueden compartir una meta o tener metas independientes.El conocimiento global puede incluir control global, consistencia global, metas globales, etc.La coordinación puede ser muy compleja. Lenguajes de Programación Es un lenguaje que permite programar sistemas computacionales, en términos de conceptos desarrollados en modelos formales de agentes Agent0 (Shoham, 1990)Familia DMARS: JASON, JACK, JADE Familia APL (2APL, 3APL) Coordinación Para que un conjunto de agentes pueda desarrollar una actividad conjunta en un entorno compartido debe existir algún tipo de coordinación Agentes Cooperativos: PlanificaciónAgentes Competitivos: Negociación Para que dos o mas agentes puedan interactuar deben disponer de: Un protocolo de interacción:Un lenguaje de interacción: KQML, FIPA ACLUn lenguaje para representar el conocimiento de cada agente Los agentes incorporan una noción más fuerte de autonomía que los objetos, en particular deciden si realizar o no una acción. Los agentes son capaces de un comportamiento flexible (reactivos, proactivos, social) y los modelos de objetos no incluyen comportamientos. Eso sirve como un pequeño resumen de algunas herramientas que disponemos para el desarrollo de las ramas en cuanto a Inteligencia Artificial.

0
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.