您当前的位置> 乡饮新闻 > 旅游 > 「糖果娱乐app」BERT小学生级上手教程,从原理到上手全有图示,还能直接在线运行

「糖果娱乐app」BERT小学生级上手教程,从原理到上手全有图示,还能直接在线运行

2020-01-11 18:42:41

「糖果娱乐app」BERT小学生级上手教程,从原理到上手全有图示,还能直接在线运行

糖果娱乐app,bert,作为自然语言处理领域的c位选手,总是nlper们逃不过的一环。

但是,如果是经验匮乏、基础薄弱的选手,想玩转bert还是有点难的。

现在,科技博主jay alammar创作了一篇《第一次使用bert的图形化指南》,用非常简单清晰的方式介绍了如何上手bert,从bert的原理到实际操作的过程都有图示,甚至图比代码都多。量子位为大家编译搬运如下~

这篇文章主要以用bert的变体对句子进行分类为例,介绍了bert的使用方式。

最后的传送门处还有colab的地址。

首先,我们需要用到sst2数据集,里面的句子来自于一些电影评论。

如果评论者对电影表示肯定赞赏,就会有“1”的标签;

如果评论者不喜欢这个电影,发表了负面评论,就会有“0”的标签。

数据集里的电影评论是用英文写的,大概长这样:

现在,借助sst2影评数据集,我们需要创建一个自动对英文句子进行分类的模型。

如果判断是肯定的、正面的,就标注1;如果判断是否定的、负面的,就标注0。

大致的逻辑是这样的:

输入一句话,经过电影评论句子分类器,输出积极或消极的结果。

这个模型实际上是两个模型组成的。

distilbert负责处理句子,提取信息,然后传递给下一个模型,这是“抱抱脸公司”(huggingface)做的一个开源bert版本,比较轻量级而且运行快,性能和原版差不多。

下一个模型就是一个基本的逻辑回归模型,它的输入是distilbert的处理结果,输出积极或消极的结果。

我们在两个模型之间传递的数据是大小为768的向量,可以把这个向量当成可以用来分类的句子嵌入。

虽然我们会用到两个模型,但是我们只需要训练逻辑回归模型就行了,distilbert可以直接用预训练好的版本。

不过,这个模型从来都没有针对句子分类任务被训练或微调过,我们从通用目标bert获取一些句子分类能力,尤其是对于第一个位置的bert输出而言(与[cls]token相关),这是bert的第二个训练目标,接下来就是句子分类了,这个目标似乎是训练模型将全句意义封装到第一位置的输出位置。

这个transformer库为我们提供了distilbert的实施和模型的预训练版本。

这是本篇教程的整个计划,我们先用训练过的distilbert来生成2000个句子的句子嵌入。

之后就不用再碰distilbert了,这里都是scikit learn,我们在这个数据集上做常规的训练和测试:

针对第一个模型也就是distilbert进行训练测试,创建我们训练用的数据集并评估第二个模型也就是逻辑回归模型。

然后在训练集上训练逻辑回归模型:

在研究代码解释如何训练模型之前,我们先看看一个训练后的模型如何进行预测。

我们试着给这句话进行分类预测:

a visually stunning rumination on love

关于爱情的视觉上令人惊叹的反省

第一步,用bert tokenizer把句子分为两个token;

第二步,我们加入句子分类用的特殊token(第一个位置的是[cls],句子结束的位置是[sep])。

第三步,tokenizer用嵌入表中的id代替每个token,成为训练模型的组件。

注意,tokenizer是在这一行代码里完成所有步骤的:

现在我们的输入句子是可以传递给distilbert的适当状态了。

这个步骤可视化起来长这样:

输入向量从distilbert经过,输出每个输入token的向量,每个向量有768个数字组成。

因为这是个句子分类的任务,所以我们忽视掉除第一个向量之外的其他内容(第一个向量和[cls]token相关),然后把第一个向量作为逻辑回归模型的输入。

从这里开始,逻辑回归模型的工作就是根据它从训练过程中学到的经验,把这个向量进行分类。

这个预测计算的过程是这样的:

现在,开始看这整个过程的代码,后面你也可以在传送门里看到github代码和colab上的可运行版本。

首先,导入trade工具。

你可以在github里找到这个数据集,所以我们可以直接把它导入到pandas dataframe里。

可以直接用df.head() 查看dataframe的前五行,看看数据集长啥样。

然后就输出:

现在可以对这个数据集tokenize了。

注意,这一步和上面的例子不同,例子只处理了一个句子,但是我们要批处理所有的句子。

这一步让每个句子都变成id列表。

