Feature engineering
-
传统机器学习: 手动提取+非端到端
-
深度学习: 学习特征+端到端
抽取特征
特征需要在大小、旋转方向上robust
SIFT: 对不同大小的图片作高斯模糊, 得到不同分辨率, 相邻两张分辨率的图片作差, 得到DoG。 从DoG中获取局部最大值、最小值作为关键点, 抽取关键点四周的梯度(邻近的16个patch,形 成梯度直方图。可以根据梯度最多的主导方向, 进行图片像素的旋转校正。
预处理
LP normalization: 对单一特征进行标准化, 计算特征与 0 之间的距离之和作为 norm值, x 的 p 次方 求和的p分之一次方, 对于所有的 x 除以这个norm。当p越大, x 越接近1或-1。
Z-score normalization: 对同一维度的多个特征进行标准化, 所有x减去均值除以标准差, 拉到标准 高斯分布。
空间信息
Spatial pyramid: 将图片分成多个 n∗n 的方块, 将不同方块依次拼接形成特征。比如 16∗256+4∗256+256
Position Embedding: 将图片分成 n∗n 的方块, 将方块的位置信息和方块特征拼接, 最后将这些特 征进行average pool。
Curse of high-dimension
高模型复杂度+少样本->过拟合, 低模型复杂度+多样本->欠拟合, 随着特征维度的升高, 模型先 欠拟合最后过拟合。
高维物体的体积集中在外壳, 且高维样本特征的均值升高、标准差降低, 导致基于距离度量的方 法失效, 比如KNN。
Dimension Reduction
解决过拟合问题
-
Feature selection: forward, backward, genetic
-
Feature projection: PCA, kernel PCA, LDA
-
Feature learning: Auto-encoder, SNE, t-SNE, LLE, sparse coding
Kernel trick
解决欠拟合问题, 将数据升维使得线性可分, xi→φ(xi)
比如 φ(X)=φ([x1,x2])=[1,x1,x2,x1x2,x12,x22]
引入 K(x,y)=φ(x)Tφ(y)
-
Linear: K(x,y)=xTy,φ(x)=x
-
Poly: K(x,y)=(xTy+c)d
-
Gaussian: K(x,y)=exp(−2σ2∥x−y∥2)
SVM (hard margin):
两条直线 wTx+b=1∨−1 之间的 marginm=∥w∥2,w 越小, m 越大, 即距离越大越好。
w,bmin21∥w∥2 s.t. yi(wTxi+b)≥1
w,bmin21∥w∥2+Ci∑ξi s.t. yi(wTxi+b)≥1−ξi,ξi≥0
Soft margin引入变量 ξ 以松驰约束
Lagrangian form, 引入 α 以及 β, 乘以约束项
Dual form: 对 w,b,ξ 分别求导, 可得 w=∑iαiyiφ(xi), 使用 QP 求解器求解, 对于kernel trick只能 用dual form求解
实际运算中, 可以将 b 作为一个维度吸收进 wTφ(x)=wˉTφ(xˉ)+b, 少掉一个约束项更加简化。 Kernel in logistic regression, w=∑iαiφ(xi) (representation theorem)
Kernel properties:
Distance metric
Distance between two samples
Minkowski distance(LP): 每一维特征差值的p次方之和的p分之一次方
- p=∞, Chebyshev distance: 最大的某一维特征差值
⋅p=2, Euclidean distance: 欧式距离, d=∥x−y∥=∥x∥2+∥y∥2+2xTy
- p=1, Manhattan distance
Cosine similarity: simcos=∥x∥y∥xTy, similarity越大, distance越短。和欧式距离的关系。 如果维度分布差别太大,需要先用Z-score normalization
Metric learning: 计算两个差异大的样本间距离, 将特征投影到同一空间。使类间距离足够大, 类 内距离足够小。
Mahalanobis distance: 马氏距离, dM(Px,Py)=∥Px−Py∥=(xT−yT)M(x−y),M=PTP, 注 意 M 矩阵是半正定的。
xi,xj∈DmaxdM2(xi,xj) s.t. xi,xj∈S∑dM2(xi,xj)≤1
EMD: 度量两个集合之间的距离, 两个集合中元素的数量不一定相同, w表示权重。比如计算图 片间的距离, 根据两张图片可以得到颜色直方图, x 为颜色值, w 为颜色像素的个数。
推土距离, S 集合相当于土, T集合相当于坑, 先计算不同 x 之间的距离, 从 wis 移动 fi,j 的土到各个 wjt 坑, 优化目标是最小化运的土。
fi,jmini∑j∑fi,jd(xis,xjt) s.t. i=1∑mfi,j≤wjt,j=1∑nfi,j≤wis,i∑j∑fi,j=min(i∑mwis,j∑nwjt)
要么把土清空要么把坑填满
Application of distance: KNN, retrival(根据文本找图像), verification(人脸验证, 判断两个样本 是否属于一个种类), outlier detection(异常值检测)
Distance between two distributions
由直方图表示分布:
-
Canberra distance: d(p,q)=∑i=1dpi+qi∣pi−qi∣
-
Chi-square distance: d(p,q)=∑i=1dpi(pi−qi)2
-
Intersection between two histograms: d(p,q)=∑i=1dmin(qi,pi)
MMD: 两个分布均值间的距离, 只考虑中心的欧式距离, 最简单的。
DMMD:[i∑xip(xi)−i∑xiq(xi)]2
KL divergence:
DKL(p∣q)=i∑p(xi)logq(yi)p(xi)=H(p,q)−H(p)
缺点是非对称的。
根据KL散度的变体, 将其变成对称的:
-
Jeffreys divergence: DJD=DKL(q∣p)+DKL(p∣q)
-
Jensen-Shannon divergence: DJS=21DKL(q∣21(p+q))+21DKL(p∣21(p+q))
Bregman divergence: 更general的形式
Dφ(p,q)=φ(p)−φ(q)−(p−q)T∇φ(q)
-
φ(z)=21zTz, 欧式距离
-
φ(z)=zTlogz, generalized KL散度
Single value decomposition
Best fitting line: 最大化所有点到这条线的投影平方和
PCA: 先decentralized再计算, Eigen Decomposition: ATAv=λv
Subspace: greedy algorithm, but can find the global optimum
Avi,di=∥Avi∥,ui=diAvidi→D,ui→UA=UDVT=i=1∑kdiuiviT
Norm based SVD:
-
p=0,rank of A
-
p=1, nuclear norm ∥A∥∗=∑ikdi
-
p=2, Frobenius norm
-
p=∞, spectral norm
Application of SVD:
-
rank-k approximation, 将 D 的 r+1∼k 维设为 0
-
image compression, r×(1+n+m)
-
latent semantic analysis, U : term-topic matrix, D : topic weights, VT : topic-document matrix, boat 和ship
Zero-shot learning
Seen category Cs 和 unseen category Ct
从 seen category中学习固有属性, 并告诉你unseen category的属性进行分类
-
人工标注, 准确率高但是麻烦
-
大规模语料库, 免费但是信息少
ZSL的关键在于:Visual space、semantic space和category space之间的桥接
semantic relatedness: 根据semantic space计算相似度矩阵, 作为分类器的权重, 对 seen category的 分类器施加不同的权重用以分类unseen category。
semantic embedding: 从visual space到semantic space学习一个映射, 训练的时候最小化映射后和 属性向量的loss, 测试的时候计算得出分数最高unseen category作为结果。
或者学习一个双重映射, 即 xTMac
synthetic: 从semantic space生成visual space的样本, 用分类器分类。根据属性特征随机生成样本 特征, 放入discriminator中判断真实性, 同时也放入classifier中维持保类性。
ZSL的问题:
-
Projection domain shift: seen和unseen的projection差异太大,使用属于unseen但不知道category的样本来调整映射矩阵
-
Hubness problem: 很多样本都汇聚到少量unseen category中 normalize the distance或者use ranking, 测试样本对每个种类都维护一个排名
-
Semantic gap: 存在一些non-visual特征, 需要将visual space和semantic space对齐, 对每个属性 特征, 计算它 K 个最相近的属性的平均值来代替它。
GZSL: 测试集包含一部分 seen category, 存在的问题是seen category分数比unseen的高
Domain adaptation
source domain和target domain不匹配, 比如source domain是真实图片, target domain是卡通图片
Traditional era
- Projection to a common space
DIP: 只考虑domain的中心,利用MMD
先Projection再Kernalization
MMD(P,Q)=∥EX∼P[φ(X)]−EY∼Q[φ(Y)∥d(WTXs,WTXt)=∥ns1i=1∑nsφ(WTXs})−nt1i=1∑ntφ(WTXt})∥2=tr(KWL)
TCA: 引入变换矩阵 W 表示假的
先Kernalization再Projection
K=(φ~(Xst)TW)(Wφ~(Xst)T)=KWWTK
SA:
用PCA获取 Xs,Xt 的投影 Ps,Pt
Mmin∥MPs−Pt∥F2M=PtPsT
取主导的向量 Pˉs,Pˉt,M=PˉtPˉsT
Xˉs=PˉtPˉsTPˉsXs,Xˉt=PˉtXt
CORAL: DIP是一阶距离(mean vector), CORAL是二阶距离(covariance matrix)
KMM: 对 source domain的样本加上不同的权重, 分别利用MMD+SVM, 缩小两个domain中心
KTM: 和KMM类似,但将MMD和SVM拼在一起
- Fix w, update βi, QP问题 - Fix βi, update w, weighted SVM问题
DASVM:
Learn how to transfer: 用于选择哪一种TF方法, 根据之前TF的经验, 学习相关知识
li=f(Si,Ti,Wi)W∗=argWmaxf(SNe+1,TNe+1,W)
Early deep era
reconstruction+classification, 加权分类损失和重构损失
Domain separation networks:
-
Private target encoder
-
Shared encoder
-
Private source encoder
两两之间有difference loss和similarity loss
target、部分shared以及source、部分source输出到shared decoder重建feature, shared中的source 信息输出到classifier中。
reconstruction loss有两个, classifier loss仅有一个
- Batch normalization based
Batch normalization:利用Z-score normalization, 训练集都用source domain的分布标准化, 测试集 用target domain的分布标准化。 domain adaptive batch normalization
Adversarial learning: 分类+分domain, 拉近source domain和target domain之间的数据分布 feature extractor, label classifer, domain classifier, gradient reversal layer
GAN era
Generative Adversarial Network: 从fearture-level到image-level
Unconditional GAN
用数据分布以及generator随机产生样本, 将假样本和真样本放入discriminator中判断是real还是 fake
GminDmaxEz[logD(G(z))]+Ey[log(1−D(y))]
左边一项生成的误差降低, 右边一项判断准确率降低, 达到以假乱真
Conditional GAN: 有先验知识, 不需要用数据分布产生随机样本, z 改变为 x 。
Paired GAN: pix2pix, 有成对的数据, 既可以用于生成新样本又可以和新样本一起放入 discriminator中判断 训练阶段:
GminDmaxEz[logD(x,G(x))]+Ey[log(1−D(x,y))]+Ex,y[∥y−G(x)∥]
测试阶段同conditional GAN
Unpaired GAN: 没有成对的数据, cycle GAN, 互相学习从 X 到 Y、Y 到 X 的映射, 希望两次映射后 和原来接近, DY、DG 分别用来判断两个域。
X→G(x)→F(G(X))Y→F(Y)→G(F(Y))
reconstruction loss、discriminator loss各两个
Data sampling
常见的分布类型:
-
Binominal (二项分布)
-
Poisson
-
Gaussian
From sample to distribution
MLE最大似然估计
p(x∣θ)=2πσ21exp(−2σ2(x−μ)2)p(x1,x2,…,xN∣θ)=Πi=1Np(xi∣θ)=(2πσ21)2Nexp(−2σ2∑i=1N(x−μ)2)μ^=N1i=1∑Nxiσ^2=N1i=1∑N(xi−μ^)2
有偏估计
Define λi=μ−xi,E[λi]=0,E[λi2]=σ2, 计算可得 E[σ^2]=NN−1σ2, 样本越多,偏差越小。
GMM高斯混合模型:K个高斯分布+各自权重
p(xi∣θ)=∑k=1Kp(xi∣μk,σk)πk
引入 γi(k), 第 i 个sample属于第 k 个分布模型的概率, 用EM算法估计 γ 和 θ 。
GMM和K-means的区别在于计算了属于每个分布的概率,相当于 soft clustering。K-means在 γ 和 μ 之间交替更新。
From distribution to sample
对于uniform distribution可以直接均匀随机采样
Rejection sampling:
难点在于找到一个envelope distribution
Adaptive rejection sampling: 分段考虑, 找近似
当原有分布具有log concave性质时, 可以用多个exponential envelope distribution来包住原有分布
logq(z)≥log(p(z))q(z)=kiλiexp(−λi(z−zi−1)),zi−1<z<zi
有时候不需要采样具体 x, 而是只需要 f(x) 的期望
Importance sampling: 用 q 代替采样
∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=S1i=1∑Sf(xs)q(xs)p(xs)
f(xs)q(xs)p(xs) 为权重, 最终结果是加权平均
MCMC蒙特卡罗采样:一大类方法, 逐个采样, 根据数据分布进行biased random walk
-
Metropolis-Hostings: 单变量
-
Gibbs sampling: 多变量
-
将所有维度分成两组, 交替采样
-
j=mod(t,d), 根据 p(xj∣xt1,xt2,…xtj−1,xtj+1,…,xtd) 随机产生 xt+1j,t=t+1
训练集的特权, 即training feature有多个, testing feature只有一个,通常test的PI难以获取
-
同multi-viewing, 但在test中不用PI, CCA和SVM-2K
-
- 为 test生成虚假的PI, 利用conditional GAN比如pix2pix
-
直接用RGB图片建立到depth特征的映射, Hallucination network
Hallucination network: RGB网络抽取RGB特征, 幻影网络抽取depth特征, depth网络仅在训练阶 段抽取depth特征, 并与幻影网络进行loss的计算。
SVM+: 利用slack function代替slack variable, 用函数拟合所能接受犯的错误
w,b,w~,b~min21∥w∥2+2γ∥w~∥2+Ci=1∑N(w~Tx~i+b~)
s.t. yi(wTxi+b)≥1−(w~Tx~i+b~),(w~Tx~i+b~)≥0
测试集的特权, 即testing feature有多个, training feature只有一个
Decision values: y~a,i=waTxa,it+ba
mini<j∑Di,j(y~a,i−y~a,j)
D 相似度越大,预测值就会更加接近
构建对角阵 Ai,i=∑jDi,j, Laplacian matrix L=A−D, 可将形式化简为 mintrace(Y~atLYat)
Multi-task learning
多个分类任务放在一起做,不同task之间信息共享
Traditional method
single: minw∥∥wTX−y∥∥2
multi: minwt∑t=1T∥∥wtTXt−yt∥∥2
根据task之间的关系, 添加一些约束项
-
Coherence regularizer: 要求不同分类任务彼此接近, 求分类器的均值, 使各个分类器和均值接 近
-
Low-rank regularizer: 最小化nuclear norm, 最小化这个矩阵的秩
-
Similarity among different tasks: 考虑不同task之间的相似性
Deep learning method
-
Hard sharing: 前面网络之间的参数完全共享
-
Soft sharing: 网络之间的参数按照一定程度接近, 不同网络层间的loss, 利用 Cross-stitch 不同层 之间的feature特征传递共享
-
Conditional variable:将vector拼接嵌入一些层, 预测每个通道, scale和bias作用于每个通道
-
One encoder and multi decoder: 经典架构, 实现多种任务