[PYTHON] Concernant le transformateur

Concernant le transformateur (résumé approximatif)

・ Qu'est-ce qu'un transformateur? Récemment, j'étudiais le traitement du langage naturel et j'ai appris la transformation, alors je l'ai résumé un peu. J'étudie, alors je vous serais reconnaissant si vous pouviez signaler des erreurs. Un transformateur est un appareil qui entre une chaîne de caractères dans le transformateur, le convertit et génère une autre chaîne de caractères. Par exemple Quand je saisis la chaîne "Je suis John Cena." Dans le traducteur, c'est comme "Je suis John Sina".

Concernant l'analyse morphologique La chaîne doit d'abord être décomposée en mots. Dans le cas de l'anglais, il n'est pas nécessaire de diviser la phrase en mots car la phrase est divisée en mots comme "Je suis John Cena.", Mais dans le cas du japonais, la phrase est comme "Je suis John Cena." Non séparé par des mots. Par conséquent, une analyse morphologique est effectuée pour le décomposer en unités de mots. Pour faire simple, l'analyse morphologique consiste à diviser une phrase en mots et à déterminer la partie de chaque élément morphologique. A titre d'exemple concret, lorsque l'analyse morphologique de "Je suis John China.", "" I "," is "," John China "," is "," Il devient "".

Comment gérer les mots? ??

Après avoir décomposé une phrase en mots, la manière dont les mots sont traités est convertie en valeurs numériques. Par exemple, ceci = [0,2, 0,4, 0,5], est = [0,1, 0,7, 0,35]. Ce que ces caractéristiques représentent, ce sont les caractéristiques de chaque mot. Ces [0,2, 0,4, 0,5] et [0,1, 0,7, 0,35] sont appelés vecteurs de mots.

Comment les mots sont-ils convertis en vecteurs de mots ?? En termes simples, toutes les langues naturelles que vous souhaitez analyser sont analysées morphologiquement et les mots qui apparaissent sont collectés. Puis vectorisez les mots comme un encodage à chaud.

Par exemple, si le seul mot qui apparaît dans la phrase que vous souhaitez analyser cette fois est "Je suis John Cena". I = [ 1 , 0 , 0 , 0 ] am = [ 0 , 1 , 0 , 0 ] John Cena = [ 0 , 0 , 1 , 0 ] . = [ 0 , 0 , 0 , 1 ]
Il peut être converti en un vecteur one-hot comme celui-ci. Changez ce vecteur de mot avec un encodeur. En conséquence, le mot peut être changé en un montant de fonction. Le vecteur obtenu en changeant ce vecteur one-hot avec un codeur est appelé un vecteur d'incorporation.

Par exemple I = [1, 0, 0, 0] ⇒ Encodeur ⇒ $ x_1 $ = [0,3, -0,3, 0,6, 2,2]

Ce $ x_1 $ est le vecteur d'intégration

L'idée comme celle-ci est détaillée ici (je l'ai utilisée comme référence) https://ishitonton.hatenablog.com/entry/2018/11/25/200332

Comment gérer les chaînes de caractères? ?? Jusqu'à présent, il était possible de convertir des mots en vecteurs, mais comment la chaîne de caractères est-elle convertie? X = "Je suis John Cena." ⇒ ["I", "am", "John Cena" ",". "](Divisé en mots) ⇒ $ x_1 $, $ x_2 $, $ x_3 $, $ x_4 $ (Convertir le mot en vecteur $ x_n $ est un vecteur incorporant) ⇒ X = [$ x_1 $, $ x_2 $, $ x_3 $, $ x_4 $] Il est ainsi converti en matrice.

Concernant les transformateurs

image.png

Un transformateur renvoie une certaine chaîne de caractères lorsqu'une chaîne de caractères est entrée. Quant au contenu, il se compose de nombreux encodeurs et décodeurs comme le montre la figure ci-dessus. La chaîne de caractères saisie entre d'abord dans l'encodeur. Le contenu de l'encodeur est indiqué ci-dessous image.png

Cette auto-attention examine la relation entre les mots dans la chaîne d'entrée. En outre, la forte relation entre les mots examine la similitude de chaque vecteur de mot. Par conséquent, afin de vérifier la similitude, le produit interne de la matrice doit être vérifié. La transformation est ensuite transformée à l'aide d'un réseau neuronal général.

Le décodeur utilise alors l'entrée du codeur pour prédire le mot suivant. image.png

Cette E-D-attention examine la relation entre l'entrée et la sortie.

Un transformateur rugueux ressemble à ceci. Si vous voulez bien savoir https://qiita.com/omiita/items/07e69aef6c156d23c538

J'ai presque utilisé cela comme référence! Incroyablement facile à comprendre! https://www.youtube.com/watch?v=BcNZRiO0_AE

Recommended Posts

Concernant le transformateur
Concernant Pyston 0.3
[Note] À propos de Tensorflow
Concernant l'API VirusTotal