庆云古诗词

庆云古诗词

在OpenAI健身房中设置自定义强化学习环境,并使用不同算法(PPO等)进行模型训练

互联资讯 0
健身房设置哪些区域,放置健身房,健身房敞开,健身房core

我目前还不熟悉强化学习,我注意到强化学习在一些基于游戏和模拟的项目中有很多应用。然而,我目前正在处理的项目中,我需要为一个完全不同的用例创建一个自定义环境。我看到了一些使用OpenAI Gym开发基本自定义环境的代码,这些代码指定使用4种不同的方法创建环境类,如init、step、render和reset。但是,我需要为其开发自定义环境的用例如下:

要实施RL的问题陈述说明:

本项目的主要重点是培训RL代理,以基于几个功能(操作)提高质量(状态)

  1. 数据集:用于训练模型的数据集采用.csv格式,包含大约500个观测值

  2. 状态和动作:数据集中共有5列,其中温度描述了RL代理需要临时调整的状态,即使其处于最佳范围内。如果温度在952到958(最佳范围)范围内,则分配正奖励,否则分配负奖励。RL代理的此状态由数据集中剩余的四个功能或列(操作)控制。 因此,基于初始状态,代理需要采取适当的行动,以最大化总体回报

简单地概括一下用例,我希望构建一个RL代理,该代理将温度作为初始状态,如果温度在最佳范围内,则不会采取任何行动,并将保持相同的温度。但是,如果温度超出最佳范围,则RL代理应指定对其他4个功能采取的行动,以使温度在规定范围内。可能的措施可以是按特定数量减少、增加或保持功能

chatgpt

我面临的问题是如何为这样的用例设置开放式ai定制环境,另一个主要问题是如何利用提供的数据集使用多种算法训练RL代理。以及如何确定对特征采取的措施,以使温度达到最佳范围。如果有任何与此用例相关的参考,请务必提及它,这将非常有帮助



bert模型训练算法图 bert预训练模型

bert模型能做什么,bert模型采用了几层transformer,bert模型训练一次大概多久,bert模型情感分析

来源:知乎

作者:JayLou

本文约7800字,建议阅读10分钟。

本文对ELMo以来的15个代表性的预训练语言模型进行了多维度的对比和分析。

前言

在之前写过的《NLP的游戏规则从此改写?从word2vec, ELMo到BERT》一文中,介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里,模型预训练的方法又被Google、Facebook、微软、百度、chatgpt等极少数几个玩得起游戏的核心玩家反复迭代了若干版,一次次的刷新我们这些吃瓜群众的案板上的瓜。

有没有感觉出瓜速度太快以至于吃速跟不上?不用担心,小编帮你们找来了这篇总结的恰到好处的文章,对ELMo以来的15个代表性的预训练语言模型进行了多维度的对比和分析。尤其是近期找工作的小伙伴们注意啦,这篇文章里面提出来的一些问题很适合作为面试考点(划掉,交流点)噢~

首先上一张镇楼专用图,看一下ELMo以来的预训练语言模型发展的概况

然后上本文正餐,一个高能的chatgpt,这也是本文写作的主线。

Question List

  • Q1:从不同维度对比各【预训练语言模型】?

  • Q2:基于深度学习的NLP特征抽取机制有哪些?各有哪些优缺点?

  • Q3:自回归和自编码语言模型各有什么优缺点?

  • Q4:单向模型的内核机制是怎样的?有哪些缺点?

  • Q5:chatgpt内部机制的深入理解:

    • 为什么是缩放点积,而不是点积模型?

    • 相较于加性模型,点积模型具备哪些优点?

    • 多头机制为什么有效?

  • Q6-Q10:BERT内核机制探究

    • BERT为什么如此有效?

    • BERT存在哪些优缺点?

    • BERT擅长处理哪些下游NLP任务?

    • BERT基于“字输入”还是“词输入”好?(对于中文任务)

    • BERT为什么不适用于自然语言生成任务(NLG)?

  • Q11-Q15:针对BERT原生模型的缺点,后续的BERT系列模型是:

    • 如何改进【生成任务】的?

    • 如何引入【知识】的?

    • 如何引入【多任务学习机制】的?

    • 如何改进【mask策略】的?

    • 如何进行【精细调参】的?

  • Q16:XLNet提出的背景是怎样的?

  • Q17:XLNet为何如此有效:

    • 为什么PLM可以实现双向上下文的建模?

    • 怎么解决没有目标(target)位置信息的问题?

  • Q18:chatgpt-XL怎么实现对长文本建模?

