tags
type
status
date
slug
summary
category
password
icon
以下记录核心结论以供查阅,具体细节见课程PPT
回归
损失项+正则项
正则项
L1:,会尽可能把参数压到0
L2:,会尽可能让参数小,但不是0
线性回归
一般我们取,也可以取等
二分类逻辑回归
法1:
y=0/1,因此实际上求和每一项是f(x)或者1-f(x)
一般我们取
法2交叉熵损失:
二者其实是等价的
SoftMax
其中yi和j为1…K,表示标签;i表示样本下标
Lagrange对偶与KKT条件
- 原问题:
其中f.g.h均为凸函数,从而可行域为凸集
- 对偶问题:
- KKT条件(假设原问题与对偶问题能达到同一个最优解,在凸优化的前提下成立)
感知机
yi=-1/1
SVM
- 原问题:
- 对偶问题:
得到后
j为某个支持向量的下标()
- 软线性可分
- 原问题:
- 对偶问题:
得到后
j为某个支持向量的下标()
- 核函数
把替换成


接近线性可分的数据,线性核和多项式核性能与高斯核差不多;高斯核对比较扭曲的边界性能较好,但对数据大小比较敏感,不能出现巨大的量纲差,因此最好在训练前对数据进行normalization
一般而言,C决定取值范围,太小会欠拟合,太大会过拟合且跑的很慢
- 可以进行多分类/回归
聚类
KNN:判断型的算法。离样本点最近的k个点投票
K-means:需要给定k。先取k个中心,把每个点分到最近的簇,然后每个簇重新选中心,重复过程直到中心不变。K-mediods,轮廓系数。可以用来压缩,同一个簇携带相同信息。
DBSCAN:从核心对象开始顺藤摸瓜
- 比较K-means和DBSCAN
前者趋向于聚类成球形,后者可以处理条状的
后者在密度相差大时表现不好
无论如何,聚类前最好normalize
降维
- 特征值分解
,则有
定义,我们可以令
,
从而
对角阵为特征值,V为特征向量构成的正交矩阵
进一步,用矩阵分块我们可以化简得
从而特征值越大的维度越重要(因为v都已归一化)
- SVD
U由的特征向量构成,V由的特征向量构成,都是正交矩阵
- PCA
希望从d维降至d’维,使得各个维度上的方差尽可能大
如果保证,则最后结果就是取了的特征值最大的前d’个特征向量组成W,投影结果就是。
要保证这一点只要,故要先中心化
- 核PCA
对作特征值分解。
FCN
- 全连接层ci→co
输入X(ci*n),权重W(co*ci) & b(co*1),输出Z(co*n)
运算负荷 n*co*ci MAC
- Softmax层n→K
输入x(n*1),权重W(K*n) & b(1*1),输出y(K*1)
其实就是把全连接的h变成了softmax。
- softmax防溢出
- DropOut
只在训练过程中使用,提升泛化性
对每个元素独立操作
- BatchNorm
加在激活函数之前。目的是让激活函数在我们希望的区域中工作。对每个channel分别归一化
用batchnorm是因为认为各个数据(沿N的维度)有相同的分布,而各个特征维度(channel)有特征不同的可能

- 当batch扩大K倍时,学习率也应扩大K倍
CNN
- 卷积层ci→co
输入X(ci*H*W),卷积核W(co*c*FH*FW),偏置b(co*1)输出(co*OH*OW),填充(Padding)为P,步幅为S
多个通道与多个卷积核分别卷积然后加起来,如此称为一组卷积核。可以存在co组不同卷积核,从而输出会有FN个通道
运算负荷 (ci*FH*FW)*(co*OH*OW) MAC
- 感受野
某一层输出在原始图像上映射区域的边长
我们从后往前计算。假设后一层感受野是f,这一层卷积步长为s,卷积核大小为K,则感受野从f→s*(f-1)+K
- 池化层Pooling
max/average,下采样
- 张量→一维向量
输入X(c*H*W),卷积核W(n*c*H*W),偏置b(n*1),输出一维向量y(n*1)
每个是X与第i组卷积核卷积的结果,不填充,结果是一个实数。
RNN
- FP
均不依赖于时间
RNN只是把神经网络沿时间复用了。我们可以自由选择在哪些时刻输入数据,以及用哪些时刻的输出,从而实现不定长的网络
- BP
假设
而
更新W梯度时需要把各个时刻的梯度相加
如果Loss与多个yi有关系,则把各个yi对应的梯度相加。这样看起来就像在按时间展开的图上往反向流。更新梯度的时候把所有的流求和


