Deep Learning, Introducción a las Redes Neuronales

Tabla de contenido

1. La estructura general de la red neuronal

2. Detalles de la arquitectura de la red neuronal

3. Funciones de regularización y activación

4. Solución de sobreajuste de redes neuronales

1. La estructura general de la red neuronal

 

Demostración de ConvNetJS: clasificar datos 2D de juguetes

Podemos mirar el sitio web de esta red neuronal, que se puede utilizar para aprender.

La estructura general de la red neuronal es la siguiente 1:

  1. Los perceptrones son la más básica de todas las redes neuronales y los componentes básicos de redes neuronales más complejas. Solo conecta una neurona de entrada y una neurona de salida.

  2. Redes Feed-Forward Una red feed-forward es una colección de perceptrones en los que hay tres tipos básicos de capas: capa de entrada, capa oculta y capa de salida. Durante cada conexión, la señal de la capa anterior se multiplica por un peso, se suma con un sesgo y se pasa a través de una función de activación. Las redes feedforward actualizan iterativamente los parámetros utilizando backpropagation hasta que se logra el rendimiento deseado.

  3. Redes residuales (Residual Networks/ResNet) Un problema con las redes neuronales feedforward profundas es la llamada desaparición de gradiente, es decir, cuando la red es demasiado profunda, la información útil no se puede propagar hacia atrás en toda la red al actualizar los parámetros.

Para la estructura general de la red neuronal, la resumimos en cuatro puntos: estructura jerárquica, neurona, conexión total y no linealidad.

 

Jerarquía :

No es difícil ver en la figura anterior que generalmente dividimos la red neuronal en tres partes en la red neuronal:

1: capa de entrada (capa de entrada)

2: capa oculta (capa oculta)

3: capa de salida (capa de salida)

pd: Cabe señalar que la capa oculta en el medio puede tener varias capas.

neurona :

Hay muchas cosas redondas como bolas en cada nivel. Esta cosa es la neurona en la red neuronal, que es la cantidad de datos o el tamaño de la matriz. El contenido de las neuronas en cada nivel es diferente. .

En cada neurona en la capa de entrada hay diferentes características de los datos originales de entrada (generalmente llamados X), por ejemplo, x es una imagen, y los píxeles de esta imagen son 32 32 3, y cada píxel es Las características de él, por lo que hay 3072 características correspondientes a la cantidad de neuronas de la capa de entrada es 3072, y estas características se ingresan en forma de matriz. Pongamos un ejemplo, por ejemplo, nuestra matriz de entrada es 1*3072 (el número en la primera dimensión indica cuántas entradas hay en un lote (lote se refiere a la cantidad de datos que se ingresan para cada entrenamiento); el número en la segunda dimensión es cada Cuántas funciones tiene la entrada).

Cada capa de neuronas en la capa oculta representa los datos que se actualizan x una vez, y hay varias neuronas en cada capa (por ejemplo, hay cuatro neuronas en la capa oculta1 de la figura) que amplían las características de sus datos de entrada a Varios (por ejemplo, cuatro en la imagen), por ejemplo, sus tres características de entrada son edad, peso, altura, y la primera neurona en la capa oculta 1 en la imagen se puede transformar en esta 'edad 0.1 + peso 0.4 + altura 0.5' , mientras que la segunda neurona se puede expresar como 'edad 0,2+peso 0,5+altura 0,3', las neuronas de cada capa pueden tener diferentes representaciones.

La cantidad de neuronas en la capa de salida depende principalmente de lo que desea que haga la red neuronal. Por ejemplo, si desea que haga un problema de 10 categorías, la matriz de la capa de salida puede ser una matriz '1*10'. (la primera dimensión representa el mismo número que la capa de entrada, y las siguientes 10 son 10 categorías).

Conexión completa :

