自学笔记(2)
大一下学期的自学笔记,由机器学习、深度学习课程组成。
一、统计学习
1. 回归问题
- 损失函数:均方误差损失 $\mathrm{MSE}$,$\sum (f(x)-y)^2$
- 改进:基函数(获取非线性)、正则项($\mathrm{L2,L1}$)
2. 二分类问题
- 连接函数:$\mathrm{Sigmoid}$,$\sigma(f(x))=\frac{1}{1+e^{-f(x)}}$
- 损失函数:交叉熵,$l(x,y)=y\log(\sigma(f(x)))+(1-y)\log(1-\sigma(f(x)))$
3. 多分类问题
- 连接函数:$\mathrm{Softmax}$,$\sigma_i(f(x))=\frac{e^{f_i(x)}}{\sum_j e^{f_j(x)}}$
- 损失函数:交叉熵,$l(x,y)=-\log(\sigma_y(f(x)))$
4. 学习理论
- 估计误差 $\mathrm{Estimation}$:训练所得函数与假设空间中最佳函数的距离
- 近似误差 $\mathrm{Approximation}$:假设空间中最佳函数与真值函数的距离
- 泛化误差:估计误差与近似误差之和
5. 优化方法
- 一阶方法:梯度下降(随机梯度下降)
- 学习率衰减:$\eta_{\min}+\frac{1}{2}(\eta_{\max}-\eta_{\min})(1+\cos(\frac{T_{cur}}{T_{all}}\pi))$
- 冲量法:$\Delta_t=\beta\Delta_{t-1}+(1-\beta)\nabla J(\theta_t)$
- $\mathrm{Nesterov}$:$\theta_t^\prime=\theta_t-\beta\Delta_{t-1},\Delta_t=\beta\Delta_{t-1}+(1-\beta)\nabla J(\theta_t^\prime)$
- 自适应学习率 $\mathrm{AdaGrad}$:$h=\frac{1}{\sqrt{r_t}+\delta}$,$r_t$ 为历史梯度平方和,但容易爆炸
- $\mathrm{RMSProp}$:$r_t=\rho r_{t-1}+(1-\rho)\nabla J(\theta_t)^2$,解决爆炸问题,可与冲量法连用
- 自适应冲量 $\mathrm{Adam}$:将 $h$ 也作用在冲量项上,但需用分母修正 $r,s$ 偏差,可与 $\mathrm{Nesterov}$ 连用
- 二阶方法:$\theta=\theta-H^{-1}\nabla J(\theta)$(增量算法可直接算逆)
二、深度学习
6. 多层感知机 $\mathrm{MLP}$
- 感知机学习算法:$(x,\pm 1),y=\mathrm{sgn}(\theta x)$,错误时 $\theta=\theta+xy$,设置阈值并堆叠模拟逻辑或函数运算
- 激活函数:$\mathrm{Sigmoid},\mathrm{ReLU},\mathrm{tanh},\mathrm{Softmax},\mathrm{GeLU},\mathrm{LeakyReLU}$
- 优化:反向传播(基于残差或计算图)
- 训练技巧:$\mathrm{Dropout}$、$\mathrm{ReLU}$ 初始方差改为 $\frac{2}{n}$
7. 卷积神经网络 $\mathrm{CNN}$
- 不变性($fT=f$)、等变性($fT=Tf$)
- 卷积核参数:$\mathrm{Stride},\mathrm{Padding},\mathrm{Dilation}$
- 训练技巧:池化 $\mathrm{Pooling}$、$\mathrm{BatchNormalization}$(改进:$\mathrm{GroupNormalization}$)、数据增广
- 标准架构:$1\times 1$ 卷积、$\mathrm{Inception}$(多尺度卷积)、$\mathrm{ResNet}$(残差直连)
- 轻量化:剪枝、权重聚类、组卷积(组间可洗牌)、通道分离卷积
- 改进:视频 $\mathrm{3D}$ 卷积、$\mathrm{Attention}$(全局距离加权,度量学习)、通道加权、神经架构搜索
8. 循环神经网络 $\mathrm{RNN}$
- $h_t=f(h_{t-1},x_t)=\mathrm{tanh}(Wh_{t-1}+Ux_t),y_t=Vh_t$,可改进为双向、多层
- 应用方式:多对一、一对多、多对多
- 优化:反向传播,但容易梯度爆炸或消失
- 梯度爆炸:分块、梯度裁剪($\mathrm{Clip}$)
- 梯度消失:$\mathrm{LSTM}$(遗忘、写入、读取)
- 训练技巧:$\mathrm{Dropout}$ 共享、$\mathrm{Layer Normalization}$(通道间归一)、课程学习(逐步将真值 $y$ 替换为预测)
- $\mathrm{Attention}$:逐层做 $h_t$ 相关性加权
9. 图神经网络 $\mathrm{GNN}$
- 节点相似性:$\frac{N(u)\cap N(v)}{N(u)\cup N(v)}$,但无法刻画远距离
- $\mathrm{DeepWalk}$:用随机游走的概率表示节点相似性,损失函数 $\displaystyle \sum_{u\in V}\sum_{v\in N(u)}-\log(\frac{\exp(z_u^Tz_v)}{\sum_{n\in V}\exp(z_u^Tz_n)})$
- 改进:$\mathrm{node2vec}$(加权随机游走,平衡 $\mathrm{BFS}$ 和 $\mathrm{DFS}$)、分母随机采样降低复杂度
- 图卷积网络 $\mathrm{GCN}$:效仿 $\mathrm{CNN}$ 特征聚合、同层参数共享,$\displaystyle h_v^k=\sigma(W_k\sum_{u\in N(v)}\frac{h_u^{k-1}}{|N(v)|}+B_kh_v^{k-1})$
- 改进:图注意力网络 $\mathrm{GAT}$(邻居加权)、聚类 $\mathrm{ClusterGCN}$(降低复杂度)
- 训练技巧:在部分顶点上训练降低复杂度、将图卷积层改为 $\mathrm{MLP}$ 避免过平滑(小世界原理)、残差连接
10. $\mathrm{Transformer}$
- $\mathrm{Attention}$:将 $x$ 转化为 $q,k,v$,$a=\mathrm{Softmax}(\frac{q^Tk}{\sqrt{d}})$,$\mathrm{MQA,GQA}$ 头间共享 $k,v$
- $\mathrm{FFN}$:$\mathrm{FFN}(x)=\mathrm{GeLU}(W_1x+b_1)W_2+b_2$,$\mathrm{dim}W=d^2$ 且参数共享,$\mathrm{MoE}$ 中多个共用
- 模仿 $\mathrm{CNN,RNN}$,引入加权残差连接、预先 $\mathrm{LayerNormalization}$(归一化或单位化)
- 位置编码:$e_i(2j)=\sin(\frac{i}{10000^{2j/d}}),e_i(2j+1)=\cos(\frac{i}{10000^{2j/d}})$;或相对位置编码 $\mathrm{ALiBi}$、旋转位置编码 $f(x,m)=xe^{im\theta},\theta_i=10000^{-2(i-1)/d}$
- 改进:线性注意力、$\mathrm{MaskAttention}$(遮挡)、$\mathrm{FlashAttention}$(分块)、$\mathrm{RingAttention}$(分布式)
- $\mathrm{GPT}$:$\mathrm{Decoder}$,生成式预训练;$\mathrm{BERT}$:$\mathrm{Encoder}$,填空式预训练;$\mathrm{T5}$:完整版
11. 语言模型
- $\mathrm{ScalingLaw}$:参数量 $\gt$ $\mathrm{BatchSize}\gt \mathrm{epoch}$;推理 $\gt$ 训练;扩大单模型 $\mathrm{vs}$ 多模型集成
- 微调:全量微调(数据多易负迁移)、$\mathrm{Adapter}$(插适配头,如低秩适应微调 $\mathrm{LoRA}$,$\theta=\theta+AB$)、部分微调(如调倒数两三层,数据少易过拟合)
- 改进:加入正则项限制微调改变量、重跑预训练任务检查精度变化、多模型微调(根据相关性加权蒸馏)
- $\mathrm{RLHF}$:监督微调 $\to$ 训练奖励模型 $\to$ 强化学习;或 $\mathrm{DPO}$(直接用成对数据微调,可用大模型生成)
- $\mathrm{Prompting}$:$\mathrm{InContextLearning}$,思维链,集成工具,检索增强生成 $\mathrm{RAG}$(文档向量化 $\to$ 与问题计算相似度 $\to$ 写入 $\mathrm{Prompt}$)
- 部署:量化(浮点转小整数)、推测解码 $\mathrm{SpeculativeDecoding}$(小模型生成大模型验证)
- 视觉:$\mathrm{CLIP}$(弱监督图文对相似度矩阵对角化)、$\mathrm{Flamingo}$(将图 $\mathrm{token}$ 映射到文本空间)、$\mathrm{Q-Former}$(将图转化为 $\mathrm{query}$)
12. 多模态与智能体
- 底层:$\mathrm{ViT}$(分块 $\mathrm{MLP}$ 后块间注意力)、$\mathrm{SwinTransformer}$(块内注意力,块滑动)
- 训练方式:生成式预训练,如 $\mathrm{ImageGPT}$
- $\mathrm{CLIP}$:弱监督图文对,让相似度矩阵对角化
- 多模态语言模型:$\mathrm{Flamingo}$(将图转为 $\mathrm{token}$ 嵌入文本)、$\mathrm{Q-Former}$(将图转为 $\mathrm{query}$)、$\mathrm{VQGAN}$(图转为最近码字,再解码计算相似度)
- 纯多模态模型:$\mathrm{Fuyu}$(图文同等映射到另一空间)
- $\mathrm{Agent}$:规划(目标分解、自我反思)、记忆(长:历史经验;短:上下文)、工具(外部应用、大模型)、行动(虚拟、具身)、协作(人机、多代理)
13. 迁移学习
- 多任务学习:共享参数 $+$ 任务头,损失函数加权(或范数归一、任务不确定性、帕累托最优)
- 元学习:输入数据集直接输出最优学习器,分为训练任务(支撑集、验证集)、测试任务(训练集、测试集),优化目标为 $n$ 个训练任务的平均损失函数
- 生成学习:先编码再解码算相似度,可对编码器做限制(稀疏性、范数、加噪声、加遮挡)
- 对比学习:增广两个副本 $\to$ 分别转为特征向量 $\mathrm{query,key}\to$ 计算相似度,优化对比损失函数 $-\sum\log\frac{\exp(k_i^Tq_i/\tau)}{\sum\exp(k_j^Tq_i/\tau)}$,$\mathrm{SimCLR}$ 引入解码器
- 改进:$\mathrm{MemoryBank}$ 存储定量 $\mathrm{key}$ 降低复杂度、$\mathrm{MoCo}$(用 $q$ 编码器的滑动平均更新 $k$ 编码器)、$\mathrm{SimSiam}$(无负例,单边解码,另一边停止梯度)
- 领域自适应:$\mathrm{OOD}$,用 $H\Delta H$ 对称差散度衡量分布差异,如领域对抗神经网络 $\mathrm{DANN}$(用 $\mathrm{GAN}$ 将两领域映射到接近的领域,在接近领域上学习)
三、强化学习
14. 表格式学习(状态、动作都离散)
- 算法:$\mathrm{SARSA}\to \mathrm{Q-learning}$(将$\mathrm{A^\prime}$ 替换为最优动作)
- 改进:资格迹(每步衰减 $\gamma\lambda$,遇到就 $+1$)
15. 价值函数逼近(状态空间连续)
- 核心思想:用以 $w$ 为参数的模型估计 $Q(S,A)$
- $\mathrm{TD-error}:\delta=R+\gamma Q(S^\prime,A^\prime)-Q(S,A)$
- $w=w-\alpha \nabla w\cdot\delta$(一步梯度下降)
- 改进:$\mathrm{Q-learning}$、资格迹(将 $+1$ 替换为 $\nabla w\cdot Q(S,A))$
16. 策略梯度方法(状态、动作都连续)
- 核心思想:用一个以 $\theta$ 为参数的模型获得策略
- 离散型策略:$\mathrm{Softmax}$,$\pi(a|s,\theta)=\frac{e^{J(s,a)}}{\sum e^{J(s,b)}}$
- 连续型策略:$\mathrm{Gaussian}$
- 策略梯度定理:$\nabla J(\theta)\propto q(s,a)\nabla \log \pi(a|s,\theta)$
- $\mathrm{REINFORCE}$:基于 $\mathrm{Monte Carlo}$ 方法,可引入 $\mathrm{Baseline}$(状态价值函数)减小方差,与价值函数逼近联用
- $\mathrm{Actor-Critic}$:基于时序差分方法,可引入资格迹 $\nabla \log \pi(a|s,\theta)$、$\mathrm{Baseline}$
- 改进:近端策略优化 $\mathrm{TRPO,PPO}$,防止更新过大导致策略崩溃(用 $\mathrm{KL}$ 散度衡量新旧策略差异)
17. 现代强化学习
- $\mathrm{DDPG}$:确定性策略梯度方法,在连续动作空间中更有效
- $\mathrm{SAC}$:优化策略的同时最大化策略的熵,鼓励随机探索
- 基于模型的强化学习:学习环境模型,用模拟数据与真实数据一起训练策略,如 $\mathrm{Dyna-Q}$
4. 生成式模型
18. 生成对抗网络 $\mathrm{GAN}$
- 损失函数:对抗学习,$\displaystyle \min_G\max_D(\log D(x)+\log(1-D(G(z))))$,$D$ 为判别器,$G$ 为生成器($\mathrm{Jensen-Shannon}$ 散度)
- 改进:$\log(1-x)$ 好样本梯度爆炸、坏样本梯度消失,改为优化 $\log(D(G(z)))$;换用 $\mathrm{Wasserstein}$ 距离(将 $D$ 改为满足 $\mathrm{1-Lipschitz}$ 的连续函数)
- 生成器实现:$\mathrm{DCGAN}$(逆向 $\mathrm{CNN}$,转置卷积)
- $\mathrm{Benchmark}$:$\mathrm{InceptionScore}$(可识别性分布与生成多样性分布的 $\mathrm{KL}$ 散度)、$\mathrm{FID}$(生成样本与真实样本的高斯分布差异)
- 模式崩溃:使用 $\mathrm{GradientPenalty}$ 或系数矩阵谱归一化限制 $\mathrm{Lipschitz}$ 系数
- 条件生成:加入重建误差,对标签数据 $(x_i,y_i)$ 优化 $\displaystyle\min_G\max_D(\log D(x_i,y_i)+\log(1-D(G(x_i,z_i)))+|G(x_i,z_i)-y_i|)$
19. 变分自编码器 $\mathrm{VAE}$
20. 扩散模型 $\mathrm{Diffusion}$
自学笔记(2)
https://sqzr2319.github.io/CSDIY-2/