Documentos de Académico
Documentos de Profesional
Documentos de Cultura
sesion3
Esquema del tema :
1. Conceptos de redes neuronales
a)Introducción
b) Modelo de neurona simple
c) Representación MATLAB de la red neuronal
2. Tipos de red neuronal
a) Perceptrones
b) redes lineales
c) Redes de retropropagación
d) Mapas autoorganizados
3. Estudio de caso: predicción de series temporales
Esquema de la sección:
1. Introducción
Definición de red neuronal
Perspectiva biológica de la red neuronal.
Aplicaciones de red neuronal
2. Modelo de neurona simple
Componentes de la neurona simple
3. Representación MATLAB de la red neuronal
Modelo de neurona única
Red neuronal con una sola capa de neuronas.
Red neuronal con múltiples capas de neuronas.
Definición de red neuronal
seguro
Aeroespacial
Fabricación
Automotor
Médico
Bancarioctividad de tarjeta de crédito
Gas de petróleo
Comprobación
Robótica
Defensa
Habla
Electrónica
Valores
Entretenimiento
Telecomunicacione
Financiero
Transporte
Industria
Componentes de la neurona simple
Cuerpo de la
célula
Componentes de la neurona simple
Example:
Si p1= 2.5; p2= 3; w1= 0.5; w2= -0.7; b = 0.3 Asumamos la transferencia la función de la
neurona es rígida, donde
MATLAB ® Representación de el modelo de neurona simple
Numero de neuronas en la
capa 1
2da capa (capa de salida) consiste en 1 neurona con función de transferencia lineal (purelin).
En MATLAB ® notación abreviada, la red neuronal está
representada por el diagrama a continuación.
Esquema de la sección:
1. Perceptrones
Introducción 4. Mapas autoorganizados
La arquitectura perceptron Introducción
Entrenamiento de perceptrones Aprendizaje competitivo
Ejemplos de aplicación Mapas autoorganizados
Ejemplos de aplicación
2. Redes lineales
Introducción
Arquitectura de redes lineales.
El algoritmo de aprendizaje de Widrow-Hoff
Ejemplos de aplicación
3. Redes de backprogation
Introducción
Arquitectura de la red de backprogation
El algoritmo de backprogation
Algoritmos de entrenamiento
Pre y postprocesamiento
Ejemplos de aplicación
Perceptrons
inventado en 1957 por Frank Rosenblatt en Cornell Aeronautical Laboratorio.
La salida de una sola neurona perceptrónica solo puede estar en una de los
dos estados. Si la suma ponderada de sus entradas excede un cierto umbral,
la neurona se disparará produciendo 1; de lo contrario, la neurona generará 0
o -1, dependiendo de La función de transferencia utilizada.
Si se puede dibujar una línea recta para separar los vectores de entrada en dos
categorías, los vectores de entrada son linealmente separables, como ilustrado en el
diagrama a continuación.
El siguiente ejemplo ilustra cómo crear una entrada única de dos entradas.
perceptrón Los valores de entrada varían de -2 a 2.
% Crear un perceptrón
>> net = newp([-2 2; -2 2], 1);
% Verificación de propiedades y valores de pesos de entrada
>> net.inputWeights{1,1} % properties
>> net.IW{1,1} % values
%Comprobación de propiedades y valores de sesgo
% Tenga en cuenta que los pesos y sesgos iniciales se inicializan a ceros usando "initzero"
>> net.inputWeights{1,1}.initFcn
>> net.biases{1}.initFcn
% Para calcular la salida de perceptrón de los vectores de entrada [p1, P2] use %el
Comando "sim"
Esto se hace ajustando los pesos (W) y los sesgos (b) de la red perceptrón según las
siguientes ecuaciones
Donde e=t–a
Entrenamiento de Perceptron
Podemos entrenar una red Perceptron para clasificar dos grupos de datos, como ilustrado
abajo
Tipos de red neuronal
Procedimientos:
% Cargar los puntos de datos en el espacio de trabajo
>> load data
>> a = sim(net, p)
>> a =
0 0 1 1 0 1 0 1% correct classification
>> t =
0 0 1 1 0 1 0 1
% Seamos más rapidos al consultar el perceptrón con entradas nunca antes visto
>> nntool
Primero, defina las entradas de entrenamiento haciendo clic en "Importar ...",
seleccione el grupo de La lista de variables.
Asigne un nombre a las entradas e indique que esto La variable debe importarse como entradas.
Defina los objetivos de manera similar.
Cree una nueva red perceptrón haciendo clic en "Nueva red ...", una nueva Aparece la ventana donde
se puede definir la arquitectura de red. Haga clic en "Crear" para crear la red
A continuación, seleccione la pestaña
"Entrenar ..." y configure las Entradas en p y
los Objetivos en t. Haga clic en "Red de
trenes" para comenzar el entrenamiento.
La red completó el entrenamiento en 4 épocas, que son 4 pases completos a través de todas las
entradas de capacitación.
% Crear el perceptrón
>> net = newp([0 1; 0 1], 1);
% Entrenar al perceptrón con p y t
>> net = train(net, p, t);
% Para probar el rendimiento, simule el perceptrón con p
>> a = sim(net, p)
>> a =
0 0 0 1
>> t =
0 0 0 1
Ejercicio 2: clasificación de patrones
Cree un perceptrón que pueda diferenciar entre dos grupos de imágenes:
Insinuación:
Utilice los valores booleanos 1 y 0 para Representa la
imagen. Se muestra el ejemplo para image_1
image_1 = [ 0 1 0
101
101
0 1 0]’;
El siguiente ejemplo ilustra cómo crear un lineal de dos entradas y una salida red a través del enfoque
de línea de comandos. Los valores de entrada varían de -2 a 2.
% Tenga en cuenta que los pesos y sesgos iniciales se inicializan a ceros usando "initzero"
>> net.inputWeights{1,1}.initFcn
>> net.biases{1}.initFcn
% Para calcular la salida de la red lineal a partir de vectores de entrada [P1, P2] utilizar el comando SIM
Las redes lineales se pueden entrenar para realizar una clasificación lineal con
el tren de funciones.
Podemos construir una red lineal para realizar no solo la clasificación de patrones sino
también También tareas de asociación.
Solución: El enfoque de línea de comandos se demuestra aquí. La GUI "nntool" se
puede utilizar alternativamente.
>> a =
-0.0136 0.9959 0.0137 1.0030
>> t =
0 1 0 1
∴ La salida de red real, a, se parece mucho a la del objetivo, t. Es porque la salida de la red lineal no es
directamente 0 o 1, el La salida puede ser un rango de valores.
% Ahora, pruebe la red lineal con 3 imágenes que no se vieron anteriormente
>> load test_images
>> test1 = sim(net, timg1)
>> test1 =
0.2271
>> test2 = sim(net, timg2)
>> test2 =
0.9686
>> test3 = sim(net, timg3)
test3 =
0.8331
¿Cómo debemos interpretar las salidas de red test1, test2 y test3? Para eso
nosotros necesita definir una Medida de similitud, S
Donde t es el grupo objetivo (es decir, 0 o 1) y test es la salida de la red cuando presentado
con imágenes de prueba.
Cuanto más pequeña es la S, más similar es una imagen de prueba a un grupo en particular.
El enfoque de línea de comando se demuestra aquí. La GUI "nntool" se puede utilizar alternativamente.
% Definir en MATLAB ® ventana de comando, las entradas de entrenamiento y objetivos
>> a =
0.0262 0.9796
>> t =
0 1
Entrenamiento por lotes: los pesos y sesgos de la red son actualizado solo
después de que se hayan aplicado todos los datos de entrenamiento a la red
Descenso de gradiente de lote (traingd):
• Original pero el más lento;
• Pesos y sesgos actualizados en la dirección del gradiente negativo (nota:
backprop. algoritmo);
• Seleccionado configurando trainFcn en traingd:
Descenso de gradiente por lotes con impulso
% Define at the MATLAB command window, the training inputs and targets
>> p = [-1: 0.05: 1];
>> t = sin(2*pi*p) + 0.1*randn(size(p));
% Construct Validation set
>> val.P = [-0.975: 0.05: 0.975]; El conjunto de validación debe estar en forma de estructura
>> val.T = sin(2*pi*val.P) + 0.1*randn(size(val.P));
% Construct Test set (optional)
>> test.P = [-1.025: 0.05: 1.025]; % el conjunto de validación debe estar en forma de estructura
>> test.T = sin(2*pi*test.P) + 0.1*randn(size(test.P));
% Trazar y comparar tres conjuntos de datos
>> plot(p, t), hold on, plot(val.P, val.T,‘r:*’), hold on, plot(test.P, test.T, ‘k:^’);
>> legend(‘train’, ‘validate’, ‘test’);
% Cree una red de retropropagación 1-20-1 con el algoritmo "trainlm"
>> net = newff(minmax(p), [20 1], {‘tansig’, ‘purelin’}, ‘trainlm’);
>> net.trainParam.show = 1;
>> net.trainParam.epochs = 300;
% Primero, entrene la red sin detenerse temprano
>> net = init(net); % initialize the network
>> [net, tr] = train(net, p, t);
>> net1 = net; % red sin parada temprana
%Luego, entrene la red con paradas tempranas con conjuntos de validación y prueba
>> net = init(net);
>> [net, tr] = train(net, p, t, [ ], [ ], val, test);
>> net2 = net; %red con parada temprana
% Pruebe el rendimiento de modelado de net1 y net2 en conjuntos de prueba
>> a1 = sim(net1, test.P); % simulate the response of net1
>> a2 = sim(net2, test.P); % simulate the response of net2
>> figure, plot(test.P, test.T), xlim([-1.03 1.03]), hold on
>> plot(test.P, a1, ‘r’), hold on, plot(test.P, a2, ‘k’);
>> legend(‘Target’, ‘Without Early Stopping’, ‘With Early Stopping’);
∴La red con parada temprana puede adaptarse mejor al conjunto de datos
de prueba con menos discrepancias, por lo tanto, la función de detención
temprana puede ser . Se utiliza para evitar el sobreajuste de la red hacia
los datos de entrenamiento.
Ejercicio 1: predicción de series temporales
Cree una red neuronal que pueda predecir la serie temporal de 24 horas del
día siguiente basado en la serie de tiempo actual de 24 horas.