哥伦比亚大学计算机科学专业博士生发博阐述了关於机器学习的七个误解,AI科技评论将原文编译整理如下。
在了解深度学习的过程中盛传着7 个误解,它们中很多都是以前固有的偏见,但在最近又被新的研究提出了质疑,现在我们把它整理出来:
误解1: TensorFlow 是个张量运算库
误解2: 图像数据集反映了自然世界真实图像分布
误解3: 机器学习研究者并不使用测试集进行验证
误解4: 神经网络训练过程会使用训练集中的所有数据点
误解5: 我们需要批标准化来训练超深度残差网络
误解6: 注意力优於卷积
误解7: 显着图是解释神经网络的一种稳健方法
以下将分别说明:
误解1: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,高斯过程……