如何微调BERT模型进行文本分类
什么是BERT?
BERT(Bidirectional Encoder Representations from Transformers)在各种自然语言处理任务中提供了最前沿的结果在深度学习社区引起了轰动。德夫林等人。2018 年在 Google 使用英文维基百科和 BookCorpus 开发了 BERT,从那时起,类似的架构被修改并用于各种 NLP 应用程序。XL.net 是建立在 BERT 之上的示例之一,它在 20 种不同任务上的表现优于 BERT。在理解基于 BERT 构建的不同模型之前,我们需要更好地了解 Transformer 和注意力模型。
BERT 的基本技术突破是使用双向训练的 Transformer 和注意力模型来执行语言建模。与早期从左到右或双向训练相结合的文本序列的研究相比,BERT 论文的发现表明,双向训练的语言模型可以更好地理解语言上下文。
BERT 使用注意力机制以及学习单词之间上下文关系的Transformer 。Transformer 由两个独立的部分组成 - 编码器和解码器。编码器读取输入文本,解码器为任务生成预测。与顺序读取输入文本的传统定向模型相比,transformer 的编码器一次读取整个单词序列。由于 BERT 的这种特殊结构,它可以用于许多文本分类任务、主题建模、文本摘要和问答。
在本文中,我们将尝试微调用于文本分类的 BERT 模型,使用 IMDB 电影评论数据集检测电影评论的情绪。
BERT 目前有两种可用的变体:
- BERT Base:12层,12个注意力头,768个隐藏和110M参数
- BERT Large:24 层,16 个注意力头,1024 隐藏和 340M 参数
以下是 Devlin 等人的 BERT 架构图。
我们已经快速了解了什么是BERT ,下面开始对 BERT 模型进行微调以进行情感分析。我们将使用 IMDB 电影评论数据集来完成这项任务。
微调前准备
首先,我们需要从 Hugging Face 安装Transformer 库。
pip install transformers
现在让我们导入我们在整个实现过程中需要的所有库。
from transformers import BertTokenizer, TFBertForSequenceClassification
from transformers import InputExample, InputFeatures
import numpy as np
import pandas as pd
import tensorflow as tf
import os
import shutil
完整文章: