Introducción al aprendizaje profundo (67) Red neuronal recurrente - Mecanismo de atención

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 - Mecanismo de Atención

cursos

psicología

  • Los animales necesitan enfocarse efectivamente en puntos notables en entornos complejos
  • Un marco psicológico: los humanos eligen puntos de atención basados ​​en señales voluntarias e involuntarias

mecanismo de atención

Las capas convolucionales, totalmente conectadas y de agrupación solo consideran señales involuntarias (sin objetivos claros)

La operación de agrupación generalmente extrae el valor máximo en el rango del campo receptivo (agrupación máxima)
La operación de convolución generalmente opera en todas las entradas a través del núcleo de convolución y luego extrae algunas características más obvias.

El mecanismo de atención es considerar explícitamente señales aleatorias

Las pistas aleatorias se denominan consultas (consulta): lo que desea hacer,
cada entrada es un par de valor (valor) y pistas no aleatorias (clave): se puede entender como el entorno, es decir, algunas claves Pares de valor, clave y el valor puede ser el mismo, o pueden ser diferentes.Seleccione
ciertas entradas sesgadamente a través de la capa de agrupación de atención----seleccione las entradas sesgadamente de acuerdo con la consulta, que es diferente de la capa de agrupación anterior.Aquí Consulta agregada explícitamente, y luego consulta lo que necesitas según consulta

Capa de agrupación de atención no paramétrica

inserte la descripción de la imagen aquí

Sin parámetros: no es necesario aprender el parámetro
x – clave
y – valor
f(x) – correspondiente a lo que se va a consultar
(x, y) – par clave-valor (candidato)
agrupación promedio: la razón por la que es el más simple la solución es porque no necesita preocuparse por lo que está buscando (es decir, x en f (x)), solo necesita sumar y promediar y sin pensar

Regresión del kernel de Nadaraya-Watson:

Núcleo: función K, que se puede considerar como una función para medir la distancia entre x y xi
. El nuevo valor dado se compara con datos similares, y luego los valores de valor correspondientes a estos datos se ponderan y se suman para obtener el consulta final), por lo que no hay necesidad de aprender parámetros

Elección de K: núcleo gaussiano
inserte la descripción de la imagen aquí

u: representa la distancia entre x y xi
exp: la función es cambiar el resultado final a un número mayor que 0
softmax: obtiene un número entre 0 y 1 como peso
Agrega una w aprendible sobre la base de la fórmula anterior:
inserte la descripción de la imagen aquí

Resumir

1. La psicología cree que las personas eligen los puntos de atención a través de señales aleatorias e involuntarias.

2. En el mecanismo de atención, la entrada se selecciona de manera sesgada a través de consulta (pista aleatoria) y clave (pista no aleatoria), que generalmente se puede escribir como

inserte la descripción de la imagen aquí

La clave de f(x) y todas las claves de pistas involuntarias se calculan sobre la distancia (α(x, xi), normalmente llamado peso de atención), que se utilizan respectivamente como el peso de todos los valores.Este no es un concepto nuevo
Los mecanismos de atención no paramétricos existen desde los años 60

Libros de texto (indicadores de atención)

Dado que la economía estudia la asignación de recursos escasos, las personas se encuentran en la era de la "economía de la atención", es decir, la atención humana se considera un bien intercambiable, limitado, valioso y escaso. También se han desarrollado muchos modelos de negocios para aprovechar esto: en los servicios de transmisión de música o video, las personas consumen atención en los anuncios o pagan para ocultarlos; para crecer en el mundo de los juegos en línea, las personas consumen atención en las batallas de juegos , ayudando así a atraer nuevos jugadores, o pagar para volverse poderosos al instante. En definitiva, la atención no es gratuita.

La atención es escasa, pero no hay mucha información en el entorno que interfiera con la atención. Por ejemplo, el sistema nervioso visual humano recibe alrededor de 1 0 8 10^8 por segundo1 08 bits de información, que está mucho más allá de lo que el cerebro puede procesar por completo. Afortunadamente, nuestros antepasados ​​han aprendido de la experiencia (también conocida como datos) que "no todas las entradas de los sentidos son iguales". A lo largo de la historia humana, esta capacidad de dirigir la atención solo a un pequeño subconjunto de información de interés ha permitido que el cerebro humano asigne de manera más inteligente los recursos para sobrevivir, crecer y socializar, como detectar depredadores, encontrar comida y parejas.

