机器学习中常见的问题整理(三)

本文继续整理各个平台上最热门的机器学习问题及参考解答,如有问题欢迎补充~
1. 激活函数ReLU相比Sigmoid的优势有哪些?
(1)Relu计算量小;
(2)Relu没有饱和区和梯度消失;
(3)用Relu去估计非线型函数时收敛更快。AlexNet论文里说大概比sigmoid快6倍。
最后,Relu有个缺点是输出为0后,梯度没法反向传递,这个Relu就死掉了。。
2. dropout rate一般设置多大?
主要还是根据自己的需要,这个也是hyper parameter,可以根据结果好坏来调整。

一般在输入层dropout的比较少,dropout rate是0.1甚至0。
在中间可以稍微大一点,比如0.5。dropout的一个目的是在每批训练时,通过dropout产生不同的网络结构。当dropout在0.5的时候,网络结构会更大的变化,所以0.5是非常常用的。
3. 前馈神经网络如何选择隐藏层的数量?
一般都是通过cross validation试出来的,没有什么绝对正确的准则。
不过有些是大家(包括Jeff Heaton)普遍的经验心得,值得参考下。
隐藏层数
一般是一层,因为大部分情况下都够用了。理论上说,一个有两个隐藏层的前馈神经网络可以表示任意的非线性决策边界。所以,可以说1到2个隐藏层。
隐藏层中的节点数
假设输入层的节点数是Nx,输出层的节点数Ny,那么每个隐藏层中的节点数Nh一般在Nx和Ny之间, 具体怎么选,还需要针对具体问题进行分析然后做交叉验证。
4. 逻辑回归的前提假设是什么?
Logistic Regression的前提要求相对比较少。
相对于线性回归的线性、独立性、正态性、等方差性 ,这里我们只需要线性和独立性。
独立性:error必须是独立的
线性:自变量和logit函数是线性关系。
5. 如何对大型线性回归进行并行计算?
(1)如果是用投影矩阵来求线性回归,那么这个问题就等同于如何对矩阵进行并行计算;
(2)如果是用数值方法来求线性回归,可以考虑mini-batch,比如batch-size是40,你有4个cpu,那么就是每个cpu计算10个点,然后合在一起;
(3)如果考虑分布式计算(也就是把数据切成好N块),可以每个机器或者cpu分配到N分之一的数据,分别进行计算,最后对N组回归系数取平均值。这个方法在大数据公司很常用,比如Linkin,google。
6. 机器学习算法的鲁棒性是什么意思?
机器学习算法鲁棒性并没有严格的量化的定义。鲁棒性,robustness,顾名思义,就是健壮的意思。机器学习模型的健壮也是类似的意思。主要是两个方面。
(1)数据中的错误点、或者误差。训练集中常常有些数据是有错位的,类似的,预测样本中也有可能有一些错误。一个具有鲁棒性的机器学习模型能够不被这些训练集中的错误数据影响,依然能绕过浮云看本质。
(2)训练样本和预测样本的分布不大相同,一个具有鲁棒性的模型就是即使当测试集的数据分布与训练集数据分布比较不同的时候,模型也能给出较好的预测结果。
7. 怎么对时间序列进行交叉验证?
不能用普通的交叉验证,这样会有数据泄漏。
有个方案是保证时间顺序,永远用后面的数据作为测试集。
比如说数据是从1月份到12月。
那么你可以:
1到6月训练,在7月上验证
2到7月训练,在8月上验证
3到8月训练,在9月上验证
4到9月训练,在10月上验证
5到10月训练,在11月上验证
6到11月训练,在12月上验证

这样的缺点是,1到6月的数据从来不会被用作验证集,所以根据交叉验证的结果,是有些偏差性的。
如果各位有其他的好方法,欢迎指正~
8. 余弦相似和内积的意义有什么不同?
它们表达的意思不一样,不能简单的一概而论。
余弦距离只考虑了角度差,内积综合考虑了角度差和长度差。
比如有两个对象A和B,它们的向量表示为A(1,1,0)和B(0,1,1),余弦相似不考虑向量的长度,所以A(1,1,0)和C(0,3,3)的相似程度和A与B的相同。
如果如果向量的长度本身对相似有真实的影响(在理解含义的情况下),推荐使用内积。比如对商品的几个属性打分,1表示不确定,依次到,5表示很确定,那么A(1,1,1),B(4,4,4),C(5,5,5)三个商品,根据内积,B与C更相似。但是余弦相似在这里就无法区分A,B,C的相似性。

猜你喜欢

转载自blog.csdn.net/iqqiqqiqqiqq/article/details/80057977