
详细引见ChatGPT的神经网络的深度学习算法Word2Vec
Word2Vec是一种深度学习算法,用于学习词嵌入(Word Embedding),行将词语映射到低维向量空间中。Word2Vec算法分为两种:CBOW(Continuous Bag of Words)和Skip-gram。
CBOW的思绪是,给定周围的n个单词,预测中心单词。这个环节相似于一个分类义务,行将周围的单词转换为向量,而后将这些向量兼并,并将它们传递到一个softmax层,该层将计算出中心单词的概率。损失函数为交叉熵。CBOW算法的好处是训练速度快,缺陷是不实用于稀有词语。
Skip-gram的思绪是,给定中心单词,预测周围的n个单词。这个环节相似于一个回归义务,行将中心单词转换为向量,并将其传递到一个softmax层,该层将计算出周围单词的概率。损失函数为交叉熵。Skip-gram算法的好处是实用于稀有词语,缺陷是训练速度较慢。
在训练Word2Vec时,经常使用了负采样(Negative Sampling)技术来减速训练。详细来说,关于每个中心单词,咱们从词汇表中随机选用k个单词作为负样本,将它们传递到softmax层,并计算它们的概率。而后咱们经常使用交叉熵损失函数来最小化实践单词和负样本的误差。
Word2Vec算法的好处是可以将单词示意为低维向量,从而繁难了人造言语解决义务的解决。Word2Vec算法曾经被宽泛运行于诸如文本分类、情感剖析、机器翻译、人造言语生成等义务中。
详细引见ChatGPT的神经网络的深度学习算法GloVe
GloVe(Global Vectors for Word Representation)是一种基于全局词向量的词嵌入算法,由斯坦福大学的钻研人员开发。它与word2vec一样,可以将词语映射为实数向量,但它驳回了一种不同的方法来训练这些向量。GloVe的基本思维是将词与词之间的共现相关示意为一个共现矩阵,并经过对该矩阵启动因式合成来学习词向量。这种方法具备很好的可解释性和稳固性,而且在一些人造言语解决义务上体现杰出。
详细来说,GloVe算法的外围是应用共现矩阵来建设词与词之间的相关。共现矩阵的每个元素$X_{ij}$示意词$i$和词$j$在一个固定大小的高低文窗口内独特产生的次数。因此,关于一个文本汇合,可以经过遍历每个窗口来构建这个矩阵。
接上去,GloVe经常使用因式合成机(Factorization Machine)来学习这个共现矩阵的词向量示意。详细地,GloVe将词向量示意视为模型参数,并经过最小化一个损失函数来学习这些参数。该损失函数的外围是最小化预测词向量和高低文词向量的点积与它们对应的共现矩阵元素的对数之差的平方:
其中,$boldsymbol{w}_i$和$ tilde{boldsymbol{w}}j$区分是词$i$和词$j$的向量示意,$b_i$和$tilde{b}j$是它们的偏置项,$X{ij}$是词$i$和词$j$的共现次数,$f(X{ij})$是一个加权函数,用于平衡各种词对的关键性。
GloVe的好处是能够在大型语料库中高效地学习词向量,并且这些向量具备很好的数学性质。另外,GloVe还可以繁难地启动并行化解决,因此可以在现代配件上减速训练。不过,与word2vec相比,GloVe的运行场景愈加有限,由于它不能解决未知词汇,也不能很好地捕捉词语之间的复杂相关。
详细引见ChatGPT的神经网络的深度学习算法FastText
FastText是Facebook于2016年颁布的一种文本分类算法,它是word2vec的裁减,能够极速训练大规模文本数据。FastText关键驳回的是基于字符级n-gram的文本示意方式,能够有效地解决稠密文本数据,同时也能够提高词语之间的语义相似度计算精度。
FastText的模型结构关键包括三个部分:输入层、隐含层和输入层。输入层将输入的文本数据分红n-gram方式的字符序列,而后将其投影到隐含层。隐含层关键是驳回向量累加的方式对字符序列启动示意,这种方式可以有效地表征整个文本的消息。最后,将隐含层的向量经过softmax函数,映射到一个固定大小的输入向量。
FastText的好处包括:
FastText的缺陷关键包括:
详细说明下字符级n-gram的文本示意方式
字符级n-gram是一种基于文本的字符级别的示意方式,用于将文本示意为数字方式的向量。n-gram指的是将文本划分为延续的n个字符,其中n是一个正整数,称为n-gram的大小。字符级n-gram将文本中的每个字符示意为一个特色,并思考字符之间的顺序,从而能够示意出文本中不同的语法和语义特色。
详细地说,给定一个文本序列,字符级n-gram首先将文本划分为n个延续的字符组成的子串,称为n-gram。而后,关于每个n-gram,都将其示意为一个特色。假定文本中共有m个不同的n-gram,那么可以将文本示意为一个m维的向量,其中每个维度对应一个不同的n-gram特色。向量中的每个维度可以示意文本中对应的n-gram产生的频率或许产生的二元形态(产生或未产生)等等。
字符级n-gram的关键好处是可以很好地捕捉到文本中的部分特色,尤其实用于较短的文本序列。与词袋模型不同,字符级n-gram不须要将文本合成成词,因此可以解决不规定的文本和未登录词。另外,由于字符级n-gram思考了字符之间的顺序,因此可以捕捉到一些关键的语法和语义特色,例如单词的拼写失误、命名实体、词缀等等。
但是,字符级n-gram也存在一些缺陷。首先,由于每个字符都被示意为一个特色,所以特色空间的维度很高,须要更多的计算和存储资源。其次,由于字符级n-gram疏忽了词的高低文消息,因此难以捕捉到一些关键的语义相关,例如近义词和多义词等。最后,由于字符级n-gram不可将不同长度的文本序列示意为相反维度的向量,因此在某些状况下或许会造成一些疑问,例如在文本分类或聚类义务中。
ChatGPT中的负采样(Negative Sampling)是如何启动技术成功的
负采样(Negative Sampling)是用于提升神经网络中的softmax层的一种近似方法,它可以在保障准确性的同时,降低计算复杂度。
在ChatGPT中,负采样是用于提升词向量训练的环节。详细成功方式如下:
为每个词汇调配一个权重,该权重是依据该词汇在语料库中产生的频率来计算的,产生频率越高,权重越大。
关于每个指标词汇和高低文词汇对,选取若干个负样本,即随机从语料库当选用一些与指标词汇不相关的词汇,普通选用 5-20 个左右,使得指标词汇与其正样本之间的距离比与负样本之间的距离更大。
将指标词汇和正样本词汇的词向量启动加权求和,作为输入向量,负样本词汇的词向量则不介入计算。而后对这些输入向量启动sigmoid激活,失掉它们被选为正样本的概率。
关于每个正样本和负样本,计算它们的损失,经常使用梯度降低算法来降级词向量和权重。
这种方式可以有效地放慢训练速度,并提高模型的准确性。
Negative Sampling(负采样)用到了哪些算法公式
Negative Sampling(负采样)关键用到了以下两个算法公式:
Sigmoid 函数:
Sigmoid 函数是一种经常出现的激活函数,理论用于二分类疑问的输入层。其公式为:
$$sigma(x) = frac{1}{1+e^{-x}}$$
其中,$x$ 示意输入的值,$sigma(x)$ 示意输入的值,取值范畴为 $(0,1)$。
Negative Sampling 指标函数:
在训练 Word2Vec 模型时,咱们须要最小化指标函数,以便失掉好的词向量示意。关于 Skip-gram 模型,指标函数可以写成:
$$ J(theta)=frac{1}{T} sum_{t=1}^Tsum_{-mle jle m,jne 0} log(sigma(boldsymbol{v}{w{t+j}}^top boldsymbol{v}{w_t})) + kmathbb{E}{wsim P_n(w)}[log(sigma(-boldsymbol{v}{w}^top boldsymbol{v}{w_t}))] $$
其中,$boldsymbol{v}_w$ 示意词 $w$ 的词向量,$T$ 示意语料库的长度,$m$ 示意高低文窗口大小,$k$ 示意负样本采样个数,$P_n(w)$ 示意词 $w$ 在负采样中的采样概率散布。指标函数由两部分组成,第一部分是正样本的损失,第二部分是负样本的损失,其中负样本是依据概率散布 $P_n(w)$ 采样失掉的。最终咱们的指标是最小化指标函数 $J(theta)$,其中 $theta$ 是模型的参数