Introducción al aprendizaje profundo (66) Redes neuronales recurrentes: búsqueda de haces

prefacio

El contenido principal proviene del enlace 1 del blog. Enlace 2 del blog. Espero que puedas apoyar mucho al autor.
Este artículo se usa para registros para evitar el olvido.

Redes neuronales recurrentes: búsqueda de haces

cursos

búsqueda codiciosa

En seq2seq usamos la búsqueda codiciosa para predecir la secuencia

  • Muestra la palabra con la mayor probabilidad de predicción en el momento actual

Pero ser codicioso probablemente no sea óptimo:
inserte la descripción de la imagen aquí

búsqueda exhaustiva

Algoritmo óptimo: para todas las secuencias posibles, calcule su probabilidad y luego elija la mejor.
Si el tamaño del diccionario de salida es n, y la secuencia más larga es T, entonces necesitamos examinar nT secuencias

  • n = 10000,T= 10: nT = 1 0 40 n^T = 10^{40}norteT=1 040
  • computacionalmente inviable

búsqueda de haz

Guardar los mejores k candidatos
En cada momento, añadir un nuevo ítem (n posibilidades) a cada candidato, y seleccionar los mejores k entre las kn opciones
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Resumir

beam search guarda los k mejores candidatos en cada búsqueda

  • Cuando k = 1, es una búsqueda codiciosa
  • Búsqueda exhaustiva cuando k = n

Libro de texto

En la sección anterior, predijimos la secuencia de salida una por una hasta que apareció el token de finalización de secuencia específico " " en la secuencia predicha <eos>. Esta sección primero presentará 贪心搜索(greedy search)la estrategia y explorará sus problemas, y luego comparará otras estrategias alternativas: 穷举搜索(exhaustive search)y 束搜索(beam search).

Antes de presentar formalmente la búsqueda voraz, definimos el problema de búsqueda utilizando la misma notación matemática que en la sección anterior. En cualquier momento paso t′ t´t , el decodificador generayt ′ y_{t'}yt′′La probabilidad de depende del paso de tiempo t ′ t't La subsecuencia de salida anteriory 1 , … , yt ′ − 1 y_1, \ldots, y_{t'-1}y1,,yt -1Y la variable de contexto c obtenida al codificar la información de la secuencia de entrada \mathbf{c}do . Para cuantificar el costo computacional, useY \mathcal{Y}Y representa el vocabulario de salida, que contiene "<eos>", por lo que la cardinalidad de este conjunto de vocabularioes ∣ Y ∣ \left|\mathcal{Y}\right|Y es el tamaño del vocabulario. También especificamos el número máximo de tokens para la secuencia de salida comoT′T'T' . Por lo tanto, nuestro objetivo es comenzar desde todoO ( ∣ Y ∣ T ′ ) \mathcal{O}(\left|\mathcal{Y}\right|^{T'})O ( Y T' )para encontrar la salida ideal entre las posibles secuencias de salida. Por supuesto, para todas las secuencias de salida,<eos>la parte posterior a " " (no esta oración) se descartará en la salida real.

1 búsqueda codiciosa

Primero, veamos una estrategia simple: la búsqueda codiciosa, que se usó para la predicción de secuencias en la sección anterior. Para cada paso de tiempo de la secuencia de salida, encontraremos el token con la probabilidad condicional más alta según la búsqueda codiciosa, a saber:
yt ′ = argmax ⁡ y ∈ YP ( y ∣ y 1 , … , yt ′ − 1 , c ) y_ {t'} = \operatorname*{argmax}_{y \in \mathcal{Y}} P(y \mid y_1, \ldots, y_{t'-1}, \mathbf{c})yt′′=y yargmaxP(yy1,,yt -1,c )

