Inteligencia Computacional

Profesora: Sheila Esmeralda González Reyna
Asunto: Reporte de proyecto de la primera unidad

Alumnos:
José María González Casillas
Francisco Isaul Pérez Castañeda
Abraham Pérez Vargas
Carrera: Ing. Mecatrónica

Lunes 19 de Septiembre del 2016

Las redes neuronales artificiales son capaces de resolver problemas complejos para la mayoría de las técnicas de inteligencia artificial. es más. por ejemplo. en contraposición al proceso en serie tradicional en el cual los cálculos se realizan en orden secuencial. . Sin embargo. El elemento clave de estos paradigmas es una nueva estructura computacional compuesta de un gran número de pequeños elementos procesadores interconectados trabajando en forma paralela. llamadas neuronas. capaz de resolver complejas ecuaciones matemáticas a la velocidad que lo hace una computadora personal. Ninguno de nosotros será. En la década del 50 se construyeron redes neuronales sencillas. Redes Neuronales Artificiales Llamamos Red Neuronal Artificial a un arreglo de unidades básicas de procesamiento. junto con nuevas técnicas de computación. en los años 70. interconectadas entre sí. nos apoyaremos con el software Matlab y sus toolboxes como lo son GUI y gracias a nuestros conocimientos acerca del tema crearemos un programa empleando y entrenando redes neuronales artificiales. ha renovado el interés hacia este campo. de manera tal que se han convertido en dos nuevos paradigmas de la inteligencia artificial.Introducción En este documento llevaremos a cabo el proyecto de la Primera Unidad de la materia Inteligencia Computacional que consiste en comprender el funcionamiento de las redes neuronales artificiales. Profesionales de campos tan diversos como la ingeniería. obteniendo los datos de entrada de la página web UCI Machine Learning Repository. la filosofía y la psicología. pero no se llegó a obtener grandes progresos debido a la falta de tecnología apropiada y a la ruptura con otras áreas de la inteligencia artificial. El aumento en los recursos computacionales. Los ordenadores que se utilizan hoy en día pueden realizar una gran variedad de tareas (siempre que éstas estén bien definidas) a una velocidad y con una habilidad muy superior a las alcanzables por los seres humanos. intrigados por el potencial ofrecido por esta tecnología. Este procesamiento paralelo permite realizar muchas operaciones simultáneamente. Ningún sistema artificial de reconocimiento de imágenes es capaz de competir con la capacidad de un ser humano para discernir entre objetos de diversas formas y orientaciones. la capacidad mental del ser humano es todavía muy superior a la de las máquinas en gran cantidad de tareas. buscan aplicaciones dentro de sus respectivas disciplinas. La computación paralela y las redes neuronales despiertan en la actualidad un ferviente interés investigador en todo el mundo.

Del mismo modo. Se observa pues que. mediante miles de millones de células simples e interconectadas entre sí. Estos incluyen:  Cardiopatía  Hipertensión arterial  Apnea del sueño  Diabetes tipo 2  Venas varicosas . mientras que una computadora precisa de una enorme cantidad de computación y de condiciones restrictivas para reconocer. llamadas neuronas. Una buena forma de determinar si su peso es saludable para su estatura es calcular su índice de masa corporal (IMC). Ser obeso sobrecarga al corazón y puede llevar a que se presenten graves problemas de salud. Nuestro cerebro alcanza estos objetivos. o que requieren procesar gran cantidad de información. localizadas en un recinto determinado del cerebro.ni siquiera será capaz de competir con la capacidad de un insecto. a diferentes velocidades. el ser humano se manifiesta mucho más eficaz que las computadoras en la resolución de problemas de manera imprecisa. ambiguos. un humano adulto reconoce sin ningún esfuerzo palabras pronunciadas por distintas personas. Su proveedor de atención médica y usted pueden usar su IMC para calcular la cantidad de grasa corporal que usted tiene. acentos y entonaciones. fonemas. incluso en presencia de ruido ambiental. por ejemplo. Marco teórico Índice de masa corporal El índice de masa corporal (IMC) es una medida de asociación entre la masa y la talla de un individuo ideada por el estadístico belga Adolphe Quetelet. mediante reglas aprendidas de la experiencia. por lo que también se conoce como índice de Quetelet.

