【简单讲解下Fine-tuning BERT,什么是Fine-tuning BERT?】

在这里插入图片描述

🎥博主:程序员不想YY啊
💫CSDN优质创作者,CSDN实力新星,CSDN博客专家
🤗点赞🎈收藏⭐再看💫养成习惯
✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

在这里插入图片描述

🥳Fine-tuning BERT.🔥

🌟Fine-tuning 是自然语言处理领域中的一种常见实践,尤其是在使用像 BERT 这样的预训练语言模型进行特定任务时,BERT(Bidirectional Encoder Representations from Transformers)是 Google 在 2018 年推出的预训练语言模型,它在诸如句子分类、命名实体识别、问题回答等多种自然语言处理任务中取得了领先的性能。

🌟以下是 Fine-tuning BERT 模型的一般步骤:

  1. 💖预训练阶段:BERT 模型是通过在大规模文本语料库(如书籍和维基百科)上预先训练的。这个阶段的目标是让模型学习到深层的语言表示能力。

  2. 💖Fine-tuning 阶段:在这一阶段,BERT 模型会使用针对特定任务的数据集进行二次训练。这允许模型调整其参数以更好地适应特定的任务。例如,如果我们希望在情感分析任务上使用 BERT,那么我们会用包含正面和负面标记的评论来进行 fine-tuning。

  3. 💖数据处理:在 fine-tuning 之前,需要对用于特定任务的数据进行适当的处理。对于 BERT 模型,通常需要添加特殊的标记,如 [CLS](用于分类任务的开始标记)和 [SEP](用于分隔句子的标记)。

  4. 💖模型结构调整:对基础的 BERT 模型结构进行必要的修改以适应特定任务。比如,对于分类任务,通常会在 BERT 模型的输出层添加一个全连接层来进行分类。

  5. 💖超参数调优:确定 fine-tuning 过程中的超参数(如学习率、批大小、训练迭代次数等)。

  6. 💖训练:在特定任务的训练数据上,通过反向传播和梯度下降算法更新BERT模型的参数。

  7. 💖评估:在验证集或测试集上评估 fine-tuned 模型的性能,以确保其泛化能力。

  8. 💖应用:一旦模型通过评估,它就可以被用于实际的应用场景中,比如聊天机器人、情绪分析系统或者在线客户支持工具。

具体使用方法可以看我的博客:https://blog.csdn.net/weixin_40015791/article/details/90410083 下面也会简单介绍一下:在bert开源代码中的run_classifier.py中找到 processors = { "cola": ColaProcessor, "mnli": MnliProcessor, "mrpc": MrpcProcessor, "xnli": XnliProcessor, "intentdetection":IntentDetectionProcessor, "emotion":EmotionProcessor, #新加上这一行 } 然后在该文件中增加一个class: class EmotionProcessor(DataProcessor): """Processor for the MRPC data set (GLUE version).""" def get_train_examples(self, data_dir): """See base class.""" return self._create_examples( self._read_tsv(os.path.join(data_dir, "fine_tuning_train_data.tsv")), "train") #此处的名字和文件夹中的训练集的名字要保持一致 def get_dev_examples(self, data_dir): """See base class.""" return self._create_examples( self._read_tsv(os.path.join(data_dir, "fine_tuning_val_data.tsv")), "dev") def get_test_examples(self, data_dir): """See base class.""" return self._create_examples( self._read_tsv(os.path.join(data_dir, "fine_tuning_test_data.tsv")), "test") def get_labels(self): """See base class.""" return ["0", "1","2","3","4","5","6"] #七分类则从0到6 def _create_examples(self, lines, set_type): """Creates examples for the training and dev sets.""" examples = [] for (i, line) in enumerate(lines): if i == 0: continue guid = "%s-%s" % (set_type, i) if set_type == "test": label = "0" text_a = tokenization.convert_to_unicode(line[0]) else: label = tokenization.convert_to_unicode(line[0]) text_a = tokenization.convert_to_unicode(line[1]) examples.append( InputExample(guid=guid, text_a=text_a, text_b=None, label=label)) return examples 最后直接调用即可,运行的命令如下: python run_classifier.py \ --task_name=emotion \ --do_train=true \ --do_eval=true \ --data_dir=data \ #把数据解压到同一级的文件夹中,此处是该文件夹名字data --vocab_file=chinese_L-12_H-768_A-12/vocab.txt \ #中文数据要微调的原始bert模型 --bert_config_file=chinese_L-12_H-768_A-12/bert_config.json \ --init_checkpoint=chinese_L-12_H-768_A-12/bert_model.ckpt \ --max_seq_length=128 \ --train_batch_size=32 \ --learning_rate=2e-5 \ --num_train_epochs=3.0 \ --output_dir=output #生成文件所在的文件夹 大概9个小时,最后文件夹中会有三个文件 后缀分别为index/meta/00000-of-00001,分别将这个改成bert_model.ckpt.index/bert_model.ckpt.meta/bert_model.ckpt.data-00000-of-00001,再在同一个文件夹中放入chinese_L-12_H-768_A-12中的vocab.txt和bert_config.json 即最后该文件夹中有5个文件。然后像调用chinese_L-12_H-768_A-12一样将文件夹名改成自己的文件夹名即可。 bert-serving-start -model_dir output -num_worfer=3 即可调用微调后的语言通用模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员不想YY啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值