type
status
date
slug
summary
tags
category
icon
password
良师益友,何其幸运。今年年初的时候,搞了搞玄学,结果是后半年会比较累,要注重团队协作,当时心里多少有点慌慌的,如今真的迈入2024的后半年,却真实感受到能从团队的同学身上学习到很多东西,以他人为镜,发现自己在过往的阅读中存在诸多缺陷,很多细节不曾注意到,比如transformer中的mask部分……因此决定重走一次去年“学习”过的BERT路线。
语言模型
统计语言模型
n-gram模型,用前t-1个词去预测下一个词→条件概率。
考虑到当前词汇很大程度上是与它附近的词汇相关,因此,n-gram采用了窗口的思想,设置了大小为n的窗口,n一般不超过5。上述公式即可近似表示如下:
因此,n-gram的缺陷很明显:它在处理长序列上表现并不好,长序列情况下,参数会爆炸式增长。
此外,n-gram只关注词汇间的概率分布,没有关注到词汇(格式、语义上的)的相似性。在对词汇进行编码处理时,采用的是one-hot编码方式,编码长度取决于词表长度,稀疏离散而且不具备语义信息。比如:Yangyang is running on home.与 Cat is walking on home. → Cat is running on home. 但n-gram并不能捕捉Yangyang和cat之间的相似性、running和walking之间的相似性,也就无法作出上述推理。
神经语言模型
其实就是用神经网络的方式去预测下一个词,输入是前t-1个词的编码串联结果。
训练参数:
- 词向量矩阵
- 神经网络权重
- 偏置等等
在使用大型语料库训练神经语言模型的过程中,产生的副产物———词向量矩阵,相比one-hot的编码结果,就具备了一定的语义信息。
缺陷:模型参数巨大,训练耗费多
word2vec
word2vec训练过程中产生的词向量针对one-hot的优化主要体现在两个方面:1.降维;2.语义信息

word2vec利用上下文的相似性来衡量词汇之间的相似性,并且在词向量空间中,让相似的词汇向量彼此接近。具体的模型架构分为两种,是采取了不同的任务目标进行训练(我觉得可以把这里的训练任务理解成pre-task,因为这里的输出y其实没有那么重要,在之前我就陷入了误区,以为word2vec这个模型的输出是之后各种模型输入需要的词向量,其实不是这样的,真正的词向量是训练过程中产生的权重矩阵。)

输入层到投影层带权重,该权重对所有单词是共享的,投影层到输出层带权重。

关于input→hidden和hidden→output两个权重矩阵的计算量问题
① 整个网络的过程是使用输入的词去预测输出的词。输入的token是使用one-hot编码的,也就是说,假如输入的词在大小为V的词表中排在第k个,那么,只有,其余V-1个位置均为0。
② input→hidden: 在这个过程中,并没有涉及到非线性变化,输入one-hot向量乘以训练得到的权重矩阵。(上文提及该权重矩阵的每一行为一个词向量,结合one-hot的结构,相乘的结果其实就是取出权重矩阵中第k行向量,即第k个词的词向量作为隐藏向量)
③ hidden→output: 隐藏向量同样与权重矩阵相乘得到u,u即为词表中各个词汇的分数,但这里,隐藏向量已经不再是稀疏向量了,所以在训练过程中,梯度下降时,耗费时间更长,更加详细的解释如下:


- Author:NotionNext
- URL:https://tangly1024.com/article/66d56f92-9b74-4ae5-bf56-a17b469d59b9
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!