Dans cet article de blog, L'efficacité déraisonnable des réseaux de neurones récurrents , Andrej Karpathy mentionne les orientations futures de l'apprentissage automatique basé sur les réseaux de neurones:
Le concept d'attention est l'innovation architecturale récente la plus intéressante dans les réseaux de neurones. [...] le schéma d'attention douce pour l'adressage de la mémoire est pratique car il maintient le modèle entièrement différenciable, mais malheureusement on sacrifie l'efficacité parce que tout ce qui peut être pris en charge est pris en charge (mais doucement). Considérez cela comme déclarant un pointeur en C qui ne pointe pas vers une adresse spécifique mais définit à la place une distribution entière sur toutes les adresses dans la mémoire entière, et le déréférencement du pointeur renvoie une somme pondérée du contenu pointé (ce qui serait coûteux opération!). Cela a motivé plusieurs auteurs à échanger des modèles d'attention douce contre une attention dure où l'on échantillonne un morceau de mémoire particulier à surveiller (par exemple, une action de lecture/écriture pour une cellule de mémoire au lieu de lire/écrire de toutes les cellules dans une certaine mesure). Ce modèle est nettement plus attrayant sur le plan philosophique, évolutif et efficace, mais malheureusement il n'est pas non plus différenciable.
Je pense que j'ai compris la métaphore du pointeur, mais qu'est-ce que l'attention et pourquoi le dur n'est-il pas différentiable?
J'ai trouvé une explication sur l'attention ici , mais toujours confuse à propos de la partie douce/dure.
Qu'est-ce que l'attention exactement?
Pour pouvoir comprendre cette question, il nous faut plonger un peu dans certains problèmes que l'attention cherche à résoudre. Je pense que l'un des articles fondateurs sur l'attention dure est Modèles récurrents d'attention visuelle et j'encourage le lecteur à parcourir cet article, même s'il ne semble pas entièrement compréhensible au premier abord.
Pour répondre à la question de savoir ce qu'est exactement l'attention, je vais essayer de poser une question différente à laquelle je pense qu'il est plus facile de répondre. Ce qui est, Pourquoi l'attention? . L'article que j'ai lié cherche à répondre à cette question de manière succincte et je vais reproduire une partie du raisonnement ici.
Imaginez que vous avez les yeux bandés et que vous êtes amené à une fête d'anniversaire surprise et que vous venez d'ouvrir les yeux. Que verriez-vous?
Maintenant, quand nous disons que vous voyez l'image, c'est une version plus courte des suivantes plus techniquement correct séquence d'actions, qui est de déplacer vos yeux au fil du temps et de recueillir des informations sur la scène. Vous ne voyez pas chaque pixel de l'image à la fois. Vous assistez à certains aspects de l'image un pas à la fois et agrégez les informations. Même dans une image aussi encombrée par exemple, vous reconnaîtriez votre oncle Bill et votre cousin Sam :). Pourquoi donc? Parce que vous faites attention à certains aspects saillants de l'image actuelle.
C'est exactement le genre de pouvoir que nous voulons donner à nos modèles de réseaux de neurones. Pourquoi? Considérez cela comme une sorte de régularisation. (Cette partie de la réponse fait référence à l'article) Votre modèle de réseau convolutionnel habituel a la capacité de reconnaître les images encombrées, mais comment trouver l'ensemble exact de poids qui sont "bons"? C'est une tâche difficile. En fournissant au réseau une nouvelle fonctionnalité au niveau de l'architecture qui lui permet de assister à différentes parties de l'image de manière séquentielle et d'agréger les informations au fil du temps, nous facilitons ce travail, car maintenant le réseau peut simplement apprendre à ignorer l'encombrement (ou c'est l'espoir).
J'espère que cela répond à la question Qu'est-ce qu'une attention particulière? . Passons maintenant à la nature de sa différentiabilité . Eh bien, rappelez-vous comment nous avons commodément choisi les bons endroits à regarder, tout en regardant la photo d'anniversaire? Comment avons-nous fait ça? Ce processus implique de faire choix qui sont difficiles à représenter en termes de fonction différenciable de l'entrée (image). Par exemple, en fonction de ce que vous avez déjà vu et de l'image, décidez où regarder ensuite. Vous pourriez avoir un réseau de neurones qui produit la réponse ici, mais nous ne connaissons pas la bonne réponse! En fait, il n'y a pas de bonne réponse. Comment devons-nous alors former les paramètres du réseau? L'entraînement du réseau neuronal dépend de manière critique d'une fonction de perte différenciable des entrées. Des exemples de telles fonctions de perte incluent la fonction de perte de vraisemblance logarithmique, la fonction de perte au carré, etc. Mais dans ce cas, nous n'avons pas de réponse correcte sur l'endroit où chercher ensuite. Comment alors définir une perte? C'est là qu'intervient un domaine d'apprentissage automatique appelé apprentissage par renforcement (RL). RL vous permet de faire un gradient dans l'espace des politiques en utilisant des méthodes telles que la méthode de renforcement et les algorithmes de critique d'acteurs.
Qu'est-ce que l'attention douce?
Cette partie de la réponse emprunte à un article qui porte le nom enseigner aux machines à lire et à comprendre . Un problème majeur avec les méthodes RL telles que la méthode de renforcement est qu'elles ont une variance élevée (en termes de gradient de la récompense attendue calculée) qui évolue linéairement avec le nombre d'unités cachées dans votre réseau . Ce n'est pas une bonne chose, surtout si vous allez construire un grand réseau. Par conséquent, les gens essaient de chercher des modèles d'attention différenciables . Tous cela signifie que le terme d'attention et par conséquent la fonction de perte sont une fonction différenciable des entrées et donc tous les gradients existent. Par conséquent, nous pouvons utiliser notre algorithme backprop standard avec l'une des fonctions de perte habituelles pour la formation de notre réseau. qu'est-ce qu'une attention douce?
Dans le contexte du texte, il fait référence à la capacité du modèle à choisir d'associer plus d'importance à certains mots du document vis-à-vis d'autres jetons. Si vous lisez un document et devez répondre à une question basée sur celui-ci, vous concentrer sur certains jetons du document pourrait vous aider à mieux répondre à la question, que de simplement lire chaque jeton comme s'il était tout aussi important. C'est l'idée de base derrière une attention douce dans le texte. La raison pour laquelle il s'agit d'un modèle différenciable est que vous décidez de l'attention à accorder à chaque jeton en fonction uniquement du jeton particulier et de la requête en main. Vous pouvez par exemple représenter les jetons du document et de la requête dans le même espace vectoriel et examiner la similitude produit/cosinus comme une mesure de l'attention à accorder à ce jeton particulier, compte tenu de cette requête. Notez que l'opération de distance cosinus est complètement différentiable par rapport à ses entrées et donc le modèle global finit par être différentiable. Notez que le modèle exact utilisé par l'article diffère et cet argument est juste pour la démonstration, bien que d'autres modèles utilisent un score d'attention basé sur le produit scalaire.