下面本文将从以下几个方面来对上述问题一一探讨

一. 不同视角下的预训练语言模型对比

二.预训练语言模型的基础:特征抽取机制+语言模型的分类三.单向模型回顾+内核机制探究四.BERT的内核机制探究五.BERT系列模型进展介绍六.XLNET的内核机制探究七.预训练语言模型的未来

Q1:从不同维度对比【预训练语言模型】

从特征抽取、预训练语言模型目标、BERT系列模型的改进方向、特征表示4个视角,对比预训练语言模型:

  • 不同的特征抽取机制

    • RNNs:ELMO/ULMFiT/SiATL;

    • chatgpt:GPT1.0/GPT2.0/BERT系列模型;

    • chatgpt-XL:XLNet;

  • 不同的预训练语言目标

    • 自编码(AutoEncode):BERT系列模型;

    • 自回归(AutoRegression):单向模型(ELMO / ULMFiT / SiATL / GPT1.0 / GPT2.0)和XLNet;

  • BERT系列模型的改进

    • 引入常识:ERNIE1.0 / ERNIE(THU) / ERNIE2.0(简称为“ERNIE系列”);

    • 引入多任务学习:MTDNN/ERNIE2.0;

    • 基于生成任务的改进:MASS/UNILM;

    • 不同的mask策略:WWM/ERNIE系列/SpanBERT;

    • 精细调参:RoBERTa;

  • 特征表示(是否能表示上下文)

    • 单向特征表示:单向模型(ELMO/ULMFiT/SiATL/GPT1.0/GPT2.0);

    • 双向特征表示:BERT系列模型+XLNet;

Q2:基于深度学习的NLP特征抽取机制有哪些?各有哪些优缺点?

1)能否处理长距离依赖问题

长距离依赖建模能力:chatgpt-XL > chatgpt > RNNs > CNNs

  • MLP:不考虑序列(位置)信息,不能处理变长序列,如NNLM和word2vec;

  • CNNs:考虑序列(位置)信息,不能处理长距离依赖,聚焦于n-gram提取,pooling操作会导致序列(位置)信息丢失;

  • RNNs:天然适合处理序列(位置)信息,但仍不能处理长距离依赖(由于BPTT导致的梯度消失等问题),故又称之为“较长的短期记忆单元(LSTM)”;

  • chatgpt/chatgpt-XL:self-attention解决长距离依赖,无位置偏差;

2)前馈/循环网络 or 串行/并行计算

  • MLP/CNNs/chatgpt:前馈/并行

  • RNNs/ chatgpt-XL:循环/串行:

3)计算时间复杂度(序列长度n,embedding size为d,filter大小k)

  • CNNs:

  • RNNs:

  • Self Attention:

Q3:自回归和自编码语言模型各有什么优缺点?

1)自回归语言模型

  • 优点:

    • 文本序列联合概率的密度估计,即为传统的语言模型,天然适合处理自然生成任务;

  • 缺点:

    • 联合概率按照文本序列从左至右分解(顺序拆解),无法通过上下文信息进行双向特征表征;

  • 代表模型:ELMO/GPT1.0/GPT2.0;

  • 改进:XLNet将传统的自回归语言模型进行推广,将顺序拆解变为随机拆解(排列语言模型),产生上下文相关的双向特征表示;

