一面
自我介绍
专业方向
做的最好的项目
特征处理过程
特征,标签
朴素贝叶斯
梯度消失和梯度爆炸
完整相关问题原文链接如下:
https://blog.csdn.net/qq_25737169/article/details/78847691
为何会产生梯度消失或者梯度爆炸?
- 从网络层数的角度考虑,网络层数变多,由于BP算法的链式求导法则导致。如果对某层的激活函数求导大于1,那么层数增多的时候,最终的求出的梯度更新将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失。
- 从激活函数的角度考虑,如果使用sigmoid作为损失函数,其梯度是不可能超过0.25的,这样经过链式求导之后,很容易发生梯度消失。同理,tanh作为激活函数,它的导数图如下,可以看出,tanh比sigmoid要好一些,但是它的导数仍然是小于1的。
如何解决?
- 采用relu激活函数,应为对其求导,导数恒为1.不会发生梯度爆炸和梯度消失。relu的主要贡献在于:解决了梯度消失、爆炸的问题。计算方便,计算速度快。 加速了网络的训练。
- 梯度剪切。梯度剪切这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。
- 权重正则化。比较常见的是 l 1 l1 l1正则,和 l 2 l2 l2正则。如果发生梯度爆炸,权值的范数就会变的非常大,通过正则化项,可以部分限制梯度爆炸的发生。应为优化器会求最小的loss函数,若果正则化项大的话,会被loss损失函数约束变小。
- 残差网络。几乎所有的深度网络都离不开残差的身影,相比较之前的几层,几十层的深度网络,在残差网络面前都不值一提,残差可以很轻松的构建几百层,一千多层的网络而不用担心梯度消失过快的问题。相比较于以前网络的直来直去结构,残差中有很多跨层连接结构,这样的结构在反向传播中具有很大的好处,见下式:
式子的第一个因子 ∂ L o s s ∂ x l \frac{\partial Loss}{\partial x_l} ∂xl∂Loss表示的损失函数到达 L 的梯度,小括号中的1表明短路机制可以无损地传播梯度,而另外一项残差梯度则需要经过带有weights的层,梯度不是直接传递过来的。残差梯度不会那么巧全为-1,而且就算其比较小,有1的存在也不会导致梯度消失。所以残差学习会更容易。 - 采用LSTM的结构。LSTM全称是长短期记忆网络(long-short term memory networks),是不那么容易发生梯度消失的,主要原因在于LSTM内部复杂的“门”(gates),如下图,LSTM通过它内部的“门”可以接下来更新的时候“记住”前几次训练的”残留记忆“,因此,经常用于生成文本中。目前也有基于CNN的LSTM,感兴趣的可以尝试一下。
线性回归
线性回归有怎样的条件假设?
详情见博文
https://blog.csdn.net/Noob_daniel/article/details/76087829
MSE 如何推出?
https://blog.csdn.net/gangyin5071/article/details/81280019
为什么用2次型?
https://blog.csdn.net/saltriver/article/details/57544704
正则化项作用?
https://blog.csdn.net/hit0803107/article/details/52901915
防止过拟合
为什么可以防止过拟合?
正则化项描述了模型复杂度,模型越复杂正则化项越大。正则化平衡了方差(方差大过拟合)于偏差(偏差大欠拟合)
最小化正则化项,减少了特征向量个数,降低了模型的复杂度。正则化符合奥卡姆剃刀原理,奥卡姆剃刀原理应用于模型选择时采用以下想法:在所有可能选择的模型中,能够很好的解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率,可以假设复杂的模型有较小的先验概率,简单的模型有较大的先验概率。
a、特征选择(FeatureSelection):
最小化正则化项能实现特征的自动选择。在我们事先假定的特征(或自变量)中,有很多自变量或特征对输出的影响较小,可以看作是不重要的特征或自变量。而正则化项会自动对自变量或特征的系数参数进行惩罚,令某些特征或自变量的参数(权重系数)为0或接近于0,自动选择主要自变量或特征(类此于PCA)。
b、可解释性(Interpretability):
最小化正则化项模型更容易解释。
例如一回归问题,假设回归模型为:y=w1x1+w2x2+…+w1000x1000+b
通过学习,如果最后学习到的w就只有很少的非零元素,大部分W*为0或接近于0,例如只有5个非零的wi,那可以认为y之于这5个(因素)xi有关系,这更有利于人们对问题的认识和分析,抓住影响问题的主要方面(因素)更符合人们的认知习惯。
线性回归系数的标准差和样本的什么有关?
线性系数的标准差和样本数量有什么关系?
数学表达式
高斯分布为何如此普遍?
中心极限定理,大数定律
大数定律是说,n只要越来越大,我把这n个独立同分布的数加起来去除以n得到的这个样本均值(也是一个随机变量)会依概率收敛到真值μ,但是样本均值的分布是怎样的我们不知道。
中心极限定理是说,n只要越来越大,这n个数的样本均值会趋近于正态分布,并且这个正态分布以μ为均值,σ2/n为方差
SVM
损失函数
为什么能使间隔最大化?
https://blog.csdn.net/qq_21768483/article/details/86251915
逻辑回归
损失函数
https://blog.csdn.net/qq_21768483/article/details/88425728
分类问题有哪些损失函数
Random Forgest 和GBDT
https://www.cnblogs.com/liuwu265/p/4690486.html
1.bagging: 有放回的抽抽出K个训练集,训练处K个学习器,然后投票(分类),或者求平均(回归)。
2.boost:训练一个学习器改变一次样本权重,分类错误的权重增大,然后在训练第二个学习器,用来拟合上一轮中学习器和便签的残差。
区别:
1.样本上
2.样本权重上
3.预测函数权重上
4.并行计算上
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树 (AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。)
3)Gradient Boosting + 决策树 = GBDT
方差和偏差学习器个数n的函数关系?
bagging:
偏
差
=
偏
差
n
偏差=\frac{偏差 }{n}
偏差=n偏差 方差=方差 (与n无关)
原因:Bagging是“多次计算取平均”,即X = (X1+X2+…+Xn)/n,从而假定X1、X2…Xn的方差都相同,记做Xi,直接使用方差计算,很容易得到:Var(X)=Var(Xi)/N,这即“Bagging可以减少方差”的理论依据。
boost:偏差=偏差 ,方差随n增大而减小
矩阵的SVD分解
svd:奇异值分解
类似与方阵的特征值分解。
方阵是N*N的矩阵,
A
n
∗
n
=
Q
∑
Q
−
1
A_{n*n}=Q \sum Q^{-1}
An∗n=Q∑Q−1
求解方法:
A
n
∗
n
v
=
λ
v
A_{n*n}v=\lambda v
An∗nv=λv
λ
\lambda
λ是特征值,v是特征向量
奇异值分解:
A
m
∗
n
=
U
m
∗
m
∑
m
∗
n
V
n
∗
n
T
A_{m*n}=U_{m*m} \sum_{m*n} V^T_{n*n}
Am∗n=Um∗mm∗n∑Vn∗nT
求
U
m
∗
m
,
∑
m
∗
n
,
V
n
∗
n
T
U_{m*m}, \sum_{m*n}, V^T_{n*n}
Um∗m,∑m∗n,Vn∗nT
其中可以利用
A
A
T
=
λ
v
AA^T=\lambda v
AAT=λv 求得U
A
T
A
=
λ
v
A^TA=\lambda v
ATA=λv 求得V
Σ 的对角元素来源于 AAT 或 ATA 的特征值的平方根,并且是按从大到小的顺序排列的
PCA主成成分分析
- 对样本去中性化(第i维特征减掉第i维特征的均值) 。维度:[m*n] m样本特征数,n样本数
- 计算协方差矩阵 X X T XX^T XXT(描述的是各个维度之间的相关性)。 维度: [m*m]
- 求特征值 λ \lambda λ和特征向量v 。 维度: [1*m],把列横着放
- 保留K个特征值最大的特征向量v,组成特征矩阵P 。 维度: [k*m]
- 变换后的Y=PX 。 维度: [k*n]
优化方法有哪些?原理?
拟牛顿法
排序算法
排序算法为啥没有快于NlogN?