Transformer
- RNN的Attention改进
在Decoder中,每次我最应该关注哪些词?
用当前隐变量与前面所有的隐变量计算相似度,并将线性组合变成(context vector)

- Attention
RNN不能并行计算,这很讨厌。我们可以改进Encoder,使其变成一种并行的神经网络。
Encoder,Decoder各自有self-attention;Decoder取Encoder最后一层结果(对应前面的)计算相似度,称为cross/Encoder-Decoder Attention。


无论是self-attention还是cross-attention,其实都在做这样一件事:输入一些查询,根据其与的相似度,重新组合
但不该同时用来算内积(相似度)和做输出,我们改成用算相似度,用作线性组合作为输出。和分别是经过两个不同的全连接层Wk,Wv的结果
在self-attention中,是经过另一个全连接层Wq的结果;在cross-attention中,是Decoder经过(masked) self-attention后的向量
- 多头注意力
原来
现在把Q分成几个
得到的,拼起来之后还是
这样总的计算量不会变化
- LayerNorm
每个样本分开计算,将每个样本的各个维度(C,H,W)归一化
与BatchNorm的区别:无论在训练中还是推理时,LayerNorm都要重新计算样本的均值和方差,一直都是非线性函数;而BatchNorm在推理时不重新计算均值和方差,就是一个线性函数
- Encoder
一个block:Self-attention → ResAdd → LayerNorm → Forward → ResAdd → LayerNorm
LayerNorm(Z+X)
- Decoder
一个block:Masked Self-attention → ResAdd → LayerNorm → Cross-attention → ResAdd → LayerNorm → Forward → ResAdd → LayerNorm
对训练而言,其输入都是能拿到的(强制使用正确的结果)。先过一个Masked self-attention,模拟一个个生成的过程,每个词只能注意到前面的词。在cross-attention中,KV由Encoder的输出计算得到,Q由Masked self-attenion计算得到
对推理而言,Decoder仍然是自回归,依次输出zi并作为下一时刻输入的一部分
Mid-term Pre
- 超参数优化(网格搜索)
- 粒子群算法:把解表示为空间中的点
- 遗传算法:把解表示为个体的染色体,通过染色体交叉、变异和自然选择挑选出最优解
- 归一化
- Batch/Layer/Instance/Group Norm
channel/instance 下标取成特定值
Batch: i_c=C 在样本方向归一化,各通道分别进行
Layer: i_N=N 在通道方向归一化,各样本分别进行
Instance: i_c=C,i_N=N
Group: i_c=C1..Ck,i_N=N
- Weight Norm
把w的方向和大小分离
- Mixture of Experts(MoT)
问题:FCN过于稠密,我们想把参数量和计算量解耦
解决:把全连接层拆成很多个expert,用gate选择分数最高的K个expert
- AutoGluon
简化机器学习coding
联邦学习的决策树聚合
- Dataset Bias
我们的数据集究竟对现实世界有怎样的代表性?
人眼难以区分来自不同数据集的图片,但模型却可以比较好的分类。这说明不同数据集之间有系统性的偏差。这可能导致模型在不同数据集上表现差别很大
- OpenMMLab
- Softmax vs Multiclass-SVM
用Multiclass-SVM替代模型的最后一层softmax,可以提升准确性
- 作者:Tianyao Xiao
- 链接:https://www.xty27.top/article/machinelearning
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。