El modelo clásico en pnl (3)

Esta serie son las notas de estudio de la clase de empleo nlp del algoritmo de julio.

5 Red neuronal convolucional en PNL

Los problemas de RNN:
1 La complejidad del tiempo es alta
2 El último vector contiene toda la información. Un poco poco confiable

CNN puede capturar características locales a través del núcleo de convolución ¿Se puede usar en oraciones para representar secuencias de palabras de cierta longitud?
Oración de ejemplo: Se graduó de la Universidad Jiaotong de Shanghai.
Si la longitud se establece en 3, debería poder capturar CNN.
Se graduó
de Shanghai
a Shanghai Jiaotong
Shanghai Jiaotong University

Las características de tales secuencias de palabras.

5.1 Convolución

Operación de convolución: cada elemento de la ventana se multiplica por el núcleo de convolución, y luego el valor agregado se utiliza como valor de característica después de la convolución.
Inserte la descripción de la imagen aquí

import numpy as np
m1 = np.matrix('0.2,0.1,-0.3,0.4;0.5,0.2,-0.3,-0.1;-0.1,-0.3,-0.2,0.4')
m2 = np.matrix('3,1,2,-3;-1,2,1,-3;1,1,-1,1')
m3 = np.multiply(m1,m2)
print(m3)
value = np.sum(m3)
print(value)

el valor es -1.0

Esta operación de convolución es unidimensional, lo que significa que el tamaño del núcleo de convolución es nxk (k es la dimensión de la palabra vector). Esta convolución es equivalente a un modelo de palabras ngram.

5.2 Multicanal

El tamaño del núcleo de convolución cambia al tamaño de n.
La entrada se pasa a través de un kernel de convolución 3xk para obtener un vector de orden de palabras de 3 gramos.
La entrada se pasa a través de un núcleo de convolución 4xk para obtener un vector de orden de palabras de 4 gramos.
La entrada puede pasar por múltiples núcleos de convolución para obtener múltiples funciones.
Inserte la descripción de la imagen aquí

La figura muestra el vector de características obtenido después de 3 núcleos de convolución con n = 3.
El tamaño de cada núcleo de convolución puede ser diferente.

5.2 agrupación máxima

Como el núcleo de convolución n es diferente, el resultado calculado es diferente.
Como n es mayor, el resultado calculado también es mayor.
Esto no es lo que queremos. Utilice la agrupación máxima para resolver.
agrupación máxima: tome el valor máximo en cada resultado de convolución. Si se pasan x capas convolucionales, finalmente se obtiene un vector de dimensión x.
Inserte la descripción de la imagen aquí

Finalmente obtenga un vector tridimensional (0.3, 1.6, 1.4)

El proceso anterior se puede ver en el artículo: Yoon Kim "Redes neuronales convolucionales para la clasificación de oraciones".

Entrada: una oración, longitud n, verifique el vocabulario de cada palabra, obtenga una matriz de nx100 dimensiones,
haga una convolución unidimensional y mantenga 300 núcleos de convolución. Finalmente, se obtiene un vector de representación de oración de 300 dimensiones.
Como entrada a MLP, se realiza la clasificación.

La herramienta de código abierto fasttext es un principio de este tipo.

Caso de código: https://github.com/silverriver/NLP_Course/blob/main/TextCNN/main.ipynb

Supongo que te gusta

Origin blog.csdn.net/flying_all/article/details/115365543
Recomendado
Clasificación