QKT)V位置编码:通过正弦和余弦函数将序列的位置信息加入到输入特征中,使模型能够感知序列顺序
PE(pos,2i)=sin(100002i/dmodelpos)PE(pos,2i+1)=cos(100002i/dmodelpos)
多头注意力:通过并行计算多个注意力头,捕获输入不同维度的特征关系,最会将所有头的输出拼接起来,并通过线性变换得到最终输出
编码器
- 输入嵌入与位置编码:将输入序列通过嵌入层映射到连续向量空间,并加上位置编码
- 多头自注意力:计算每个词与序列中其他词的关系,提取特征
- 前馈网络:两层全连接网络,用于非线性变换和特征提取
- 残差连接与归一化:每个子层后加入残差连接,并进行层归一化以稳定训练
解码器
- 目标嵌入与位置编码:对目标序列进行嵌入和位置编码
- 掩盖多头自注意力:计算目标序列中每个词的依赖关系,并通过遮掩机制防止未来信息泄露
- 编码器-解码器注意力:结合编码器的输出与目标序列的嵌入,捕获目标与输入之间的关系
- 前馈网络与输出生成:通过全连接网络进行特征变换,并用 softmax 生成目标序列的概率分布
支持向量机
最大间隔分类器
支持向量机的特殊之处在于,它不仅仅是找到一个超平面能分割样本点,还渴望找到所有可行超平面中最优的超平面,支持向量机通过计算离超平面最近的点到超平面的距离,然后最大化这个距离,即最大化数据点和超平面的最小间隔来定义最优:maxw,b∥w∥1miniyi(wTxi+b)
优化分析
首先超平面的表达式如下,其中w表示超平面的法向量,b表示超平面到原点的偏移
wTx+b=0
首先我们需要明确,需要优化的是距离超平面最近的点到超平面的距离,而不是所有点到超平面距离的总和,我们将这些点称作支持向量,支持向量到超平面的距离定义如下,其中分子∣wTxi+b∣是数据向量在超平面法向量方向上的投影,分母∥w∥是法向量的长度
d=∥w∥∣wTxi+b∣∀i∈支持向量
如果直接对这个d去优化,涉及分子和分母的比值,这会带来复杂的非线性优化问题,因此我们可以假设所有支持向量都满足以下条件
∣wTx+b∣=1
那么就有wTx+b=1是正类支持向量所在的超平面,wTx+b=−1是负类支持向量所在的超平面,两个分类超平面到决策超平面的间隔都是∥w∥1,因此分类间隔就是两个超平面的间隔,优化目标就是最大化这个分类间隔
w,bmax=∥w∥2
优化目标是最大化这个分类间隔,但是为了满足标准格式同时方便计算,我们转化优化目标为
w,bmin21∥w∥2
为了确保正确分类,所有样本点都需要满足约束
正样本:(wTxi+b)≥1负样本:(wTxi+b)≤1
在支持向量机中,我们可以规定正负样本的标签值是1和-1而不是1和0,这样就可以将约束条件简化为
yi(wTxi+b)≥1,∀i∈样本
综上,支持向量机的优化目标就是
w,bmin21∥w∥2s.t.yi(wTxi+b)≥1,∀i
软间隔
上述支持向量的定义是所有数据点到超平面距离中最小的一个,也称为硬间隔。然而硬间隔可能会导致模型过于复杂,甚至无法找到一个能够满足所有样本点的超平面。
因此有一种软间隔的方式,允许样本点出现在对应分类超平面的另一侧,同时设置容忍程度和惩罚项,也就是引入了松弛变量和添加正则化项,平衡间隔最大化与分类错误的代价。
w,b,ξmin21∥w∥2+Ci=1∑nξi,s.t.yi(wTxi+b)≥1−ξi,ξi≥0,∀i
需要注意的是,软间隔只是在一定程度上缓解线性不可分,它实际上还是用了线性超平面
核函数
如果数据在二维空间无法分开,我们可以将数据从低维特征空间映射到高维特征空间,以便在高维空间中实现更好的分类效果
核函数K(xi,xj)的本质上是在低维空间中计算高维映射后的点积值,而无需显式地进行高维映射
- 线性:K(xi,xj)=xi⋅xj
- 多项式:K(xi,xj)=(xi⋅xj+c)d
- 高斯:K(xi,xj)=exp(−2σ2∥xi−xj∥2)
- sigmoid:K(xi,xj)=tanh(αxi⋅xj+c)
损失
通过定义一个中间变量z=y⋅h(x)=y⋅(wTx+b)来统一分析不同的损失
理想损失:无穷大的惩罚会导致优化问题不可解
- 当正确分类即z >= 1时:损失为0
- 当错误分类即z < 1时:损失为无穷大
对数损失:关注所有样本点,适用于概率模型
- 当正确分类即z >= 1时:无论z多大,损失都很接近于log1即0
- 当错误分类即z < 1时:z越小,损失迅速增大
ELR(z)=log(1+exp(−z))
hinge损失:强调分类间隔,只对支持向量进行惩罚
- 当正确分类即z >= 1时:无论z多大,损失都是0
- 当错误分类即z < 1时:损失随着z变小而线性增大
ESV(z)=max(0,1−z)
可以看出,支持向量机只对z<=1的向量惩罚,这些向量是落在分类边界或间隔边界上的点,被称为支持向量,而z≥1的非支持向量位于间隔边界外,不影响分类边界的位置或者影响很小。
训练技巧
梯度算法
SGD:随机抽样,只用部分数据来计算梯度,减小计算复杂度,但是收敛速度慢,容易陷入局部最优
wt+1=wt−lr⋅∇f(wt)
SGD Momentum:在SGD的基础上,引入“动量”,将历史梯度也考虑进来,加速收敛
vt=ρvt−1+∇f(wt)wt+1=wt−lr⋅vt
RMSProp:在SGD的基础上,加权平均梯度平方,动态调整学习率,解决不同维度梯度尺度不一致的问题
st=ρst−1+(1−ρ)(∇f(wt))2wt+1=wt−stlr⋅∇f(wt)
Adam:综合了Momentum和RMSProp的优点,既引入历史梯度,又动态调整学习率
mt=β1mt−1+(1−β1)∇f(wt)st=β2st−1+(1−β2)(∇f(wt))2wt+1=wt−stlr⋅mt
预处理
预处理:在特征尺度差异较大的情况下,提升优化过程中的梯度收敛速度
- 居中化:减去均值,使数据分布以零为中心,xi′=xi−μ
- 标准化:标准化方差,使每个特征的范围一致,xi′=σxi−μ
- 白化:使数据具有单位协方差矩阵,消除特征之间的相关性
对于大规模数据集,直接对整个数据集进行一次性预处理可能计算复杂度过高,也可能随着数据分布变化而失效,可以在每次训练前,对单一批次进行预处理
初始化权重
合理的权重初始化可以避免梯度消失或梯度爆炸问题,并使网络更快地达到收敛
对于浅层网络,使用高斯分布初始化权重,打破对称性,确保每个神经元的初始输出不同,从而学习到不同的特征
对于深层网络,可以根据前一层神经元数量调整高斯分布的方差σw2=nin1,保证正向传播中输入和输出方差一致,避免因方差不匹配导致的梯度爆炸或消失
Dropout
训练阶段:按照概率p,随机丢弃一定比例的神经元
- 防止过拟合,适当降低模型复杂度,增强泛化能力
- 模拟集成学习,相当于在训练多个子网络
测试阶段:将每个神经元的输出乘上1-p,按比例缩小神经元输出
- 因为神经元以概率1-p被保留,保持期望输出的一致性
- 测试必须稳定,不能随意丢弃神经元
超参数调优
超参数是需要在训练之前设置的参数,它们不会在模型训练过程中更新,比如学习率、批次大小、dropout比例、隐藏层数目、神经元数量等
数据集划分:在训练集上训练模型,在验证集上调整超参数,在测试集上评估最终性能
网格搜索(Grid Search):枚举所有可能的参数的排列组合,通过交叉验证评估每个组合的性能,从而学习最佳超参数。
决策树
结构
决策树:适用于有标签的分类任务,通过递归地选择特征属性,将数据集划分为子集,最终将数据分类到不同的类别中
结构
- 内部节点:属性
- 边:属性的取值
- 叶节点:分类结果
- 分支:根据节点属性和边的取值对数据集进行划分
- 路径:决策依据和决策结果,可以看作为一系列if-else的规则集合
如何选择划分属性?
熵:是一种用来衡量目标变量不确定性的度量,熵值越大,说明数据集的分类结果越混乱、不稳定
分类目标:每次划分数据时的目标是找到一个属性,使得划分后的子数据集尽可能纯净,即能够最大程度地降低数据集的熵
在决策树中,目标变量Z是标签
H(Z)=−i=1∑npilog(pi)
条件熵:在属性Y被用作划分后标签的熵
H(Z∣Y)=y∈Y∑P(Y=y)H(Z∣Y=y)
信息增益:熵降低的量化指标,反映了某个属性在分类中提供的信息量,即原始标签熵 - 利用属性Y进行划分后的熵,信息增益越大,某个属性的信息量越多,应该被用来作为决策树的内部节点
IG(Y)=H(Z)−H(Z∣Y)
如何构建决策树
- 计算每个属性的信息增益,选择信息增益最大的属性作为当前划分节点
- 根据该属性的不同取值,将数据集划分为多个子集,并为每个子集生成一个子节点
- 对每个子节点重复上述过程,选择下一个属性进行扩展,同一条分支上,一个属性不能重复作为划分属性
- 停止条件
- 所有剩余实例的标签相同
- 没有更多属性可供选择
- 树的深度达到预设的最大值
- 信息增益小于某个阈值
剪枝
- 预剪枝:最大深度,最多子节点个数,最小节点包含样本数,最小节点信息增益
- 后剪枝:在树构建完成后,基于验证集的表现,移除贡献较低的分支
集成学习
集成学习:结合多个弱分类器来构建一个强分类器
- 弱分类器:在部分数据上表现较好,但在整个数据集上表现一般
- 强分类器:在整个数据集上表现良好,但是学习起来十分复杂
重点在于:如何构造弱分类器?如何结合弱分类器?
Bagging
核心思想:通过自助采样生成多个子数据集,并在每个子数据集上训练一个分类器,最终通过多数投票或平均来结合这些分类器的预测结果
- 从训练集中有放回地随机抽取N个样本,重复K次,得到K个子数据集
- 在每个子数据集上训练一个分类器
- 将所有分类器的预测结果通过多数投票或平均来得到最终预测
存在问题:如果分类器之间的错误模式相似,投票机制无法显著提高整体性能,需要引入额外的随机性,从而减少分类器之间的相关性
随机森林:使用决策树模型作为弱分类器,在 Bagging 的基础上,每次划分节点时,随机选择部分特征(而非所有特征)进行划分,降低树的相关性
Boosting
核心思想:使用同一个数据集进行多次迭代,每次迭代让当前弱分类器关注前一个弱分类器犯的错误,从而逐步优化自己
AdaBoost算法
- 初始化样本权重为同一值 -> 保证第一轮的训练公平,所有样本对模型的贡献相同
wi=n1
- 计算当前样本权重弱学习器的分类误差 -> 衡量当前弱分类器的性能,误差越小,弱分类器效果越好
- I(ht(xi)=yi)是指示函数,当分类器预测错误时值为1,否则值为0
- 误差εt是错误样本的权重之和
εt=∑i=1nwi∑i=1nwi⋅I(ht(xi)=yi)
- 根据弱分类器的错误率εt,计算其在最终强分类器中的权重 -> 赋予性能较好的弱分类器更大的权重,影响最终强分类器的决策
- 如果εt<0.5:分类器正确率高于随机猜测,权重为正且较大
- 如果εt>0.5:分类器表现差于随机猜测,权重为负且较小
- 如果εt=0.5:分类器效果等同随机猜测,权重为 0
αt=21ln(εt1−εt)
- 根据当前弱分类器的表现调整样本权重 -> 增加分类错误样本的权重,让下一轮弱分类器更多关注这些样本
- 分类正确,指数项为负,减小权重
- 分类错误,指数项为正,增大权重
- 弱分类器性能较好时,它的决策对样本权重的调整影响更大
- 弱分类器性能较差时,它的决策对样本权重的调整影响较小
wi←wi⋅exp(αt⋅−(yi⋅ht(xi)))
- 通过所有弱分类器的加权投票,得到最终的强分类器 -> 将多个弱分类器的优势结合起来,提升整体分类性能
H(x)=sign(t=1∑Tαt⋅ht(x))
弱分类器的权重不需要归一化,但是样本权重需要归一化
线性降维:PCA
为什么需要降维
- 缓解维度灾难:许多数据的维度非常高,直接处理会导致计算复杂度急剧增加
- 减少噪声:高维数据中可能包含许多无关或冗余特征,需要提取数据的主要特征,增强信号的清晰度
- 提高数据可视化:样本在高维空间中变得稀疏,降维可以直观地理解数据的分布,更好地观察数据的聚类特性或分类边界
PCA原理
- 最大化投影方差:找到一组正交方向,使得数据在这些方向上的投影方差最大 -> 最大程度保留数据的分布信息 -> 最佳正交方向ui是协方差矩阵的特征向量
maxuiTSui
- 最小化投影误差:找到一组正交方向,使得数据在这些方向上的投影能够最小化重构误差 -> 最大程度保留数据的数值信息 -> 最佳正交方向ui是协方差矩阵的特征向量
min∥x−i=1∑M(uiT)xui∥2
PCA的算法步骤
- 将数据的每个特征减去其均值,使得数据的均值为0,得到中心化的数据矩阵
- 计算协方差矩阵:S=N1XTX
- 对协方差矩阵S进行特征值分解,得到特征值和特征向量
- 按照特征值从大到小排序,选择前M个特征值对应的特征向量作为主成分方向
- 将原始数据投影到选定的主成分方向上,得到降维后的数据
奇异值分解:任意矩阵A都满足以下式子
- U:列向量是数据的主成分方向
- Σ:对角矩阵,其对角线元素是奇异值,表示每个主成分方向的重要性
- VT:列向量是数据的主成分方向
A=UΣVT
聚类:K-means
聚类:将一组数据实例划分为不同的簇,使得同一簇内的实例相似度高,不同簇之间的实例相似度低
应用场景
- 图像分组与分割
- 文档聚类和语义分析
- 社交网络人群划分
- 相似基因判断
- 市场细分
K-means流程
- 随机选择 K 个数据点作为初始质心
- 将每个数据点分配到距离最近的质心所属的簇
- 重新计算每个簇的质心,即计算簇内数据点的均值
- 重复分配和更新步骤,直到质心收敛或达到最大迭代次数
目标函数:最小化所有数据点与其所属簇质心的距离之和,其中rik是指示函数,表示第i个样本是否属于簇k,目标函数是单调减少的,因此保证收敛
J=i=1∑Nk=1∑Krik∥xi−μk∥2
改进一:超参数簇的数量K如何选择?
- 簇数量太少:聚类效果差
- 簇数量太多:过拟合
- 肘部法(Elbow):通过绘制簇数量K与目标函数J的关系曲线,选择曲线减缓的点作为最佳K值
改进二:初始质心如何选择?
- 随机选择:完全随机选择点作为质心,质心可能分布十分不均匀,训练速度慢,收敛到局部最优解,分类性能差
- 距离选择:选择距离现有质心最远的点:可能选择到异常点
- 结合随机和距离:距离越远的点越有可能被选中
Kmeans++流程
- 从数据集中随机选取一个点作为第一个簇中心
- 对于数据集中每个点x,计算其与当前所有簇中心中最近簇中心的距离
- 每个点被选择为簇中心的概率与其距离平方成正比,计算全部数据的概率分布
P(x)=∑x′∈XD(x′)2D(x)2
- 随机取一个0-1的数,落到哪个区间,就选择哪个点作为新的质心
- 重复2-4步,直到选择出K个簇中心
改进三:分配方式
- 硬分配:每个数据点确定性地属于一个簇
- 软分配:使用概率或权重表示样本与每个簇的关联程度
Soft-Kmeans流程
- 选择初始的K个质心
- 计算隶属度,即当前样本n属于簇k的概率,其中β控制软分配程度的参数,值越大,分配越接近硬划分
rik=∑j=1Kexp(−β⋅∣∣xi−μj∣∣2)exp(−β⋅∣∣xi−μk∣∣2)
- 根据隶属度更新每个簇的中心
μk=∑i=1nrik∑i=1nrik⋅xi
- 重复执行2-3步,直到簇中心不再发生显著变化或达到最大迭代次数
局限性
- Kmeans对异常值十分敏感
- 欧氏距离假设簇是球形的,对不规则形状的聚类效果差
隐变量模型
LVM
隐变量:不是直接给出来的数据,但对数据分布有潜在影响的随机变量,主要用于构建复杂模型和揭示隐藏结构
隐变量模型:包含显变量x和隐变量z,通过概率分布描述数据
- 先验分布p(z):隐变量的概率分布
- 条件分布p(x∣z):隐变量对显变量的作用效果
- 联合分布p(x,z)=p(z)p(x∣z):隐变量和显变量共同作用效果
- 边缘分布p(x)=∫p(x,z)dz:显变量的作用效果
- 后验分布p(z∣x)=p(x,z)/p(x):显变量对隐变量的作用效果
隐变量模型的学习目标:让观测数据尽可能地符合边际分布,也就是找到一组最优参数来最大化对数边际似然:maxθ∑i=1Nlogp(xi)
取对数:因为对概率的连乘计算复杂度太高,且容易导致数值溢出,通过取对数,将乘法变为加法,不仅降低了计算复杂度,还提高了数值稳定性
Gaussian LVM
高斯隐变量模型
- 假设观测变量由隐变量和高斯噪声线性组合而成:x=μ+Wz+ϵ,且ϵ∼N(0,σ2I)
- 假设隐变量服从零均值,单位协方差矩阵的高斯分布(先验分布):p(z)=N(z;0,I)
- 给定隐变量的时候,观测变量也服从高斯分布(条件分布):p(x∣z)=N(x;Wz+μ,σ2I)
- 观测变量的整体分布仍是高斯分布(边际分布):p(x)=∫p(x∣z)p(z)dz=N(x;μ,WWT+σ2I)
GMM
高斯混合模型:观测变量的分布是多个高斯分布的加权和:p(x)=∑k=1KπkN(x∣μk,Σk)
- πk:混合权重,反映了第k个高斯分布在整体模型中的贡献度/参与度/责任值
- μk,Σk:是第k个高斯分布的均值和协方差矩阵
GMM的隐变量
- 不是一个连续的高斯分布变量,而是一个离散变量:假如说有K个高斯分布,则隐变量表示为zi=[z1,z2,…,zK]
- 隐变量的概率分布:p(zk=1)=πk,∑k=1Kπk=1,表示数据属于第k个高斯分布的概率
GMM的隐变量模型
- 先验分布:p(zk=1)=πk
- 条件分布:p(x∣zk=1)=N(x∣μk,Σk)
- 联合分布:p(x,z)=πkN(x∣μk,Σk)
- 边际分布:p(x)=∑k=1KπkN(x∣μk,Σk)
- 后验分布:p(zk=1∣x)=∑j=1KπjN(x∣μj,Σj)πkN(x∣μk,Σk)
GMM的学习目标
- 最大化数据的对数边缘似然函数来优化模型参数,其中N是样本数,K是高斯分布数:max{πk,μk,Σk}k=1K∑i=1Nlog(∑k=1KπkN(xi∣μk,Σk))
- 学习隐变量的最佳后验分布,即得到描述每个数据点属于每个高斯分布的最合适概率,从而实现软分配聚类
其他LVM
隐马尔可夫模型(Hidden Markov Model, HMM):用于序列数据,隐变量挖掘状态对时间的依赖关系,应用于语音识别、时间序列分析
信念网络(Sigmoid Belief Networks, SBN):用于图像生成,挖掘高维数据的分布和结构,应用于图像生成和修复
隐狄利克雷分布(Latent Dirichlet Allocation, LDA):用于文本数据,挖掘文本中的潜在主题结构,应用于主题建模和文本分析
EM算法
隐变量模型的学习目标是最大化观测变量的对数边际似然logp(x;θ),这里的θ={πk,μk,Σk}
- 连续:logp(x;θ)=log∫p(x,z;θ)dz
- 离散:logp(x;θ)=log∑zp(x,z;θ)
但是直接求参数的最优解是不现实的,因此我们采取迭代优化的方式,即EM算法
- E步:在第t次迭代时,使用当前模型参数θ(t) ,计算隐变量z的后验分布
γik=p(zi=k∣xi;θ(t))=p(xi;θ(t))p(xi,zi=k;θ(t))=∑j=1KπjN(x∣μj,Σj)πkN(x∣μk,Σk)
- E步:用后验分布计算联合对数似然的期望
Q(θ;θ(t))=∫p(z∣x;θ(t))⋅logp(x,z;θ)dz=∫p(z∣x;θ(t))⋅[logp(x∣z;θ)+logp(z;θ)]dz=∫p(z∣x;θ(t))⋅logp(x∣z;θ)dz+∫p(z∣x;θ(t))⋅logp(z;θ)dz
- M步:最大化 Q 函数以更新参数
θ(t+1)=argθmaxQ(θ;θ(t))πk=N∑i=1Nγikμk=∑i=1Nγik∑i=1NγikxiΣk=∑i=1Nγik∑i=1Nγik(xi−μk)(xi−μk)T
- 当对数似然logp(x;θ)收敛时停止
最关键的步骤在于Q函数的引入,因为直接优化logp(x;θ)计算复杂,包含隐变量的求和/积分,而先求出后验概率,再用后验概率求期望,可以将隐变量的影响“分离”到期望计算中,优化变得简单
表示学习
定义
什么是表示学习:将任意格式的数据(如图像、文本、语音等)表示在低维向量空间中,目的是保留数据的关键特征信息,而不是所有信息
- 数据压缩:特征更加紧凑,减少了存储和计算的开销
- 提升效率:丢弃无关信息,只保留重要的语义信息
- 通用性:可以用于多种下游任务,如分类、聚类、相似性搜索、异常检测等
图像表示
卷积神经网络:卷积层+池化层+全连接层提取图像的局部特征,并将这些特征组合成更高层次的语义表示
自编码器:PCA就可以看作成一种线性自编码器,通过线性变换将数据映射到低维空间
生成模型:从数据中学习其潜在的概率分布,并基于学习到的分布生成与训练数据相似的样本
对比学习:构造正样本对(对同一个图片进行旋转、遮挡、裁剪、翻转、颜色抖动等操作)和负样本对(不同的两张图),最大化正样本对之间的相似性,最小化正样本对与负样本对之间的相似性,从而学习到能够反映数据的特征表示
文本表示
传统方法
one-hot:每个词用一个独热向量表示,句子表示为独热向量的拼接
BOW(Bag Of Word):忽略词序,仅记录词频
w表手单词word,d表示单个文件document,D表示文件集合Documents
- 词在单个文档中出现的频率(Term Frequency, TF):词如果出现在同一个文档中的次数越多,从而说明价值越高
TF(w,d)=num of dnum of w in d
- 词在整个文档集合中的普遍程度(Inverse Document Frequency, IDF):词如果出现在不同文档的次数越多,反而说明价值越低
IDF(w,D)=log(1+num of w in Dnum of D)
- TF-IDF:纵观全局,衡量词的重要性
TF-IDF(w,d,D)=TF(w,d)×IDF(w,D)
上述方法的局限性:维度高,稀疏,繁琐,无法反映词之间的语义相似性
Word2Vec
- Skip-Grams:通过目标词预测上下文词,更注重局部关系,适合捕捉稀疏语料中的语义信息
- CBOW:通过上下文词预测目标词,更注重整体上下文,适合处理较小规模的数据集
上述方法的局限性:只注重邻近单词之间的联系,但不考虑整个句义,无法表达单词在不同语境下的多义性
Sentence Embedding
ELMo:基于双向 LSTM 的语言模型,为每个词生成上下文相关的词向量,利用句子中的前后语境信息
BERT:基于 Transformer 的预训练模型,输入词嵌入、段嵌入和位置嵌入,通过掩码语言模型和下一句预测任务进行预训练,生成上下文相关的词嵌入
- 掩码语言模型(MLM):训练模型预测句子中被随机掩码的词
- 下一句预测(NSP):训练模型判断两个句子是否是连续的
生成模型
定义
生成模型也是一种隐变量模型,描述了数据的生成过程
- PCA:令隐变量是正交基向量,数据由正交基向量的线性组合而成
- GMM:令隐变量是软分配向量,数据由软分配向量的高斯分布加权组合而成
深度生成模型:将隐变量通过网络变换生成观测变量,建模能力更强,p(x,z)=p(x∣T(z))p(z),其中T(⋅)表示神经网络的输出
KL散度
用来衡量两个概率分布之间差异的一个非对称度量,又称为相对熵,其中P是目标分布、Q是参考分布
- 离散:KL(P∥Q)=∫P(x)logQ(x)P(x)dx
- 连续:KL(P∥Q)=∫P(x)logQ(x)P(x)dx
由于神经网络的使用,深度生成模型的后验分布p(z∣x;θ)和联合概率均值都难以直接求解
VB-EM框架
定义近似后验分布
qϕ(z∣x)=N(z;μϕ(x),σϕ2(x))
改变优化函数
L(x;θ,ϕ)=Eqϕ(z∣x)[logpθ(x∣z)]−KL[qϕ(z∣x)∥p(z)]
优化函数:
- 第一项是期望对数似然项:鼓励模型生成与数据一致的样本
- 第二项是KL散度项:作为正则化约束,鼓励近似后验分布与先验分布之间尽量相似
MCMC技巧
- 采样:为了近似地求出优化函数,我们可以从分布qϕ(z∣x)中采样多组z(i),然后用这些采样点的平均值来估计期望
- 重参数化:随机采样是离散的点,不方便求梯度,因此可以将采样过程转换为一个可微分的形式:z=μϕ(x)+σϕ(x)⋅ϵ,其中,ϵ∼N(0,I)是一个标准正态分布的随机变量,隐变量的随机性被显式地分离到ϵ中,从而可以使用梯度下降优化
推荐系统
定义
推荐系统:帮助用户从大量物品(如商品、电影、音乐等)中找到他们可能感兴趣的物品,应用于电商平台(如亚马逊)、流媒体服务(如Netflix)、社交媒体(如YouTube)等
形式化模型
- 用户集合X,物品集合S,评分集合R
- 评分函数u:X×S→R
- 评分矩阵:用户对物品的评分矩阵,通常非常稀疏
基于内容
核心思想:根据用户历史喜欢的物品,推荐相似的物品
- 物品画像:每个物品的特征向量
- 用户画像:用户喜欢的物品画像的加权平均
- 预测评分:计算用户画像与物品画像的相似度来预测评分
优点
缺点
- 缺乏多样性,可能导致“信息茧房”
- 对复杂物品(音乐、图像)的绘制画像难度大
协同过滤
核心思想:通过用户之间或物品之间的相似性进行推荐
- 用户-用户协同过滤:利用相似用户对同一物品的评分来预测目标用户的评分
- 物品-物品协同过滤:利用同一用户对相似物品的评分来预测目标物品的评分
优点
缺点
- 冷启动问题,新用户或新物品没有足够评分,无法进行有效推荐
- 流行度偏差,倾向于推荐热门物品,无法推荐冷门物品
- 随着用户和物品数量的增加,计算相似度的复杂度急剧上升
矩阵分解
核心思想:将用户-物品评分矩阵分解为两个低维矩阵,分别表示用户和物品的潜在特征
- 用户矩阵P:每行表示一个用户的潜在特征向量
- 物品矩阵Q:每行表示一个物品的潜在特征向量
- 预测评分:通过用户和物品的潜在特征向量的内积来预测评分
优点
- 泛化能力强,支持发现用户潜在的喜好
- 降维操作降低了计算复杂度,适合大规模数据
缺点
- 冷启动问题,新用户或新物品没有足够评分,无法进行有效推荐
- 随着用户和物品数量的增加,分解复杂度增加
评估指标
- 均方根误差:预测评分与真实评分之间的差异
- 准确率:在推荐的物品中,被用户实际喜欢的物品所占的比例
- 召回率:用户实际喜欢的物品中,被推荐出来的比例
- 排名相关性:输出的物品排序与用户真实偏好排序之间的相关性
- 多样性:衡量推荐结果中物品之间的差异性
- 覆盖率:衡量推荐结果覆盖的物品和用户数量
- 推荐解释性:推荐结果是否可以解释并且被用户理解
- 体验友好性:用户是否满意推荐结果
异常检测
定义
异常检测(Anomaly)/ 离群点检测(Outlier)/ 新颖性检测(Novelty):检测与大多数数据样本显著不同的数据样本,表现为多样性高、无法明确表征、无法穷举
- 点异常(Point):单个数据点本身可被确定为异常
- 上下文异常(Contextual):在特定上下文中,单个实例可能看起来异常
- 集体异常(Collective):一组实例在一起检查时可能被视为异常
方法
基于距离:将远离大多数实例的实例看作异常,计算到第k个最近邻居的距离,如果距离高于某个阈值,则视为异常
- 对k值敏感,难以找到好的距离度量
- 复杂度高O(n2)
基于密度:将落在低密度区域的实例看作异常,计算正常数据的概率密度分布,如果某个实例的概率低于阈值,则视为异常
基于重构:将无法重构的实例看作异常,在正常数据实例上训练自编码器,如果某个实例无法很好被解码重构,则视为异常
- 需要大量正常数据进行训练
- 对未见过的正常样本也判定为异常
基于单分类器:将不在超球体内的实例看作异常,利用支持向量构造决策边界,如果某个实例在边界之外,则视为异常
评估
ROC曲线:以TPR为纵轴,FPR为横轴,绘制出的曲线,其面积用于衡量分类器的整体性能
- 真阳性率:检测出的正样本中实际为正的比例,TPR=TP+FNTP
- 假阳性率:检测出的负样本中实际为正的比例,FPR=FP+TNFP
PR曲线:以Precision为纵轴,Recall为横轴,绘制出的曲线,其面积用于评估分类器在检测异常点上的性能表现
- 精确率:检测出的正样本中实际为正的比例,Precision=TP+FPTP
- 召回率:实际正样本中被正确检测出的比例,Recall=TP+FNTP
F1分数:是精确率和召回率的调和平均数,用于综合评估分类器在平衡这两个指标时的性能表现
F1=2⋅Precision+RecallPrecision⋅Recall
多模态学习
多模态学习:旨在同时处理和理解来自多种模态(例如文本、图像、音频、视频等)的数据,学习不同模态之间的关联与交互关系,以实现信息的有效融合和综合分析
Vision Transformer, ViT(图像理解)
- 把图像拆成小块 patch,通过线性变换转换为向量,并加上位置嵌入以保留位置信息
- 用 Transformer 模型处理向量,通过自注意力机制学习图像的整体表示
- 通过一个 MLP 分类头输出图像的类别
Contrastive Language–Image Pretraining, CLIP(图文对齐)
- 图像通过图像编码器变成向量,文本通过文本编码器变成向量
- 让匹配的图像和文本向量在空间中靠近,不匹配的远离
- 模型能够将图像和文本映射到共享的向量空间中,实现跨模态检索和分类,通俗的来说,就是根据文本描述直接找到对应的图片或者根据图片生成对应的文字描述
Bootstrapping Language-Image Pretraining, BLIP(图文生成)
- 图像通过图像编码器变成向量,文本通过文本编码器变成向量
- 对比学习:将匹配的图像和文本特征向量在共享的多模态空间中拉近距离,而将不匹配的特征向量推远
- 生成学习:对输入图像生成描述性文本,过滤低质量、无意义或不相关的文本描述
- 联合生成损失和对比损失,通过“自产自销”提升模型性能