Cómo agregar conocimientos previos al modelo

9b10004d707acc8ceb451d1e72d61b5e.png

来源:深度学习初学者 数学中国 
本文约4100字,建议阅读8分钟
本文通过一个简单的鸟类分类案例来总结了五个给模型加入先验信息的方法。

Aunque la red neuronal profunda de extremo a extremo puede aprender automáticamente algunas características distinguibles, a menudo se ajusta a algunas características sin importancia, lo que hace que el modelo colapse parcialmente en algunas características defectuosas. Este artículo resume cinco métodos para agregar información previa al modelo a través de un caso simple de clasificación de aves.

La necesidad de añadir conocimientos previos al modelo.

La red neuronal profunda de extremo a extremo es una caja negra. Aunque puede aprender automáticamente algunas características distinguibles, a menudo se ajusta a algunas características sin importancia, lo que hace que el modelo colapse parcialmente en algunas características defectuosas. A menudo, algunos modelos de funciones que la gente quiere que el modelo aprenda no se aprenden.

Para resolver este problema, agregar información previa diseñada artificialmente al modelo permitirá que el modelo aprenda algunas características clave. Hablemos de cómo agregar información previa al modelo desde varios aspectos.

Para facilitar la demostración, utilizo un caso de clasificación simple para mostrar cómo agregar conocimientos previos a una tarea específica. Nuestra tarea es identificar un lindo loro entre todas las aves. El loro se llama loro búho (xiāo). Se ve así:

b6bbdbf051891668fbe53294996d09b3.jpeg

búho (xiāo) loro

Esta ave tiene las siguientes características:

Es decir, puede aparecer en cualquier parte, pero es imposible en el cielo, porque es el único loro no volador del mundo (no la única ave no voladora).

Bueno, después de presentar los antecedentes de la tarea, podemos construir una red neuronal de clasificación de extremo a extremo en minutos. Hay muchas estructuras de red para elegir, como resnet, mobilenet, etc. , como la entropía cruzada, para los avanzados, use una pérdida focal y así sucesivamente. Después de determinar los datos óptimos (método de perturbación), la estructura de la red, el optimizador, la tasa de aprendizaje, etc., la precisión del modelo suele alcanzar un límite superior.

Luego prueba el modelo y descubre que algunas muestras difíciles siempre son inseparables, o algunas muestras simples también son fáciles de clasificar erróneamente. En este momento, si aún desea mejorar la precisión de la red, puede mejorar aún más la precisión del modelo agregando a priori al modelo.

Agregar anteriores al modelo en función del modelo de preentrenamiento

Añadiendo a priori al modelo, lo más fácil que se le ocurre a todo el mundo es sustituir el peso de la red por un peso del modelo preentrenado en otra tarea. El modelo previamente entrenado (como el entrenamiento previo de ImageNet) a menudo tiene la capacidad de reconocer algunos patrones de imagen básicos, como bordes, texturas, colores, etc., y la capacidad de reconocer esta información es la base para reconocer un par de imágenes Como se muestra abajo:


fb300ee461cb719e8590fad0002a10bd.jpeg

Pero esta información previa es información general, ¿podemos agregar alguna información previa de mayor nivel?

Agregar anteriores al modelo en función de la entrada

Supongamos que tiene un anterior como este:

Piensas que la cabeza del kakapo es una parte importante que lo distingue de otras aves, es decir, su cabeza lo distingue de otras aves más que su cuerpo.

En este momento, cómo hacer que Internet preste más atención a la cabeza del kakapo. En este momento, puede hacer esto usando todo el kakapo y su cabeza como dos entradas de una red y luego fusionar la información de las dos entradas en el extremo posterior de la red. Para lograr el propósito de no solo prestar atención al área local, sino también prestar atención al conjunto. Un esquema simple se muestra a continuación.


0a1057b61061d8aedb0f4f0ffd4ab431.jpeg

Adición de anteriores a los modelos en función de la recurrencia del modelo

Además de las configuraciones anteriores, si cree que es demasiado problemático ingresar dos canales al modelo, y la mayor cantidad de cálculo lo hace sentir muy incómodo.

En este momento, puedes intentar dejar que el modelo descubra el conocimiento previo que estableciste por sí mismo.

Si su modelo puede generar la posición de la cabeza del pájaro por sí mismo, aunque no necesita la información de posición de la cabeza del pájaro, generar dicha información significa que su red puede ubicar la posición de la cabeza del pájaro, y Prestar más atención a la cabeza de pájaro es equivalente a agregar la información previa de la cabeza de pájaro.

