redes neuronales con android

6
IMPLEMENTACIÓN DE UNA NEURONA ARTIFICIAL TIPO PERCEPTRÓN SOBRE UN DISPOSITIVO MÓVIL CON SISTEMA OPERATIVO ANDROID Viera Balanta Victor Institución Universitaria Antonio José Camacho Grupo de Investigación en Control y Automatización (GICAT) Avenida 6ta # 28N-102, Santiago de Cali, Colombia [email protected] Resumen Este artículo presenta el proceso de diseño y creación de una neurona artificial con el lenguaje de programación Android. Se abordan aspectos sobre el entrenamiento y aprendizaje de la neurona basada en la teoría del Perceptrón, la implementación para una plataforma móvil, Android, y algunas consideraciones sobre alcances y limitaciones de la neurona. Palabras Clave: Neurona Artificial, Perceptrón, Android, Inteligencia Artificial, Entrenamiento, funciones linealmente separables. 1. Introducción Las neuronas están consideradas como artífices de pensamiento, aprendizaje, locomoción, sentimientos, pensamientos, habla, visión, audición e innumerable funciones. Por esta razón han llamado la atención de científicos que estudian su fisiología, comportamiento y la forma en que se conectan y comunican para formar parte de un organismo y permitirle desempeñarse adecuadamente en un entorno determinado. En los años cuarenta dos investigadores, Warren McCulloch y Walter Pitts 1 , diseñan la primera red neuronal. La cual estaba constituida por la sumatoria de señales de entrada por pesos aleatorios. Los cálculos obtenidos, a partir de las entradas y pesos, se comparaban con un patrón si el cálculo arrojaba un valor mayor o igual al patrón el resultado de la red seria 1(uno), de ser el valor menor al patrón el resultado de la red se establecía en 0 (cero) 2 . 1 Científicos Estadounidenses, 2 Universidad del Guadalajara, el Perceptrón, ver http://proton.ucting.udg.mx/posgrado/cursos/idc/n euronales2/AntecedentesP.htm En 1958 un investigador puso su atención en el funcionamiento de las neuronas, el psicólogo Frank Rosenblatt, basándose en el modelo de McCulloch y Pitts, desarrollo un modelo artificial de neurona, el cual denominó modelo de Perceptrón. Para establecer la relación existente entre el modelo del Perceptrón de Rosenblatt y una neurona se abordaran las características y funcionamiento básico de las mismas. 2. Funcionamiento de las Neuronas En la Figura 1 se pueden observar las partes principales de una neurona, la cual se compone del cuerpo de la célula o Soma, el núcleo, el Axón que es una prolongación de la neurona, ramificaciones denominadas dendritas y la arborización Axonal. Las conexiones de las ramificaciones de un Axón y las dendritas se denominan Sinapsis. Fuente : Inteligencia Artificial un Enfoque Moderno, Stuart Russell-Peter Norvig. Fig. 1 Partes de una Red Neuronal. Según Stuart Russell-Peter Norvig, 2004 el proceso presentado en las neuronas es el siguiente: “Las señales se propagan de neurona a neurona mediante una complicada reacción electroquímica. La sinapsis libera sustancias químicas transmisoras y entran a la dendrita, con lo cual se eleva o reduce un potencial eléctrico del cuerpo de la célula. Una vez que el potencial

Upload: victor-viera-balanta

Post on 26-Jul-2015

691 views

Category:

Education


7 download

TRANSCRIPT

Page 1: Redes Neuronales con Android

IMPLEMENTACIÓN DE UNA NEURONA ARTIFICIAL

TIPO PERCEPTRÓN SOBRE UN DISPOSITIVO MÓVIL

CON SISTEMA OPERATIVO ANDROID

Viera Balanta Victor

Institución Universitaria Antonio José Camacho

Grupo de Investigación en Control y Automatización (GICAT)

Avenida 6ta # 28N-102, Santiago de Cali, Colombia

[email protected]

Resumen

Este artículo presenta el proceso de diseño y

creación de una neurona artificial con el lenguaje

de programación Android. Se abordan aspectos

sobre el entrenamiento y aprendizaje de la

