Qu'est-ce qu'une couche FFN dans un transformeur et pourquoi y a-t-il besoin de non-linéarité entre les blocs d'attention?
sobes.tech IA
Réponse de l'IA
La couche FFN (Feed-Forward Network) dans un transformeur est un réseau neuronal entièrement connecté à deux couches, qui est appliqué séparément à chaque élément de la séquence après la couche d’attention. Sa tâche est d’ajouter un traitement non linéaire supplémentaire et d’accroître la capacité expressive du modèle.
La non-linéarité entre les blocs d’attention est nécessaire pour que le modèle puisse approximer des fonctions et dépendances complexes. L’attention est responsable de la somme pondérée des informations à différentes positions, et la FFN avec une activation non linéaire (par exemple ReLU ou GELU) aide le transformeur à modéliser des motifs plus complexes que de simples combinaisons linéaires.
Exemple de structure d’une couche FFN :
import torch
import torch.nn as nn
class FFN(nn.Module):
def __init__(self, d_model, d_ff):
super().__init__()
self.linear1 = nn.Linear(d_model, d_ff)
self.activation = nn.GELU()
self.linear2 = nn.Linear(d_ff, d_model)
def forward(self, x):
return self.linear2(self.activation(self.linear1(x)))
Ici, d_model est la dimension des vecteurs d’entrée et de sortie, d_ff est la dimension de la couche interne, généralement plus grande que d_model.
Ainsi, la couche FFN avec non-linéarité assure une transformation non linéaire profonde des caractéristiques, ce qui améliore l’apprentissage et la qualité du modèle.