1 Señales de atención en biología

¿Cómo se aplica la atención al mundo visual? Comienza con un marco que es muy popular hoy en día 双组件(two-component): la aparición de este marco se remonta a la década de 1890 de William James, a quien se considera el "padre de la psicología estadounidense". En este marco, los sujetos fundamentan 非自主性提示y 自主性提示dirigen selectivamente el foco de atención.

Las señales involuntarias se basan en la prominencia y la visibilidad de los objetos en el entorno. Imagina si tenemos cinco artículos frente a nosotros: un periódico, un trabajo de investigación, una taza de café, un cuaderno y un libro, como la imagen de abajo. Todos los productos de papel están impresos en blanco y negro excepto las tazas de café que son rojas. En otras palabras, esta taza de café es prominente y llamativa en este entorno visual, atrayendo involuntariamente la atención de las personas. Así que ponemos la vista más aguda en el café, como se muestra en la imagen.
inserte la descripción de la imagen aquí
Después de tomar café, nos emocionamos y queremos leer un libro, así que giramos la cabeza, reenfocamos los ojos y leemos un libro, como se muestra en la imagen a continuación. A diferencia de la selección causada por la prominencia en la imagen de arriba, el libro de selección está controlado por la cognición y la conciencia en este momento, por lo que la atención será más cautelosa cuando ayude a la selección basada en indicaciones autónomas. Empujado por la voluntad subjetiva del sujeto, el poder de elección es más fuerte.
inserte la descripción de la imagen aquí

2 Consultas, claves y valores

Las señales de atención autónomas y no autónomas explican la forma de la atención humana. Veamos cómo usar estas dos señales de atención para diseñar el marco del mecanismo de atención con redes neuronales.

Primero, considere una situación relativamente simple usando solo señales involuntarias. Para sesgar la selección hacia la entrada sensorial, uno puede simplemente usar capas paramétricas totalmente conectadas, o incluso capas de agrupación máxima no paramétrica o capas de agrupación promedio.

Por lo tanto, "ya sea que se incluyan sugerencias de autonomía" distingue los mecanismos de atención de las capas totalmente conectadas o de agrupación. En el contexto de los mecanismos de atención, las señales autónomas se denominan 查询(query). Ante cualquier consulta, el mecanismo de atención 注意力汇聚(attention pooling)guía la selección hacia 感官输入(entradas sensoriales, como representaciones de características intermedias) mediante . En el mecanismo de atención, estas entradas sensoriales se denominan 值(value). Interpretado de manera más coloquial, cada valor se 键(key)empareja con un , que se puede imaginar como una señal involuntaria para la entrada sensorial. Como se muestra, la agrupación de atención se puede diseñar de tal manera que una consulta determinada (señales autónomas) coincida con una clave (señales involuntarias), lo que conduce al mejor valor de coincidencia (entrada sensorial).
inserte la descripción de la imagen aquí
Dado el predominio del marco mencionado anteriormente en la figura, los modelos bajo este marco serán el centro de este capítulo. Sin embargo, existen muchas alternativas al diseño de mecanismos de atención. Por ejemplo, es posible diseñar un modelo de atención no diferenciable que se pueda entrenar mediante métodos de aprendizaje por refuerzo (Mnih et al., 2014).

3 Visualización de la Atención

La capa de agrupación promedio se puede ver como un promedio ponderado de las entradas, donde cada entrada tiene el mismo peso. De hecho, la agrupación de atención da como resultado una suma de promedios ponderados, donde los pesos se calculan a través de diferentes claves para una consulta determinada.

import torch
from d2l import torch as d2l

Para visualizar los pesos de atención, show_heatmapses necesario definir una función. La forma de su entrada matriceses (número de filas para mostrar, número de columnas para mostrar, número de consultas, número de claves).

#@save
def show_heatmaps(matrices, xlabel, ylabel, titles=None, figsize=(2.5, 2.5),
                  cmap='Reds'):
    """显示矩阵热图"""
    d2l.use_svg_display()
    num_rows, num_cols = matrices.shape[0], matrices.shape[1]
    fig, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize,
                                 sharex=True, sharey=True, squeeze=False)
    for i, (row_axes, row_matrices) in enumerate(zip(axes, matrices)):
        for j, (ax, matrix) in enumerate(zip(row_axes, row_matrices)):
            pcm = ax.imshow(matrix.detach().numpy(), cmap=cmap)
            if i == num_rows - 1:
                ax.set_xlabel(xlabel)
            if j == 0:
                ax.set_ylabel(ylabel)
            if titles:
                ax.set_title(titles[j])
    fig.colorbar(pcm, ax=axes, shrink=0.6);