neurona basada en la teoría del Perceptrón, la

implementación para una plataforma móvil,

Android, y algunas consideraciones sobre

alcances y limitaciones de la neurona.

Palabras Clave: Neurona Artificial, Perceptrón,

Android, Inteligencia Artificial, Entrenamiento,

funciones linealmente separables.

1. Introducción

Las neuronas están consideradas como

artífices de pensamiento, aprendizaje,

locomoción, sentimientos, pensamientos, habla,

visión, audición e innumerable funciones. Por

esta razón han llamado la atención de científicos

que estudian su fisiología, comportamiento y la

forma en que se conectan y comunican para

formar parte de un organismo y permitirle

desempeñarse adecuadamente en un entorno

determinado.

En los años cuarenta dos investigadores,

Warren McCulloch y Walter Pitts1, diseñan la

primera red neuronal. La cual estaba constituida

por la sumatoria de señales de entrada por pesos

aleatorios. Los cálculos obtenidos, a partir de las

entradas y pesos, se comparaban con un patrón si

el cálculo arrojaba un valor mayor o igual al

patrón el resultado de la red seria 1(uno), de ser el

valor menor al patrón el resultado de la red se

establecía en 0 (cero) 2.

1 Científicos Estadounidenses,

2 Universidad del Guadalajara, el Perceptrón, ver

http://proton.ucting.udg.mx/posgrado/cursos/idc/n

euronales2/AntecedentesP.htm

En 1958 un investigador puso su atención en

el funcionamiento de las neuronas, el psicólogo

Frank Rosenblatt, basándose en el modelo de

McCulloch y Pitts, desarrollo un modelo

artificial de neurona, el cual denominó modelo de

Perceptrón.

Para establecer la relación existente entre el

modelo del Perceptrón de Rosenblatt y una

neurona se abordaran las características y

funcionamiento básico de las mismas.

2. Funcionamiento de las Neuronas

En la Figura 1 se pueden observar las partes

principales de una neurona, la cual se compone

del cuerpo de la célula o Soma, el núcleo, el

Axón que es una prolongación de la neurona,

ramificaciones denominadas dendritas y la

arborización Axonal. Las conexiones de las

ramificaciones de un Axón y las dendritas se

denominan Sinapsis.

Fuente : Inteligencia Artificial un Enfoque

Moderno, Stuart Russell-Peter Norvig.

Fig. 1 Partes de una Red Neuronal.

Según Stuart Russell-Peter Norvig, 2004 el

proceso presentado en las neuronas es el

siguiente:

“Las señales se propagan de neurona a

neurona mediante una complicada reacción

electroquímica. La sinapsis libera sustancias

químicas transmisoras y entran a la dendrita, con

lo cual se eleva o reduce un potencial eléctrico

del cuerpo de la célula. Una vez que el potencial

Page 2: Redes Neuronales con Android

eléctrico rebaza cierto limite, se envía al axón un

impulso eléctrico o potencial de acción. El

impulso se difunde a través de las ramas del

axón, y finalmente llega a la sinapsis y libera

transmisores en los cuerpos de otras células. Las

sinapsis que aumentan el potencial se conocen

como excitadoras, y las que lo disminuyen se

denominan inhibidoras. Las conexiones

sinápticas muestran plasticidad: alteraciones a

largo plazo de la intensidad de las conexiones

como respuesta al patrón de estimulación”.

En el mismo documento se menciona que las

neuronas establecen nuevas conexiones con otras

neuronas, y en ocasiones, con grupos de neuronas

que pueden migrar de un sitio a otro, es

considerado que los procesos anteriores

establecen las bases del aprendizaje en el cerebro.

Aunque se debe considerar lo siguiente: “Existe

un mundo místico, fuera del alcance de las

ciencias físicas, que es donde funcionan las

mentes”, (Struat Russell,Peter Norvig, 1996)

3. Diseño y Arquitectura de una

Neurona Computacional

En 1958 Rosenblatt establece un modelo

simplificado de una neurona artificial constituida

con la siguiente Arquitectura:

El Perceptrón presenta variables de entrada

