¿Cuál es / son los métodos para iniciar / elegir filtros en redes neuronales convolucionales?

En cuanto al tema de cómo inicializar los filtros, hay muchos documentos centrados en este tema.

La inicialización del peso es muy importante en el aprendizaje profundo. Creo que una de las razones por las que las primeras redes no funcionaron tan bien es porque a las personas no les importaba demasiado. Esta es la razón por la que lo puse en la primera sección.

Inicializar todos los pesos a 0 es una mala idea ya que todas las neuronas aprenden lo mismo. En la práctica, el peso de inicialización de N (0, 0.01 ^ 2) o distribución uniforme y sesgo con constante 0 es una opción popular. Pero esto no funciona cuando se entrena una red muy profunda desde cero, lo que conducirá a salidas / gradientes extremadamente grandes o decrecientes. Los pesos grandes conducen a la divergencia, mientras que los pesos pequeños no permiten que la red aprenda.

[Glorot y Bengio. 2010] propuso la inicialización de Xavier para mantener la varianza de cada neurona entre capas igual bajo el supuesto de que no existe no linealidad entre capas. Muchas entradas corresponden a pesos más pequeños, y una cantidad menor de entradas corresponde a pesos más grandes. Pero la inicialización de Xavier se rompe cuando se usa la no linealidad ReLU. ReLU básicamente elimina la mitad de la distribución, por lo que la variación de salida se reduce a la mitad. [He y col. 2015] extendió la inicialización de Xavier a la no linealidad ReLU al permitir que la varianza de los pesos se duplicara. [Sussillo y Abbott. 2014] mantuvo constante la norma de los errores propagados hacia atrás. [Saxe y col. 2013] mostró que la inicialización de la matriz ortonormal funciona mejor para redes lineales que el ruido gaussiano, también funciona para redes con no linealidades. [Krhenbhlet al. 2015] y [Mishkin y Matas. 2015] no dio una fórmula para la inicialización, pero propusieron formas basadas en datos para la inicialización. Reescalaron iterativamente los pesos de manera que las neuronas tuvieran una varianza aproximadamente unitaria.

[Ioffe y Szegedy. 2015] insertó la capa de normalización por lotes para hacer que las neuronas de salida tengan distribuciones gaussianas aproximadamente unitarias. Por lo tanto, redujeron la fuerte dependencia de la inicialización. Y también tenían operaciones de escala y cambio para preservar la capacidad.

Para obtener más detalles, consulte el primer capítulo de mi nota sobre CNN:

http://lamda.nju.edu.cn/zhangh/C…

Derivaciones matemáticas que predicen la cantidad de linealidad de la tasa de aprendizaje.

El problema inherente deriva de la complejidad de la tarea.

Estamos atacando el problema en el asunto equivocado.

La gente asume que tenemos la matriz básica, y que es de allí de donde debemos derivar nuestras funciones. No hagas esto.

El problema es que las redes neuronales difieren inherentemente en el método de aprendizaje, en el método de aplicación en términos de análisis vectorial, corrientes de tiempo y lo que no.

Esto significa que está intentando aplicar una solución de “talla única” a un problema de gradiente importante.

Para empezar, el aprendizaje automático y el aprendizaje traductivo es para construir bases de datos que identifiquen cómo estamos progresando en ese frente.

El problema adicional es similar a lograr tasas de activación neural en una cuestión óptima.

Todo se reduce a cuál es su prioridad.

Del mismo modo que no puede decir: “¿Por qué no puedo simplemente normalizar una matriz para tener en cuenta todas las posibilidades de una imagen?”: Debe derivar una función que aumente la optimización para ese modelo específico y esa subsección específica.

La correlación inherente se deriva del hecho de cómo analizamos en Vectores, cómo analizamos la información y cómo propagamos esos avances hacia la red.

Déjame tomar un eufemismo:

Estoy montando una bicicleta (¿Qué bicicleta? ¿Monociclo? ¿Ruedas? ¿Cuatro ruedas? ¿Motodriven? ¿Vespa? ¿Motocross? ¿Bicicleta de montaña?)

Va rápido (¿Qué tan rápido? ¿Qué terreno? ¿Cuál es la capacidad inherente de la bicicleta? ¿Qué ruedas tengo?)

Al igual que en el ejemplo anterior, NO PODEMOS, simplemente hacer la pregunta, de “¿cómo manejo mejor la bicicleta?” O “voy más rápido”.

Para empezar, eso es ignorar cada gradiente del problema y pensar que podemos abarcar una función completa para derivar cómo aplicar las matrices y la normalización y la zancada, etc.

En cambio, deberíamos analizar el problema y ver si podemos abstraer fragmentos.

Similar a encontrar el algoritmo para resolver estructuras curvas generales, similar a encontrar el algoritmo para resolver paletas de colores.

Entonces, podríamos converger todo eso en un modelo de patchwerk donde tengamos todo trabajando en conjunto.

Sin embargo, los problemas se están resolviendo, mientras hablamos.

