更新 test.md

This commit is contained in:
admin 2025-06-10 06:57:18 +00:00
parent d937eda9e8
commit 1370435600

206
test.md
View File

@ -1,4 +1,3 @@
### 回归
- 最小二乘解: $ min_\theta \| y_{N \times 1}-X_{N\times d} \theta_{d\times 1} \| $
@ -303,208 +302,3 @@ RF在重要性选择的应用
- 解决方法: $ T=T_1 \cup,...,\cup T_J $ $ T_j^C $ 训练pp作用 $ T_j $ 产生 $ T_j^* $ $ T^*=T_1^* \cup,...,\cup T_J^* $ f 在 $ T^* $ 上学习。
### EM算法
- 求解含有隐变量模型 $ p(x;\theta)=\sum\limits_z p(x,z;\theta) $ 最大似然估计:
- E步 $ \max\limits_\theta p(x;\theta) \geq \max\limits_\theta E_{p(Z|X,\theta_i)}(\log(p(X,Z;\theta)))=: \max\limits_\theta Q(\theta,\theta_i) $
- M步 $ \theta_{i+1}= \arg \max\limits_\theta Q(\theta,\theta_i) $ 。
- 不直接求MLE因为X分布很复杂但 $ Z;\theta $ 和 $ X|Z;\theta $ 简单;不一定是凸函数难以优化或者最大值不存在。
- 计算 $ p(Z|X,\theta_i) $ 有时候容易(当 $ p(X;θ) $ 容易知道时)用贝叶斯公式;有时候比较难,用变分推断。
- EM只保证收敛到梯度为 0 的点。
- 对任意分布 $ q(z) $ 非z变量本来的分布 $ p(z|x;\theta) $ ),有等式 $$ \log p(X;\theta) = E_q \big[\log \frac{p(X,Z;\theta)}{q(Z)}\big] - E_q \big[\log \frac{p(Z|X;\theta)}{q(Z)}\big] \\
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, =: ELBO(q, X;\theta)+ KL(q(z)|p(z|x;\theta)) $$ ELBO为证据下界 (Evidence Lower Bound, ELBO)。EM算法也可用ELBO解释因为 $ KL\geq 0 $ 可通过最大化ELBO来求 $ p(X;\theta) $ 的MLE。但是为了下界更贴合选择 $ q(z)=p(z|x;\theta_i) $ (对应E步)。
- 变分推断的思想:通过优化参数 $ \phi $ ,将复杂的后验分布 $ q(z|x) $ 用一个更简单的分布 $ q(z;\phi) $ 来近似。ELBO等式左边不依赖于 $ \phi $ 所以该最优近似等价于优化ELBO。为了化简计算对 $ q(z;\phi) $ 做分量无关即平均场变分族 (mean-field variational family)的假设。此时变分推断为逐个坐标依次更新,该法称为坐标上升变分推断 (Coordinate Ascent Variational Inference, CAVI)。
- VAE
### 隐马尔可夫模型 (HMM)
- 隐马尔可夫模型Hidden Markov Model简称HMM描述一个含有隐含未知参数的马尔可夫过程。状态本身是不可见的只能通过观察到的输出结果来推断状态序列。
- **状态集合**:模型中所有可能的状态的集合,通常表示为 \( S = \{s_1, s_2, ..., s_N\} \)。
- **观测集合**:与状态集合相关联的观测结果的集合,通常表示为 \( O = \{o_1, o_2, ..., o_M\} \)。
- **状态转移概率**:在任意两个状态之间转移的概率,通常表示为 \( a_{ij} = P(s_{t+1} = s_j | s_t = s_i) \)。
- **观测概率**:在某个状态下观测到某个结果的概率,通常表示为 \( b_i(o) = P(o_t | s_t = s_i) \)。
- **初始状态概率**:模型开始时各个状态的概率分布,通常表示为 \( \pi_i = P(s_1 = s_i) \)。
- 隐马尔可夫模型的三个主要问题:
- **评估问题**Evaluation给定模型参数和一个观测序列计算这个序列出现的概率。采用前向-后向算法Forward-Backward Algorithm解决一种动态规划方法。
- **解码问题**Decoding给定模型参数和观测序列寻找最有可能产生这个观测序列的状态序列。维特比算法Viterbi Algorithm解决一种动态规划方法。
- **学习问题**Learning给定观测序列调整模型参数以最大化观测序列出现的概率。鲍姆-韦尔奇算法Baum-Welch Algorithm一种期望最大化EM算法。
### 条件随机场 (CRF)
- 成对马尔可夫性 (pairwise Markov): 对任意两node v ≁ w; 局部马尔可夫性 (local Markov): 如果对任意一个节点v和邻居的外部; 全局马尔可夫性 (global markov): 任意两个被C分开的点集A, B。
- 全局(强于)局部(强于)成对。在正概率下三者等价。
- 一个无向图满足以上任意一个马尔可夫性,则我们称其为概率无向图 (probability undirected graph) 或者马尔可夫随机场 (Markov random field).
- 一个点集中任意两点都有边连接我们称其为无向图的一个团 (clique), 若没有包含他的更大的团即不能再加进点成团,则我们称为最大团 (maximal clique)。
- 概率无向图的联合分布可以被最大团分解。
- 设Y的无向图构成一个马尔科夫随机场给定X称P(Y|X)是条件随机场 (conditional random field, CRF), 如果在条件X下每个点的分布只与其相邻点有关。
- 类似HMM也有三个问题和算法。
- 模型联系
| 模型联系 | 非序列 | 序列化 |
| -------- | -------- | -------- |
| 生成模型 | 朴素贝叶斯 | HMM |
| 判别模型 | 最大熵(逻辑斯蒂) | CRF |
### 数据处理和网络优化
**交叉验证**
- 留 P 法 (Leave P Out Cross Validation, LPOCV): 选P个作为验证集剩下的训练集。跑遍所有可能即一共验证 $ C_P^N $ 次。P = 1时叫做留一法 (Leave One Out, LOOCV),几乎无偏但计算消耗很大。
- K-Fold交叉验证(K-fold CV)把样本集分成K份K 1份作为训练集剩下的1份作为验证集最后取K次验证的平均误差来评估模型当K = N 时就是LOOCV也可重复多次取平均即多次K折交叉验证 (Repeated K-Fold CV)当类别样本数量不均匀时可以分别在类别内做划分即Stratified K-fold
- K的选取是一个trade-offK越大训练集的数据越多模型的Bias越小训练集之前的相关性越大而导致更大的Variance。
**正则化**
- 权重衰减 (Weight Decay): $ \theta_{k+1} ← (1 β) \theta_{k} \alpha g_k $ , 梯度更新时引入一个小的衰减系数。简单情况与L2正则效果相同复杂不一定
- 提前停止 (Early Stop): 在验证集上错误率小于阙值时就停止更新。
- 数据增强 (Data Augmentation): 主要应用于图像处理包括旋转Rotation、翻转Flip、缩放Zoom In/Out、平移Shift将图、加噪声Noise等。
- 标签平滑 (Label Smoothing): 对 x 的标签 one-hot 向量增加噪声平滑。
- 丢弃法 (Dropout Method): 隐藏层中随机选择一部分神经元,并将它们的输出值设为零。每次迭代都相当于训练一个不同的子网络,这些子网络共享原网络的参数,最终的网络可以近似看作集成学习了指数级个不同网络的组合模型。
- 特征选择特征抽样剪枝Bagging提升
**归一化**
- 目的:
- 便于不同量纲
- 加快梯度下降。某个特征特别的大,很大可能导致梯度不平衡;归一化样本让参数等高线接近圆形。
- 靠近Sigmoid函数的中心而远离梯度为0的饱和区域
- 避免太大数据的数值问题
- 方法:归一化:把数据压缩到[0, 1];标准化。
- 需要标准化的算法PCASVM, KNN, 聚类回归模型虽然对于y的预测没有影响但影响梯度下降速度有惩罚项的回归如Lasso,Ridge方差大的变量系数小会受到较小的惩罚特征选择/提取中需要根据一些统计检测或者评分函数做特征排名。
- 不需要标准化的算法:概率模型(逻辑回归),树模型,集成学习(随机森林,提升树)
**处理类别不平衡**
- 随机过采样:随机复制少数类样本,可能过拟合。
- SMOTE (synthetic minority oversampling technique)对少数类样本使用KNN选取K个邻近少数点邻近点和中心点做随机插值。问题一类K 邻近点全是少数点不带什么新信息另一类K邻近点都是多数点可能是噪声。
- Border-line SMOTE为解决SMOTE的问题只选取那些多数类和少数类的“边界点”作为中心点。
- 随机欠采样:随机删除多数类的样本,可能会丢失重要信息的点。
- 数据清洗方法 (data cleaning techniques):删除 Tomek Links 中的多数点Edited Nearest Neighbours(ENN) 剔除多数类的一个点如果其K个近邻点有超过一半都不属于多数类。问题无法控制欠采样的数量。
- EasyEnsemble将多数类随机分成数量与少数类一样的多份子样本再集成。
- BalanceCascade每次从多数类中抽出和少数类数目一样的子样本
**数据预处理**
- 标准/归一化
- 填补缺失值:
- 无监督情况下缺失某些特征:统计填补,同一特征未缺失样本的中位数/均值。可能引入噪声或者会改变特征原有的分布;标签填补:局部近似样本的统计量填充;
- 缺失标签聚类填补KNN填补领近点的众数/均值;把缺失的特征当做标签缺失时,该方法可用在上面的无监督情况。
- 缺失特征:随机森林; 回归填补将已知特征值和标签代入回归方程来反解出缺失特征值极大似然填补把缺失值的x作为隐含变量使用EM算法估计。
- 处理样本不平衡:过采样和欠采样
- 噪声 (noise)/异常值/离群点outliers处理均方差几个方差以外的数据点聚类/DBSCAN随机森林/孤立森林One Class SVMPCA
- 降维:特征提取;特征选择;特征捆绑;
- 类别特征编码: (男, 女, 收入高, 中, 低),则样本:(男, 高) → (1,0,1,0,0)
- 离散化 (Discretization),也叫量化 (quantization) 或者装箱 (binning)。
- 二值化:将数值特征用阈值过滤得到布尔值。
**梯度下降**
- 非常大的神经网络中,大部分的局部最小解是等价,没有必要找全局最小值,这反而可能导致过拟合。主要是想逃离鞍点 (Saddle Point)和尖锐最小值 (Sharp Minima)。
**批量大小**
- 批量大小越大,随机梯度的方差越小。线性缩放规则 (Linear Scaling Rule): 当批量大小增加 m 倍时,学习率也增加 m 倍,该规则在批量大小比较小时适用。批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值。
**学习率**
- 学习率在前面需要大来保证收敛速度,在最优点附近时要小以避免来回振荡。但是在刚开始训练时,由于参数是随机初始化的,梯度大,大的学习率会使训练不稳定。为此,最初几轮采用小的学习率,该方法称为学习率预热 (Learning Rate Warmup)。逐渐预热(Gradual Warmup) $ \alpha_t = \alpha_0 \frac{t}{T_W} $ 。
- 固定衰减学习率:分段常数衰减;逆时衰减 $ \frac{1}{1+\beta t} $ ;指数衰减;余弦衰减。
- 周期性学习率:当鞍点或者尖锐最小值附近时,增大学习率有助于逃离;当处于平坦时,增大学习率依然有可能在该平坦最小值的吸引域 (Basin of Attraction) 内。因此考虑周期性学习率来逃离:三角循环学习率 (Triangular Cyclic Learning Rate);带热重启的随机梯度下降 (Stochastic Gradient Descent with Warm Restarts, SGDR): 每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减。
- 自适应学习率
- AdaGrad算法(Adaptive Gradient Algorithm):较大的梯度累积使用相对较小的学习率;较小的梯度累积使用相对较大的学习率。但整体是学习率逐渐缩小。 $ G_t=\sum\limits_{k=0}^tg^k\odot g^k $ 放到分母上。缺点:学习率是个严格递减的过程,所以经过一定次数的迭代学习率非常小,很难再找到最优点。
- RMSprop 算法 (Root Mean Square Propagation):为了解决上面缺点,对梯度平方累积使用了指数加权移动平均 (Exponentially Weighted Moving Average, EWMA) $ G_t $ 中指数加权求和。
- AdaDelta算法在RMSprop算法基础上对参数的增量进行EWMA放到分子上。在一定程度上抑制学习率的波动即分子分母有互相抵消的效果有相同量纲而避免初始学习率的选取
**梯度估计**
- 动量法 (Momentum Method): 对参数增量使用加权移动平均(Weighted Moving Average, WMA)。最近一段时间内的梯度方向不一致时,比如在迭代后期收敛值附近,动量法会起到减速作用,增加稳定性;相反,当方向都一致时比如在迭代初期,动量法会起到加速作用,可加速。自适应学习率在迭代的任意时刻增加过快时自动的减速;动量法是在接近收敛点的时候自动减速。
- Nesterov 动量法:将梯度取在前面动量更新后的参数上。
- Adam算法(Adaptive Moment Estimation Algorithm): 动量法和 RMSprop的联合对梯度和梯度平方都是用 EWMA。
- 梯度截断像RNN中梯度爆炸问题大的梯度更新参数反而远离最优点。
**初始化**
- 预训练初始化 (Pre-trained Initialization)。
- 固定值初始化比如偏置通常用0在LSTM遗忘门中偏置通常初始化为 1或2; 对于使用ReLU的神经元有时也可以将偏置设为0.01使得ReLU神经元在训练初期更容易激活。
- 神经网络不能把权重全部初始化成一样或0这会导致每一层的神经元值相同甚至恒为0。线性规划和逻辑斯蒂回系数可以全部初始化为0因为线性回归没有激活函数逻辑斯蒂函数不过原点。
- 随机初始化 (Random Initialization):从一些固定方差的随机器中产生初始值。
- 为了缓解梯度消失或爆炸,尽可能保持每个神经元的输入和输出的方差一致,根据神经元的连接数量来自适应地调整初始化分布的方差,这类方法称为方差缩放 (Variance Scaling)。 $ Var(\omega_i)=\frac{1}{M_{l-1}} $
- Xavier 初始化: $ Var(\omega_i)=\frac{1}{(M_{l-1}+M_l)/2} $ .
- He 初始化ReLU激活通常有一半的神经元输出为0, 因此: $ Var(\omega_i)=\frac{2}{M_{l-1}} $
- 另外为了避免梯度消失或梯度爆炸,我们希望误差项在反向传播中具有范数保持性 (Norm-Preserving)选取W为正交矩阵。方法标准高斯分布初始化矩阵用奇异值分解得到。
**超参数优化**
- 超参数 (Hyperparameter) 包括:
- 网络结构:连接关系、层数、每层的神经元数量、激活函数类型等;
- 优化参数,包括优化方法、学习率、小批量样本数量等;
- 正则化系数。
- 超参数优化方法网格搜索 (Grid Search) 和随机搜索 (Random Search)
- 贝叶斯优化:利用前面采集的超参及其函数值, $ H_t = \{(x_1, y_1), · · · , (x_t, y_t)\} $ 建立高斯过程回归,来选取下一个待搜索的点。
**神经网络归一化**
- 逐层归一化 (Layer-wise Normalization) 好处:
- 神经网络低层输入的微小变化在非线性激活函数作用下都会引起高层输入的分布变化Internal Covariate Shift (ICS)。对每一个神经层的输入进行归一化操作,使其分布保持稳定。
- 使大部分神经层的输入处于不饱和区域,从而让梯度变大,避免梯度消失问题。
- 批量归一化(Batch Normalization, BN):每一层输入样本维归一化。训练时小批量样本,测试时全样本。
- 批量归一化缺点:
- 要求足够大的批量大小。难应用到在线学习。
- 很难处理像RNN这样的动态序列网络。序列长度可能不一致后续的隐藏序列长度也不一致。这可能导致随着时间推移样本会越来越少使得样本均值和方差不可信。
- 要求测试集样本时间序列长度必须小于训练集,否则超过的部分就没有可以用的均值和方差。
- 层归一化(Layer Normalization, LN): 逐层对每个神经元即每个分量维度做归一化。
- BN可以看做样本矩阵样本数 * 特征维度列方向或样本维的归一化LN行方向上或特征维的归一化。
- 权重归一化 (Weight Normalization): 将权重矩阵 W 的行向量在参数化成长度和单位向量: $ W_{i,:} = g_i e_i $ 。
- 局部响应归一化 (Local Response Normalization, LRN):卷积层的输出特征映射 $ Y\in R^{M ×N ×P} $ ,切片矩阵 $ Y^p \in R^{M ×N } $ 。LRN为 $ Y^p $ 除以类似某邻域切片 $ Y^{p'} $ 平方和。
- 如果有个神经元的活性值非常大LRN能使和它邻近的特征映射中P 方向上的神经元近似地归一化为0, 从而起到抑制作用,增强模型的泛化能力。
- 最大汇聚也有抑制作用,区别是对同一个特征映射中的邻近位置中的神经元。
### 前馈神经网络
- FNN $ \phi: x=a^{(0)} \rightarrow z^{(1)} \rightarrow a^{(1)} \rightarrow \dots \rightarrow z^{(L)} \rightarrow a^{(L)} $
- 反向传播算法的FNN训练过程
- 正向计算每一层 $ z^{(l)}, a^{(l)} $ ;
- 反向计算每一层 $ \delta^{(l)}:= \frac{\partial L}{\partial z^{(l)}} = f'(z^{(l)}) \odot ( (W^{(l+1)})^T \delta^{(l+1)} ) $ ;
- 计算每一层梯度 $ \frac{\partial L}{\partial W^{(l)}}=\delta^{(l)}(a^{(l-1)})^T $ $ \frac{\partial L}{\partial b^{(l)}}=\delta^{(l)} $ 。
- 这里我们用z(l)做中间变量因为容易计算导数
- 当网络层数很深时,梯度就会不停衰减,这就是所谓的梯度消失 (Vanishing Gradient) 问题。消失是指相比较当前迭代的参数值W(l)梯度值非常小即梯度对参数的更新不明显。
- 梯度消失的方法:
- 学习率;
- ReLU;
- 残差网络;
- 归一化(也适用梯度爆炸);
- 初始化(也适用梯度爆炸);
- 对特定神经网络RNN: LSTMGAN: W-GAN。
### 卷积神经网络
- 卷积运算实际上是把互相关中的卷积核旋转180◦
- 卷积核的步长 (Stride) S 是指卷积核在滑动时的时间间隔为S零填充(Zero Padding) P是在输入向量两端进行补P个零。
- 输入图像有 M 个神经元卷积核大小为K, 则卷积以后的神经元数量:(M K + 2P)/S + 1
- 窄卷积 (Narrow Convolution): S = 1, P = 0. 输出长度为 M K + 1;
- 等宽卷积 (Equal-Width Convolution): S = 1, P = (K 1)/2. 输出长度为 M;
- 宽卷积 (Wide Convolution): S = 1, P = K1. 输出长度为 M +K1。
- 图像神经元之间插入0, 来输出高维的特征映射,这样的卷积称为微步卷积(Fractionally-Strided Convolution). 在卷积核中添加0, 使输出的特征映射维数降低,这样的卷积称为空洞卷积 (Atrous Convolution) 也称为膨胀卷积 (Dilated Convolution).
- 卷积层 $ X M\times N \times D $ 张量 $ \rightarrow $ $ W U\times V \times D \times P $ 张量 $ \rightarrow $ $ Y M'\times N' \times P $ 张量。这里对D求和D代表颜色通道。非线性激活函数一般用ReLU作用是舍弃一些卷积后产生的特征图中的负值即与该特征不大关联的数据。
- 汇聚层Pooling Layer作用是进行特征选择降低特征数量扩大感受野使得网络对一些小的局部形态改变保持不变性。但会丢失一部分信息。
- 卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。
- 卷积层反向传播。 $ \delta^{l,d}:= \frac{\partial L}{\partial Z^{l,d}} = f_l'(Z^{l,d}) \odot \sum_p (rot(W^{l+1,p,d}) \otimes \delta^{l+1,p} ) $ $ Z^{l,d} $ 是M*N向量
- 汇聚层反向传播。 $ \delta^{l,p}:= \frac{\partial L}{\partial Z^{l,p}} = f_l'(Z^{l,p}) \odot up( \delta^{l+1,p} ) $ 。up上采样 (up sampling)函数对于最大汇聚每个区域除最大值处以外都是0; 对于平均汇聚被平均的分配到前一层每一格中。如果区域是有重叠的,重叠处的值直接叠加。
### 循环神经网络
- $ h_t = f(U h_{t-1} + W x_t +b) $ f是非线性激活函数通常为 Logistic 函数或 Tanh 函数。
- 序列到类别输出 $ y=g(h_T) $
- 同步的序列到序列 $ y_t=g(h_t) $
- 异步的序列到序列:也称为编码器-解码器。编码和前面一样,解码 $ h_{T+t} = f_2(h_{T+t-1} ,y_{t-1}), \, \, y_t = g(h_{T+t}) $ 用前面的输出y而非输入x。
- 随时间反向传播BackPropagation Through Time, BPTT $ z_t:=U h_{t-1} + W x_t +b $ $$ \delta_{t,k}:= \frac{\partial L_t}{\partial z_{k}} =diag(f'(z_k)) U^T \delta_{t,k+1} \\
\frac{\partial L}{\partial U}=\sum\limits_{t=1}^T \sum\limits_{k=1}^t \delta_{t,k} h_{k-1}^T\\
\frac{\partial L}{\partial W}=\sum\limits_{t=1}^T \sum\limits_{k=1}^t \delta_{t,k} x_{k-1}^T\\
\frac{\partial L}{\partial b}=\sum\limits_{t=1}^T \sum\limits_{k=1}^t \delta_{t,k} $$
- 因为 $ \frac{h_{t+1}}{h_t}=f'(z_{t+1})U^T $ 长距离的梯度为多个乘积如果U的最大特征根大于1, 梯度趋于无穷大即梯度爆炸问题 (Gradient Exploding Problem); 如果U 的最大特征根小于1, 这个梯度趋于0梯度消失问题 (Vanishing Gradient Problem)。消失不是说∂U梯度消失而是∂hk梯度消失即参数U的更新主要靠当前时刻t的几个相邻状态来更新长距离的状态对参数 U 没有影响。
- 解决梯度爆炸问题,我们可以
- 权重衰减:给参数增加正则化项来限制参数的取值范围;
- 梯度截断。
- 长短期记忆网络 (LSTM)“门”指的是Logistic函数取值在 (0, 1) 之间,它设置了每个单元中应该通过的数据数量。
- 遗忘门 (forget gate)控制上一个时刻的内部状态ct-1需要遗忘多少信息
- 输入门:控制当前时刻的候选状态需要保存多少信息;
- 输出门控制当前时刻的内部状态ct需要输出多少信息。
- GRU不再额外增加内部状态且只设有重置门 (reset gate) 和更新门 (update gate)。 GRU 更容易进行训练。在小规模数据时CRU 效果与 LSTM 类似但在数据规模较大时LSTM效果更好。
- 堆叠循环神经网络 (Stacked Recurrent Neural Network, SRNN) 也称为循环多层感知器 (Recurrent Multi Layer Perceptron, RMLP)多层RNN多个层的 $ h_t^{(l)} $ 。
- 双向循环神经网络 (Bidirectional Recurrent Neural Network, Bi-RNN) $ h_t^{(1)} $ 依赖于前面的 $ h_{t-1}^{(1)} $ 和下面输入x $ h_t^{(2)} $ 依赖于后面的 $ h_{t+1}^{(2)} $ 和下面输入x输出y依赖于 $ h_t^{(1)} $ 和 $ h_t^{(2)} $ 。
- 递归神经网络 (Recursive Neural Network, RecNN),类似于树结构输出为树根,输入为叶子。