AI 常用术语
刚刚加入AI公司,听组会听的头都大了,沟通过程中很多术语都不了解,于是简单学习记录一下
机器学习
任务
-
回归(Regression):预测连续型变量的值,如股票预测
-
分类(Classification):预测离散型变量的类别,如图像分类
-
聚类(Clustering):将数据划分为不同的组别,使得组内的相似性最大化,组间的相似性最小化,例如客户细分、图像分割
-
降维(Dimensionality Reduction):减少数据的维度,同时保留数据中的重要信息,例如主成分分析(PCA)
-
异常检测
-
序列预测
-
推荐系统
-
强化学习
-
生成模型
-
最大似然估计(Maximum Likelihood Estimation,MLE)
良定义
Well-Defined
一个定义要满足:明确性、一致性、完备性、无歧义性
- 明确性:明确指出所定义对象的范围和特征
- 一致性:定义不能自相矛盾
- 完备性:定义要包含足够的信息,使得人们可以通过定义判断一个对象是否属于定义的范围
- 无歧义性:定义要避免使用含糊不清、多义词
监督学习
Supervised Learning
从一组标记好的输入和期望出发,得到一个 $x\rightarrow y$ 的映射,目的是泛化知识,输入未标记的数据也能得到标记
由于需要提供正确答案,导致标注量和成本很大
- 分类问题
- 回归问题
无监督学习
Unsupervised Learning
输入没有标签,系统会从数据中特征提取,从而可以将数据进行聚类、分类
MAE
Masked Autoencoders
以一定比例mask掉图片中一些像素块、文本中一些内容,让模型去预测mask的部分。
自监督学习
Self-Supervised Learning
强化学习
Reinforcement Learning, RL
比如我们要设计一个自动驾驶的汽车,这个车我们称之为智能体,学习驾驶是一种行为,车当前的速度、位置等数字向量是车的当前状态,刹车、加速、转向是车的动作,根据当前状态决定动作是车的策略,如果这个策略好,应当给与奖励,这种反馈机制被称为奖励,汽车不能控制的其他事物被称为环境
强化学习最初没有系统的先验知识,而是进行探索和收集反馈,不断调整自己的动作,最终得到目标
策略梯度算法
我们希望能够得到最大化的奖励期望,于是对上面的期望$\bar{R}{\theta}$做梯度下降
PPO
Proximal Policy Optimization, PPO
近端策略优化,是对策略梯度算法的改进(额,完全没看懂,等我看懂了再来补)
DPO
Distributed Proximal Policy Optimization
对PPO的改进,能并行计算
偏好学习
Preference Learning
模型不是直接预测一个目标值(如在回归问题中)或一个类别标签(如在分类问题中),而是预测一个偏好顺序或者选择。这种偏好可以是全序的(例如,对一组电影进行排名),也可以是部分的(例如,只确定哪部电影比另一部更受欢迎,而不是对所有电影进行排名)。
对比学习
一种自监督学习方法,让相似的数据在嵌入空间中更近,不相似的更远,会有数据增强、映射、对比损失等过程,在多模态中很常用
CLIP
Contrastive Language–Image Pre-Training
OpenAI开发的基于对比学习的文本-图像模型,可以进行图像分类、图像搜索、图像生成,无需对特定任务进行专门的训练
ImageBind
Meta开发的基于对比学习的多模态模型,可以将六个模态映射到同一个嵌入空间中
CAVP
生成模型
-
无条件生成(Unconditional Generation):模型在没有特定输入条件或限制的情况下,自主生成内容的能力
-
条件生成(Conditional Generation)
自编码器
Autoencoder
传统的自编码器(下图)由一个Encoder和一个Decoder组成,类似于一个非线性的主成分分析(PCA),作用是将数据降维。降维后我们可以用中间参数$z$来表示原数据$X$,也能用$z$还原出$\tilde{X}$,其中$X$和$\tilde{X}$非常接近
$$ z = g(X) $$$$
\tilde{X} = f(z)
$$
如果我们从$z$的值域中随机采样一些$z$,再过一遍Decoder,理论上是可以得到数据的,但实际上大部分情况都是噪声,因为我们没有针对$z$的分布进行训练,在整个值域中有效的$z$非常少,随机采样到的基本都是无意义的$z$
变分自编码器
VAE(Variational Autoencoder)
变分自编码器,在自编码器的基础上显性对$z$的分布$p(z)$进行建模,使得潜在空间(latent space)符合高斯分布
VAE同样由Encoder和Decoder组成,Encoder将输入数据映射到潜在空间,Decoder将潜在空间的数据映射回数据
Conditional VAE
我们在VAE的值域中采样,总是能得到有用的$z$,但是我们不知道到底是哪一种$z$
做法是引入标注$Y$,原本对$p_0(X)、p(z)$建模,现在改为对$p_0(X|Y)、p(z|y_i)$建模
GAN
Generative Adversarial Network,生成对抗网络
由生成器(Generator)和判别器(Discriminator)组成
生成器负责从噪声中生成与真实数据尽可能相似的数据,判别器负责区分真实数据还是生成的数据
自回归模型
Autoregressive Model, AR
利用时间序列自身的过去值来预测未来值,可以通过逐步生成数据的每一部分来构建整个数据样本
扩散模型
Diffusion Models
一种深度生成模型,能基于一个噪声和一组参数,生成数据,包含前向加噪和反向去噪两个步骤
前向加噪会逐步在原始数据中添加高斯噪声(马尔可夫链),直到数据被破坏,失去可辨别性
$$
x_t = x_{t-1} + \sqrt{1-\beta_t} \cdot \epsilon_t
$$
- $\epsilon$:噪声样本
- $\beta$:噪声强度
反向去噪是训练一个神经网络,能使用噪声样本来还原原始数据,去噪声过程也是逐层进行的
$$
\widetilde{x} = x_T - \sum^{T}_{t=1}\alpha_t \cdot \epsilon_t
$$
- $x_T$:前向扩散结束时的完全噪声样本
VAE(变分自编码器):将图像、音频等数据编码到潜在空间,也能将潜在空间内容解码为图像、音频
scheduler(调度器):负责管理噪声的添加和去除
UNet:预测噪声残差
CLIP:用于分类任务
tokenizer:将prompt文本进行切分
text_encoder:从切分好的prompt提取embeddings
LDM
latent diffusion model
在潜在空间进行扩散过程,大幅降低计算成本
端到端
end to end
AI系统直接从输入数据中学习,并产生期望的输出,无需人为分解中间步骤
流程简单,但非常黑盒,不可解释,会发生灾难性遗忘
One-Shot Learning
few-shot learning
仅使用一个样本进行学习,使得模型可以识别新的类型。在人脸识别、物品检测、音频克隆中很常用
统计学
召回率
Recall
样本中的正例有多少被预测正确了
$$
\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}
$$
- TP(True Positive):预测为正例且实际为正例的数量。
- FN(False Negative):预测为负例但实际为正例的数量
精确率
Precision
预测为正的样本中有多少是真正的正样本
$$
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}
$$
- FP(False Positive):预测为正例但实际为负例的数量。
训练术语
Ground Truth
真实值
ACC
Accuracy
准确率=正确预测数/总样本数
Loss
损失
Focal Loss
F0 Loss
一种用于解决类别不平衡问题的损失函数,通过引入动态缩放因子,降低易区分样本的权重,将模型的注意力集中在难区分样本上
Epoch
在模型训练过程中,数据集被完整遍历一遍的过程
Overfit
过拟合
SOTA
State of the Art
表示在某个特定领域中的最好成果、最佳实践
w -> b c h w
表示维度转换
- w:表示原始的宽度(width)。
- b:表示批量大小(batch size),即一次处理的图像数量。
- c:表示通道数(channels),例如 RGB 图像有 3 个通道。
- h:表示高度(height)。
- w:表示转换后的宽度
稀疏激活
Sparse Activation
稀疏激活是指在神经网络中,大部分神经元的输出为0(或接近0),只有少量神经元输出非零值
使用稀疏激活可以提高计算效率,加速收敛,降低损失
通常通过使用特定的激活函数(activation function)实现,比如ReLU(Rectified Linear Unit)
$$
f(x)=\max(0, x)
$$
数据增强
Data Augmentation
在不实质增加数据的情况下,扩展训练数据的方法
- 对图片旋转、缩放、裁剪、通道变换
- 对文本替换、插入、删除、同义替换
- 对语音添加噪声、改变语速、改变音调
池化
Pooling
常用于CNN中降低特征图维度,将特征图划分为若干个子区域,对每个子区域进行统计汇总
- 最大池化
- 平均池化、全局平均池化
- 重叠池化
logits
模型输出的未归一化预测值
ablation
消融实验(Ablation Study)
用于确定一个条件或参数对结果的影响程度,通过去除或修改模型的某种组成,观察其对模型性能的影响,进而分析这些组成对整体的贡献
神经网络
Neural Networks
MLP
Multilayer Perceptron
多层感知器,一种最简单的前馈神经网络
CNN
Convolutional Neural Network,卷积神经网络
卷积(一维的就是窗口遍历,二维的类似高斯滤波)
- 卷积层:通过卷积核在二维平面遍历,卷积核的数值就是该神经网络的权重
- 池化层:将数据降维,比如选取四个像素中最大的值,使得数据量减少
- 全连接层
RNN
Recurrent Neural Network,循环神经网络,参考Understanding-LSTMs
$$
y_t=f(y_{t-1}, x_t)
$$
能够处理序列变化的数据(能够理解同一数据在不同上下文中含义不同)
LSTM
长短期记忆,比RNN在长序列中表现更好
RNN的一个问题是,他无法从先前的关键词中有选择地提取重要信息
图中$\sigma$表示数据转为0或1
RNN的一大问题是顺序执行,节点的输入是上一节点的输出,有依赖关系
Transformer
Transformer一种基于Attention的神经网络架构,放弃了顺序循环,完全通过注意力机制来建立输入和输出的依赖关系,具有更强的并行性
左侧是encoder,右侧是decoder,两者可以单独使用,也可以一起使用
encoder
如bert
encoder输入文本,将其转化为embeding或feature(每个单词变成一组数字),具有双向性
双向性:指生成某个单词的embeding时,会同时受到前后单词的影响
tokenizer可以实现将一句话分离为一组单词
decoder
如gpt-2
decoder通常具有encoder相同的能力,但是性能较弱,同样可以输入文本输出embeding,但是单向的
单向:decoder在生成单词embeding时,只会受前面的单词的影响
decoder通常是自回归的,常用于给定先前序列,生成新的内容(causal language modeling)
encoder-decoder
如T5
将两者合并得到encoder-decoder,可以用于seq2seq(Sequence-to-Sequence)
- encoder将序列输入转为一个固定长度的上下文向量(embedding)
- embedding和单词输入到decoder,生成一个新单词
WORD_1
- 将新单词
WORD_1
拼接到第一个单词后面,自回归调用decoder,生成下一次单词WORD_2
- 循环直到decoder输出出结束符号
Diffusion Transformer
DiT
VIT
Vision Transformer
基于Transformer的计算机视觉技术,将大模型NLP和CV整合在一起
AlexNet
论文地址,据说这是大模型的起源与标志
在图像识别领域,先前的工作使用的数据集都很小,尽管在某些任务中已经达到了人类水平,但是实际情况是非常复杂的,我们需要更大的训练集
为了能从海量的数据中学到东西,模型需要有一个巨大的学习能力。但是由于数据过于庞大,这个任务不能被人力明确定义。对于分类任务,只依靠训练数据是远远不够的,我们还需要有先验知识(prior knowledge)作为补偿。而CNNs(Convolutional neural networks)正好具有这种能力
使用高清图片训练CNNs是非常昂贵的,但更幸运的是,在算力上现在GPU可以加速CNNs的训练,在数据上最近有了大量标签过的训练数据
结构
一共八层
非线性ReLU
Rectified Linear Units
作者发现使用ReLU会大幅提高训练速度
多GPU训练
单个GPU的显存太小,无法放下训练数据,由于当时显卡具有交火功能,可以直接从另一张卡中读写数据,于是作者将模型平分放在两张卡上
为了减少GPU间通信,模型被设计为好几层,只有在某些层(C3)两张卡才会进行数据通信,其他层的输入只使用当前GPU中上一层的输出,大幅减少了通信次数
LRN
Local Response Normalization
对模型的输出进行归一化,以提高模型泛化的能力
重叠池化
Overlapping Pooling
重叠池化的池化窗口在特征图上滑动时存在重叠部分。通过增加特征冗余性、减少空间信息损失、增强特征不变性、提高尺度不变性和降低特征维度等方式,有助于防止模型在训练过程中发生过拟合现象
VGGNet
作者成功构建出一个非常深的卷积神经网络,并得到了更低的错误率和更强的泛化能力
为了构建一个很深的神经网络,作者
- 使用了非常小的卷积核
- 参数随机初始化
- 数据增强,比如随机裁剪、多尺度训练(放缩)
- 多GPU并行训练,将图像切分放入GPU中求梯度,将所有GPU中的梯度做均值,作为最终梯度
ResNet
当时,难以训练更深的神经网络,为此作者提出了一个残差(residual)学习框架,用于简化网络的训练。最终取得了惊人的效果,和当时很多工作比,具有更少的参数和更深的网络,甚至能达到千层
退化现象
深度神经网络在图像分类上取得了一系列巨大突破(AlexNet、VGGNet),他们的成功还表明模型深度对效果的影响非常大,通过标准初始化、中间标准化层的方法解决了梯度爆炸/消失的问题,现在已经可以训练十多层的模型,但难以训练更深的模型
当模型更深时,出现了退化(degradation)现象:随着网络深度的提升,准确性会饱和。
作者认为,如果解决一个任务最适合用K层网络,那么即使我们训练了一个比K深的网络,只要K之后的网络做恒等映射(Identity Mapping),直接返回输入的值,就能取得和K层网络相同的效果。因此,理论上比K深的模型效果不应比K层差,但实验结果是某个任务56层确实比20层差
于是作者认为,模型在试图用多个非线性层混合输出一个恒等映射(比如对一个数据先平方再开方之类的吗?),我们应该直接给模型一个恒等映射的能力
残差学习框架
作者引入了残差学习框架,来解决退化问题
残差网络的核心,是在非线性层基础上加了一个x,从
$$
y = F(x)
$$
变成(当然,新训练出的F(x)和之前是不同的)
$$
y = F(x)+x
$$
使用了这种操作(快捷连接)的网络都可以称作残差神经网络
理论上(万能近似定律),无论是$y=F(x)$还是$y=F(x)+x$,喂入足够的数据,都能拟合出所需的函数,区别是这两个模型的训练难度可能有所差异
通过观察可知,这一层模型是有可能被训练为$y=x$,也就是$F(x)$的输出恒为0,此时实现了恒等映射
维度映射
残差网络中输入和输出的维度应该是相同的,但实践中经常需要改变输出输出的通道数,可以用一个线性投影来匹配维度
$$
y=F(x, {W_i})+W_sx
$$
- zero-padding shortcuts:通过在输入中填充0来增加维度
- projection shortcuts:通过1x1的卷积线性增加或减少维度
作者发现投影效果比零填充要好,但也没有好太多,于是不是必须的
网络架构
- 和VGGNet很类似,使用3x3的滤波器进行卷积
- 当输出的维度减半时,滤波核的数量就跟着翻倍,以维持复杂度
- 每两层网络添加一个快捷连接,以实现残差网络
大模型
Alignment
对齐,引导AI行为,使其符合设计者的利益和目的,一个已对齐的AI会朝着预期方向发展
Baseline
通常指一个基本的、简单的、表现较好的模型,作为参考点来评估其他新模型
Priors
先验知识,比如在模型设计、训练时引入的一些假设或约束
Condition
作为动词时,通常表示对数据进行预处理、归一化
涌现
当模型规模大到一定程度,会瞬间拥有某种能力,这些能力有可能超出了设计之初到预期,比如在准确率曲线上随着训练数据的提升呈阶梯状上升
退化
当模型在学习某一方面知识时,如果数据集中没能覆盖之前某些方面的知识,可能会失去之前已经拥有的能力
大模型训练时,如果使用了很糟糕的数据,或者反复训练某些数据,有可能会快速退化
如果每次训练的数据都能覆盖模型的每一个能力,就很难退化
困惑度
在模型训练时,会检查数据的质量,可以通过一个小模型去扫描数据,判断数据的困惑度。比如读WIKI的前几个字,让模型输出下一个字,查看正确率
MoE
混合专家模式,Mixture of Experts
通过动态选择专门的子模型或“专家”来处理输入的不同部分,每个专家专注于特定任务
Switch Transformer
有监督微调
Supervised Fine-Tuning, SFT
对标记数据进行微调,以实现将预训练的大模型调整为特定的任务,可以利用到预训练模型的通用特征,不需要从头开始训练模型,节省大量资源
微调的数据量并不大,对模型的改动非常小,效果主要是激发,学知识还是要预训练
o
这里的o是Omnipotence的缩写,意思是全能,表示这个大模型是一个通用的全功能大模型
freeze
在论文的流程图中,经常画一个雪花标志
在微调训练中冻结模型的大部分参数,只对一小部分参数进行微调,可以节省资源,也可以避免发生灾难性遗忘
finetune
微调
token factorization
将token分解为更多的因子
CoT
Chain of Thought
思维链,将一个大问题拆分为多个小的子问题,逐步解决这些问题,模型的输入输出包含中间结果,模拟人类思考的过程
能提高数学问题、符号推理的求解能力
大模型为什么能学会输出固定长度的token?
大模型在输出token时,是有一个位置索引,可以驱动输出固定长度的任务
LoRA
Low-Rank Adaptation,参考
是一种用于大型语言模型微调的优化技术,旨在减少模型的参数量和计算量,同时保持模型的性能。很多人为SD画图训练了很多LoRA,只要少量图就能让模型学会生成新的画风
核心思想是在模型的特定层中引入低秩矩阵,来近似模型的权重更新
大模型的参数空间特别特别巨大,这些空间的大小超越了实际解决这个问题所需的维度,这个现象叫做过参数化,这意味着参数空间有压缩的空间,这就是LoRA的核心
秩
分为行秩和列秩,意思是矩阵中线性无关的行/列的数量
在机器学习中,我们使用一个矩阵表示一个全连接层,这个矩阵具有很多参数,但是这些参数往往是过参数化的,可以通过计算秩来降维
可以使用主成分分析(PCA)或奇异值分解(SVD)的方式,对矩阵进行很好的降维
Q-LoRA
提示学习
Prompt Learning
将任务转化为一个语言模型的预测问题,通过调整提示的格式和内容,使模型能够更准确地理解任务要求并生成相应的答案
你可以把很多奇怪的任务比如用矩阵控制人物表情转为训练一个模型输出字符串,再将这个字符串转回矩阵
适配器学习
Adapter Learning
在一个预训练模型的某一层中插入一个轻量级的适配器模块
EOS
End of Sequence
用于标记序列的结束,使得模型能够识别序列的长度和边界,能让模型学会什么时候停止生成
Scaling Laws
Transformer语言模型的性能与规模强相关,而对形状依赖弱
模型参数数量N,数据集大小D,训练用的计算量C
- 扩大规模会提高模型性能:同时增大N和D,性能会提升,但固定一方同时增加另一方,收益会递减
- 大模型比小模型更好:大模型比小模型更具样本效率,能以更少的优化步骤达到相同的性能水平,并使用更少的数据点
RAS
Repetition Aware Samping
vLLM
一个LLM推理框架,性能和吞吐量会更强,兼容多种开源模型
计算机视觉
Landmark
使用关键点、特征点来处理计算机视觉任务,比如人脸识别中使用眼睛、嘴巴、鼻子为关键点来检测追踪
Talking Head
一个CV任务,用于生成一个逼真的、会说话的人脸模型
SMPL
Skinned Multi-Person Linear Model
SMPL是一种用于描述人体形状(shape)和姿态(pose)的模型,shape是类似blendshape的channel,用于描述人的高矮胖瘦,pose是描述了定义好的关节节点(通常为24个)的旋转状态,使用轴角存储
SMPL可以转为.bvh,再转为.fbx,以导入游戏引擎中
RGB 数据集
指图片、视频、深度等数据,在CV领域用途很多
Inpaint
使用周围像素对图像进行修复/填充
逆渲染
正向渲染:从三维模型出发,得到二维图像的过程(也就是图形学的渲染)
逆向渲染:从二维图像出发,重建三维场景的过程
可微渲染
Reparameterizing Discontinuous Integrands for Differentiable Rendering
可微渲染(Differentiable Rendering)是一种实现逆向渲染的方法
从一个近似的三维场景出发渲染一张二维图片,求与Ground True的损失(loss),对三维场景的参数求偏导(Partial derivatives),即可使用梯度下降(Gradient descent)的方法得到和GT最相似的三维场景参数
问题:
- 传统的渲染器并不能对参数求偏导:搭建一个可微渲染器
- 很多参数不连续:对不连续的参数换元,并乘以一个平滑函数
NeRF
《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》
NeRF的任务是从一组已知的图片出发,得到其他视角下的图片
- 环绕物体拍摄一组2d的照片,在神经网络中构建一个5维的函数,输入为世界坐标$(x,y,z)$和视角$(\theta,\phi)$,输出为体密度和颜色
- 使用光线步进的方式进行体渲染
Gaussian Splatting
与NeRF类似,Gaussian Splatting也是从多个视角的图片出发,构建场景描述,通过高斯点染的方式,生成新视图
高斯点染的概念和光栅化很像,使用一个个椭球状的2D高斯函数为图元,将3D场景映射到2D图像上
未来帧预测
旨在基于已有的视频内容生成未来的帧序列,常用于自动驾驶、异常检测、视频压缩、视频编辑、动画制作
- 外观约束(Spatial Constraints):基于像素强度和梯度等空间信息,确保未来帧与已有帧外观相似
- 动作约束(Temporal Constraints):基于光流等运动信息,确保未来帧与已有帧连贯
长承预测
世界线
Worldline
一个物体在时空中运动轨迹,比如月球绕着地球转,轨迹是圆,如果加上时间轴,会变成螺旋线
视觉问答
Visual Question Answering,VQA
MEMC
运动估计和运动补偿(Motion Estimation and Motion Compensation)
通过分析视频中的运动信息,估计物体的运动轨迹,并根据这些信息来合成新的帧,常用于视频插帧
Edge
对图像进行边缘描边,由于数据简单纬度低,更利于预测等操作
结构纹理分解
Structure-Texture Decomposition
将图像分解为两个部分:结构(物体的类别、位置和姿态)和纹理(纹理的粗糙度、方向性和频率)
FACS
Facial Action Coding System
光流
Optical Flow
光流是CV领域用于描述图像序列中像素运动的一种方法,通过计算连续两帧图像中像素点的位移来估计物体的运动
光流基于三个假设:
- 亮度恒定假设:物体运动中,其表面亮度不变(真的假的?)
- 小运动假设:相邻两帧物体的运动是微小的,于是第一帧大部分点都可以在第二帧中找到
- 空间一致性假设:相邻像素的运动是相似的,其光流向量应该相似
光流的工作核心是用一些算法得到像素的运动向量
NLP
自然语言处理
BPE
Byte Pair Encoding,字节对编码
一种子词切分技术,通过将文本中的字符或字节对进行统计和合并,生成更小的子词单位,从而实现对文本的切分
- 构建词汇表
- 统计字符、字节的出现频率
- 按照频率从高到低合并为一个单独的字符,循环进行,直到没有字符对可以合并
- 得到最终的词汇表
ASR
Automatic Speech Recognition,自动语音识别
将人类语言转化为文字,以便AI理解并处理人类语言
LID
Language IDentification,语言识别,用于确定文本或语音所属语言类别的技术
EOS
End of Sequence
用于标注序列的结束
音频
RTF
Real Time Factor,实时率
处理音频所需的时间 / 音频时长
如果实时率小于1,则可以通过串流的方式实时给用户
VAD
Voice Activity Detection
语音活动检测(语音端点监测),可以从有噪音的语音中定位语音的开始和结束点、分离静音片段
TTS
Text-to-Speech,文本转语音
Vocoder
声码器,将语音特征转化为声音的模型