Por supuesto, la tarea de imitar directamente la detección para devolver la posición es demasiado pesada. Puede generar una máscara de la posición de la cabeza del pájaro a través de una rama de la red de generación. Un diagrama esquemático simple es el siguiente:


7baf6965af31f76d2a3c87f5373f3f1f.jpeg 55600873552b76e476f2ebb7b24480ae.jpeg

No aumenta la cantidad de cálculo al probar

Agregue anteriores al modelo en función de las restricciones de activación del gráfico CAM

Para la clasificación de kakapo, mencioné una información previa muy interesante arriba:

Es decir, el kakapo es el único loro no volador del mundo.

Por otro lado, esta información es que kakapo puede aparecer en todos los lugares, pero es imposible aparecer en el cielo (por supuesto, es imposible aparecer en el agua).

Es decir, no solo el kakapo en sí mismo es el foco de la clasificación, sino que el trasfondo de la apariencia del kakapo también es una referencia importante para la clasificación. Si el fondo es el cielo, no debe ser un kakapo, si el fondo es agua de mar, no debe ser un kakapo, si el fondo es el Ártico, no debe ser un kakapo, y así sucesivamente.

En otras palabras, no puedes juzgar que un pájaro desconocido es un kakapo por el fondo, pero puedes juzgar por el fondo que un pájaro desconocido definitivamente no es un kakapo (son otras aves).

Entonces, si se obtiene un mapa de activación (incluido el fondo) de una imagen de entrada, entonces la parte del cuerpo del pájaro de este mapa de activación debe contener la activación de kakapo y otras aves, pero la parte del fondo fuera del cuerpo del pájaro solo es posible Contiene activaciones para otras aves.


5f93ec6799b1d738763ef85872db6b2a.jpeg

Entonces, el enfoque específico se basa en el mapa de activación, limitando el área de activación del mapa de activación y agregando el objetivo antes.