Vemos líneas grises entre cada capa y la siguiente capa, estas líneas se llaman completamente conectadas (porque ves que cada neurona en la capa anterior está conectada a todas las neuronas en la siguiente capa), y estas líneas también se pueden representar mediante una matriz Esta matriz suele llamarse 'matriz de pesos' y se representa con una W mayúscula (parámetro que debemos actualizar más adelante). La dimensión de la matriz de peso W depende principalmente de la dimensión de datos de entrada de los datos entrantes de la capa anterior y la dimensión de entrada de la siguiente capa. Puede entenderse simplemente como el número de neuronas en la capa superior y el número de neuronas en la siguiente capa. Por ejemplo, hay 3 neuronas en la capa de entrada en la figura y 4 neuronas en la capa oculta1, la dimensión de W es '3*4', y así sucesivamente. (Principalmente porque la forma de nuestra capa totalmente conectada es una forma de operación matricial, que debe satisfacer las reglas de operación de la multiplicación de matrices.

No lineal :

No lineal (no lineal), es decir, la relación matemática entre variables, no una línea recta sino una curva, una superficie o un atributo incierto, se denomina no lineal. La no linealidad es una de las propiedades típicas de la complejidad de la naturaleza; en comparación con la linealidad, la no linealidad está más cerca de la naturaleza de las cosas objetivas en sí, y es uno de los métodos importantes para la investigación cuantitativa para comprender el conocimiento complejo; cualquier relación que pueda ser descrita por la no linealidad generalmente se denomina no linealidad relación lineal.

2. Detalles de la arquitectura de la red neuronal

Estructura general :

Infraestructura: f=W2max(0, W1x)

Continúe agregando una capa: f=W3max(0, W2max(0,W1x))

El poder de las redes neuronales radica en ajustar datos complejos con más parámetros.

El efecto del número de neuronas en el resultado :

Cambiar antes:

capa_defs = []; 
layer_defs.push({tipo:'entrada', out_sx:1, out_sy:1, out_ depth:2}); 
layer_defs.push({tipo:'fc', num_neurons:, activación: 'tanh'}); 
layer_defs.push({tipo:'fc', num_neurons:2, activación: 'tanh'}); 
layer_defs.push({type:'softmax', num_classes:2}); 
​net
= new convnetjs.Net(); 
net.makeLayers(layer_defs); 
​trainer
= new convnetjs.SGDTrainer(net, {learning_rate:0.01, momentum:0.1, batch_size:10, l2_decay:0.001});

 

capa_defs = []; 
layer_defs.push({tipo:'entrada', out_sx:1, out_sy:1, out_ depth:2}); 
layer_defs.push({tipo:'fc', num_neurons:2, activación: 'tanh'}); 
layer_defs.push({tipo:'fc', num_neurons:2, activación: 'tanh'}); 
layer_defs.push({type:'softmax', num_classes:2}); 
​net
= new convnetjs.Net(); 
net.makeLayers(layer_defs); 
​trainer
= new convnetjs.SGDTrainer(net, {learning_rate:0.01, momentum:0.1, batch_size:10, l2_decay:0.001});

Cambiado al patrón después de 2

Luego, el número de nervios se ajusta a 5 o más:

capa_defs = []; 
layer_defs.push({tipo:'entrada', out_sx:1, out_sy:1, out_ depth:2}); 
layer_defs.push({tipo:'fc', num_neurons:5, activación: 'tanh'}); 
layer_defs.push({tipo:'fc', num_neurons:5, activación: 'tanh'}); 
layer_defs.push({type:'softmax', num_classes:2}); 
​net
= new convnetjs.Net(); 
net.makeLayers(layer_defs); 
​trainer
= new convnetjs.SGDTrainer(net, {learning_rate:0.01, momentum:0.1, batch_size:10, l2_decay:0.001});

 

3. Funciones de regularización y activación

El papel de la regularización :

En el aprendizaje automático, la regularización a menudo se agrega a la función de pérdida, que se denomina regularización. Evitar el sobreajuste del modelo, es decir, agregar ciertas reglas (restricciones) a la función de pérdida para reducir el espacio de solución, reduciendo así la posibilidad de encontrar una solución de sobreajuste.

Función de activación :

Las funciones de activación comúnmente utilizadas incluyen Sigmoid, Relu, Tanh, etc., y realizan las transformaciones no lineales correspondientes

 

La función de activación se utiliza para agregar factores no lineales, mejorar la capacidad expresiva de la red neuronal en el modelo y resolver problemas que el modelo lineal no puede resolver.

Al aprender matemáticas avanzadas, en la parte de integral indefinida, hay un dibujo para aproximar la solución con pensamiento recto. Luego, podemos aprender de él y usar innumerables líneas rectas para aproximar una curva.

4. Solución de sobreajuste de redes neuronales

Inicialización de parámetros :

La inicialización de parámetros es muy importante, generalmente usamos una estrategia aleatoria para la inicialización de parámetros

W = 0.01 * np.aleatorio.randn(D, H)

Preprocesamiento de datos :

Los diferentes resultados de procesamiento marcarán una gran diferencia en el efecto del modelo.

 

ABANDONAR

Este es el legendario Puño de las Siete Heridas

El sobreajuste es un gran dolor de cabeza en las redes neuronales

  1. Un significado es: en el aprendizaje automático, es una estrategia para resolver el problema del sobreajuste del modelo.

  2. Otro significado es: es la implementación de la tecnología de abandono, de modo que la salida de cada capa de la red se selecciona aleatoriamente para descartar algunas neuronas, lo que puede evitar el problema de la desaparición y explosión del gradiente, y ayudar a mejorar la capacidad de generalización de toda la red.

 

Supongo que te gusta

Origin blog.csdn.net/Williamtym/article/details/132028207
Recomendado
Clasificación