大模型是无法直接理解人类语言的,需要对人类语言进行处理,然后送入大模型,大模型通过复杂计算输出回答。
怎么对人类语言进行处理呢?
1.独热编码(one-hot encoding)
一个单词用一个向量表示,1表示存在,0表示存在
例子:
【天,地】分别对应【10,01】
【蓝,广,绿】分别对应【100,010,,001】
则:
【天蓝】=【10 100】
【地广】=【01 010】
缺点:
- 向量无法包含单词之间的关系
- 如果要表示某个具有很多种类的事物,就需要很多向量,计算难度变大
2. 词嵌入(word embedding)
词嵌入不仅可以让词变成向量,而且可以知道单词之间的关联性:相似词的距离要更近
传统词嵌入
统计单词在句子中出现的频率,用这些频率组成向量来表示句子
如: “apple apple banana”,若词汇表为 [“apple”, “banana”, “cherry”],其向量就是 [2, 1, 0]。
具体实现:词袋模型(Bag-of-Words Model)、TFIDF
缺点:没有考虑单词的语义和顺序
静态词嵌入
模型经过训练,根据单词在语料库中的出现情况等信息,为每个单词计算出一个向量,这个向量是固定不变的。
如:一个简单的文本语料库:“I like apples. Apples are delicious.”。
首先,模型会对语料库进行训练。在训练过程中,它会学习每个单词的上下文信息。例如,“apples” 这个单词的上下文有 “I”“like”“are”“delicious” 等单词。模型通过预测上下文单词或中心单词来调整词向量,最终得到一个将单词映射到向量空间的查找表。
假设训练完成后,“apples” 对应的向量是 [0.2, 0.3, -0.1, 0.4, …]。那么无论 “apples” 出现在这个语料库中的哪个句子里,它的向量表示都是固定的 [0.2, 0.3, -0.1, 0.4, …]。
具体实现:Word2Vec、FastText
缺点:缺少语义信息
上下文化词嵌入
会根据单词所处的具体上下文来动态地生成不同的向量表示,即使是相似的词,出现在不同的上下文中也会得到不同的向量表示
具体实现:ELMo、GPT、BERT