1. 前言
Dijkstra’s 是最广为人知的图算法之一,同时也是最难发音和拼写的图算法。Dijkstra’s 算法是最短路径算法,在它的基础上还衍生出很多其他变种。本文将介绍两种 Dijkstra’s 算法,并以邻接表为例用 python 实现。
之前介绍的预训练模型都是将预训练过程和下游特定任务分成两阶段进行训练, Cross-View Training 将着来年各个阶段合并成一个统一的半监督学习过程:bi-LSTM 编码器通过有标注数据的监督学习和无标注数据的无监督学习同时训练。
之前我们介绍过 seq2seq 模型,通常用作机器翻译,通过编码器(encoder)对源语言进行编码,然后通过解码器(decoder)对编码器的结果进行解码,得到目标语言。原始的 seq2seq 模型是使用平行语料对模型从头开始进行训练,这种训练方式需要大量的平行语料。Prajit Ramachandran 提出一种方法,可以大幅降低平行语料的需求量:先分别使用源语言和目标语言预训练两个语言模型,然后将语言模型的权重用来分别初始化编码器和解码器,最终取得了 SOTA 的结果。
数据噪化(data noising)是一种非常有效的神经网络正则化的有段,通常被用在语音和视觉领域,但是在离散序列化数据(比如语言模型)上很少应用。本文尝试探讨给神经网络语言模型加噪声与 n-gram 语言模型中的平滑之间的联系,然后利用这种联系设计出一种噪声机制,帮助我们对语言进行建模。
Einsum 表示法是对张量的复杂操作的一种优雅方式,本质上是使用特定领域的语言。 一旦理解并掌握了 einsum,可以帮助我们更快地编写更简洁高效的代码。
上下文的向量表示在许多 NLP 任务中都有至关重要的作用,比如词义消歧、命名实体识别、指代消解等等。以前的方法多是直接用离散上下文词向量组合,缺乏对上下文整体的优化表示方法。本文提出一种双向 LSTM 模型,有效学习句子上下文表征。
之前我们介绍了 Word Embedding,将词转换成稠密向量。词向量中包含了大量的自然语言中的先验知识,word2vec 的成功证明了我们可以通过无监督学习获得这些先验知识。随后很多工作试图将句子、段落甚至文档也表示成稠密向量。其中比较有代表性的,比如:
本文介绍双端队列,并用 Python 实现。
本文介绍优先队列,并用 Python 实现。
本文介绍循环队列,并用 Python 实现循环队列。
1 / 7