ELMO、BERT、ERNIE、GPT

2024-03-14 11:50
文章标签 gpt bert ernie elmo

本文主要是介绍ELMO、BERT、ERNIE、GPT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这一讲承接了上一讲关于Transformer的部分,依次介绍了基于Transformer的多个模型,包括ELMO、BERT、GPT

因为上述的模型主要是应用在NLP中,因此首先我们必须清楚如何将离散的文本数据喂给模型,即如何用向量的方式来表征输入到模型的中的文本数据。最简单的一种方式就是one-hot向量,假设现在文档中只有apple、bag、cat、dog、elephant五个单词,那么就可以使用维度为5的向量对它们进行唯一的表示,如 a p p l e = [ 1 , 0 , 0 , 0 , 0 ] 、 b a g = [ 0 , 1 , 0 , 0 , 0 ] 、 c a t = [ 0 , 0 , 1 , 0 , 0 ] 、 d o g = [ 0 , 0 , 0 , 1 , 0 ] 、 e l e p h a n t = [ 0 , 0 , 0 , 0 , 1 ] apple = [ 1,0,0,0,0]、bag = [ 0,1,0,0,0]、cat = [ 0,0,1,0,0]、dog = [ 0,0,0,1,0]、elephant = [ 0,0,0 ,0,1] apple=[1,0,0,0,0]bag=[0,1,0,0,0]cat=[0,0,1,0,0]dog=[0,0,0,1,0]elephant=[0,0,0,0,1]。但是这样的表示方式不仅在数据量很大时十分稀疏,浪费大量的内存资源,而且无法表示出单词之间的关系,因为每两个词向量的内积都是零。另一种方法是word class,它将相同类别的词归到一起,用相同的词向量进行表示,例如dog、cat、bird都属于动物,理论可以使用一个词向量表示动物这个类别。这样的表示方式虽然抓住了词之间一定的关联,但仍处于十分宽泛的概括,难以捕获词之间其他细微特征的差别。现在使用的最多的便是word embedding的方法,例如word2vec、glov……它们可以使用更具有表示意义的词向量对每一个词唯一的表示。如果它们的嵌入空间降维后,我们可以发现,语义相似的词往往在嵌入空间中相近的位置。


在这里插入图片描述

但是在自然语言中,一个词在不同的上下文环境中往往具有不同的意思。例如bank在下面的四个句子中就表示为三个意思,第1,2句表示“银行”;第3,4句表示‘’岸‘,最后一句又可以表示为“库”的意思。因此如何根据单词所在的上下文来判断单词的准确意思就变得十分重要。


在这里插入图片描述

具体来说假设现在有一个contextualized word embedding的模型,我们希望将上面的句子输进去后,不同的词义应该可以得到不同的词嵌入向量。


在这里插入图片描述


ELMO

ELMO 是一个芝麻街中的人物


在这里插入图片描述

而NLP中的ELMO(Embeddings from Language Model )出自Matthew E. Peters, Mark Neumann等人发表在 NAACL 2018上的《Deep contextualized word representations》,它是一种基于RNN的语言模型。例如当我们给模型一个句子“潮水退了就知道谁没穿裤子”,希望看到的标记后输入潮水,然后下一时刻根据前一时刻的输出”潮水“输出“退了“”,依次往复,最后就可以训练得到一个词嵌入向量。通常使用的是双向的RNN,因此每一个方向都可以得到一个词嵌入向量,将它们拼接起来就可以得到一个更好的词向量。


在这里插入图片描述

当然我们可以将模型做的很深,在每一层中都会产生一个词向量,那么我们应该选择哪一个呢?ELMO的做法就是:我全都要!


在这里插入图片描述

假设每一层得到的词向量为 e 1 , e 2 , . . . , e m e_{1},e_{2},...,e_{m} e1,e2,...,em,ELMO就使用一种加权的方式 e = α 1 e 1 + α 2 e 2 + . . . + α m e m e=\alpha_{1}e_{1}+\alpha_{2}e_{2}+...+\alpha_{m}e_{m} e=α1e1+α2e2+...+αmem将它们组合起来得到最后的此嵌入向量。而其中的参数 α i \alpha_{i} αi是需要模型学习的。


在这里插入图片描述


BERT

BERT是Bidirectional Encoder Representations from Transformers的缩写,它好巧不巧也是芝麻街的人物,没错正是?


在这里插入图片描述