buttons. and Control System Toolbox™ include apps with custom user interfaces. siendo la unidad de medida del IMC en el sistema MKS: Creación de nueva aplicación con Graphical User Interfaces en MATLAB GUIs (also known as graphical user interfaces or UIs) provide point-and-click control of software applications.  Divida esa respuesta por su estatura en pulgadas. including their corresponding UIs. Creating a MATLAB App with App Designer App Designer is an environment for building MATLAB apps. una mujer que pesa 270 libras y mide 68 pulgadas de estatura tiene un índice de masa corporal de 41. and sliders. Por ejemplo. You can also create your own custom apps.CÓMO DETERMINAR EL ÍNDICE DE MASA CORPORAL Su índice de masa corporal calcula cuánto debe pesar con base en su estatura. Existen muchos sitios web con calculadoras que le dan su IMC cuando usted introduce su peso y estatura. También puede calcularlo usted mismo:  Multiplique su peso en libras por 703. Se calcula según la operación: Donde la masa se expresa en kilogramos y el cuadrado de la estatura en metros al cuadrado. It integrates the two primary tasks of app building―laying out the visual components and programming app behavior―and allows you to quickly move between visual design in the canvas and code development in an integrated version of the MATLAB Editor. toolbars. . eliminating the need to learn a language or type commands in order to run the application.  Divida nuevamente esa respuesta por su estatura en pulgadas. MATLAB® apps are self-contained MATLAB programs with GUI front ends that automate a task or calculation.0. Many MATLAB products. The GUI typically contains controls such as menus. Signal Processing Toolbox™. for others to use. such as Curve Fitting Toolbox™.

which you can modify to program the behavior of your app. Using the GUIDE Layout Editor. MATLAB TOOLBOX A continuación se explicará el uso del toolbox de matlab para entrenar redes neuronales con el algoritmo backpropagation de tipo feedforward. you can graphically design your UI. The GUIDE interface. . GUIDE then automatically generates the MATLAB code for constructing the UI.The App Designer interface. para resolver problemas específicos. Creating a MATLAB GUI with GUIDE GUIDE (GUI development environment) provides tools to design user interfaces for custom apps.

tienen una función derivativa que les corresponde: dtansig. dlogsig. La suma de las entradas y sus pesos forman la entrada de a la función de transferencia f. Crear la red 3. y para cada función se deben seguir estos cuatro pasos. Las capas múltiples de neuronas con funciones de transferencia no lineal permiten a la red aprender relaciones lineales y no lineales entre la entrada y la salida. Por otro lado. Simular la respuesta de la red con nuevas entradas. seguidas por una capa de salida lineal.Generalmente se tienen cuatro pasos en el proceso de dicho entrenamiento: 1. Si la última capa de una red multicapa tiene neuronas sigmoideas (-sigmoid). Si se usan neuronas de salida lineal. las salidas de la red pueden tomar cualquier valor. Para las redes de múltiples capas se . el purelin o función de traslado lineal se usa en redes backpropagation. pero pueden crearse otras funciones diferentes y usarse con backpropagation si así se desea. La capa del de salida lineal permite a la red producir el umbral fuera del rango entre -1 y +1. entonces se escalan las salidas de la red en un rango pequeño. se muestran varias de las funciones de entrenamiento. y purelin. tangencial. logarítmica. BACKPROPAGATION La arquitectura de la red que normalmente es la más usada con el algoritmo del backpropagation es feedforward de múltiples capas (multilayer). En backpropagation es importante poder calcular el derivado de cualquier función de transferencia utilizada. Configurar los datos de entrenamiento 2. RED FEEDFORWARD Una red neuronal de una capa con S neuronas logsig y con R entradas se encuentra de forma general en el lado izquierdo y en el lado derecho un diagrama especifico de la capa. entonces la capa de salida debe usar una función de transferencia sigmoidea (como logsig). Una neurona elemental con R entradas. De vez en cuando. las Neuronas pueden usar diferentes funciones de transferencia f para generar una salida. la función logarítmica genera salidas entre 0 y 1 y la entrada de la neurona puede ir desde infinitamente negativo a infinitamente positivo. si se quiere reprimir las salidas de una red (entre 0 y 1). En una red de múltiples capas (multilayer) a menudo se usa el log-sigmoid o función de transferencia logarítmica. Para obtener el nombre de la función derivativa asociada a cada función de transferencia se debe llamar la función de transferencia y la función de matlab 'deriv'. Entrenar la red 4. Ejemplo: · tansig ('deriv') · ans = dtansig Las tres funciones de transferencia descritas anteriormente son las usadas normalmente para backpropagation. cada entrada es pesada con su w correspondiente. Alternativamente. Cada una de las funciones anteriores. las redes multicapa pueden usar el tan-sigmoid o función de transferencia tangencial. Una red Feedforward a menudo tiene una o más capas ocultas de neuronas de tipo sigmoideas. y dpurelin.

