飞桨带你了解:基于百科类数据训练的 ELMo 中文预训练模型

2024-03-14 11:50

本文主要是介绍飞桨带你了解:基于百科类数据训练的 ELMo 中文预训练模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在NLP世界里,有一支很重要的家族,英文叫做LARK(LAnguage Representations Kit),翻译成中文是语言表示工具箱。目前LARK家族最新最重要的三种算法,分别是ELMo,BERT和ERNIE。

你一定不知道,这三个普通的名字,竟然包含着一个有趣的秘密。

真相,即将揭开!

我们先从算法模型的名字寻找一些蛛丝马迹

第一位,ELMo:

来自英文Embedding from Language Models 的缩写,来自论文名为Deep contextualized word representation

第二位,BERT: 

来自英文Bidirectional Encoder Representations from Transformers的缩写,来自论文名为Pre-training of Deep Bidirectional Transformers for LanguageUnderstanding

第三位,ERNIE: 

来自英文Enhanced Representation through kNowledge IntEgration) 的缩,来自论文名为Enhanced Representation through Knowledge Integration

看完了,是不是,还是一头雾水,哪里有什么秘密?

不卖关子了,直接上图!

What??

再回头看看,你还记得那三个算法的名字么?

ELMo,BERT,ERNIE

竟然都是美国经典动画片,《Sesame Street(芝麻街)》里面的卡通人物!!!

 

好吧,如果你说,没看过这个动画片,没感觉啊。那我举个例子,如果把《芝麻街》类比成中文《舒克和贝塔》。那么,第一篇论文把模型取做“舒克”,第二篇很有爱的就叫做“贝塔”,第三篇就硬把模型叫做“皮皮鲁”,也许不久的下一个模型就命名为“鲁西西”啦。

 

谁说科学家们很无聊,是不是也很童趣?

好了,扯远了,今天我们先给大家介绍LARK家族的ELMo! 提出它的论文获得2018年NAACL最佳paper,它在NLP领域可是有着响当当的名头,让我们来认识它!

ELMo模型简介

ELMo(Embeddings from Language Models) 是重要的通用语义表示模型之一,以双向 LSTM 为网路基本组件,以 Language Model 为训练目标,通过预训练得到通用的语义表示,将通用的语义表示作为 Feature 迁移到下游 NLP 任务中,会显著提升下游任务的模型性能。

 

ELMo模型核心是一个双层双向的LSTM网络,与传统的word2vec算法中词向量一成不变相比,ELMo会根据上下文改变语义embedding。

一个简单的例子就是 “苹果”的词向量:

句子1:“我 买了 1斤 苹果”

句子2:“我 新 买了 1个 苹果 X”

在word2vec算法中,“苹果”的词向量固定,无法区分这两句话的区别,而ELMo可以解决语言中的二义性问题,可以带来性能的显著提升。

ELMo项目的飞桨(PaddlePaddle)实现

为了方便广大的开发者,飞桨(PaddlePaddle) 完成了ELMo的开源实现(依赖于 Paddle Fluid 1.4),发布要点如下。

注意啦,下面划重点!!!

基于百科类数据训练的  ELMo 中文预训练模型。

完整支持 ELMo 多卡训练,底层算子优化,训练速度比主流实现快约1倍。

 

下游任务的性能明显提升:LAC 任务加入 ELMo 后 F1 可以提升 1.1%;阅读理解任务加入 ELMo 后 Rouge-L 提升 1%。

接下来,我们看看怎么可以快速把ELMo用到我们的项目中来吧!

ELMo训练过程介绍

(1)数据预处理

将文档按照句号、问号、感叹以及内容分词预处理。预处理后的数据文件,每行为一个分词后的句子。给出了训练数据 data/train 和测试数据 data/dev的数据示例如下:

本 书 介绍 了 中国 经济 发展 的 内外 平衡问题 、 亚洲 金融 危机 十 周年 回顾 与 反思 、 实践 中 的 城乡 统筹 发展 、 未来 十 年 中国 需要 研究 的 重大 课题 、 科学 发展 与新型 工业 化 等 方面 。

吴 敬 琏 曾经 提出 中国 股市 “ 赌场 论 ” , 主张 维护 市场 规则 , 保护 草根 阶层 生计, 被 誉 为 “ 中国 经济 学界 良心 ” , 是 媒体 和公众 眼中 的 学术 明星

 

(2)模型训练

利用提供的示例训练数据和测试数据,进行单机多卡预训练。在开始预训练之前,需要把 CUDA、cuDNN、NCCL2 等动态库路径加入到环境变量 LD_LIBRARY_PATH 之中,然后执行run.sh即可开始单机多卡预训练,run.sh文件内容如下:

export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python  train.py \
--train_path='data/train/sentence_file_*'  \
--test_path='data/dev/sentence_file_*'  \
--vocab_path data/vocabulary_min5k.txt \
--learning_rate 0.2 \
--use_gpu True \
--all_train_tokens 35479 \
--local True $@

其中,all_train_tokens为train和dev统计出来的tokens总量,训练过程中,默认每个epoch后,将模型参数写入到 checkpoints 路径下,可以用于迁移到下游NLP任务。

(3)ELMo模型迁移

以 LAC 任务为示例, 将 ELMo 预训练模型的语义表示迁移到 LAC 任务的主要步骤如下:

#step1: 在已经搭建好的LAC 网络结构之后,加载 ELMo 预训练模型参数:

from bilm import 
init_pretraining_params
init_pretraining_params(exe,args.pretrain_elmo_model_path, fluid.default_main_program())

#step2: 基于ELMo 字典 将输入数据转化为 word_ids,利用 elmo_encoder接口获取 ELMo embedding:

from bilm import elmo_encoder
elmo_embedding = elmo_encoder(word_ids)

#step3: ELMoembedding与 LAC 原有 word_embedding 拼接得到最终的 embedding:

word_embedding=fluid.layers.concat(input=[elmo_embedding, word_embedding], axis=1)

好的,到这里,模型的迁移就完成了,再来回顾一下加入ELMo后对性能的提升,心动不如行动,赶紧用起来吧!

ERNIE模型简介

学习完了ELMo,我们再来了解一下LARK家族的学习成绩最好的重磅成员ERNIE,在多项NLP中文任务上表现非凡。

ERNIE通过建模海量数据中的实体概念等先验语义知识,学习真实世界的语义关系。具体来说,ERNIE 模型通过对词、实体等语义单元的掩码,使得模型学习完整概念的语义表示。相较于BERT 学习原始语言信号,ERNIE 直接对先验语义知识单元进行建模,增强了模型语义表示能力。

ERNIE在多个公开的中文数据集上进行了效果验证,包括语言推断、语义相似度、命名实体识别、情感分析、问答匹配等自然语言处理各类任务上,均超越了语义表示模型 BERT 的效果。

更多详细内容请点击文末阅读原文或参见:

https://github.com/PaddlePaddle/LARK

这篇关于飞桨带你了解:基于百科类数据训练的 ELMo 中文预训练模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/808337

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

YOLO v3 训练速度慢的问题

一天一夜出了两个模型,仅仅迭代了200次   原因:编译之前没有将Makefile 文件里的GPU设置为1,编译的是CPU版本,必须训练慢   解决方案: make clean  vim Makefile make   再次训练 速度快了,5分钟迭代了500次

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

模型压缩综述

https://www.cnblogs.com/shixiangwan/p/9015010.html