La gente de google y de lo contrario, están trabajando en ello.

¿Yo? Solo soy un chico al azar.

En lo que respecta al número de filtros, en última instancia depende de la parte de ajuste de hiperparámetros y no hay una regla estricta para esta parte.

Solo puedo describir cómo se puede elegir el tamaño, el relleno y la zancada de un filtro / núcleo en una CNN.

La regla es:

(N – F) / zancada + 1 = Número entero

N: tamaño de la entrada 2D cuadrada como en NxN, por ejemplo. Imagen
F: Tamaño de filtro / núcleo como en FxF

(N – F) / zancada + 1 parte siempre debe ser igual a un número entero

Una cosa más a tener en cuenta es que no importa el tamaño espacial de su filtro / núcleo, la profundidad siempre debe ser igual a la profundidad de entrada.

Entonces, si la entrada es 32x32x 3, el tamaño del filtro / núcleo puede ser (por ejemplo, stride = 1):

  • 3x3x 3
  • 5x5x 3

En lo que respecta al relleno, se introduce para preservar la forma general de la entrada a medida que profundizamos en la capa.

Generalmente hacemos cero relleno alrededor de la entrada 2D de la siguiente manera:

(F – 1) / 2 = tamaño de relleno

Entonces, el posible relleno puede ser:

  • F = 3 => cero pad con 1
  • F = 5 => cero pad con 2
  • F = 7 => cero pad con 3

¡Espero que esto ayude!

El núcleo normalmente se inicializa a partir de una distribución aleatoria, centrada en cero y se tiene cuidado con la elección de su varianza.

Propiedades clave:

  1. ¿Por qué no inicializar a cualquier valor fijo ? Un concepto importante aquí se llama ruptura de simetría. Si todas las neuronas tienen los mismos pesos, producirán la misma salida y no aprenderemos características diferentes. Entonces, la inicialización aleatoria nos permite aprender un conjunto de características rico y diverso.
  2. ¿Por qué significa cero ? Una práctica común en el aprendizaje automático es un centro cero o normalizar los datos de entrada, de modo que las características de entrada sin procesar tengan un promedio de cero
  3. ¿Cómo seleccionar la varianza ? Debe seleccionar la varianza desde la mitad de los valores extremos. No desea elegir un valor muy alto, ya que en las redes profundas los pesos extremos pueden dar como resultado salidas de activación que aumentan exponencialmente en magnitud y tampoco desea elegir que sea pequeño, ya que ralentiza el aprendizaje de la tasa de aprendizaje

Nunca he visto ningún recurso que explique esto, excepto el CS231n de Stanford. Andrej explicó esta regla muy bien. Como noté que alguien ya había escrito eso, me estoy saltando. Le recomiendo que complete cs231n si está trabajando en CNN.

Agregado, en realidad no hay ningún método para hacerlo. Se toma de manera bastante intuitiva, configurando su filtro, para que pueda cubrir toda la entrada de la misma manera. Dicho esto, este tamaño de filtro depende del tamaño de entrada y los pasos que use durante el diseño de su arquitectura. Sin embargo, Andrej formó una ecuación para determinar el tamaño también. Espero que esto ayude. Si necesita un enlace de cualquier recurso que mencioné, comente a continuación.

Gracias.

More Interesting

¿Cómo escapa / resiste una red neuronal profunda a la maldición de la dimensionalidad?

Un fundador de un fondo de cobertura me dijo que los graduados de doctorado en Big Data / ML están generando un millón de dólares al año como salario en el comercio / fondos de cobertura. ¿Qué tan correcto es esto?

¿Dónde puedo encontrar modelos de temas previamente capacitados para MALLET?

El mejor ajuste de línea se puede encontrar analíticamente por el método de mínimos cuadrados. ¿Podemos decir que la regresión lineal (mínimos cuadrados) tiene un optimizador?

¿Qué es la estimación de contraste de ruido (NCE)?

¿Cómo funciona KNN?

¿Cuán sensible es el análisis de componentes independientes (ICA) a la simultaneidad de la señal de entrada?

¿Cuál es el futuro del aprendizaje de refuerzo profundo? ¿Es una buena idea comenzar un doctorado ahora trabajando en ataques adversos en sistemas RL?

Tengo un conjunto de datos (audios y transcripciones), necesito saber cómo entrenaré estos datos para crear un modelo acústico que se utilizará para un reconocimiento de voz.

¿Cuál es el mejor algoritmo para la extracción de características en imágenes?

¿Cómo funcionan las representaciones distribuidas de escasez fija defendidas e implementadas por Numenta?

¿Qué es el algoritmo de descenso de gradiente?

¿Cuál es la relación entre la teoría de la Gestalt y el aprendizaje profundo?

Organización de la computadora: ¿Cuál es la aceleración de una versión de 5 etapas de la máquina en tubería sobre la versión sin tubería?

¿Puede Naive Bayes alcanzar algún rendimiento con suficientes datos?