acostumbra que el número de las capas determine el exponente en la matriz de pesos. y esta retorna las salidas de la red. Hay un vector de la entrada con dos elementos. La función de transferencia en la primera capa es tan-sigmoid. las entradas de la red p y las salidas en blanco t. · net=newff([-1 2. La segunda entrada es un arreglo que contiene los tamaños de cada capa (la cantidad de neuronas por capa). CREANDO UNA RED (newff) El primer paso de entrenamiento de una red feedforward es crear la red. [3. su resultado puede ser diferente. dependiendo del estado del generador de números aleatorios que tenga cuando la red fue inicializada. La red puede entrenarse para: la aproximación de una función (regresión no lineal). los pesos y el umbral debe inicializarse.1 y 2. 0 5]. con la cantidad adecuada de neuronas en la capa oculta. los valores del segundo elemento del vector de entrada son 0 y 5. o la clasificación del modelo. Esta función requiere cuatro parámetros de entrada. El proceso de entrenamiento requiere de los patrones de conducta apropiados para la red.2]. La tercera entrada es un arreglo que contiene los nombres de las funciones de entrenamiento que serán usadas en cada capa.'traingd'). y en la capa de salida la función de transferencia es lineal. Esta red puede usarse como un aproximador de una función en general. La primera es un R que consta de una matriz del mínimo y máximo valor para cada uno de los elementos de R en el vector de entrada. pero si se quieren reinicializar. · a = sim(net. Puede aproximar cualquier función con un número finito de discontinuidades arbitrariamente bien. Así es inicializa una red (o reinicializada): · net = init(net). Antes de entrenar una red feedforward. Por ejemplo. Sim toma la entrada de la red p. por consiguiente la red está lista para ser entrenada.'purelin'}. ENTRENAMIENTO Una vez se han inicializado los pesos de la red y los el umbral.). lo siguiente crea una red de la dos capas. la asociación del modelo. Esta orden crea la red y también inicializa los pesos y el umbral de la red. La función de entrenamiento es traingd (qué se describirá más adelante).p) · a = -0. La función newff crea una red feedforward. Hay tres neuronas en la primera capa y una neurona en la segunda capa (capa de salida). Durante . Los valores para el primer elemento del vector de entrada son .1]. La última contiene el nombre de la función de entrenamiento que se usara. la red está lista para ser entrenada. y la red como tal. Esta función toma una red como entrada y reestablece todos los pesos y el umbral de la red.{'tansig'. El método newff inicializará los pesos automáticamente. SIMULACIÓN (sim) La función sim simula una red.1011 (Si prueba estos datos. Inicializando pesos (init). esto puede hacerse con init. Así se puede simular la red que se creó anteriormente para un solo vector de la entrada: · p = [1.

Asimismo se llevará a cabo la creación de una interfaz en Matlab de tal modo que el usuario solo tenga que introducir el peso y la talla para poder calcular el índice de masa muscular del usuario asimismo se buscará que el programa muestre además del IMC si el usuario es un hombre o una mujer apoyándose en una clasificación realizada gracias a la base de datos. Se suman los gradientes calculados en cada ejemplo de entrenamiento para determinar el cambio en los pesos y el umbral.el entrenamiento los pesos y el umbral de la red son iterativamente ajustados para minimizar la función de desempeño de la red net. ENTRENAMIENTO POR LOTE (train) En modo por lote se actualizan sólo los pesos y el umbral de la red después que el juego de entrenamiento entero se ha aplicado a la red.performFcn. teniendo como entrada una base de datos con el peso y la altura de diferentes hombres y mujeres con el objetivo de crear una frontera de decisión sobre el índice de masa corporal (salidas de la red neuronal). Todos los algoritmos usan la función de desempeño para determinar cómo ajustar los pesos y minimizar performance. En el modo de incremental. . La función de desempeño predefinida para las redes feedforward es mse. Hay dos maneras diferentes en las que este algoritmo de descenso de gradiente puede llevarse a cabo: modo incremental y modo del lote. En el modo del lote todas las entradas se aplican a la red antes que los pesos se actualicen. A continuación se describe el modo de entrenamiento por lote. Objetivo El objetivo general de este proyecto es crear un conjunto de redes neuronales artificiales con ayuda del software Matlab empleando los conocimientos obtenidos con los programas de redes neuronales vistos en clase. el promedio cuadrado del error entre los rendimientos de la red y los rendimientos designados t. el gradiente se computa y los pesos se actualizan después de cada entrada que se aplica a la red.

Esta base de datos se encuentra incluida en la carpeta final del proyecto. Ilustración 1. base de datos. . en esta base de datos se incluye además el índice de masa muscular y una clasificación de 1 para hombres y 2 para mujeres. 91 hombres y 91 mujeres.Desarrollo El primer paso fue desarrollar una base de datos la cual se obtuvo gracias a una serie de estadísticas obtenidas en una página de internet encargada de llevar un control de cierta población específicamente en el área de control peso obteniendo así el peso y la altura de 182 personas.

la creación de un nuevo GUI se muestra en la siguiente imagen: Ilustración 2. algunos Static Text para nombrar el tipo de dato a calcular. Asimismo se utilizaron algunos Pushbotton para poder calcular el IMC una vez que se hayan introducido los datos por el usuario. . en esta interfaz se buscó que los datos y resultados fueran fácil de entender así como se buscó también que la interfaz tuviera una buena presentación. el siguiente paso fue comenzar a crear un nuevo GUI en Matlab.Una vez creada y guardada la base de datos en un archivo Excel. En la interfaz en Matlab se usó un Axes para representar gráficamente si el resultado final se trata de un hombre o por lo contrario de una mujer. Creación de Interfaz Gráfica de Usuario. además se utilizaron algunos Edit text para ingresar los datos.

Una vez que se terminó de diseñar la interfaz gráfica de usuario. el siguiente paso fue compilar el archivo fig. asimismo se genera la interfaz gráfica final: Lo primero que se realizó dentro del programa fue agregar nuestras variables como datos globales la altura. Para obtener el código del programa y comenzar a otorgar una tarea específica a cada una de nuestras funciones. el peso y el género como se ilustra a continuación: .

. esta función también está relacionada con el primer edit text en donde se podrá modificar los datos del peso. Así como se realizó el código para la variable global peso. ahora esta función trabajara con los datos de la altura del usuario y también está relacionada con el segundo edit text para modificar los datos.Después el siguiente paso fue buscar en el código la función del primer push botton en el cual se le otorgo la función global peso. se realizó también uno para la variable global altura en la función push botton 2. igualmente guarda y trabaja con el peso del usuario.

es decir una división entre el peso y la altura. Esta función está relacionada con el edit text que se encargará de mostrar el resultado del IMC.mat incluido en la carpeta del proyecto para leer y comparar los datos del usuario. después de realizar la comparación se cargará una imagen en el Axes para que el usuario pueda observar el resultado. Por ultimo esta función realiza una comparación entre el resultado del IMC y los valores de la base de datos para verificar si los datos son de un hombre o de una mujer. para esto el programa se basará en la base de datos para ver si se trata de un 1 (hombre) o de un 2 (mujer) después de que se hayan ingresado los datos se realizara esta clasificación. para lograr esta función se emplea el archivo peso. altura) y realice las operaciones necesarias para calcular el índice de masa corporal. el último paso fue identificar el push botton que se encarga de la variable IMC para que éste relacione las demás variables globales (peso. Para terminar el código del programa.Después se empleó una función popupmenu para clasificar el género del usuario como una variable global. .

.

nuestra red neuronal consta de 3 elementos de entrada que son el peso. altura y el Índice de Masa Corporal (IMC). .Entrenamiento de la red neuronal Una vez que se terminó de realizar la interfaz gráfica en Matlab. entrenamiento de la red neuronal Como se observa en la imagen. una capa oculta con 6 neuronas y dos elementos de salida 1 para hombre y 2 para mujer. se observó que era necesario hacer una serie de pruebas y entrenamientos para que la red neuronal estuviera realizando una clasificación más adecuada: Ilustración 3. se verifico que efectivamente estuviera clasificando adecuadamente los datos correspondientes a un hombre o una mujer.

en la interfaz: . Además al agregar datos y calcular el índice de masa corporal el programa es capaz de imprimir la imagen del resultado hombre.b. Esta propiedad define el peso de las matrices de los pesos que irán a las capas de las entradas de la matriz. pesos de red neuronal. Esta propiedad define la parcialidad de los vectores para cada capa. mujer. Net. Resultados Después de haber concluido la interfaz gráfica de usuario se logró desarrollar la clasificación de datos. así como también se logró entrenar la red neuronal y obtener resultados más reales. En la siguiente imagen se muestran los pesos de nuestra red neuronal: Ilustración 4.IW.Pesos específicos de la red neuronal Net.

Ilustración 5. resultado IMC hombre .

html http://www. Matlab .es/index.php/pacientes/calculo-imc -guide. calcular datos estadísticos complejos. Es por eso que llegamos a la conclusión que el uso de inteligencia artificial tiene y tendrá muchas aplicaciones en la actualidad. esta herramienta puede ayudar a identificar variables que se encuentran en una larga lista de datos idénticos. entre otras muchas aplicaciones. identificar características. resultado IMC mujer.Ilustración 6. Bibliografía -es. por ejemplo reconocer el audio de alguna persona. functions.mathworks.com/discovery/redes-neuronales. Conclusión Una vez terminado nuestro proyecto tenemos como conclusión que el uso y aplicación de las redes neuronales artificiales son de mucha importancia en la actualidad y se pueden aplicar en muchas áreas y disciplinas en donde se trabaje con una base de datos amplia o en algunas ocasiones donde se obtengan datos multivariantes.seedo.