数据集是当前的列表(或者pandas series/dataframe),在distilbert处理它之前,我们需要给所有向量统一规格,给短句子加上token 0。

填上0之后,现在就有了一个成形的矩阵/张量可以投喂给bert了:

现在,为填充的token矩阵创造一个输入张量,发送给distilbert。

运行这一步之后,last_hidden_states保留distilbert的输出。

解压缩这个3-d输出张量,先检查它的尺寸:

每行都和我们数据集里的一个句子关联,回顾一下,整个处理过程是这样的:

关于句子分类,我们只对bert的[cls] token输出感兴趣,所以我们只挑出重要部分就行了。

下面是从3d张量里挑出我们需要的2d张量的办法:

现在的特征是个2d numpy数组,里面有我们数据集里所有句子的句子嵌入。

现在我们有bert的输出了,前面逻辑回归模型已经已经训练好了。下图的798列是特征,标签是初始数据集里面的。

在完成传统的机器学习训练测试后,我们可以拿逻辑回归模型再进行训练。

将数据分为训练集/测试集:

接下来,在训练集上训练逻辑回归模型:

现在模型训练完了,用测试集给它打分:

得出的模型准确度为81%。

作为参考,这个数据集目前的最高准确率得分为96.8.

在这个任务里,distilbert可以训练来提升分数,这个过程叫做微调(fine-tuning),可以更新bert的权重,来实现更好的分类句子。

微调后的distilbert可以实现90.7的准确率,完整的bert模型能达到94.9的准确率。

a visual guide to using bert for the first timehttps://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/

代码https://github.com/jalammar/jalammar.github.io/blob/master/notebooks/bert/a_visual_notebook_to_using_bert_for_the_first_time.ipynb

colabhttps://colab.research.google.com/github/jalammar/jalammar.github.io/blob/master/notebooks/bert/a_visual_notebook_to_using_bert_for_the_first_time.ipynb

distilberthttps://medium.com/huggingface/distilbert-8cf3380435b5

— 完 —

量子位 qbitai · 头条号签约

关注我们,第一时间获知前沿科技动态

皇冠app

城市活动

  • 猎德三百家庭园游会庆中秋
  • HOT猎德三百家庭园游会庆中秋
  • 广州日报全媒体记者庄小龙 摄大洋网讯 昨晚,在中秋夜前夕,猎德幼儿园的孩子们和家长一起迎来了特别的游园活动。300个来自该园大中班的亲子家庭穿着汉服一起畅玩19个传统游戏:猜灯谜、放河灯、投壶、翻花绳、品茗赏月……猎德幼儿园里万星闪耀,让人仿佛置身于美轮美奂的太空中,各种游戏摊位更是让人应接不暇。本次亲子游园活动设有19个游戏摊位,精彩纷呈的民间传统在猎德幼儿园一一展现。
  • 忘了诺基亚,双屏安卓机才是微软的归宿
  • HOT忘了诺基亚,双屏安卓机才是微软的归宿
  • 忘了三星那台令人失望的折叠屏手机吧,做电脑的微软交出了一份双屏手机的更好答案。在这些细节问题之外,为了重返移动战场,微软不惜联手谷歌,采用后者的 Android 系统来稳定 Duo 的‘基本盘’。在诺基亚和 Windows Phone 之后,Duo 和 Neo 是否能承担起萨提亚·纳德拉的‘微软图谱’重任,都是更值得探讨的话题。除了可能改变时装设计细节,双屏或者折叠手机到底意义何在,是所有厂商而非
  • 「博铭维智能科技」获中船投资领投五千万元人民币B轮融资
  • HOT「博铭维智能科技」获中船投资领投五千万元人民币B轮融资
  • 深圳市博铭维智能科技有限公司宣布完成五千万元人民币b轮融资,由中船投资领投,a轮投资机构北极光跟投。本轮融资完成后,博铭维将完善产品布局,加速进军全球市场,为城市管网行业带来智能革新。此前,博铭维曾获得来自正轩投资和华睿信投资的数千万人民币天使轮投资。博铭维针对城市管网作业环境艰难的问题,提出了管网全生命周期服务方案。
  • 乾隆殿试时出一难题,一考生听完掉头就走 乾隆:状元就你了
  • HOT乾隆殿试时出一难题,一考生听完掉头就走 乾隆:状元就你了
  • 弄墨的,估计只有李煜跟乾隆能有姓名。正值乾隆也无法在二人之间进行取舍时,他忽然想到了前几天刚看到的那句“千古绝对”。乾隆当场就把这个对子上联说了出来,想考校一下这两个考生面对这个“千古绝对”时是什么反应。到了公布考生名次之时,出人意料的是乾隆直接点着甲考生说:“状元就你了”。