Usemos un ejemplo simple para demostrarlo. En este ejemplo, el peso de atención es 1 solo si la consulta y la clave son las mismas, y 0 en caso contrario.

attention_weights = torch.eye(10).reshape((1, 1, 10, 10))
show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')

producción:
inserte la descripción de la imagen aquí

Los capítulos posteriores a menudo llamarán show_heatmapsfunciones para mostrar los pesos de atención.

4 Resumen

  • La atención humana es un recurso finito, valioso y escaso.

  • Los sujetos dirigen la atención selectivamente usando señales involuntarias y voluntarias. El primero se basa en la prominencia, el segundo en la conciencia.

  • La diferencia entre el mecanismo de atención y la capa totalmente conectada o la capa de agrupación se debe a la adición de sugerencias autónomas.

  • El mecanismo de atención difiere de las capas totalmente conectadas o de las capas agrupadas debido a la inclusión de señales autónomas.

  • El mecanismo de atención sesga la selección hacia los valores (entradas sensoriales), que contienen consultas (pistas autónomas) y claves (pistas involuntarias), a través de la agrupación atencional. Las claves y los valores son pares.

  • Es factible visualizar los pesos de atención entre consultas y claves.

Libro de texto (Atención conjunta: regresión del núcleo de Nadaraya-Watson)

La sección anterior presentó los componentes principales del mecanismo de atención bajo el marco: Las interacciones entre consultas (señales voluntarias) y claves (señales involuntarias) forman grupos de atención; los grupos de atención agregan selectivamente valores (entradas sensoriales) para generar el resultado final. Esta sección presenta más detalles sobre la atención compartida para obtener una comprensión de alto nivel de cómo funciona el mecanismo de atención en la práctica. Específicamente, el modelo de regresión kernel de Nadaraya-Watson propuesto en 1964 es un ejemplo simple pero completo que se puede usar para demostrar el aprendizaje automático con mecanismos de atención.

import torch
from torch import nn
from d2l import torch as d2l

1 Generar conjunto de datos

n_train = 50  # 训练样本数
x_train, _ = torch.sort(torch.rand(n_train) * 5)   # 排序后的训练样本

def f(x):
    return 2 * torch.sin(x) + x**0.8

y_train = f(x_train) + torch.normal(0.0, 0.5, (n_train,))  # 训练样本的输出
x_test = torch.arange(0, 5, 0.1)  # 测试样本
y_truth = f(x_test)  # 测试样本的真实输出
n_test = len(x_test)  # 测试样本数
n_test

producción

50

La siguiente función trazará todas las muestras de entrenamiento (las muestras están representadas por círculos), la función de generación de datos reales ff sin el término de ruidof (etiquetada como "Verdad") y la función de predicción aprendida (etiquetada como "Pred").

def plot_kernel_reg(y_hat):
    d2l.plot(x_test, [y_truth, y_hat], 'x', 'y', legend=['Truth', 'Pred'],
             xlim=[0, 5], ylim=[-1, 5])
    d2l.plt.plot(x_train, y_train, 'o', alpha=0.5);

2 agrupación promedio

Usa primero el estimador más simple para resolver el problema de regresión. Calcule el promedio de todos los valores de salida de la muestra de entrenamiento en función de la agrupación media:
f ( x ) = 1 n ∑ i = 1 nyi , f(x) = \frac{1}{n}\sum_{i=1}^ n y_i,f ( x )=norte1yo = 1nyyo,
como se muestra en la figura a continuación, este estimador no es lo suficientemente inteligente. función realfff ("Verdad") y la función de predicción ("Pred") son muy diferentes.

y_hat = torch.repeat_interleave(y_train.mean(), n_test)
plot_kernel_reg(y_hat)

producción:
inserte la descripción de la imagen aquí

3 Agrupación de atención no paramétrica

Obviamente, la agrupación promedio ignora la entrada xi x_iXyo. Así que a Nadaraya y Watson se les ocurrió una mejor idea para generar yi y_i de acuerdo con la posición de la entradayyoPesar:

f ( x ) = ∑ yo = 1 norte K ( x − xi ) ∑ j = 1 norte K ( x − xj ) yi ( 10.2.3 ) f(x) = \sum_{i=1}^n \frac{ K(x - x_i)}{\sum_{j=1}^n K(x - x_j)} y_i \qquad(10.2.3)f ( x )=yo = 1nj = 1nk ( xXj)k ( xXyo)yyo( 10.2.3 )

donde KKK es el núcleo. El estimador descrito por la Ecuación (10.2.3) se llamaNadaraya-Watson核回归(Nadaraya-Watson kernel regression). Los detalles de la función kernel no se discutirán aquí, pero inspirados por esto, podemos reescribir (10.2.3) desde la perspectiva del marco del mecanismo de atención y convertirse en una fórmula más general注意力汇聚(attention pooling):
f ( x ) = ∑ i = 1 n α ( x , xi ) yi ( 10.2.4 ) f(x) = \sum_{i=1}^n \alpha(x, x_i) y_i \qquad(10.2.4)f ( x )=yo = 1nun ( x ,Xyo) yyo( 10.2.4 )
dondexxx es la respuesta,( xi , yi ) (x_i, y_i)( Xyo,yyo) son pares clave-valor. Comparando (10.2.4) y (10.2.2), la concentración de atención esyi y_iyyopeso promedio. consultará xxx y clavexi x_iXyoLa relación entre se modela como 注意力权重(attention weight), como se muestra en (10.2.4), este peso se le asignará a cada valor correspondiente yi y_iyyo. Para cualquier consulta, el modelo tiene una distribución de probabilidad válida sobre todos los pares clave-valor de pesos de atención: no son negativos y suman 1.

Para comprender mejor la agrupación de la atención, considere uno 高斯核(Gaussian kernel), definido como:

K ( tu ) = 1 2 π Exp ⁡ ( − tu 2 2 ) ( 10.2.5 ) K(u) = \frac{1}{\sqrt{2\pi}} \exp(-\frac{u^2 {2})\qquad (10.2.5)K ( )=14:00 _ 1exp ( -2tu2)( 10.2.5 )

Sustituyendo el núcleo gaussiano en (10.2.4) y (10.2.3) se obtiene:

F ( X ) = ∑ yo = 1 norte α ( X , xi ) yi = ∑ yo = 1 norte Exp ⁡ ( − 1 2 ( X − xi ) 2 ) ∑ j = 1 norte Exp ⁡ ( − 1 2 ( X − xj ) 2 ) yi = ∑ yo = 1 nsoftmax ( - 1 2 ( X - xi ) 2 ) yi . ( 10.2.6 ) \begin{dividir}\begin{alineado} f(x) &=\sum_{i=1}^n \alpha(x, x_i) y_i\\ &= \sum_{i=1}^ n \frac{\exp\left(-\frac{1}{2}(x - x_i)^2\right)}{\sum_{j=1}^n \exp\left(-\frac{1} {2}(x - x_j)^2\right)} y_i \\&= \sum_{i=1}^n \mathrm{softmax}\left(-\frac{1}{2}(x - x_i) ^2\derecha) y_i. \end{alineado}\end{dividido} \qquad (10.2.6)f ( x )=yo = 1nun ( x ,Xyo) yyo=yo = 1nj = 1nExp( -21( XXj)2 )Exp( -21( XXyo)2 )yyo=yo = 1nsoftmax( -21( XXyo)2 )yyo.( 10.2.6 )

En (10.2.6), si una clave xi x_iXyoCuanto más cerca de una consulta dada xxx , luego asigne a esta clave el valor correspondienteyi y_iyyoCuanto mayor es el peso de la atención, más "atención obtenida".

Vale la pena señalar que la regresión kernel de Nadaraya-Watson es un modelo no paramétrico. Por lo tanto, (10.2.6) es 非参数的注意力汇聚(nonparametric attention pooling)el modelo. A continuación, trazaremos predicciones basadas en este modelo de agrupación de atención no paramétrico. A partir de los resultados graficados, encontrará que la línea de predicción del nuevo modelo es suave y más cercana a la verdad que la predicción agrupada promedio.

# X_repeat的形状:(n_test,n_train),
# 每一行都包含着相同的测试输入(例如:同样的查询)
X_repeat = x_test.repeat_interleave(n_train).reshape((-1, n_train))
# x_train包含着键。attention_weights的形状:(n_test,n_train),
# 每一行都包含着要在给定的每个查询的值(y_train)之间分配的注意力权重
attention_weights = nn.functional.softmax(-(X_repeat - x_train)**2 / 2, dim=1)
# y_hat的每个元素都是值的加权平均值,其中的权重是注意力权重
y_hat = torch.matmul(attention_weights, y_train)
plot_kernel_reg(y_hat)

Salida:
inserte la descripción de la imagen aquí
Ahora mire los pesos de atención. Aquí la entrada de los datos de prueba es equivalente a la consulta, y la entrada de los datos de entrenamiento es equivalente a la clave. Dado que ambas entradas están ordenadas, se puede observar que cuanto más cerca esté el par de claves de consulta, mayor será el peso de atención del grupo de atención.

d2l.show_heatmaps(attention_weights.unsqueeze(0).unsqueeze(0),
                  xlabel='Sorted training inputs',
                  ylabel='Sorted testing inputs')

producción
inserte la descripción de la imagen aquí

4 Agrupación de atención con parámetros

Ventajas de la regresión kernel no paramétrica de Nadaraya-Watson 一致性(consistency): si hay suficientes datos, el modelo convergerá al resultado óptimo. Sin embargo, podemos integrar fácilmente parámetros aprendibles en la agrupación de atención.

Por ejemplo, ligeramente diferente de (10.2.6), en la siguiente consulta xxx y clavexi x_iXyoLa distancia entre multiplicado por el parámetro aprendible www :

F ( X ) = ∑ yo = 1 norte α ( X , xi ) yi = ∑ yo = 1 norte Exp ⁡ ( − 1 2 ( ( X − xi ) w ) 2 ) ∑ j = 1 norte Exp ⁡ ( − 1 2 ( ( X - xj ) w ) 2 ) yi = ∑ yo = 1 nsoftmax ( - 1 2 ( ( X - xi ) w ) 2 ) yi . ( 10.2.7 ) \begin{dividir}\begin{alineado}f(x) &= \sum_{i=1}^n \alpha(x, x_i) y_i \\&= \sum_{i=1}^ n \frac{\exp\left(-\frac{1}{2}((x - x_i)w)^2\right)}{\sum_{j=1}^n \exp\left(-\frac {1}{2}((x - x_j)w)^2\right)} y_i \\&= \sum_{i=1}^n \mathrm{softmax}\left(-\frac{1}{2 }((x - x_i)w)^2\right) y_i.\end{alineado}\end{dividido} \qquad (10.2.7)f ( x )=yo = 1nun ( x ,Xyo) yyo=yo = 1nj = 1nExp( -21(( xXj) w )2 )Exp( -21(( xXyo) w )2 )yyo=yo = 1nsoftmax( -21(( xXyo) w )2 )yyo.( 10.2.7 )
El resto de esta sección aprende los parámetros de concentración de la atención mediante el entrenamiento de este modelo (10.2.7).

4.1 Multiplicación de matrices por lotes

Para calcular de manera más eficiente la atención de pequeños lotes de datos, podemos aprovechar la multiplicación de matriz de lotes proporcionada en el marco de desarrollo de aprendizaje profundo.

Supongamos que el primer mini lote contiene nnn matricesX 1 , … , X n \mathbf{X}_1,\ldots, \mathbf{X}_nX1,,Xn, la forma es a × ba\times ba×b , el segundo mini lote contienennn rangoY 1 , ... , Y n \mathbf{Y}_1, \ldots, \mathbf{Y}_nY1,,Yn, la forma es b × cb\times cb×do . Su multiplicación matricial por lotes producennn rangoX 1 Y 1 , ... , X n Y n \mathbf{X}_1\mathbf{Y}_1, \ldots, \mathbf{X}_n\mathbf{Y}_nX1Y1,,XnYn, la forma es a × ca\times ca×do . Entonces, suponiendo que dos tensores tienen la forma( n , a , b ) (n,a,b)( n ,un ,b ) y( n , b , c ) (n,b,c)( n ,b ,c ) , su salida de multiplicación de matrices por lotes tiene forma( n , a , c ) (n,a,c)( n ,un ,c )

X = torch.ones((2, 1, 4))
Y = torch.ones((2, 4, 6))
torch.bmm(X, Y).shape

producción

torch.Size([2, 1, 6])

En el contexto de los mecanismos de atención, podemos usar la multiplicación de matrices de mini lotes para calcular promedios ponderados en mini lotes de datos.

weights = torch.ones((2, 10)) * 0.1
values = torch.arange(20.0).reshape((2, 10))
torch.bmm(weights.unsqueeze(1), values.unsqueeze(-1))

producción

tensor([[[ 4.5000]],

        [[14.5000]]])

4.2 Definir el modelo

Basado en la agrupación de atención paramétrica en (10.2.7), utilizando la multiplicación de matriz de mini lotes, la versión paramétrica de la regresión kernel de Nadaraya-Watson se define como:

class NWKernelRegression(nn.Module):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.w = nn.Parameter(torch.rand((1,), requires_grad=True))

    def forward(self, queries, keys, values):
        # queries和attention_weights的形状为(查询个数,“键-值”对个数)
        queries = queries.repeat_interleave(keys.shape[1]).reshape((-1, keys.shape[1]))
        self.attention_weights = nn.functional.softmax(
            -((queries - keys) * self.w)**2 / 2, dim=1)
        # values的形状为(查询个数,“键-值”对个数)
        return torch.bmm(self.attention_weights.unsqueeze(1),
                         values.unsqueeze(-1)).reshape(-1)

4.3 Formación

A continuación, transforme el conjunto de datos de entrenamiento en claves y valores para entrenar el modelo de atención. En el modelo de agrupación de atención con parámetros, la entrada de cualquier muestra de entrenamiento se calculará con los pares "clave-valor" de todas las muestras de entrenamiento excepto ella misma, para obtener su salida prevista correspondiente.

# X_tile的形状:(n_train,n_train),每一行都包含着相同的训练输入
X_tile = x_train.repeat((n_train, 1))
# Y_tile的形状:(n_train,n_train),每一行都包含着相同的训练输出
Y_tile = y_train.repeat((n_train, 1))
# keys的形状:('n_train','n_train'-1)
keys = X_tile[(1 - torch.eye(n_train)).type(torch.bool)].reshape((n_train, -1))
# values的形状:('n_train','n_train'-1)
values = Y_tile[(1 - torch.eye(n_train)).type(torch.bool)].reshape((n_train, -1))

Al entrenar un modelo de atención agrupada con parámetros, use una función de pérdida al cuadrado y un descenso de gradiente estocástico.

net = NWKernelRegression()
loss = nn.MSELoss(reduction='none')
trainer = torch.optim.SGD(net.parameters(), lr=0.5)
animator = d2l.Animator(xlabel='epoch', ylabel='loss', xlim=[1, 5])

for epoch in range(5):
    trainer.zero_grad()
    l = loss(net(x_train, keys, values), y_train)
    l.sum().backward()
    trainer.step()
    print(f'epoch {
      
      epoch + 1}, loss {
      
      float(l.sum()):.6f}')
    animator.add(epoch + 1, float(l.sum()))

Salida:
inserte la descripción de la imagen aquí
como se muestra a continuación, después de entrenar el modelo de agrupación de atención con parámetros, se puede encontrar que: Al intentar ajustar los datos de entrenamiento ruidosos, los resultados de la predicción dibujan una línea que no es tan suave como el modelo no paramétrico anterior.

# keys的形状:(n_test,n_train),每一行包含着相同的训练输入(例如,相同的键)
keys = x_train.repeat((n_test, 1))
# value的形状:(n_test,n_train)
values = y_train.repeat((n_test, 1))
y_hat = net(x_test, keys, values).unsqueeze(1).detach()
plot_kernel_reg(y_hat)

Salida
inserte la descripción de la imagen aquí
¿Por qué el nuevo modelo es menos suave? Echemos un vistazo al trazado de los resultados de salida: en comparación con el modelo de agrupación de atención no paramétrico, después de agregar parámetros de aprendizaje al modelo parametrizado, la curva se vuelve menos suave en el área donde el peso de la atención es mayor.

d2l.show_heatmaps(net.attention_weights.unsqueeze(0).unsqueeze(0),
                  xlabel='Sorted training inputs',
                  ylabel='Sorted testing inputs')

producción
inserte la descripción de la imagen aquí

5 Resumen

  • La regresión kernel de Nadaraya-Watson es un paradigma de aprendizaje automático con un mecanismo de atención.

  • La agrupación de atención para la regresión del kernel de Nadaraya-Watson es un promedio ponderado de los resultados en los datos de entrenamiento. Desde una perspectiva de atención, el peso de atención asignado a cada valor depende de una función que toma como entrada la clave y la consulta correspondientes al valor.

  • La agrupación de atención se puede dividir en no paramétrica y paramétrica.

Supongo que te gusta

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