Supongamos que tiene la intención de entrenar esta arquitectura con propagación hacia atrás. Con una comprensión madura del algoritmo de retropropagación, encontrará que la respuesta es sí y comprenderá por qué.
Primero, establezcamos alguna terminología asumiendo la forma en que tiene la intención de combinar la información de las capas anteriores y la “nueva entrada” es concatenación (se pueden hacer argumentos similares para otras formas de conectarlos).
- [matemáticas] x ‘\ en R ^ m [/ matemáticas] es su “nueva entrada”.
- [math] h_ {i-1} = z (h_ {i-2}, \ theta_ {i-1}) \ en R ^ n [/ math] es la activación de la capa (numerada i-1) antes de ” la capa completamente conectada justo antes del softmax ”(numerado i).
- [matemática] k [/ matemática] es la dimensionalidad de la salida de la salida de la capa i.
- [matemáticas] \ theta_i \ en R ^ {k} \ veces R ^ {n + m} [/ matemáticas] son los parámetros de la capa i. Esta es la dimensionalidad correcta porque usted dice que es una “capa completamente conectada”, por lo que hay una conexión entre * cada * de los k elementos de la salida y * cada * de las entradas anteriores.
Usted dice que la capa final es un softmax, por lo que tenemos algo de pérdida escalar L, por lo que el gradiente con respecto a la capa i se puede calcular de la manera habitual (aún no depende de su modificación): [matemáticas] \ frac {\ parcial L } {\ partial \ theta_i}. [/ math] Los parámetros de la capa i se actualizan en la dirección de ese gradiente. La capa (i-1) no está conectada a los parámetros de la capa i asociados con la “nueva entrada”, por lo que la retropropagación puede considerarse como una matriz / multiplicación de matriz en la que trunca filas que no están asociadas con las conexiones que sabe que están allí [ matemáticas] \ frac {\ partial L} {\ partial \ theta_ {i-1}} = \ frac {\ partial L} {\ partial \ theta_i} [0: n] \ times \ frac {\ partial h_ {i- 1}} {\ partial \ theta_ {i-1}}. [/ Math] Es posible que desee escribir la secuencia completa de multiplicaciones (y consulte los tutoriales si se atasca), para ver cómo se alinean las dimensiones. Uno esperaría que su biblioteca de redes neuronales piense hacer eso en lugar de multiplicar el vector completo [math] \ frac {\ partial {L}} {\ partial \ theta_i} [/ math] con una versión con relleno de cero de [math] \ frac {\ partial h_ {i-1}} {\ partial \ theta_ {i-1}} [/ math] para alinear las cosas. La retropropagación luego pasaría a la capa (i-2) y así de la manera habitual. Probablemente no querrá volver a propagar el error en su nueva rama de la red durante el entrenamiento (porque dijo que es “entrada”, por lo que no tiene parámetros entrenables), pero si lo hiciera, sería: [matemáticas] \ frac { \ partial L} {\ partial \ theta_ {i-1}} = \ frac {\ partial L} {\ partial \ theta_i} [n: (n + m)] \ times x ‘[/ math] Propagación hacia atrás en los datos sin embargo, es útil cuando se construyen “ejemplos adversos”.
- ¿Qué es más poderoso, la red neuronal convolucional o la red artificial? ¿Cuál es más conveniente de usar?
- ¿Es más fácil conseguir un trabajo de aprendizaje automático con maestros de una buena universidad que si solo eres autodidacta?
- ¿Cómo se compara la industria del aprendizaje automático con las opciones de carrera dentro del desarrollo web?
- Cómo realizar un proyecto de predicción relacionado con la salud utilizando big data y machine learning
- ¿Cuáles son algunas buenas ideas de proyectos en el área de análisis / predicción del mercado de valores utilizando Bayes ingenuo?
Puede aplicar el mismo tipo de razonamiento para comprender las redes siamesas, y una vez que esté acostumbrado a la idea, leer y escribir con un lenguaje más general como “gráfico computacional” tendrá sentido.