1. IMPLEMENTACIÓN DE UNA NEURONA ARTIFICIAL
TIPO PERCEPTRÓN SOBRE UN DISPOSITIVO MÓVIL
CON SISTEMA OPERATIVO ANDROID
Viera Balanta Víctor
Institución Universitaria Antonio José Camacho
Grupo de Investigación en Control y Automatización (GICAT)
Avenida 6ta # 28N-102, Santiago de Cali, Colombia
vviera@admon.uniajc.edu.co
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.2004
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
2. 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.
3. 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
4. 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.
5. 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
6. [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
Victor.viera@gmail.com