jueves, 30 de julio de 2009

Java: La clase LeerVariable

package ejemplo1;
import java.io.*;
/**
*
* @author AniBaL
*/
public abstract class LeerVariable {


private static InputStreamReader isr = new InputStreamReader(System.in);
private static BufferedReader br = new BufferedReader(isr);
//Método para leer cadenas de texto
public static String leerTexto(String mensaje)
{
String texto = "";
try
{
System.out.print(mensaje);
texto = br.readLine();
}
catch (Exception e)
{
System.out.println("Error " + e);
}
return texto;
}
//Método para leer números enteros
public static int leerEntero(String mensaje)
{
int num = 0;
try
{
System.out.print(mensaje);
num = Integer.parseInt(br.readLine());
}
catch (Exception e)
{
System.out.println("Error " + e);
}
return num;
}
//Método para leer números reales
public static double leerReal(String mensaje)
{
double num = 0;
try
{
System.out.print(mensaje);
num = Double.parseDouble(br.readLine());
}
catch (Exception e)
{
System.out.println("Error " + e);
}
return num;
}
}

miércoles, 29 de abril de 2009

Actividad para Estudiantes. 2


Consultar las diferentes aéreas de aplicación de las redes neuronales y plantear una propuesta de aplicación para la resolución de problemas en el entorno ciudad o el país. Plantear la propuesta con su nombre como un comentario a este blog en mínimo media página.

El Percetrón Multicapa y la Separación de Clases

Un Perceptrón multicapa es una red con alimentación hacia delante, compuesta de varias capas de neuronas entre la entrada y la salida de la misma, esta red permite establecer regiones de decisión mucho más complejas que las de dos semiplanos, como lo hace el Perceptrón de un solo nivel.



Tomado de: http://ohm.utp.edu.co/neuronales/Capitulo2/Perceptron/MulticapaP.htm

Las capacidades del Perceptrón multicapa con dos y tres capas y con una única neurona en la capa de salida se muestran en la figura. En la segunda columna se muestra el tipo de región de decisión que se puede formar con cada una de las configuraciones, en la siguiente se indica el tipo de región que se formaría para el problema de la XOR, en las dos últimas columnas se muestran las regiones formadas para resolver el problema de clases mezcladas y las formas más generales para cada uno de los casos.


El Perceptrón básico sólo puede establecer dos regiones separadas por una frontera lineal en el espacio de entrada de los patrones; un Perceptrón con dos capas, puede formar cualquier región convexa en este espacio. Las regiones convexas se forman mediante la intersección de regiones formadas por cada neurona de la segunda capa, cada uno de estos elementos se comporta como un Perceptrón simple, activándose su salida para los patrones de un lado del hiperplano, si el valor de los pesos de las conexiones entre las neuronas de la segunda capa y una neurona del nivel de salida son todos igual a 1, y la función de salida es de tipo hardlim, la salida de la red se activará sólo si las salidas de todos los nodos de la segunda capa están activos, esto equivale a ejecutar la función lógica AND en el nodo de salida, resultando una región de decisión intersección de todos los semiplanos formados en el nivel anterior. La región de decisión resultante de la intersección será una región convexa con un número de lados a lo sumo igual al número de neuronas de la segunda capa.

martes, 28 de abril de 2009

Un poco de Historia y antecedentes

Donald Hebb

El concepto de redes neuronales se inició a fines de 1800 como un esfuerzo para describir cómo funciona la mente humana. Estas ideas empezaron a aplicarse a los modelos de máquinas de tipo B de Turing y el Perceptrón.

