Un libro para comprender el resumen de BERT (práctica)

Organizado a principios de diciembre de 2020, dedicado a ustedes que no están dispuestos a ser normales.

Para obtener más conocimientos sobre el aprendizaje automático, consulte:  https://blog.csdn.net/weixin_45316122/article/details/110865833

 

Truco: este artículo es la extracción de conocimientos de "Un libro para comprender BERT (práctica)"

 

 

Tabla de contenido

1. ¿Qué es BERT?

Dos, instalación BERT

Tres, modelo de preentrenamiento

Cuarto, ejecute el ajuste fino

Cinco, clase BertModel

6. Entrenamiento previo

Siete, prueba de rendimiento


 

1. ¿Qué es BERT?

 

BERT es un método de preentrenamiento de representaciones de lenguaje, lo que significa que entrenamos un modelo de "comprensión del lenguaje" de propósito general en un corpus de texto grande (como Wikipedia), y luego usamos ese modelo para tareas posteriores de PNL que nos interesan (como la pregunta respondiendo). BERT supera a los métodos anteriores, ya que es la primera  sin supervisiónprofundamente bidireccional  sistema para PNL formación previa.

划重点: el primero  sin supervisiónprofundamente bidireccional  sistema para PNL formación previa.

Los métodos de preentrenamiento se pueden dividir aproximadamente en modelos de bolsa de palabras sin contexto, etc. y métodos relacionados con el contexto.

El método de contacto con el contexto se puede dividir en contexto de contacto unidireccional y bidireccional. Los modelos de bolsa de palabras como NNLM, Skip-Gram, Glove, etc., son un modelo superficial de una sola capa que no se puede contextualizar;

LSTM y Transformer son modelos típicos de redes profundas que se pueden contextualizar.

 

 

 

 

 

Hay dos etapas para usar BERT: entrenamiento previo y ajuste fino.

 

Dos, instalación BERT

Tres, modelo de preentrenamiento

Google proporciona un modelo previamente entrenado (punto de control)

Actualmente, existen 3 tipos de modelos en inglés, chino y multilingües:

Como:

Sin caja significa que se vuelve minúscula durante el preprocesamiento, mientras que en caja se mantiene en mayúscula.

Elija la versión de acuerdo con el problema de idioma que está tratando. Para chino, puede elegir el modelo WWM del Instituto de Tecnología de Harbin

 

Cuarto, ejecute el ajuste fino

En la mayoría de los casos, no hay necesidad de volver a entrenar. Lo que tenemos que hacer es realizar un ajuste fino de acuerdo con tareas específicas, por lo que primero presentamos el ajuste fino

Ejecute el siguiente comando para realizar un ajuste fino

python run_classifier.py \
	--task_name=MRPC \
	--do_train=true \
	--do_eval=true \
	--data_dir=$GLUE_DIR/MRPC \
	--vocab_file=$BERT_BASE_DIR/vocab.txt \
	--bert_config_file=$BERT_BASE_DIR/bert_config.json \
	--init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
	--max_seq_length=128 \
	--train_batch_size=8 \
	--learning_rate=2e-5 \
	--num_train_epochs=3.0 \
	--output_dir=/tmp/mrpc_output/

Aquí hay una breve explicación del significado de los parámetros, el lector puede comprender su significado con más detalle en la siguiente lectura de código.

  • task_name El nombre de la tarea, aquí ajustamos la tarea MRPC
  • si do_train está entrenando, aquí está True
  • Si do_eval se verifica después del entrenamiento, aquí es True
  • directorio de datos de entrenamiento data_dir, no es necesario modificarlo después de configurar las variables de entorno; de lo contrario, complete la ruta absoluta
  • diccionario de modelos de vocab_file BERT
  • bert_config_file Archivo de configuración del modelo BERT
  • init_checkpoint Parámetros de inicialización de ajuste fino
  • max_seq_length La longitud máxima de la secuencia de Token, aquí es 128
  • train_batch_size tamaño de lote, para una GPU normal de 8 GB, el tamaño máximo de lote solo puede ser 8, y cuanto más grande sea OOM
  • tasa de aprendizaje
  • num_train_epochs número de épocas de entrenamiento, ajustado según la tarea
  • output_dir El directorio de almacenamiento del modelo entrenado

Descargue el modelo de preentrenamiento, configure los parámetros relevantes y la ejecución finaliza (proceso de ajuste).

 

 

 

 

 

https://zhuanlan.zhihu.com/p/112235454 ¿Cómo usar BERT rápidamente?

 

 

Cinco, clase BertModel

  # 假设输入已经分词并且变成WordPiece的id了 
  # 输入是[2, 3],表示batch=2,max_seq_length=3
  input_ids = tf.constant([[31, 51, 99], [15, 5, 0]])
  # 第一个例子实际长度为3,第二个例子长度为2
  input_mask = tf.constant([[1, 1, 1], [1, 1, 0]])
  # 第一个例子的3个Token中前两个属于句子1,第三个属于句子2
  # 而第二个例子的第一个Token属于句子1,第二个属于句子2(第三个是padding)
  token_type_ids = tf.constant([[0, 0, 1], [0, 1, 0]])
  
  # 创建一个BertConfig,词典大小是32000,Transformer的隐单元个数是512
  # 8个Transformer block,每个block有6个Attention Head,全连接层的隐单元是1024
  config = modeling.BertConfig(vocab_size=32000, hidden_size=512,
		  num_hidden_layers=8, num_attention_heads=6, intermediate_size=1024)
 
  # 创建BertModel
  model = modeling.BertModel(config=config, is_training=True,
		  input_ids=input_ids, input_mask=input_mask, token_type_ids=token_type_ids)
  
  # label_embeddings用于把512的隐单元变换成logits
  label_embeddings = tf.get_variable(...)
  # 得到[CLS]最后一层输出,把它看成句子的Embedding(Encoding)
  pooled_output = model.get_pooled_output()
  # 计算logits
  logits = tf.matmul(pooled_output, label_embeddings)

Hay comentarios justo debajo de bertmodel

transformer_model,attention_layer  分别实现transformer和self attention 

6. Entrenamiento previo

Aunque Google proporciona un modelo de preentrenamiento, es posible que necesitemos realizar un preentrenamiento a través de Mask LM y Next Sentence Prediction.

Si tenemos datos en algunos campos, también podemos realizar Pretraining, pero podemos utilizar el punto de control que nos proporciona Google como valor inicial.

 

create_pretraining_data.py ------------------ create_training_instances

Siete, prueba de rendimiento

https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/84351397   Dos líneas de código reproducen vector de palabra de vector de oración Google BERT

 

 

 

Texto sagrado: https://blog.csdn.net/jiaowoshouzi/article/details/89388794

 

El uso real de bert https://www.cnblogs.com/jiangxinyang/p/10241243.html       Tengo tiempo para leerlos todos

 

truco: aprende bert y albert con los siguientes dos para terminar

https://github.com/jiangxinyang227/bert-for-task/tree/master/albert_task/ner_task

https://github.com/jiangxinyang227/bert-for-task    

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_45316122/article/details/110532563
Recomendado
Clasificación