机器学习的七大谣传,这都是根深蒂固的执念吧
作者:媒体转发 时间:2019-02-26 16:56
在学习深度学习的过程中,我们常会遇到各种谣传,也会遇到各种想当然的「执念」。在本文中,作者总结了机器学习研究中常见的七大谣传,他们很多都是我们以前的固有概念,而最近又有新研究对它们提出质疑。所以在为机器学习填坑的生涯中,快自检这七个言传吧。
所以下面七个问题是你的「执念」吗?
TensorFlow 是个张量运算库?
不听不听,还是要用测试集调试调试模型的……
训练数据大概对模型训练都是有用的吧。
训练超深残差网络怎么少得了批标准化(BN)!
注意力机制难道不是卷积网络的替代品吗?
不管怎么说,图像数据集应该都是接近真实分布的吧。
主导分类的局部输入,难道不正是解释了神经网络吗?
谣传一:TensorFlow 是一个张量运算库
事实上,TensorFlow 是矩阵而不是张量运算库,这两者的区别非常大。
在 NeurIPS 2018 的论文 Computing Higher Order Derivatives of Matrix and Tensor Expressions 中,研究者表明,他们基于张量微积分(Tensor Calculus)所建立的新自动微分库具有明显更紧凑(compact)的表达式树(expression trees)。这是因为,张量微积分使用了索引标识,进而使前向模式和反向模式的处理方式相同。
与此相反,矩阵微积分出于标识方便的考虑隐藏了索引,这也通常会导致自动微分的表达式树显得过于复杂。
若有矩阵的乘法运算:C=AB。在前向模式中,有


以下是另一个例子,毫无疑问意义更大一些:对于求行列式 c=det(A)。在前向模式中,有


总的来说,TensorFlow 和其他库(如 Mathematica、Maple、 Sage、SimPy、ADOL-C、TAPENADE、TensorFlow, Theano、PyTorch 和 HIPS autograd)实现的自动微分方法,会在前向模式和反向模式中,得出不同的、低效的表达式树。而在张量微积分中,通过索引标识保留了乘法的可交换性,进而轻松避免了这些问题(具体的实现原理,请阅读论文原文)
研究者通过反向传播,在三个不同问题上,测试了反向模式自动微分新方法的性能,并度量了其计算 Hessian 矩阵所消耗的时间。

第一个问题是优化一个形如 xAx 的二次函数;第二个问题是求解一个逻辑回归;第三个问题是求解矩阵分解。
在 CPU 上,新方法与当下流行的 TensorFlow、Theano、PyTorch 和 HIPS autograd 等自动微分库相比,要快两个数量级。

在 GPU 上,研究者发现,新方法的提速更加明显,超出流行库的速度近似三个数量级。
意义:利用目前的深度学习库完成对二次或更高阶函数的求导,所花费的成本比本应消耗的更高。这包含了计算诸如 Hessian 的通用四阶张量(例:在 MAML 中,以及二阶牛顿法)。幸运的是,在「深度」学习中,二阶函数并不常见。但在「传统」机器学习中,它们却广泛存在:SVM对偶问题、最小二乘回归、LASSO,高斯过程……
谣传二:机器学习研究者并不使用测试集进行验证
在机器学习第一门课中,我们会学习到将数据集分为训练集、验证集以及测试集。将在训练集上训练得到模型,在验证集上进行效果评估,得出的效果用以指导开发者调节模型,以求在真实场景下获得效果最好的模型。直到模型调节好之后,才应该使用测试集,提供模型在真实场景下实际表现的无偏估计。如果开发者「作弊」地在训练或验证阶段使用了测试集,那么模型就很可能遇到对数据集偏差产生过拟合的风险:这类偏差信息是无法在数据集外泛化得到的。