A principios de 1950 Friedrich Hayek fue uno de los primeros en afirmar la idea de que el orden espontáneo en el cerebro se deriva de las redes descentralizadas basadas en unidades simples (neuronas). A fines de 1940, Donald Hebb realizó una de las primeras hipótesis de un mecanismo de plasticidad neuronal (es decir, de aprendizaje. El aprendizaje Hebbiano se considera un "típico" de aprendizaje sin supervisión y que la regla (y variantes de la misma) es un modelo de principios de la potenciación a largo plazo. El Perceptrón es esencialmente un clasificador lineal para la clasificación de los datos especificados por los parámetros de salida. Sus parámetros están adaptados con una norma ad hoc, similar al estocástico “gradiente de descenso”. Debido a que el producto interno es un operador lineal en el espacio de entrada, el Perceptrón sólo puede clasificar perfectamente un conjunto de datos donde distintas clases son linealmente separables en el espacio de entrada, lo que es un inconveniente ya que en muchas ocasiones las clases no son datos completamente separables. Si bien el desarrollo del algoritmo inicialmente generado cierto entusiasmo, en parte debido a su aparente relación con los mecanismos biológicos, más tarde el descubrimiento de esta insuficiencia causado tales modelos a ser abandonado hasta la introducción de modelos no lineales en el campo.


Cognitron (1975) fue una de las primeras redes neuronales multicapa con un algoritmo de formación. Las redes pueden difundir información en una sola dirección, o pueden rebotar hacia atrás y hacia delante hasta que la libre de activación se produce en un nodo de la red y se instala en un estado final. La capacidad de flujo bidireccional de insumos entre neuronas / nodos fue producido con la de la red de Hopfield (1982), y la especialización de estas capas nodo para fines específicos se introdujo a través de la primera red híbrida. El paralelismo de procesamiento distribuido de mediados del decenio de 1980 se hizo popular con el nombre de conectismo.
El redescubrimiento del algoritmo backpropagation fue probablemente la razón principal por la cual las redes neuronales llamarón la atención del mundo académico y técnico, después de la publicación de "Learning Internal Representations by Error Propagation" en 1986 (Aunque backpropagation propio data de 1974). El original utilizado múltiples capas de red de unidades de peso de suma del tipo f = g (w'x + b), donde g es una función sigmoide o función logística, como las utilizadas en la regresión logística. La nueva estrategia uso una forma más empinada del gradiente estocástico ascendente. El empleo de la regla de la cadena de derivados de la diferenciación en las actualizaciones de parámetros en los resultados de un algoritmo genera 'backpropagate errors ", de ahí la nomenclatura. Sin embargo, es esencialmente una forma de descenso de gradiente.

Determinar los parámetros óptimos en un modelo de este tipo no es trivial, y los métodos más empinados del gradiente de descenso no pueden ser invocados para dar la solución sin un buen punto de partida. En los últimos tiempos, las redes con la misma arquitectura de la red backpropagation se denominan Perceptrón multicapas. Este nombre no impone ninguna limitación sobre el tipo de algoritmo usado para el aprendizaje.
La red backpropagation generado mucho entusiasmo en el momento y hay mucha controversia sobre si este aprendizaje se podría aplicar en el cerebro o no, en parte debido a un mecanismo para revertir la señalización no era evidente en el momento, pero lo que es más importante, porque no hay fuente plausible para la "enseñanza" o "destino" de señal.

miércoles, 22 de abril de 2009

Actividad para Estudiantes.

El objetivo principal del trabajo es clasificación de dos clases sencillas generadas aleatoriamente, para tal fin se propone un perceptrón de dos entradas y una salida, con función de activación de paso duro y utilizando Microsoft Excel para desarrollar la fase de entrenamiento. Como resultados se espera la configuración del perceptrón y la ecuación del hiperplano de separación.

DESCRIPCIÓN DE LA TAREA

El propósito del documento es desarrollar los siguientes puntos:


Generar una muestra de datos de 50 puntos, de los cuales 25 pertenecen a una clase con distribución bivariada de media [0,0]T y varianza 1; los 25 puntos restantes pertenecen a la clase2 de distribución similar pero con media [5,3]T.

Representar gráficamente las dos clases en un plano x-y.


Realizar una rutina de entrenamiento sobre un perceptrón para realizar la clasificación de las dos clases.


Presentar en una gráfica 3D las distribuciones de probabilidad de las dos clases.


RNA y Aprendizaje Automático


Fuente: http://www.redes-neuronales.netfirms.com/tutorial-redes-neuronales/Neural-Networks-Java/celebro-neurona.gif


¿Puede un computador aprender a resolver problemas sólo, a partir de ejemplos?

Este cuestionamiento, es objeto hoy en día de complejos y profundos estudios. Y su abordaje solo puede hacerse desde los conceptos de 'Aprendizaje' y 'Clasificación'.


Aprendizaje

Las RNA son máquinas que cuentan con la capacidad de 'Aprendizaje', pues simulan esta función del cerebro humano de forma simplificada, pues solo retienen algunas características como lo define Torres Moreno (Ver: http://www.professeurs.polymtl.ca/juan-manuel.torres-moreno/homepage/publicaciones/reportes_jm/jornada-aprendizaje.html):

1) las neuronas no pueden encontrarse más que en dos estados posibles, activas o en reposo;

2) están interconectadas mediante sinapsis que pueden ser modificadas por aprendizaje, y

3) el estado de una neurona a cada instante es determinado por el de otras, información que es transmitida por las sinapsis.

