Esta serie son las notas de estudio de la clase de empleo nlp del algoritmo de julio.
Directorio de artículos
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.
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.
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.
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