文章:自然语言处理中的语言模型预训练方法(ELMo、GPT和BERT)
https://www.cnblogs.com/robert-dlut/p/9824346.html
语言模型不需要人工标注语料(属于自监督模型),所以语言模型能够从无限制的大规模语料中,学习到丰富的语义知识。
由于数据是离散的,如果特别能没有在语料库出现过,而能在语料库中的出现概率很大但是特别能和能意思相近,那么根据n-gram的计算原理,两个已经意思相近的句子的出现概率可能一个为0,一个很大,而实际上两个句子的出现概率差不多,因此会有很大的概率损失误差。
为了解决这个问题,我们在将神经网络(NN)引入到了连续空间的语言建模中。NN 包括前馈神经网络(FFNN)、循环神经网络(RNN)、卷积神经网络(CNN)可以自动学习特征和连续的表征。因此,人们希望将 NN 应用于 LM,甚至其他的 NLP 任务,从而考虑自然语言的离散性、组合性和稀疏性。
n-gram学出了离散词序列出现频率点,而深度学习的神经网络语言模型直接学习出了平滑曲线
也就是不同于n-gram里面的平滑曲线是“模糊的拟合”,深度学习的平滑曲线是“更细粒度的拟合”。
别称多层感知器(multilayer perceptrons)
激活函数之sigmoid“S型函数”
激活函数之tanhh“双曲正切”函数
激活函数之ReLU“线性整流函数”
输入:x
输出:y
权重:Xi对应权重Wi
激活函数σ:sigmoid、tanh、ReLU
参数b:表示偏置/阈值,b是一个常数。b与加权求和值相加,然后再经过激活函数。这有助于调整神经元的灵敏度和响应特定类型的输入。
在神经元网络中,偏置是一种可学习的参数,用于调整神经元的激活值。
意义:
调整神经元的激活函数在输入为零时的截距位置。
得到初步的点估计值
意义:
特征加权重要性:权重(weights)表示了每个输入特征的重要性,它们决定了每个特征在神经元的决策中所占的比重。通过适当调整权重,神经元可以学习到哪些特征对于问题的解决更为关键,从而提高网络的性能。
偏置项引入平移:偏置项(bias)是一个常数,它的作用是引入一个平移,允许神经元在没有任何输入信号时也能发出非零的响应。这对于模型的表达能力很重要,因为它允许神经元不仅仅依赖于输入的线性组合,还能引入非线性决策。
实例:
假设我们正在构建一个神经网络来预测房价。我们有三个 输入特征:房屋面积(Area)、卧室数量(Bedrooms)、和附近学校的评分(School_Rating)。每个特征都有对应的权重,用来衡量它们在预测房价中的重要性。
假设偏置项(b)为-10000,这意味着即使所有输入特征都为零,房价预测也不会降到零,因为偏置项引入了一个平移。这是因为即使房屋没有面积、没有卧室、学校评分为零,房价仍然有一个基本价值。
通过对这些输入进行加权求和,加上偏置项,神经元可以计算一个房价的初始估计值。然后,这个初始估计值将被送入激活函数,例如线性激活函数、Sigmoid函数或ReLU函数,以引入非线性性质并产生最终的房价预测。
将h的值通过激活函数σ映射到一个特定的输出范围内的一个值,通常是[0, 1]或[-1, 1]
意义:引入非线性性质,使神经网络能够适应更加复杂的数据模式和问题。
例子
假设我们有一个二元分类问题,要根据一些特征来预测一封电子邮件是垃圾邮件(标记为1)还是非垃圾邮件(标记为0)。神经网络的最后一层输出单元通常需要产生一个在[0, 1]范围内的值,表示某封邮件属于垃圾邮件的概率。这时,Sigmoid激活函数非常适合用于最后一层,因为它可以将加权求和值映射到[0, 1]之间的范围。
例如,如果某封邮件的加权求和值为0,经过Sigmoid激活后,输出为0.5,表示该邮件属于垃圾邮件和非垃圾邮件的概率相等。如果加权求和值远远大于0,例如10,经过Sigmoid激活后,输出接近于1,表示邮件极有可能是垃圾邮件。反之,如果加权求和值远远小于0,例如-10,经过Sigmoid激活后,输出接近于0,表示邮件很可能是非垃圾邮件。
这样,我们可以利用Sigmoid函数将连续的加权求和值映射到概率值,方便进行分类决策。
③
(Feed Forward Neural Language Model )
前馈神经网络语言模型(FFNNLM)由 Bengio 等人于 2003 年提出,它通过学习一个单词的分布式表征(将单词表征为一个被称为「嵌入」的低维向量)来克服维数诅咒。FFNNLM 的性能要优于 N 元语言模型。
该语言模型使用了一个三层前馈神经网络来进行建模。其中有趣的发现了第一层参数,用做词表示不仅低维紧密,而且能够蕴涵语义,也就为现在大家都用的词向量(例如word2vec)打下了基础
Word2Vec是Google公司于2013年发布的一个开源词向量工具包。该项目的算法理论参考了Bengio 在2003年设计的神经网络语言模型。由于此神经网络模型使用了两次非线性变换(tanh、softmax),网络参数很多,训练缓慢,因此不适合大语料。Mikolov团队对其做了简化,实现了Word2Vec词向量模型。 ——《NLP汉语自然语言处理原理与实践》
右上方橙色表格为词向量矩阵,对应下面的"V"
NNLM北语讲解
Mikolov 等人于 2010 年提出了 RNN 语言模型(RNNLM),理论上可以记忆无限个单词,可以看作"无穷元语法" (∞-gram)。
RNN解决了学习长期依赖问题,能够联系上下文
是否三元或者四元甚至更高阶的模型就能覆盖所有的语言现象呢?答案显然是否定的。因为自然语言中,上下文之间的相关性可能跨度非常大,甚至可以从一个段落跨到另一个段落。因此,即使模型的阶数再提高,对这种情况也无可奈何,这就是马尔可夫假设的局限性,这时就要采用其他一些长程的依赖性(Long DistanceDependency)来解决这个问题了。——《数学之美》
自然语言处理NLP中的N-gram模型
简单理解 n-gram
语言模型(N-Gram
N-gram的简单的介绍
N-Gram语言模型
语言模型(LM)和循环神经网络(RNNs
自然语言处理中的语言模型预训练方法(ELMo、GPT和BERT
【研究前沿】神经网络语言模型综述_单词
NLP:n-gram模型
前馈网络