从今天起,豆芽有空也尽己所能,帮助一下大家。
面经来源:https://www.nowcoder.com/discuss/694855?source_id=discuss_experience_nctrack&channel=-1
1. 交叉熵为什么可以做损失函数
在机器学习中,我们希望在训练数据上模型学到的分布 𝑃(𝑚𝑜𝑑𝑒𝑙) 和真实数据的分布 𝑃(𝑟𝑒𝑎𝑙) 越接近越好,所以我们可以使其相对熵最小。但是我们没有真实数据的分布,所以只能希望模型学到的分布 𝑃(𝑚𝑜𝑑𝑒𝑙) 和训练数据的分布 𝑃(𝑡𝑟𝑎𝑖𝑛) 尽量相同。假设训练数据是从总体中独立同分布采样的,那么我们可以通过最小化训练数据的经验误差来降低模型的泛化误差。即:
希望学到的模型的分布和真实分布一致,𝑃(𝑚𝑜𝑑𝑒𝑙)≃𝑃(𝑟𝑒𝑎𝑙)
但是真实分布不可知,假设训练数据是从真实数据中独立同分布采样的,𝑃(𝑡𝑟𝑎𝑖𝑛)≃𝑃(𝑟𝑒𝑎𝑙)
因此,我们希望学到的模型分布至少和训练数据的分布一致,𝑃(𝑚𝑜𝑑𝑒𝑙)≃𝑃(𝑡𝑟𝑎𝑖𝑛)
最小化训练数据上的分布 𝑃(𝑡𝑟𝑎𝑖𝑛) 与最小化模型分布 𝑃(𝑚𝑜𝑑𝑒𝑙) 的差异等价于最小化相对熵,即。此时, 𝑃(𝑡𝑟𝑎𝑖𝑛) 就是 中的 𝑝,即真实分布,𝑃(𝑚𝑜𝑑𝑒𝑙) 就是 𝑞。又因为训练数据的分布 𝑝 是给定的,所以求等价于求 交叉熵,而为了计算方便,用交叉熵取代相对熵,只需要计算。得证,交叉熵可以用来计算学习模型分布与训练分布之间的差异。
2. 逻辑回归和SVM的异同
LR与SVM的相同点:
都是有监督的分类算法;
如果不考虑核函数,LR和SVM都是线性分类算法。
它们的分类决策面都是线性的。
LR和SVM都是判别式模型。
LR与SVM的不同点:
本质上是loss函数不同,或者说分类的原理不同。
SVM是结构风险最小化,LR则是经验风险最小化。
SVM只考虑分界面附近的少数点,而LR则考虑所有点。
在解决非线性问题时,SVM可采用核函数的机制,而LR通常不采用核函数的方法。
SVM计算复杂,但效果比LR好,适合小数据集;LR计算简单,适合大数据集,可以在线训练。
3. SVM如何处理非线性情况
核方法
软间隔
4. LR可以处理非线性情况吗?
可以,同样可以使用核方法。
5. LR的参数可以初始化0 吗?
可以。
在逻辑回归中,
因此在LR的反向传播中,我们假设,则
而
因而
可以看出,就算初始设为0,后续梯度还是会更新的。
6. 深度学习中参数初始化1
没有控制均值和方差,可能梯度消失或梯度爆炸。
建议采用He初始化方法,并配合Relu激活函数。
7. CNN中[1,1]卷积核的作用
实现跨通道的交互和信息整合
进行卷积核通道数的降维和升维
对于单通道feature map 用单核卷积即为乘以一个参数,而一般情况都是多核卷积多通道,实现多个feature map的线性组合
可以实现与全连接层等价的效果。如在faster-rcnn中用1x1xm的卷积核卷积n(如512)个特征图的每一个位置(像素点),其实对于每一个位置的1x1卷积本质上都是对该位置上n个通道组成的n维vector的全连接操作。
8. BN
BN(Batch Normolization)是Google提出的用于解决深度网络梯度消失和梯度爆炸的问题,可以起到一定的正则化作用。我们来说一下它的原理:
批规范化,即在模型每次随机梯度下降训练时,通过mini-batch来对每一层卷积的输出做规范化操作,使得结果(各个维度)的均值为0,方差为1。
BN操作共分为四步。输入为,第一步计算均值:
第二步计算数据方差:
第三步进行规范化:
第四步尺度变换和偏移:
表示mini-batch中的数据个数,可以看出,BN实际就是对网络的每一层都进行白化操作。白化操作是线性的,最后的“尺度变换和偏移”操作是为了让BN能够在线性和非线性之间做一个权衡,而这个偏移的参数和 是神经网络在训练时学出来的
经过BN操作,网络每一层的输出小值被“拉大”,大值被“缩小”,所以就有效避免了梯度消失和梯度爆炸。总而言之,BN是一个可学习、有参数(γ、β)的网络层。
10. 如何从100个特征中选取30个特征
1、L1正则化可以得到稀疏特征
- 利用决策树,构建树的过程就是选取的过程。
11. Layer Normalization
LN:Layer Normalization,LN是“横”着来的,对一个样本,经过同一层的所有神经元做归一化。
BN:Batch Normalization,BN是“竖”着来的,经过一个神经元的所有样本做归一化,所以与batch size有关系。
二者提出的目的都是为了加快模型收敛,减少训练时间。
12. ROC/AUC
AUC是一种模型分类指标,且仅仅是二分类模型的评价指标。AUC是Area Under Curve的简称,那么Curve就是 ROC(Receiver Operating Characteristic),翻译为"接受者操作特性曲线"。也就是说ROC是一条曲线,AUC是 一个面积值。
以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo
全部评论
(2) 回帖