representadas con X1, X2,Xn, y V, ver Figura 2.,

la variable V representa el valor asociado al peso

extra o umbral. Para el modelo planteado en el

presente artículo, la variable V tendrá siempre el

valor de -1, lo anterior para efectos del balanceo

de los cálculos del Perceptrón. Adicionalmente el

Perceptrón debe contener las salidas adecuadas y

correspondientes a los diferentes valores de

entrada.

Fig 2. Arquitectura del Perceptrón.

Con las entradas y pesos establecidos se

procede a crear una expresión para calcular el

nivel de umbral. Ver figura 3.

Fig 3. Formula para cálculo del nivel de umbral.

Si el valor resultante de la sumatoria de entras

por sus pesos es mayor o igual a cero el

Perceptrón arroja el valor de uno (1), en caso

contrario, si el resultado es menor a cero el

Perceptrón arrojara el valor de menos uno (-1).

Debido a que el Perceptrón debe arrojar

valores iguales a valores específicos de entrada y

salida (1 o -1), al no coincidir los valores

calculados por el Perceptrón con las salidas

esperadas a partir de los datos de entrada, se

procede a modificar los pesos. Este proceso

también es denominado “Proceso de

Aprendizaje”. La formula para recalcular los

pesos se muestra en la Figura 4.

Fig 4. Formula para cálculo de los nuevos pesos,

configurando la memoria del Perceptrón.

El factor de aprendizaje es un valor que se

suele colocar en 0.5, este factor representa la

velocidad y calidad del aprendizaje de Perceptrón.

La memoria del Perceptrón esta representada

en los pesos adecuados que satisfacen las salidas

esperadas a partir de entras.

3.1 Que Puede Clasificar y Recordar el

Perceptrón

El Perceptrón es limitado, pero a pesor de

esto, representa un gran avance en el área de la

Inteligencia Artificial, específicamente la

simulación del funcionamiento de las neuronas.

Las funciones que el Perceptrón puede

clasificar y asimilar son las denominadas

funciones linealmente separables. La grafica de

una función de este tipo presenta una particular

clasificación de valores. Es posible separar

fácilmente valores del mismo tipo trazando una

recta, la recta dividirá perfectamente los valores

clasificados en dos grupos, cada grupo contará

con valores idénticos que representan una

clasificación específica. Ver la figura 5.

Fig 5. Las funciones And y Or linealmente

separables; la función Xor representa un caso de no

separabilidad lineal.

Page 3: Redes Neuronales con Android

4. Algoritmo de Entrenamiento de un

Perceptrón

El Algoritmo del Perceptrón posee

características que lo hacen un buen candidato

para implementarse en un dispositivo móvil. Ver

figura 5. Con un adecuado factor de aprendizaje,

0.5, el rendimiento o complejidad de este

algoritmo es aproximadamente de O(n*p*i),

donde n representa el número de entradas, p

número de pesos y n el número de intentos, en la

mayoría de ejemplos lo hace un algoritmo de

costo o complejidad algorítmica inferior a O (n2).

Fig 5. Algoritmo Básico del entrenamiento de

Perceptrón. Fuente propia

Otra característica importante, aunque la

primordial radica en el rendimiento, se basa en lo

fácil y rápido que se lleva a un lenguaje de

programación. Con un algoritmo “corto” y

sencillo se pueden “simular” los procesos de una

neurona.

5. Implementación de la neurona en

un dispositivo móvil con android.

Android es la nueva plataforma móvil más

difundida y utilizada en los últimos años. De

acuerdo a lo difundido en el sitio de la compañía

Google3 y publicaciones realizadas por

importante medios de información internacionales 4 ; Android cuenta con miles de dispositivos en el

mercado mundial, alrededor de un 50% de

participación.

La estrategia de Open Source 5 facilita que el

sistema operativo Android sea utilizado en el

ámbito académico y científico. El núcleo Linux

lo convierte en una plataforma robusta, estable y

confiable. También tiene gran parte del sistema

3 Android Developers

4 Cnn Mexico

5 Movimiento de Software Libre y de Código

Abierto,

