[PYTHON] [Apprentissage automatique] Classification de texte à l'aide du modèle Transformer (classificateur basé sur l'attention)

objectif

Modifier une partie du "Modèle Transformer pour la compréhension du langage" dans le didacticiel Tensorflow, Pour pouvoir effectuer des tâches de classification de texte.

Notebook J'ai téléchargé mon notebook sur Github. transformer_classify

Commentaire

Les principales différences par rapport au didacticiel sont répertoriées ci-dessous.

Les données utilisées sont le corpus d'actualités de Liveoor

――La tâche de classification introduite dans cet article est supposée être la classification des documents japonais lorsqu'elle est utilisée pour les entreprises. «Pour cette raison, nous avons utilisé le corpus d'actualités liveoor, qui est souvent utilisé dans l'apprentissage automatique.

Utilisez Human pour séparer les phrases

«Nous utilisons Human, qui a une bonne réputation pour écrire en japonais. --Cliquez ici pour le Dockerfile qui automatise le téléchargement et l'installation de Juman (https://github.com/raidenn-gh/dockerfile_tf2_py3_jpt_juman)

Suppression du décodeur

--Decoder est un mécanisme qui reçoit la sortie de Encoder et la convertit en un autre vecteur de langue.

Correction du transformateur

transformer_classify.ipynb


NUMLABELS = 9

class Transformer(tf.keras.Model):
  def __init__(self, num_layers, d_model, num_heads, dff, input_vocab_size, 
               target_vocab_size, pe_input, pe_target, rate=0.1):
    super(Transformer, self).__init__()

    self.encoder = Encoder(num_layers, d_model, num_heads, dff, 
                           input_vocab_size, pe_input, rate)
    self.dense1 = tf.keras.layers.Dense(d_model, activation='tanh')
    self.dropout1 = tf.keras.layers.Dropout(rate)   
    self.final_layer = tf.keras.layers.Dense(NUMLABELS, activation='softmax')
        
  def call(self, inp, tar, training, enc_padding_mask):

    enc_output = self.encoder(inp, training, enc_padding_mask)  # (batch_size, inp_seq_len, d_model)
    enc_output = self.dense1(enc_output[:,0])
    enc_output = self.dropout1(enc_output, training=training)
    final_output = self.final_layer(enc_output )  # (batch_size, tar_seq_len, target_vocab_size)
    
    return final_output

Fonction de perte

transformer_classify.ipynb


loss_object = tf.keras.losses.SparseCategoricalCrossentropy()

def loss_function(labels, pred):
  loss_ = loss_object(labels, pred)
  return loss_

Ajout de val_step

--Val_step utilisant des données valides est ajouté après train_step. --Parce qu'il s'agit d'une validation, traininng est défini sur false pour ignorer la couche d'exclusion.

résultat

Je n'ai pas pu obtenir une très bonne précision.

img.png

URL de référence

tf2_classify BERT with SentencePiece for Japanese text. Faire et comprendre Transformer / Attention Transformer model for language understanding

Recommended Posts

[Apprentissage automatique] Classification de texte à l'aide du modèle Transformer (classificateur basé sur l'attention)
[Apprentissage automatique] Classification des sujets LDA à l'aide de scikit-learn
Classification de l'apprentissage automatique
Apprentissage automatique avec des images de catégorie Caffe -1 à l'aide du modèle de référence
Modèle d'apprentissage automatique prenant en compte la maintenabilité
Machine learning supervisé (classification / régression)
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
Procédure d'apprentissage automatique de base: ④ Apprentissage du classificateur + apprentissage d'ensemble
Classification et régression dans l'apprentissage automatique
Analyse inverse du modèle d'apprentissage automatique
Créer un modèle d'apprentissage à l'aide de MNIST
Développement d'applications à l'aide d'Azure Machine Learning
J'ai créé un classificateur de visage Dir en gray en utilisant TensorFlow --⑦ Modèle d'apprentissage
Je souhaite créer un service d'apprentissage automatique sans programmation!
<Subject> Machine learning Chapitre 3: Modèle de régression logistique
Prévision du cours des actions à l'aide de l'apprentissage automatique (scikit-learn)
[Apprentissage automatique] Prédiction FX à l'aide de l'arbre de décision
Modèle de reconnaissance d'image utilisant l'apprentissage profond en 2016
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau
<Cours> Machine learning Chapitre 1: Modèle de régression linéaire
Résumé de la classification et de la mise en œuvre des algorithmes d'apprentissage automatique
<Cours> Machine learning Chapitre 2: Modèle de régression non linéaire
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
Essayons la traduction automatique neuronale avec Transformer
[Apprentissage automatique] Analyse de régression à l'aide de scicit learn
Classification EV3 x Pyrhon Machine Learning Partie 3
Apprentissage automatique
J'ai essayé d'implémenter diverses méthodes d'apprentissage automatique (modèle de prédiction) en utilisant scicit-learn
Création d'un modèle d'estimation de position pour la compétition d'intelligence humaine de loup à l'aide de l'apprentissage automatique
Classification des images de guitare par apprentissage automatique Partie 1
Astuces de fourniture de données utilisant deque dans l'apprentissage automatique
Algorithme EM modèle mixte gaussien [apprentissage automatique statistique]
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau Partie 2
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau Partie 3
Classer les informations liées à l'apprentissage automatique par modèle de sujet
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
[Apprentissage automatique] Extraire des mots similaires mécaniquement en utilisant WordNet
Raisonnement causal utilisant l'apprentissage automatique (organisation des méthodes de raisonnement causal)