5.6 批量梯度下降法
5.6.1 PCA降维的意义
在很多时候,我们需要综合使用随机梯度下降法和瀑布下降法的长处。这时往往数据量很大,一次计算所有的数据是非常耗费内存的。而一个一个的随机梯度下降的计算又耗费时间。如果把耗费内存的瀑布下降法看作是空间法,而把随机梯度下降则看作是时间法,那么批量梯度下降法就可以看作是时空法。这有点类似物理上的静力学,运动学到相对论的感觉。所以批量梯度下降法就是机器学习中的相对论算法。
那么问题来了。我们有没有可能耗费很小的计算资源,就能够得到很精确的学习结果呢?
答案当然是有的。从算法的本质来看,如果处理的数据都非常类似,那么对于算法来说,这些数据就没有必要处理很多次。这相当于说如果两条数据的相关性接近1,那么就把它们看作是一条数据。这个过程叫数据的降维。目前最好的数据降维的办法是矩阵PCA算法。我们先不讨论这个算法本身。只要记住它的核心功能就是让数据集瘦下来。实际上这个算法对于瀑布下降法也是适用的,但当我们选择用瀑布下降法的时候,实际上表明我们碰到的数据集完全可以用内存来处理,这时候在学习之前用PCA的意义并不大。因为这种小型的数据集可以简单粗暴对待。但是当数据量变得很大时,PCA的意义就十分突出了。它甚至可以在不丢失泛性的情况下,将数据集瘦身好几个数量级,这对于算法来说,就是快了好几个数量级。这种情形下,就可以将算法的性能提升到极致。
上面讲的PCA降维实际上还有更强的意义。由于它只取一部分特征数据来进行计算,所以在这个数据集下进行的深度学习,将不会陷入到局部最优解去。这是非常非常重要的性质。因为局部最优解的存在本身就反映了数据集中有数据分布聚集的现象存在。这种聚集在一起的数据,相关性一般比较大。当我们用PCA降维后,这些相关性很大的数据集,就之有一个代表会被抽取出来。这样就自动跳出了这个局部聚集的数据集。因此也不会陷入局部最优解。
我们将在算法优化的章节中,再来讨论这个问题。
说个题外话。如果你有相对论的数学基础,你会发现这里处理问题的方式和相对论很相似。只不过在相对论里讨论的是洛伦兹不变性。这也是为什么我将批量梯度下降法叫做时空法的原因。
我们现在回到批量梯度下降法。
网友评论