creado en Java. La Figura 6 muestra la

arquitectura del sistema operativo Android.

Fig 6. Arquitectura de la Plataforma Android.

Como se puede apreciar en la grafica la base

de la arquitectura es el Kernel de Linux, en la

siguiente capa se encuentran librerías especiales

como “Open GL” ,librería para gráficos; en la

misma capa se encuentra el modulo de “Android

Runtime” que contiene la maquina virtual

denominada “Dalvik Virtual Machine”6. En una

nivel posterior se encuentra la capa de librerías

que los desarrolladores pueden utilizar para crear

aplicaciones, esta capa es denominada

“Aplication Framework”, y por ultimo se

encuentran las aplicaciones que permiten que los

usuarios puedan realizar un trabajo especifico con

el dispositivo como navegar, utilizar el teléfono,

conectarse a una red local, entre otras.

La Figura 7 muestra el programa del

Perceptrón creado para el dispositivo móvil con

sistema operativo Android

Fig 7.Ventana del Perceptrón en el Emulador de

Android.

6 La Maquina Virtual permite que los programas

corran en diferentes tipos de dispositivos sin

sufrir alteraciones de código

Aplicaciones

Page 4: Redes Neuronales con Android

Observando la Figura 2, donde se muestra la

arquitectura del Perceptrón, se puede confirmar

que el programa creado en Android contiene los

elementos esenciales que requiere el Perceptrón

como: entradas, salidas, pesos iniciales aleatorios

y los pesos finales. El programa también tiene

entradas de prueba para verificar los pesos

arrojados por el Perceptrón, estas entradas tienen

la utilidad de permitir colocar diferentes valores

para que el programa, por medio de los pesos

aprendidos, calcula la salida esperada y el usuario

pueda comprobar que el aprendizaje ha sido

satisfactorio. Del mismo modo que al hacer una

evaluación a un estudiante.

5.1 Código Fuente

El Software del Perceptrón se desarrollo con una

Arquitectura de 2 capas, la capa “Vista” y la capa

“Perceptron”. La capa “Vista”, representada por

“MainActivity.java”, contiene la interface que

permite la entrada y visualización de datos. La

capa “Perceptron”, esta compuesta por los

cálculos de entrenamiento donde se lleva a cabo

el aprendizaje. Ver Figura 8.

Fig 8. Arquitectur en Android del Software de

Perceptrón.

Aquí se presentan únicamente los métodos

principales que hacen posible el aprendizaje del

Perceptrón: “Entrenamiento” y “Recalcular

Pesos”. Ver Figura 9.

Fig 9. Código fuente en Android de entrenamiento y

recalculo de pesos del Perceptrón.

El código fuente implementa el algoritmo

mostrado en la Figura 5. En la cual se pueden

apreciar el vector de pesos, vector de salidas,

vector de entradas y el método de recalcular

pesos.

Al presentarse una salida calculada diferente a

una salida esperada, el programa llama al método

de “RecalcularPesos”, donde se calcula el nuevo

peso para la entrada actual; para ello se apoya en

la entrada que se debe aprender.

Otro método presente en la capa “Perceptron” es

“Inicializa_Pesos”, el cual asigna los pesos

aleatorios iniciales, la primera aproximación al

aprendizaje del Perceptrón. Ver Figura 10.

Fig 10. Método de asignación de peso iniciales para

el Perceptrón

Por último se tiene el método de “verificar”, este

método utiliza los pesos resultados del Perceptrón

para hacer posible la verificación de los pesos

“aprendidos”, en otras palabras. Confirmar si la

configuración de los pesos obtenidos por medio

del proceso de aprendizaje del Perceptrón es

adecuado para el conjunto de entrenamiento. Ver

figura 11.

Page 5: Redes Neuronales con Android

Fig 11. Método de verificación de Pesos Aprendidos.

6. Pruebas

Las pruebas iniciales se realizaron en el

emulador de un dispositivo Motorola con sistema

operativo Android 2.2, para estas pruebas se

utilizaron las funciones “OR” y “AND” y otras

funciones no Linealmente separables. La

validación de los datos de salida, valores