Clasificación

La clasificación es la atribución de una clase específica a un objeto, la cual necesita un cierto grado de abstracción para poder extraer generalidades a partir de los ejemplos de los cuales se dispone. Para una máquina, la clasificación de rostros, datos médicos o imágenes son tareas bastante difíciles, en tanto que para un humano son cuestiones cotidianas: recordar rostros, el aroma del perfume de nuestra pareja, el color de las últimas flores que nos regalaron, entre otros. Otro ejemplo se puede encontrar en el reconocimiento de caracteres manuscritos, pues es difícil enunciar una descripción general que tenga en cuenta todas las variaciones particulares de cada caracter. Una técnica que puede ser utilizada para resolver este problema es el aprendizaje. Así, el criterio para decidir si una imagen corresponde a una letra A, B o C, consiste en comparar si es lo suficientemente similar a otras A B o C vistas anteriormente; con ese enfoque, uno no calcula la clasificación de letras, sino que se aprenden a partir de ejemplos.

La capacidad de aprendizaje de las RNA les da una inmensa ventaja sobre métodos tradicionales, ya que tan sólo se requiere disponer de un conjunto de ejemplos (conjunto de aprendizaje) para que la red pueda aprender. Es por ello que las redes de neuronas son ampliamente utilizadas en aplicaciones tan variadas como la previsión, la predicción, la clasificación, el diagnóstico automático, el procesamiento de señales, el reconocimiento de formas, la compresión de datos, la optimización combinatoria, la robótica y la búsqueda de documentos, entre otras.

Las características comunes de las RNA son: una capacidad de autorganización; robustez frente a perturbaciones externas; memoria distribuida, deslocalizada y redundante, y un paralelismo masivo e inherente. A su vez, difieren entre sí por diversos aspectos: sus motivaciones biológicas, su modo de funcionamiento o su campo de aplicaciones. Algunas técnicas neuronales avanzadas son llamadas constructivas, ya que modifican la arquitectura misma de la red en un proceso antagónico de crecimiento-aprendizaje/disminución-olvido.

Aplicación de las RNA

Fuente: http://www.portaleureka.com/accesible/images/stories/articulos/informatica/neurona1.jpg

Existen diferentes tipos de redes neuronales, cada uno de los cuales tiene un aplicación particular, entre los que se pueden encontrar (Tomado de: http://www.monografias.com/trabajos12/redneur/redneur.shtml#APLICAC):


Biología:

  • Aprender más acerca del cerebro y otros sistemas.

  • Obtención de modelos de la retina.

Empresa
  • Reconocimiento de caracteres escritos.

  • Identificación de candidatos para posiciones específicas.

  • Optimización de plazas y horarios en líneas de vuelo.

  • Explotación de bases de datos.

  • Evaluación de probabilidad de formaciones geológicas y petrolíferas.

  • Sintesís de voz desde texto.


Medio Ambiente
  • Analizar tendencias y patrones.

  • Previsión del tiempo.


Finanzas
  • Previsión de la evolución de los precios.

  • Valoración del riesgo de los créditos.

  • Identificación de falsificaciones.

  • Interpretación de firmas.


Manufacturación
  • Robots automatizados y Sistemas de Control

  • Control de producción en líneas de proceso.

  • Inspección de Calidad.

  • Filtrado de señales.


Medicina
  • Analizadores del habla para la ayuda de audición de sordos profundos.

  • Diagnóstico y tratamiento a partir de síntomas y/o de datos analíticos (encefalograma, etc.).

  • Monitorización en cirugía.

  • Predicción de reacciones adversas a los medicamentos.

  • Lectoras de Rayos X.

  • Entendimiento de causa de ataques epilépticos.


Militares
  • Clasificación de las señales de radar .

  • Creación de armas inteligentes.

  • Optimización del uso de recursos escasos.