在 Character-Level Language Modeling with Deeper Self-Attention 中,作者提到 LSTM 和 RNN 变体能够在对字符级语言建模有着非常优秀...
我们在使用 transformers 时,需要使用自己的数据来构建 tokenizer。这里我们使用 tokenizer 库,该库可以帮我们更加轻松的构建不同类型的 Tokenizer。安装命令如下:...
字节对编码(Byte-Pair Encoding,BPE)最初被开发为一种文本压缩算法,后来被 OpenAI 用于 GPT 模型预训练时的分词。许多 Transformer 模型都使用了该方法,包括 ...
Albert(A Lite Bert For Self-Supervised Learning Of Language Representations)是对 Bert 的改进,其主要思想就是用更少的参...
对于命名实体识别任务,基于神经网络的方法应用非常常见。其中的 CRF 层对于刚刚接触学习的同学可能不是特别容易理解,下联链接的文章的作者对 CRF 做了非常好的讲解。我认真学习了作者的相关文章,把自己...
命名实体识别(Named Entity Recognition,简称 NER)是自然语言处理(NLP)中的一项重要任务,旨在从非结构化文本中识别并分类具有特定意义的实体,如人名、地名、机构名、时间表达...
数据处理主要是加在语料、构建词典、以及将数据集转换为索引表示。我们这里会删除句子长度超过 505 的句子。由于构建词典时,是根据训练集数据构建的,所以在对测试集进行编码时,可能会出现 oov 问题,我...
模型构建主要包括了 CRF 层的实现,以及 BiLSTM 层的实现。其中 CRF 层相对复杂一些,主要有两个较难的难点:一、要计算所有路径的损失,二、要根据发射矩阵回溯最优路径。 1. CRF 层实现...
我们接下来编写训练函数、评估函数、预测函数。 1. 训练函数 由于我们希望批次输入训练数据,在使用 RNN、GRU、LSTM 时,可以使用 pad_sequence、packed_pad_sequen...
我们在使用梯度下降法时应该发现了不同参数分量在更新时使用相同的学习率。注意:不同分量使用的梯度可能是不同的。例如:我们现在有参数向量,它有 3 个分量,使用梯度下降法更新参数时都使用相同的学习率 lr...
AdaGrad、RMSProp 针对学习率进行了优化,不同的参数分量在更新时能够使用各自更适合的学习率。Momentum 则是对梯度进行了优化,可以避免碰到鞍点、局部最小值时参数无法更新的情况。 我们...