source:https://muppet.fandom.com/wiki/Bert

NLP中的BERT出自Jacob Devlin, Ming-Wei Chang的《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》一文中,它可以看做是Transformer的Encoder,使用大量无标注的文本数据进行学习。例如上面给出的例子”潮水退了就知道谁没穿裤子“,将其输入到BERT中,每一个词都会给出一个相应的词向量


在这里插入图片描述

那我们应该如何训练BERT呢?在原始的paper中,作者提出了两种不同的训练方式,第一种为Masked LM 。它将属于语句中的某些词标记为MASK,然后使用一个线性的多分类器来判别mask掉的是哪一个词


在这里插入图片描述

第二种方式称为Next Sentence Prediction ,顾名思义就是给定一个句子,预测出它的下一句应该是什么。这里需要使用到一些标记符号,例如CLS表示输出分类结果的位置,SEP表示两句话的边界……。例如我们将“醒醒吧”和“你没有妹妹”作为输入,经过训练得到的词向量就需要通过一个线性的二分器判别它们是否是上下句的关系。


在这里插入图片描述

因为Transformer中每个词的词向量都是在看过句中的所有词后得出的,因此选择哪一个输入到分类器中并没有本质上的区别。

在实际的模型训练中,以上的两种方式是同时使用的。此外,在原始的paper中作者提供了四种使用BERT的场景。第一种是文本分类:将一个文本输入到BERT中,最近经过一个线性的分类器就会得到这个文本的类别。通常在不同类别的文本上训练,线性分类器的参数更新较多,而BERT部分只是做一些微调,所以训练的开销并不大。


在这里插入图片描述

第二种为类似于词性标注的任务,给定模型一个输入语句,最后输入每一个词的词性类别。


在这里插入图片描述

第三种是推理的任务,给定一个前提语句,判断另一个假设语句是真的、假的还是不确定。


在这里插入图片描述

第四种方式是QA,喂给模型一篇文章,然后给出一些文中已有答案的问题,看模型能否给出正确的答案。


在这里插入图片描述

在BER提出后,疯狂的刷新了各种NLP任务的记录


在这里插入图片描述


ERNIE

ERNIE居然也是芝麻街中的一个任务,强行凑梗。


在这里插入图片描述

ERNIE全称Enhanced Representation through Knowledge Integration ,它是由百度提出的一种知识增强的语义表示模型,通过对词、实体等语义单元的掩码,使得模型学习完整概念的语义表示。在语言推断、语义相似度、命名实体识别、情感分析、问答匹配等多项中文 NLP 任务上表现出色,有些甚至优于 BERT 在处理同类中文任务的结果。

例如下面的例子所示,BERT只能判断出缺失的是哪个字,而ERNIE可以做到知道缺失的是哪个词。


在这里插入图片描述


GPT

GPT全称Generative Pre-Training ,出自OpenAI的《Improving Language Understanding by Generative Pre-Training》一文,它是一个非常大的模型,到底有多大呢?ELMO的参数有94M,BERT的参数有340M,而GPT-2的参数就有1542M之多!所以官方一开始放出的只有GPT的小版本,不过前几天看到一个新闻,来自慕尼黑工业大学的Connor Leahy同学,在两个月的时间里,付出了200个小时的时间,花费了大约6000人民币,复现了GPT-2项目。

https://weibo.com/ttarticle/p/show?id=2309404381252827355401#_0

GPT的整个过程和Transformer是类似的,例如前面的例子:潮水退了就知道谁没穿裤子,当我们输入“潮水”后,希望模型经过计算可以给出下一个词为“退了”


在这里插入图片描述

当输入“退了”后,模型就会给出下一个词"就"


在这里插入图片描述

上面主要是对李宏毅老师课程的课后总结,以及对于ELMO、BERT、ERNIE、GPT基本原理的简单介绍,后面读过原论文后,希望可以总结的更好~

这篇关于ELMO、BERT、ERNIE、GPT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

【机器学习】自然语言处理的新前沿:GPT-4与Beyond

📝个人主页:哈__ 期待您的关注  目录 🔥引言 背景介绍 文章目的 一、GPT-4简介 GPT-4概述 主要特性 局限性和挑战 二、自监督学习的新进展 自监督学习的原理 代表性模型和技术 三、少样本学习和零样本学习 少样本学习的挑战 先进方法 四、跨模态学习 跨模态学习的概念 代表性技术 应用场景 第五部分:可解释性和透明性 AI的可解释