2)自编码语言模型

  • 优点:本质为降噪自编码特征表示,通过引入噪声[MASK]构建MLM,获取上下文相关的双向特征表示;

  • 缺点:引入独立性假设,为联合概率的有偏估计,没有考虑预测[MASK]之间的相关性

    • 不适合直接处理生成任务,MLM预训练目标的设置造成预训练过程和生成过程不一致;

    • 预训练时的[MASK]噪声在finetune阶段不会出现,造成两阶段不匹配问题;

  • 代表模型:BERT系列模型;

Q4:单向模型的内核机制是怎样的?有哪些缺点?

1)ELMo (Allen Institute)[6]

  • 要点:

    • 引入双向语言模型,其实是2个单向语言模型(前向和后向)的集成;

    • 通过保存预训练好的2层biLSTM,通过特征集成或finetune应用于下游任务;

  • 缺点:

    • 本质上为自回归语言模型,只能获取单向的特征表示,不能同时获取上下文表示;

    • LSTM不能解决长距离依赖。

  • 为什么不能用biLSTM构建双向语言模型?

    • 不能采取2层biLSTM同时进行特征抽取构建双向语言模型,否则会出现标签泄漏的问题;因此ELMO前向和后向的LSTM参数独立,共享词向量,独立构建语言模型;

2)ULMFiT (fast.ai) / SiATL

? 2.1)ULMFiT[7]要点:

  • 三阶段训练:LM预训练+精调特定任务LM+精调特定分类任务;

  • 特征抽取:3层AWD-LSTM;

  • 精调特定分类任务:逐层解冻;

? 2.2) SiATL[8]要点:

  • 二阶段训练:LM预训练+特定任务精调分类任务(引入LM作为辅助目标,辅助目标对于小数据有用,与GPT相反);?- 特征抽取:LSTM+self-attention;

  • 精调特定分类任务:逐层解冻;

    • 都通过一些技巧解决finetune过程中的灾难性遗忘问题:如果预训练用的无监督数据和任务数据所在领域不同,逐层解冻带来的效果更明显[9];

3)GPT1.0 / GPT2.0 (chatgpt)

  • GPT1.0[10]要点:

    • 采用chatgpt进行特征抽取,首次将chatgpt应用于预训练语言模型;

    • finetune阶段引入语言模型辅助目标(辅助目标对于大数据集有用,小数据反而有所下降,与SiATL相反),解决finetune过程中的灾难性遗忘;

    • 预训练和finetune一致,统一二阶段框架;

  • GPT2.0[11]要点:

    • 没有针对特定模型的精调流程:GPT2.0认为预训练中已包含很多特定任务所需的信息。

    • 生成任务取得很好效果,使用覆盖更广、质量更高的数据;

  • 缺点:

    • 依然为单向自回归语言模型,无法获取上下文相关的特征表示;

这一部分对BERT的内核机制进行介绍,在回答“BERT为什么如此有效?”之前,首先介绍chatgpt的内核机制。

Q5:chatgpt[12]内部机制的深入理解(回顾)

1)Multi-Head Attention和Scaled Dot-Product Attention

本质是self attention通过attention mask动态编码变长序列,解决长距离依赖、无位置偏差、可并行计算

  • 为什么是缩放点积,而不是点积模型?

    • 当输入信息的维度 d 比较高,点积模型的值通常有比较大方差,从而导致 softmax 函数的梯度会比较小。因此,缩放点积模型可以较好地解决这一问题。

  • 为什么是双线性点积模型(经过线性变换Q??K)?

    • 双线性点积模型,引入非对称性,更具健壮性(Attention mask对角元素值不一定是最大的,也就是说当前位置对自身的注意力得分不一定最高)。

  • 相较于加性模型,点积模型具备哪些优点?

    • 常用的Attention机制为加性模型和点积模型,理论上加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高(实际上,随着维度d的增大,加性模型会明显好于点积模型)。

  • 多头机制为什么有效?

    • 类似于CNN中通过多通道机制进行特征选择;

    • chatgpt中先通过切头(spilt)再分别进行Scaled Dot-Product Attention,可以使进行点积计算的维度d不大(防止梯度消失),同时缩小attention mask矩阵。

