目录
- 深度学习方面
-
- 卷积尺寸?计算量?参数数量?感受野?(*)
- 卷积的变种?
- 过拟合怎么办?(*)
- 样本不均衡怎么办?
- BN原理和作用?测试时怎么用?(*)
- 梯度消失?梯度爆炸?梯度弥散?(*)
- 介绍droppout?为什么可以防止过拟合?(*)
- 优化方法
- L1和L2正则的特点?
- 激活函数优缺点?(*)
- 激活函数改进?
- 初始化方法
- 卷积核为什么是奇数?
- 怎么增大感受野?
- 决策树怎么选择特征?
- LSTM介绍?(*)
- GAN损失函数?(*)
- GAN为什么处理离散数据效果不好?解决?
- 为什么LSTM后面接CRF更好
- 归一化方式?
- 聚类算法,评价方法,优化算法
- 激活函数如何引入非线性?证明引入非线性,为何就可以说这个网络可以表示几乎所有的连续函数?
- word2vec原理,优化
- bert,位置向量作用,生成方式
- k-mean和k-NN的区别,优缺点,改善
- HMM
- NB和B的区别
- LR和SVM的区别
- RF和Xgboost的区别
- Jacobian和Hessian
- 强化学习
- python方面
- c++方面
- 算法方面
- 数学方面
- linux方面
- 网络方面
- 综合方面
- 参考
深度学习方面
卷积尺寸?计算量?参数数量?感受野?(*)
输出特征图尺寸:n’ * n’ * c’,n’ = (n+2p-k)/s+1 (向下取整)
计算量:总乘法/总加法次数=(k * k * c )* (n’ * n’ * c’)
参数数量:w个数:k * k * c * c’;b个数:c’
感受野:令n’=1,倒推n
k:卷积核尺寸
n:输入特征图尺寸
n‘:输出特征图尺寸
c:输入特征图通道数
c’:输出特征图通道数/卷积核个数
卷积的变种?
分组卷积(Group Convolution)
空洞(扩张)卷积(Dilated/Atrous Convolution)
深度可分离卷积(depthwise separable convolution)
可变形卷积网络(Deformable Convolution)
反卷积(deconvolution)
图卷积(Graph Convolution)
X-卷积(PointCNN);
过拟合怎么办?(*)
-
增加/清洗数据
(1)增加数据量,减少特征维度
数据扩充,数据合成(减少噪声比重)
(2)清洗数据
(3)其他
每个epoch后shuffle数据(烤鱼,多次2面翻烤,鲁棒)
加BN(降低batch内样本分布差异,但也同时允许有自己的分布) -
减小模型复杂度
(1)减少神经元个数,网络层数
(2)增加正则化项
(3)dropout(随机失活)
(4)early-stopping(在验证集误差最小时,停止训练)
(5)bagging集成学习(降低单一模型过拟合风险) -
调整超参
(1)增大学习率α
(2)减少迭代次数
(3)增加噪声
样本不均衡怎么办?
(1)样本多的类别,下采样
(2)样本少的类别,上采样
(3)设置阈值
检测任务中不均衡解决办法:
1.online hard example mining(OHEM);
2.Focal Loss;
3.class balanced cross-entropy;
4.local rank,PISA,ISR;
5.过采样;
BN原理和作用?测试时怎么用?(*)
- 原理:将一个batch的数据变换到,均值为0,方差为1的正态分布上
- 作用:使得数据分布一致,每层的梯度不会随着网络层数增加而发生太大变化, 避免发生梯度消失,加快收敛,防止过拟合
- 测试:用训练阶段的均值,方差,作为测试样本的均值和方差
梯度消失?梯度爆炸?梯度弥散?(*)
梯度弥散
接近输出层,梯度大,更新快,收敛快;接近输入层,梯度小,更新慢,收敛慢
梯度消失
- 现象:高层w<1,由于连乘效应,向输入层传播时,梯度逐渐变小,底层梯度接近0
- 原因:发生在接近输入层,激活函数饱和,将(-∞ ,+∞)压缩到(0,1)之间,导数范围(0,0.25)
- 解决:
(1)减少网络层数
(2)换非饱和激活函数
(3)加BN
梯度爆炸
-
现象:
(1)loss很小,无法更新
(2)模型不稳定,更新过程loss变化大大
(3)参数溢出,loss变成NaN -
原因:底层w>1,由于连乘效应,向输出层传播时,高层梯度太大
-
解决:
(1)减少网络层数
(2)梯度裁剪
(3)权重正则化
检查网络权重大小,惩罚产生较大权重值的损失函数。
若搭网络时已设正则化参数,调用以下代码,可以直接计算正则损失:
regularization_loss = tf.add_n(tf.losses.get_regularization_losses(scope='my_net'))
(4)加BN
(5)加残差结构
介绍droppout?为什么可以防止过拟合?(*)
Dropout 是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),用于防止模型过拟合。
防止参数过分依赖训练数据,减少神经元之间复杂的共适应关系,增加参数对数据集的泛化能力。
优化方法
定义:在模型空间中找到在模型评估指标上表现最好的模型,加快网络训练
(1)GD
(2)SGD
原理:用单个样本的损失近似平均损失,计算梯度,适用于小样本
不足:每次更新只用一个样本,信息量有限,估计方差大,容易陷入山谷震荡,和鞍点停滞,导致收敛不稳定或者不收敛
(3)BGD
(4)Momentum
为了获得惯性保持,当前梯度计算会考虑之前的梯度,但是之前的梯度会做一定程度的衰减
(5)Adagrad
为了获得环境感知,自适应调整学习率,当前学习率和之前梯度的模成反比。存在有效学习率过早或过量减小
(6)Adam
为了获得惯性保持和环境感知,分别计算梯度的一阶矩(之前梯度和当前梯度的平均)和二阶矩(之前梯度平方和当前梯度平方的平均)
传统迭代法
x_(n+1)= x_n - f(x_n)) /(f’(x_n) f(x) = f(x_0 ) + (x-x_0 )f’(x_0)
x_(n+1)= x_n - f’(x_n))/(f’’(x_n) f(x) = f(x_0 ) + (x-x_0 ) f’ (x_0 )+1/2 (x-x_0 )^2 f’’(x_0)
L1和L2正则的特点?
L1 | L2 | |
---|---|---|
分布 | 拉普拉斯 | 高斯 |
目的 | 限制参数过多或者过大,避免模型更加复杂 | |
适用 | 模型中有很多相关特征,用L1消除共线性问题 | 样本足够多,用L2防止过拟合 |
激活函数优缺点?(*)
- 特性:
定义域:(-∞,+∞) ;值域:(0,1)
在定义域内,是连续、光滑的函数,处处可导,导数为 f’(x) = f(x)*(1-f(x)) - 优点:
(1)实现非线性变换
(2)梯度容易计算
(3)可以进行数据压缩 - 缺点:
双边饱和,易出现梯度消失
幂运算耗时
输出均值非0
-
特性:
定义域:(-∞,+∞);值域:(-1,1)
在定义域内,是连续、光滑的函数,处处可导,导数为 f’(x) =1-f2(x) -
优点:
(1)实现非线性变换
(2)梯度容易计