【文末附gpt升级秘笈】腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑

腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑 一、引言 随着人工智能技术的飞速发展,自然语言处理(NLP)和机器学习(ML)在各行各业的应用日益广泛。其中,AI搜索解析能力作为信息检索和知识抽取的核心技术,受到了广泛的关注和研究。腾讯作为互联网行业的领军企业,其在AI领域的探索和创新一直走在前列。近日,腾讯旗下的AI大模型应用——腾讯元宝,迎来了1.1.7版本的升级,新版本在AI搜

1.1 从图灵机到GPT,人工智能经历了什么?——《带你自学大语言模型》系列

《带你自学大语言模型》系列部分目录及计划,完整版目录见: 带你自学大语言模型系列 —— 前言 第一部分 走进大语言模型(科普向) 第一章 走进大语言模型 1.1 从图灵机到GPT,人工智能经历了什么?1.2 如何让机器理解人类语言?(next, next)1.3 Transformer做对了什么?(next, next, next) 第二部分 构建大语言模型(技术向) 第二章 基础知识

GPT-5大幅推迟?OpenAI CTO称将在2025年底到2026年初推出

GPT-5大幅推迟?OpenAI CTO称将在2025年底到2026年初推出 OpenAI CTO同时透露,GPT-5性能将有巨大飞跃,在某些特定任务中达到“博士水平”智能,此前市场曾预测GPT-5可能在2023年底或2024年夏季发布。 一再跳票的GPT-5可能大幅推迟,但预计性能将显著跃升,达到“博士水平”的智能。 据媒体周日报道,OpenAI首席技术官Mira Murati近日透露,公

Java开发-面试题-0007-GPT和MBR的区别

Java开发-面试题-0007-GPT和MBR的区别 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生活公众号:好锅(Life is more than code) CSDN: CodeZeng1998 其他平台:CodeZeng1998、好

从零实现GPT【1】——BPE

文章目录 Embedding 的原理训练特殊 token 处理和保存编码解码完整代码 BPE,字节对编码 Embedding 的原理 简单来说就是查表 # 解释embeddingfrom torch.nn import Embeddingimport torch# 标准的正态分布初始化 也可以用均匀分布初始化emb = Embedding(10, 32)res

GPT-4o一夜被赶超,Claude 3.5一夜封王|快手可灵大模型推出图生视频功能|“纯血”鸿蒙大战苹果AI|智谱AI“钱途”黯淡|月之暗面被曝进军美国

快手可灵大模型推出图生视频功能“纯血”鸿蒙大战苹果AI,华为成败在此一举大模型低价火拼间,智谱AI“钱途”黯淡手握新“王者”,腾讯又跟渠道干上了“美食荒漠”杭州,走出一个餐饮IPOGPT-4o一夜被赶超,Anthropic推出Claude3.5,网友3分钟克隆马里奥游戏支付宝能否翻越“内容”这座山?月之暗面被曝进军美国,阿里腾讯捧出的30亿美元独角兽终于要出海了Claude3.5一夜封王,10倍编

bert文本分类微调笔记

Bert实现文本分类微调Demo import randomfrom collections import namedtuple'''有四种文本需要做分类,请使用bert处理这个分类问题'''# 使用namedtuple定义一个类别(Category),包含两个字段:名称(name)和样例(samples)Category = namedtuple('Category',

AI大模型日报#0622:Claude 3.5 Sonnet超越GPT-4o、盘古大模型跳级发布、松鼠AI多模态教育大模型

导读:AI大模型日报,爬虫+LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE-4.0-8K-latest)生成了今日要点以及每条资讯的摘要。欢迎阅读!《AI大模型日报》今日要点:中科大与上海AI Lab等团队发布了高质量视频数据集ShareGPT4Video,通过GPT-4v的视觉能力实现视频的高质量描述,对视频理解和生成任务有着重要意义。同时,OpenAI收购数据

探索AI前沿:本地部署GPT-4o,打造专属智能助手!

目录 1、获取API_key 2、开始调用 3、openai连接异常 4、解决方法: 5、调用GPT-4o 1、获取API_key 这里就不多赘述了,大家可以参考下面这篇博客 怎么获取OpenAI的api-key【人工智能】https://blog.csdn.net/qq_51625007/article/details/137632747 2、开始调用 有了第一步的API