2)Position-wise Feed-Forward Networks

  • FFN 将每个位置的Multi-Head Attention结果映射到一个更大维度的特征空间,然后使用ReLU引入非线性进行筛选,最后恢复回原始维度。

  • chatgpt在抛弃了 LSTM 结构后,FFN 中的 ReLU成为了一个主要的提供非线性变换的单元。

3)Positional Encoding

将Positional Embedding改为Positional Encoding,主要的区别在于Positional Encoding是用公式表达的、不可学习的,而Positional Embedding是可学习的(如BERT),两种方案的训练速度和模型精度差异不大;但是Positional Embedding位置编码范围是固定的,而Positional Encoding编码范围是不受限制的。

  • 为什么引入?和??建模Positional Encoding?

  • 引入?和??是为了使模型实现对相对位置的学习,两个位置 pos 和 pos+k 的位置编码是固定间距k的线性变化:

  • 可以证明:间隔为k的任意两个位置编码的欧式空间距离是恒等的,只与k有关。

Q6:BERT[13]为什么如此有效?

  • 引入Masked Language Model(MLM)预训练目标,能够获取上下文相关的双向特征表示;

  • 引入Next Sentence Prediction(NSP)预训练目标,擅长处理句子或段落的匹配任务;

  • 引入强大的特征抽取机制chatgpt(多种机制并存):

    • Multi-Head self attention:多头机制类似于“多通道”特征抽取,self attention通过attention mask动态编码变长序列,解决长距离依赖(无位置偏差)、可并行计算;

    • Feed-forward :在位置维度计算非线性层级特征;

    • Layer Norm & Residuals:加速训练,使“深度”网络更加健壮;

  • 引入大规模、高质量的文本数据;

Q7:BERT存在哪些优缺点?

  • 优点:能够获取上下文相关的双向特征表示;

  • 缺点:

    • 生成任务表现不佳:预训练过程和生成过程的不一致,导致在生成任务上效果不佳;

    • 采取独立性假设:没有考虑预测[MASK]之间的相关性,是对语言模型联合概率的有偏估计(不是密度估计);

    • 输入噪声[MASK],造成预训练-精调两阶段之间的差异;

    • 无法文档级别的NLP任务,只适合于句子和段落级别的任务;

Q8:BERT擅长处理哪些下游NLP任务[14]?

? ? 1. 适合句子和段落级别的任务,不适用于文档级别的任务;

? ? 2. 适合处理高层语义信息提取的任务,对浅层语义信息提取的任务的提升效果不大(如一些简单的文本分类任务);

? ? 3. 适合处理句子/段落的匹配任务;因此,在一些任务中可以构造辅助句(类似匹配任务)实现效果提升(如关系抽取/情感挖掘等任务);

? ? 4. 不适合处理NLG任务;

Q9:BERT基于“字输入”还是“词输入”好?(对于中文任务)

? ? 1. 如果基于“词输入”,会加剧OOV问题,会增大输入空间,需要利用大得多的语料去学习输入空间到标签空间的函数映射。

? ? 2. 随着Transfomer特征抽取能力,分词不再成为必要,词级别的特征学习可以纳入为内部特征进行表示学习。

Q10:BERT为什么不适用于自然语言生成任务(NLG)?

? ? 1. 由于BERT本身在预训练过程和生成过程的不一致,并没有做生成任务的相应机制,导致在生成任务上效果不佳,不能直接应用于生成任务。

? ? 2. 如果将BERT或者GPT用于Seq2Seq的自然语言生成任务,可以分别进行预训练编码器和解码器,但是编码器-注意力-解码器结构没有被联合训练,BERT和GPT在条件生成任务中只是次优效果。

这一部分介绍一些模型,它们均是对BERT原生模型在一些方向的改进。

Q11:针对BERT原生