Una vez que la secuencia de salida contiene " <eos>" o alcanza su longitud máxima T ′ T'T' , la salida está completa.
inserte la descripción de la imagen aquí
Como se muestra en la figura, suponga que hay cuatro tokens "A", "B", "C" y "<eos>" en la salida. Los cuatro números debajo de cada paso de tiempo representan las<eos>probabilidades condicionales de generar "A", "B", "C" y " " en ese paso de tiempo respectivamente. En cada paso de tiempo, la búsqueda codiciosa selecciona el token con la probabilidad condicional más alta. Por lo tanto, la secuencia de salida "A", "B", "C" y " " se predecirá en el gráfico<eos>. La probabilidad condicional de esta secuencia de salida es0,5 × 0,4 × 0,4 × 0,6 = 0,048 0,5\times0,4\times0,4\times0,6 = 0,0480.5×0.4×0.4×0.6=0.048 .
Entonces, ¿cuál es el problema con la búsqueda codiciosa? En realidad,最优序列(optimal sequence)debería maximizarse∏ t ′ = 1 T ′ P ( yt ′ ∣ y 1 , … , yt ′ − 1 , c ) \prod_{t'=1}^{T'} P(y_{t' } \mid y_1, \ldots, y_{t'-1}, \mathbf{c})t =1T′′P(yt′′y1,,yt -1,c ) La secuencia de salida de valores, que es la probabilidad condicional de generar la secuencia de salida basada en la secuencia de entrada. Sin embargo, la búsqueda codiciosa no puede garantizar la secuencia óptima.
inserte la descripción de la imagen aquí
Otro ejemplo en la imagen de arriba ilustra el problema. A diferencia de la figura anterior, en el paso de tiempo, elegimos el token "C" en la figura 2, que tiene la segunda probabilidad condicional más alta. Dado que la subsecuencia de salida en el paso de tiempo y en la que se basa el paso de tiempo ha cambiado de "A" y "B" en la Figura 1 a "A" y "C" en la Figura 9.8.2, cada paso de tiempo en Las probabilidades condicionales de fichas también se cambian en la Fig. 2. Supongamos que seleccionamos la palabra "B" en el paso de tiempo, por lo que el paso de tiempo actual se basa en las subsecuencias de salida "A", "C" y "B" de los primeros tres pasos de tiempo como condiciones, que es lo mismo que "A"" en la Figura 1 B" y "C" son diferentes. Por lo tanto, la probabilidad condicional de generar cada token en el paso de tiempo de la Figura 2 también es diferente de la de la Figura 1. Como resultado, la<eos>probabilidad condicional de la secuencia de salida "A", "C", "B" y " " en la figura 2 es0,5 × 0,3 × 0,6 × 0,6 = 0,054 0,5\times0,3 \times0,6\times0. 6=0.0540.5×0.3×0.6×0.6=0.054 , que es mayor que la probabilidad condicional de búsqueda codiciosa en la Figura 1. Este ejemplo muestra que la secuencia de salida "A", "B", "C" y "<eos>" obtenida mediante la búsqueda codiciosa no es necesariamente la mejor secuencia.

2 búsqueda exhaustiva

Si el objetivo es obtener la secuencia óptima, podemos considerar usar 穷举搜索(exhaustive search): enumerar exhaustivamente todas las secuencias de salida posibles y sus probabilidades condicionales, y luego calcular la que tiene la probabilidad condicional de salida más alta.

