较好的网站设计师培训学校,网站建设创新,购物网站建设特色,达尔罕茂明安网站建设文章的整体介绍顺序为#xff1a;
NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT
自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理#xff0c;通常需要将语言数学化#xff0c;因为计算机机器只认数学符号…文章的整体介绍顺序为
NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT
自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理通常需要将语言数学化因为计算机机器只认数学符号。向量是人把自然界的东西抽象出来交给机器处理的数学性质的东西基本上可以说向量是人对机器输入的主要方式了。词向量是对词语的向量表示这些向量能捕获词语的语义信息如相似意义的单词具有类似的向量。
假定我们有一系列样本(x,y)其中的 x 是词语y 是它们的词性我们要构建f(x) to y的映射 首先这个数学模型 f比如神经网络、SVM只接受数值型输入 而 NLP 里的词语是人类语言的抽象总结是符号形式的比如中文、英文、拉丁文等等 如此一来便需要把NLP里的词语转换成数值形式或者嵌入到一个数学空间里 进一步可以把文本分散嵌入到另一个离散空间称作分布式表示又称为词嵌入word embedding或词向量 在各种词向量中有一个简单的词向量是one-hot encoder。所谓one-hot编码本质上是用一个只含一个 1、其他都是 0 的向量来唯一表示词语不是所有的编码都是01编码且one-hot编码无法反应词与词之间的语义相似度。 如单词“king”的词嵌入在维基百科上训练的GloVe向量
[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]
1、NNLM
神经网络语言模型(Neural Network Language Model简称NNLM)的核心是一个多层感知机Multi-Layer Perceptron简称MLP它将词向量序列映射到一个固定长度的向量表示然后将这个向量输入到一个softmax层中计算出下一个词的概率分布。 第一步就是Look up Embedding首先构建词映射矩阵即一个映射单词表所有单词的矩阵也称词嵌入矩阵在这个映射矩阵(词嵌入矩阵)中查询输入的单词(即Look up embeddings) 构建映射矩阵(词嵌入矩阵) 先是获取大量文本数据然后建立一个可以沿文本滑动的窗(例如一个窗里包含三个单词)利用这样的滑动窗就能为训练模型生成大量样本数据当这个窗口沿着文本滑动时就能生成一套用于模型训练的数据集。类似一个统计问题根据前两个单词预测下一个单词出现的概率
第二步则是计算出预测值 第三步则输出结果 2 、Word2Vec详解 Word2Vec模型的核心思想是通过词语的上下文信息来学习词语的向量表示。具体来说Word2Vec模型通过训练一个神经网络模型使得给定一个词语的上下文时能够预测该词语本身CBOW模型或者给定一个词语时能够预测其上下文Skip-gram模型。Word2Vec的训练模型本质上是只具有一个隐含层的神经元网络。它的输入是采用One-Hot编码的词汇表向量它的输出也是One-Hot编码的词汇表向量。使用所有的样本训练这个神经元网络等到收敛之后从输入层到隐含层的那些权重便是每一个词的采用Distributed Representation的词向量。 Word2Vec包括两种模型主要包括CBOW和Skip-gram模型。 CBOW模型是根据上下文去预测目标词来训练得到词向量而Skip-gram模型则是根据目标词去预测上下文来训练得到词向量。CBOW适合于数据集较小的情况而Skip-gram在大型语料中表现更好。 如下图所示 1输入层输入的是单词的one-hot representation考虑一个词表V里面的每一个词 i 都有一个编号i∈{1,...,|V|}那么词的one-hot表示就是一个维度为|V|的向量其中第i个元素值非零其余元素全为0 词向量是用来将语言中的词进行数学化的一种方式词向量就是把一个词表示成一个向量。 我们都知道词在送到神经网络训练之前需要将其编码成数值变量常见的编码方式有两种One-Hot Representation 和 Distributed Representation。
One-Hot Representation 容易受维数灾难的困扰词汇鸿沟不能很好地刻画词与词之间的相似性强稀疏性 向量中只有一个非零分量非常集中
Distributed Representation 向量中有大量非零分量相对分散把词的信息分布到各个分量中去了。
2隐藏层输入层到隐藏层之间有一个权重矩阵W隐藏层得到的值是由输入X乘上权重矩阵得到的one-hot编码向量乘上一个矩阵就相当于选择了权重矩阵的某一行如图假设输入的向量X是[010000]W的转置乘上X就相当于从矩阵中选择第2行[0.1, 0.2, 0.3]作为隐藏层的值;隐藏层h的值为多个词乘上权重矩阵之后加和求平均值。 用一个9×3的矩阵来表示初始化为
从输入层到隐藏层进行矩阵乘法
隐藏层到输出层也有一个权重矩阵W因此输出层向量y的每一个值其实就是隐藏层的向量点乘权重向量W的每一列比如输出层的第二个数就是向量[0.1, 0.2, 0.3]和列向量点乘之后的结果
从隐藏层到输出层我们可以用一个3×9的矩阵来表示初始化为 从隐藏层到输出层直接继续进行矩阵的乘法 3输出层最终的输出需要经过softmax函数将输出向量中的每一个元素归一化到0-1之间的概率概率最大的就是预测的词。 而我们的训练样本是希望其对应的概率要尽量的高也就是对应的概率要为1其它的概率为0这样模型的输出和真实的样本存在了偏差那们我们就可以直接利用这个误差来进行反向传递调整我们模型的参数从而达到了学习调优的目的。
Skip-gram model是通过输入一个词去预测多个词的概率。输入层到隐藏层的原理和simple CBOW一样不同的是隐藏层到输出层损失函数变成了C个词损失函数的总和权重矩阵W还是共享的。
Word2vec训练流程不断缩小error