1. 向量化
将现实世界的信息告诉计算机,最简单直接的就是用数字代表属性,例如:
一个人的属性有以下:
- 身高 185
- 性别 1
- 体重 60
- 其他参数
用向量表示就是[185,1,60,....],维度越多,描述的越清晰。
1.1. 为什么要向量化
- 方便电脑处理
- 存找规律
- 可以计算:相加、相减、相乘
使用科学的方法:
- 通过向量的各种计算 -> 【结果】
- 和【正确的结果】去比较差距,通过loss函数,让他们收敛并接近,从而确定
1.2 向量化的方法
1.2.1 独热编码(one-hot编码)
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
例如:
性别特征:["男","女"]:
- 男 => 10
- 女 => 01
一句话可以拆飞为:[努,力,学,习]
- 努 => 1000
- 力 => 0100
- 学 => 0010
- 习 => 0001
缺点:
- 单词之间没有关系
- 耗费内存
1.2.1 word2vec
Word2Vec简单讲其实就是通过学习文本然后用词向量的方式表征词的语义信息,即通过Embedding 把原先词所在空间映射到一个新的空间中去,使得语义上相似的单词在该空间内距离相近。
Q矩阵,对于任何一个独热编码的词向量都可以通过Q矩阵得到新的向量
优点:
- 可以转换维度
- 相似词之间的向量也有了关系
缺点:
- 不能解决多义词问题
如何理解word2vector不能解决多义词问题bert可以解决多义词问题?
因为bert的词向量包含网络结构,简而言之就是:
静态的:word2vec的词向量y=x
动态的:bert的词向量是y=f(x)
1.2.3 ELMo
ELMo,是Embedding from Language Models的简称,它的核心思想体现在深度上下文(Deep Contextualized),除了提供临时词嵌入外,还提供生成这些词嵌入的预训练模型。因此在实际应用中,ELMo可以基于预训练模型,根据实际上下文场景动态调整单词的词嵌入表示。
由于采用LSTM结构,因此其并发能力、关注语句的长度在大的语料库面前有点力不从心。而现在业界更普遍的是基于Transformer的BERT模型
2. 信息压缩与特征提取
向量的维度可能有100w维度,存在一些问题:
- 耗费内存
- 其中的一些维度,对我们解决问题是没有关系的,可以舍弃掉
2.1 CNN
图片特征提取
缺点:上下文的一些信息会丢失
待补充
2.2 RNN
提取语言特征的好的方法
待补充
2.3 TransFormer
解决自然语言特征提取的问题,让句子的词跟句子里所有的词都做向量计算,然后再去做计算
待补充
2.3 TransFormer的演进
编码器:Encoder 理解能力强,适合做完形填空
- bert, simbert ...
解码器:Decoder 生成能力强,适合做成语接龙
- chatgpt,chatgpt3.5,chatgpt4
2.4 openAI成功的三个步骤
- 选择解码器的路线进行研究
- 通用的人工智能的研究路线选择了:自然语言,而不是图片或者音频,因为世界文明都是通过文字语言的方式发展起来的,如果理解了自然语言,也就理解能和整个人类无缝衔接
- 选择了大力出奇迹,然后模型涌现出了智能
- 增加训练层数
- 增加向量数据
- 增加训练数据