Aunque podemos usar una búsqueda exhaustiva para obtener la secuencia óptima, pero la cantidad de cálculo O ( ∣ Y ∣ T ′ ) \mathcal{O}(\left|\mathcal{Y}\right|^{T'})O ( Y T )puede ser sorprendentemente alto. Por ejemplo, cuando∣ Y ∣ = 10000 |\mathcal{Y}|=10000Y =10000 yT' = 10 T'=10T=En 10 , necesitamos evaluar1000 0 10 = 1 0 40 10000^{10} = 10^{40}1000 010=1 040 secuencia, este es un número enorme, y es casi imposible que las computadoras existentes lo calculen. Sin embargo, la cantidad de cálculo de la búsqueda codiciosaO ( ∣ Y ∣ T ′ ) \mathcal{O}(\left|\mathcal{Y}\right|T')O ( Y T ), que es significativamente menor que la búsqueda exhaustiva. Por ejemplo, cuando∣ Y ∣ = 10000 |\mathcal{Y}|=10000Y =10000 yT' = 10 T'=10T=10 , solo necesitamos evaluar10000 × 10 = 1 0 5 10000\times10=10^510000×10=1 05 secuencias.

búsqueda de 3 haces

Entonces, ¿qué estrategia de búsqueda de secuencias debería elegir? Si la precisión es lo más importante, entonces, obviamente, una búsqueda exhaustiva. Obviamente, una búsqueda codiciosa si el costo computacional es lo más importante. La aplicación práctica de la búsqueda por haz se encuentra entre estos dos extremos.

束搜索(beam search)Es una versión mejorada de la búsqueda codiciosa. Tiene un hiperparámetro llamado 束宽(beam size)k. En el paso de tiempo 1, seleccionamos las k fichas con las probabilidades condicionales más altas. Estos k tokens serán los primeros tokens de las k secuencias de salida candidatas, respectivamente. En cada paso de tiempo posterior, en función de las k secuencias de salida candidatas del paso de tiempo anterior, procederemos desde k ∣ Y ∣ k\left|\mathcal{Y}\right|kY elige las k secuencias de salida candidatas con las probabilidades condicionales más altas de las opciones posibles.
inserte la descripción de la imagen aquí

La figura de arriba demuestra el proceso de búsqueda de haz. Supongamos que el vocabulario de salida contiene solo cinco elementos: Y = { A , B , C , D , E } \mathcal{Y} = \{A, B, C, D, E\}Y={ un ,B ,C ,D ,E } , uno de los cuales es "<eos>". Establezca el ancho del haz en 2 y la longitud máxima de la secuencia de salida en 3. En el paso de tiempo 1, la hipótesis tiene la probabilidad condicional más altaP ( y 1 ∣ c ) P(y_1 \mid \mathbf{c})P(y1Los lemas de c ) son A y C. En el paso de tiempo 2, calculamos todoy 2 ∈ Y y_2 \in \mathcal{Y}y2Y1 :
PAGS ( UN , y 2 ∣ C ) = PAGS ( UN ∣ C ) PAGS ( y 2 ∣ UN , C ) , PAGS ( C , y 2 ∣ C ) = PAGS ( C ∣ C ) PAGS ( y 2 ∣ C , c ) , \begin{split}\begin{align}P(A, y_2 \mid \mathbf{c}) = P(A \mid \mathbf{c})P(y_2 \mid A, \mathbf{ c }),\\P(C,y_2\mid\mathbf{c}) = P(C\mid\mathbf{c})P(y_2\midC,\mathbf{c}),\end{alineado} \end {dividir}PAG ( Un ,y2c )=PAG ( UNc ) P ( y2un ,c ) ,P ( C ,y2c )=P ( Cc ) P ( y2C ,c ) ,

Elige los dos más grandes de estos diez valores, como P ( A , B ∣ c ) P(A, B \mid \mathbf{c})PAG ( Un ,Bc )P ( C , mi ∣ c ) P(C, mi \mid \mathbf{c})P ( C ,mic ) . Luego, en el paso de tiempo 3, calculamos todoy 3 ∈ Y y_3 \in \mathcal{Y}y3Y es:

PAGS ( UN , segundo , y 3 ∣ C ) = PAGS ( UN , segundo ∣ C ) PAGS ( y 3 ∣ UN , segundo , C ) , PAGS ( C , mi , y 3 ∣ C ) = PAGS ( C , E ∣ c ) PAGS ( y 3 ∣ C , mi , c ) , \begin{split}\begin{align}P(A, B, y_3 \mid \mathbf{c}) = P(A, B \mid \mathbf{ c})P(y_3\mid A,B,\mathbf{c}),\\P(C,E,y_3\mid\mathbf{c}) = P(C,E\mid\mathbf{c}) P(y_3 \mid C, E, \mathbf{c}),\end{alinear}\end{dividir}PAG ( Un ,B ,y3c )=PAG ( Un ,Bc ) P ( y3un ,B ,c ) ,P ( C ,mi ,y3c )=P ( C ,mic ) P ( y3C ,mi ,c ) ,

Elija los dos más grandes de estos diez valores, a saber, P ( A , B , D ∣ c ) P(A, B, D \mid \mathbf{c})PAG ( Un ,B ,Dc )P ( C , mi , re ∣ c ) P(C, mi, re \mid \mathbf{c})P ( C ,mi ,Dc ) , obtendremos seis secuencias de salida candidatas: (1) A; (2) C; (3) A, B; (4) C, E; (5) A, B, D; (6) C, E , D.

Finalmente, en base a estas seis secuencias (por ejemplo, descartando <eos>la parte que incluye " " y después), obtenemos el conjunto final de secuencias de salida candidatas. Luego seleccionamos la secuencia en la que el producto de probabilidades condicionales es el más alto como la secuencia de salida:

1 L α Iniciar sesión ⁡ PAGS ( y 1 , ... , y L ∣ C ) = 1 L α ∑ t ′ = 1 L Iniciar sesión ⁡ PAGS ( yt ′ ∣ y 1 , ... , yt ′ − 1 , C ) , \frac{ 1}{L^\alpha} \log P(y_1, \ldots, y_{L}\mid \mathbf{c}) = \frac{1}{L^\alpha} \sum_{t'=1}^ L \log P(y_{t'} \mid y_1, \ldots, y_{t'-1}, \mathbf{c}),La1iniciar sesiónP(y1,,yLc )=La1t =1Liniciar sesiónP(yt′′y1,,yt -1,c ) ,

donde LLL es la longitud de la secuencia candidata final,α \alphaα generalmente se establece en0.75 0.750,75 . Debido a que una secuencia más larga tendrá más términos logarítmicos en la suma de la fórmula anterior, entoncesL α L^\alphaLα se utiliza para penalizar secuencias largas.

El costo computacional de la búsqueda de haz es O ( k ∣ Y ∣ T ′ ) \mathcal{O}(k\left|\mathcal{Y}\right|T')O ( kY T ), el resultado está entre la búsqueda codiciosa y la búsqueda exhaustiva. De hecho, la búsqueda codiciosa puede verse como un tipo especial de búsqueda de haz con un ancho de haz de 1. Al elegir de forma flexible el ancho del haz, la búsqueda del haz puede ofrecer un equilibrio entre la precisión y el coste computacional.

4 Resumen

  • Las estrategias de búsqueda de secuencias incluyen búsqueda codiciosa, búsqueda exhaustiva y búsqueda de haz.

  • La secuencia seleccionada por la búsqueda codiciosa tiene la menor cantidad de cómputo, pero la precisión es relativamente baja.

  • La secuencia seleccionada por búsqueda exhaustiva tiene la mayor precisión, pero la mayor cantidad de cálculo.

  • La búsqueda de haz hace un compromiso entre la precisión y el costo computacional al elegir de manera flexible el ancho del haz.

Supongo que te gusta

Origin blog.csdn.net/qq_52358603/article/details/128485487
Recomendado
Clasificación