relu redes profundo neuronales función funciones funcion aprendizaje activación activacion machine-learning nlp neural-network stanford-nlp deep-learning

machine-learning - redes - función de activación relu



¿Cómo puede un árbol ser codificado como entrada a una red neuronal? (3)

  1. Estructura de árbol de codificación: piense en la red neuronal recurrente, que tiene una cadena que puede construirse para el bucle for. Pero aquí tienes un árbol. Así que necesitarías hacer algún tipo de bucle con rama. La llamada a función recursiva podría funcionar con algunos gastos generales de Python. Le sugiero que cree una red neuronal con el marco ''definir por ejecución'' (como PyTorch , PyTorch ) para reducir la sobrecarga. Debido a que su árbol puede tener que reconstruirse diferente para cada muestra de datos, lo que requiere reconstruir el gráfico de cómputo. Lea Representaciones semánticas mejoradas de redes de memoria de corto plazo a largo plazo con estructura de árbol , con la implementación original de Torch7 here y la implementación de PyTorch , puede que tenga algo ideal.

  2. Para codificar una etiqueta en el nodo, creo que una forma más fácil sería codificarlos como lo hace con word. Por ejemplo, un dato de nodo es [vector de palabra] [vector de etiqueta]. Si nodo es hoja, tiene palabra, pero es posible que no tenga etiqueta (no dijo que hay etiqueta en el nodo hoja), por lo que la representación de datos de hoja es [palabra] [vector cero] (o [palabra vector] [etiqueta] ). El nodo interno del caso que no tiene word => [vector cero] [vector de etiqueta]. Luego, tiene un nodo interno y una hoja con la misma dimensión vectorial de representación de datos. Puedes tratarlos por igual (o no: 3)

Tengo un árbol, específicamente un árbol de análisis con etiquetas en los nodos y cadenas / palabras en las hojas. Quiero pasar este árbol como entrada a una red neuronal al mismo tiempo que conserva su estructura.

Enfoque actual Supongamos que tenemos un diccionario de palabras w1, w2 ..... wn Codifique las palabras que aparecen en el árbol de análisis como n vectores binarios dimensionales con un 1 que aparece en el lugar i cuando la palabra en el árbol de análisis es wi

Ahora, ¿qué hay de la estructura del árbol? Hay aproximadamente 2 ^ n posibles etiquetas principales para n palabras que aparecen en las hojas Así que no podemos establecer una longitud máxima de palabras de entrada y luego solo fuerza bruta enumerar todos los árboles.

En este momento, todo lo que puedo pensar es en aproximar el árbol eligiendo el padre directo de una hoja. Esto puede representarse mediante un vector binario y con una dimensión igual al número de diferentes tipos de etiquetas, en el orden de ~ 100, supongo. Mi entrada es entonces bidimensional. El primero es solo la representación vectorial de una palabra y el segundo es la representación vectorial de su etiqueta principal

Excepto que esto perderá mucha estructura en la oración. ¿Hay alguna forma estándar / mejor de resolver este problema?


Codifique cada nodo hoja utilizando (i) la secuencia de nodos que lo conecta al nodo raíz y (ii) la codificación del nodo hoja que viene antes de él.

Para (i), use una red recurrente cuya entrada sea etiquetas. Alimente a este RNN la etiqueta raíz, la etiqueta de segundo nivel, ..., y finalmente la etiqueta principal (o sus incrustaciones). Combine esto con la hoja en sí (la palabra o su incrustación). Ahora, tienes una característica que describe la hoja y sus ancestros.

Para (ii), también use una red recurrente! Simplemente comience por calcular la función descrita anteriormente para la hoja más a la izquierda y aliméntela a un segundo RNN. Sigue haciendo esto para cada hoja que se mueve de izquierda a derecha. En cada paso, el segundo RNN le dará un vector que representa la hoja actual con sus ancestros, las hojas que vienen antes y sus ancestros.

Opcionalmente, haga (ii) bidireccionalmente y obtendrá una función de hoja que incorpora todo el árbol.


Necesitas una red neuronal recursiva . Consulte este repositorio para ver una implementación de ejemplo: https://github.com/erickrf/treernn

El principio de una red neuronal recursiva (no recurrente) se muestra en esta imagen.

Aprende la representación de cada hoja y luego sube a través de los padres para finalmente construir la representación de toda la estructura.