一、词嵌入的概念
自然语言处理的突破在2023年震撼世界,chatgpt3出来,之后chatgpt4、Gemini、Claude3等出来,问答越来越智能,非常厉害,其中有个基础性的概念,计算机要如何理解语言,基础工作就在于将词向量化,关键的概念便是词嵌入(word embeddings),之前我觉得这个词读的非常绕口,想为什么不直接叫词向量?其实形成词向量的方法有很多,包括词袋模型(Bag-of-Words model)也是一种方法,而词嵌入很厉害,可以让算法自动的理解一些类似的词,也就是自监督,通过词嵌入的概念就可以方便的构建NLP应用了!当然现在也有人在思考如何改进词嵌入的理解深度。
构建词嵌入的步骤有两步:
1、词嵌入第一步是给所有词构建one-hot向量,形成一个巨大的稀疏矩阵,每个词对应到某一个位置为1的向量。
2、通过深度学习来产生词嵌入,比如skip-grams学习词嵌入矩阵,词嵌入矩阵的格式有点像下面这样,当然每个维度表示什么含义属于自监督的事情,也就是说人是不知道的,一般设置成100~300维,词嵌入实际上属于“辅助产品”。以skip-grams算法为例,核心思想是构建一个监督学习问题:根据已有一个目标词,在多少个词内(自己定)找到另一个词,做成一个合理搭配。本身这个问题也很难解,但转成一个求概率问题之后,定义它的损失函数,经过反向传播算法它便是可以计算的了。
但是上面这个算法的计算复杂度是很高的,一旦数据量增大,计算会变得非常慢。因此就有分级(hierarchical)的softmax分类器和负采样(Negative Sampling)。分级的思路就是算法中常用的分而治之的思路,这种思路诞生了二分法、动态规划等算法,其实就是在softmax中不用先直接分到某个类,先确定区间,是前50%的分类还是后50%的分类。负采样的逻辑也简单,除了给正确词之外,也给不正确词,两者做搭配,从而减少运算量。
二、PCA(主成分分析)
主成分分析