aprendidos, se realizó utilizando un software

creado en Java, al cual se le introducían los pesos

aleatorios generados en el programa Android, así

las instancias de los valores aprendidos en cado

ciclo debían ser iguales en ambos programas.

Después de varios ajustes se logró que ambos

programas arrojaran resultados idénticos.

Para facilitar las pruebas se diseñó una

interface con campos en los cuales los usuarios

ingresaran los datos de entrada, salidas esperadas

y entradas, fácilmente. También se adicionaron

botones de Salidas, Entradas, Iniciar Pesos y

Entrenar. Los Botones pasan los valores de la

ventana a la capa donde se encuentra la clase que

contiene los métodos donde se realizan los

cálculos que permiten el entrenamiento del

Perceptrón.

Posteriormente el Perceptrón se Instaló en un

dispositivo Samsung Galaxy GT-5570L, con

Sistema Operativo Android 2.2, las pruebas

llevadas a cabo en el emulador se repitieron en el

dispositivo, obteniendo resultados idénticos en

cada instancia de aprendizaje de pesos.

El software cuenta con un método que permite al

usuario verificar los pesos aprendidos del

Perceptrón, el usuario introduce entradas

específicas, ver Figura 7, sección de verificación,

y al oprimir el botón de “Calcular” se puede

observar la salida calculada a partir de los pesos

aprendidos. Lo anterior con el fin de que el

software del “Perceptrón” constase con las

opciones necesarias para su optimo

funcionamiento.

Las pruebas con el dispositivo móvil mostraron la

practicidad y utilidad académico científica de

contar con un programa de Inteligencia Artificial

en un dispositivo móvil con poder de

procesamiento.

7. Conclusiones

La proliferación de dispositivos a precios más

bajos ha ocasionado su fácil adquisición, por

consiguiente los dispositivos pueden ser

utilizados en diferentes ámbitos. La estrategia de

la compañía Google de distribuir Android de

forma “Libre” se une a esta oleada creciente de

utilización masiva de dispositivos móviles. Pero

los dispositivos por si solos no hacen la

diferencia, se necesita software específico para

tecnología móvil que funcione adecuadamente.

La Inteligencia Artificial unificada con la

tecnología móvil se convierte en una poderosa

herramienta para la nueva generación de

dispositivos verdaderamente inteligentes.

Lo relacionado en el presente artículo es sólo un

acercamiento al planteamiento de

aprovechamiento apropiado de dispositivos para

el bienestar y el progreso; con el objetivo de

reflexionar y vislumbrar acerca de la fascinante

gama de posibilidades que brinda la fusión de la

computación móvil y la Inteligencia Artificial.

Bibliografia

[1] Stuart Russell-Peter Norvig. Inteligencia

Artificial un Enfoque moderno Segunda Edición

Editorial Prentice Hall. 2004

[2] James A. Anderson, Redes Neurales ,

AlfaOmega, 2007

[3] Luís Eduardo Múnera. Princípios de

Inteligência Artificial y Sistemas Expertos.

Editorial Universidad Icesi 2001.

[4] Gonzalo Pajares Martinsanz-Matilde Santos

Penas. Inteligencia Artificial E Ingeniería del

Conocimiento. Editorial Alfaomega-Ra-ma. 2006

[5] Rosenblatt Frank, Rosenblatt’s Perceptron,

Primer capitulo del libro

[En línea ] Disponible en:

http://www.pearsonhighered.com/assets/hip/us/hi

p_us_pearsonhighered/samplechapter/013147139

2.pdf . Consultado en Abril de 2012

[6] Mculloch Warren S, Pitt Walter H, A logical

calculus of the ideas imnanent in nervios activity,

Libro publicado originalmente en 1943. [En

línea] Disponible

en:http://www.cse.chalmers.se/~coquand/AUTO

MATA/mcp.pdf .Consultado en Consultado en

Abril de 2012

Page 6: Redes Neuronales con Android

[7] Sitio para desarrolladores Android, Android

Developers,[En Linea] Disponible en

http://developer.android.com/guide/basics/what-

is-android.html

Víctor Viera Balanta

[email protected]