El mapa de activación CAM[1] es un mapa de características ponderado lineal basado en la salida de la penúltima capa convolucional de la red de clasificación. El peso es el peso de la última capa de clasificación. Dado que el peso de la capa de clasificación codifica la información de la categoría, después ponderación La gráfica de respuesta tendrá entonces respuestas regionales basadas en diferentes categorías. (Para una introducción específica, consulte https://zhuanlan.zhihu.com/p/51631163) El método específico de generación del mapa de activación se puede expresar de la siguiente manera:


0deeb37191a3734f632c7adff68d9d1e.jpeg

Habiendo dicho todo eso, así es como se ve el mapa de activación:


a1e92072852f222ef7c42c52e84e6db4.jpeg 5dc667f990d9b6f5385c2c0bf8a0886f.jpeg

Como puedes ver, el de arriba es un mapa de activación de un kakapo, y el de abajo es un mapa de activación de un ganso salvaje volando en el cielo.

Debido a que la etiqueta del kakapo es 0, y la etiqueta de otras aves es 1, entonces en el mapa de activación, siempre que el área de activación con un valor negativo sea la activación del kakapo, es decir, la activación con una Etiqueta de 0, siempre que sea una activación positiva Es la activación de otras aves, es decir, la activación de la Etiqueta 1.

Para facilitar la visualización, muestro la activación de valores negativos en colores fríos y la activación de valores positivos en colores cálidos, por lo que se vuelve como los dos mapas de activación anteriores. El número de la derecha es la matriz de activación específica (GAPing la matriz de activación puede convertirse en los Logits de salida final).

No sé si habrás descubierto un problema aquí, es decir, no importa las imágenes de kakapo o gansos salvajes, sus mapas de activación se distribuyen no solo en las aves en sí, sino también en el fondo. Es fácil para nosotros entender a los gansos salvajes, porque los gansos salvajes vuelan en el cielo y el kakapo no puede estar en el cielo, por lo que la activación positiva del cielo es muy razonable. Pero para el kakapo, su activación negativa fuera del cuerpo del ave no es muy razonable, porque los gansos u otras aves también pueden estar en el hábitat terrestre del kakapo (pero el kakapo no puede estar en el medio).

Entonces, el entorno no proporciona ninguna evidencia de que esta vez el pájaro sea un kakapo, y que la desactivación del kakapo solo sea físicamente plausible en el pájaro. En otras aves, la activación positiva puede estar tanto en el cuerpo del ave como posiblemente en el fondo del ave (como el cielo o el océano).

Entonces necesitamos modelar este problema de tal manera que no pueda ocurrir ninguna activación de kakapo en el fondo excepto por el cuerpo del ave, es decir, no puede ocurrir ninguna activación negativa (activación con una Etiqueta de 0). Entonces la siguiente activación es razonable:

9d10e8e72d2c0487212b26a15a539ae2.jpeg

Desde el punto de vista anterior, no hay activación negativa en la parte de fondo excepto el cuerpo del ave. Aunque hay algunas activaciones positivas en la parte de fondo superior (activación de otras aves), pero desde la matriz de activación de la derecha, la activación negativa activación La báscula tiene una ventaja absoluta, por lo que no interferirá en absoluto con el juicio de kakapo.

Entonces, la pregunta es, ¿cómo lograr este objetivo desde el aspecto del diseño de la red?

De hecho, este efecto se puede lograr desde el aspecto de Loss design. Suponemos que cada pájaro tiene una máscara correspondiente, la parte del cuerpo del pájaro está dentro de la máscara y la parte de fondo del pájaro está fuera de la máscara. Entonces, lo que debemos hacer es suprimir el valor negativo de la matriz de activación de la parte de fondo fuera de la máscara y suprimir esa parte del valor negativo a 0.

La relación entre la matriz de activación del ave y la máscara es la siguiente (la curva roja representa la máscara límite del ave):


9e69d0aebc776098e87bca4810e56e5c.jpeg

Nuestro diseño de pérdida se puede expresar mediante la siguiente fórmula:

Loss_cam = -sum(where(bird_mask_outside<0))

El marco de red específico puede ser el siguiente:


7e8262ede9b8b5a50e2d3a9571c2aab1.jpeg

Entre ellos, la parte de la línea de puntos solo se necesita durante el entrenamiento, pero no durante la inferencia, por lo que este método no ocupará ningún cálculo durante la inferencia hacia adelante.

Añadir conocimiento previo al modelo basado en aprendizaje auxiliar

Hasta ahora, solo hemos tratado nuestra tarea de clasificación de aves como una clasificación binaria, es decir, kakapo es una categoría y otras aves son una categoría.

Pero sabemos que no solo hay dos tipos de pájaros en el mundo, hay muchos tipos de pájaros además del kakapo. Las características de las diferentes aves pueden ser muy diferentes, por ejemplo, los avestruces se caracterizan por cuellos largos y los gansos salvajes se caracterizan por alas grandes.


923e10c5bb687955b4c80756463e5544.jpeg

Si solo consideramos al kakapo como una clase y a otras aves como una clase para aprender, entonces es posible que el modelo no pueda aprender las características que se pueden usar para distinguir a los no kakapos, o colapsará en algunas características que no son muy distinguible arriba, por lo que no aprende las características que distinguen bien de otras aves y que pueden ser importantes para distinguir al kakapo de otras aves.

Por lo que es necesario que incorporemos el conocimiento previo de la existencia de diferentes clases en otras aves. Y aquí, presento principalmente la forma de aprender conocimientos previos similares basados ​​en el aprendizaje auxiliar. Primero, me gustaría explicar qué es el aprendizaje asistido y la diferencia entre el aprendizaje asistido y el aprendizaje multitarea:


7de1341594abe596a65015f9745e1453.jpeg

El lado izquierdo de la figura anterior es un ejemplo de aprendizaje multitarea, y el lado derecho es un ejemplo de aprendizaje asistido. A la izquierda hay una tarea típica de atributo facial, lo que significa ingresar una cara y generar la edad, el género, el peinado y otra información de esta cara a través de múltiples ramas. Las tareas de cada rama son independientes y compartidas al mismo tiempo. columna vertebral. A la derecha hay una tarea de aprendizaje auxiliar típica, que significa entrar y salir de una cara, juzgar el género de esta cara y abrir otras (o varias) ramas al mismo tiempo, a través de las cuales la red puede aprender información auxiliar, como Peinado, piel, etc., para ayudar a la tarea principal de la red (masculino y femenino) discriminación.

Bueno, volviendo a nuestra tarea de clasificación de kakapo, primero podemos pensar en el siguiente Pipeline:


5183a39d2e8e261648d23ae692f654b4.jpeg

De esta manera, aunque se pueden aprender las características de diferentes tipos de aves, se debilita la distinción de la red entre kakapo y otras características de las aves.

Después de los experimentos, se descubrió que esta arquitectura de red no podía aumentar muy bien la precisión de clasificación de la tarea principal. Para aprender completamente la diferencia entre las características del kakapo y otras aves, y al mismo tiempo incorporar los antecedentes de los diferentes tipos de aves, presentamos tareas auxiliares:


346dc92d6bfc3398296a091c44a1ef6a.jpeg

En el Pipeline anterior, la tarea auxiliar clasifica otras aves con más detalle que la tarea principal. De esta manera, la red aprende la capacidad de distinguir diferentes aves entre sí.

Sin embargo, a partir de los resultados experimentales, la precisión de este Pipeline no es alta. Después de analizar las razones, se encuentra que hay kakapo en la tarea principal y tareas auxiliares, por lo que cuando se devuelve el gradiente, es equivalente a devolver las características que distinguen al kakapo de otras aves al gradiente dos veces, y el retorno dos veces el gradiente es obviamente inútil e interfiere con la tarea auxiliar de aprender diferentes características de otras aves.

Entonces podemos eliminar la clase kakapo de tareas auxiliares, por lo que se forma la siguiente canalización:

5040060934107cfdf45f00c98613ff4d.jpeg

Después de los experimentos, se descubrió que esta tubería conduce a la mejora de la precisión de la tarea principal. La capacidad de la red para clasificar otras aves con características obvias se ha mejorado hasta cierto punto, y también se ha mejorado la capacidad de clasificar categorías difíciles. mejorado hasta cierto punto.

Por supuesto, la rama de tareas auxiliares puede ser más de una categoría, puede definir la rama de sus tareas auxiliares a través de múltiples categorías:

7b6c1e504b4637bbd352fbc86f37cd8e.jpeg

En este momento, pensará, la canalización anterior es buena, pero no tengo tantas etiquetas. Sí, además del etiquetado de la tarea principal, la canalización anterior también requiere mucho etiquetado de tareas auxiliares, y el etiquetado es uno de los problemas más problemáticos en las tareas de aprendizaje profundo.

No temas, a continuación te presentaré un trabajo, que se basa en el método de metaaprendizaje, para que ya no tengas que preocuparte por etiquetar tareas auxiliares, su marco es el siguiente:

2058fd6547bec33f3ece3ab57cb734b6.jpeg

Este marco adopta un esquema basado en maxl[2] (https://github.com/lorenmt/maxl). Los datos y las etiquetas de las tareas auxiliares no se dividen manualmente, sino que son generados por un generador de etiquetas. El objetivo de optimización del generador de etiquetas Es reducir la pérdida de la red principal en la tarea de la tarea principal El objetivo de la red principal es reducir la pérdida en la tarea principal y la tarea auxiliar al mismo tiempo.

0421a6eb8e2d9f064d7ce73ff0e2b3ef.jpeg

Pero este marco tiene una desventaja, es decir, el tiempo de entrenamiento aumentará en un orden de magnitud y el generador de etiquetas será más difícil de optimizar. Los estudiantes interesados ​​pueden probarlo por sí mismos. Pero tengo que decir que este artículo tiene dos conclusiones interesantes:

  1. Suponiendo que las tareas principal y auxiliar están en el mismo dominio, entonces el desempeño de la tarea principal mejorará si y solo si la complejidad de la tarea auxiliar es mayor que la de la tarea principal.

  2. Asumiendo que las tareas primaria y auxiliar están en el mismo dominio, el desempeño final de la tarea primaria solo depende de la tarea auxiliar con la mayor complejidad.


epílogo

Primero resuma todos los marcos que pueden agregar información previa de manera efectiva:

06c7049a5037ae5153e451c4af9b8c91.jpeg

Puede agregar su propia información previa a través de la selección de los marcos anteriores.

Agregue algún conocimiento previo establecido artificialmente a la caja negra de la red neuronal, lo que a menudo puede aportar un cierto grado de mejora a su tarea, pero qué tipo de conocimiento previo debe agregarse a la tarea específica y cómo agregar conocimiento previo. Todavía necesitas explorarte a ti mismo.

referencia

  1. ^CAM https://arxiv.org/abs/1512.04150

  2. ^máxl https://arxiv.org/abs/1901.08933

Editor: Yu Tengkai

Revisión: Lin Yilin

7fd7ac2e2ac15e061a518b67bb5fd8a7.png

Supongo que te gusta

Origin blog.csdn.net/tMb8Z9Vdm66wH68VX1/article/details/131427523
Recomendado
Clasificación