numerical optimization把能够通过矩阵计算直接得到解的问题转换为迭代的方式进行求解。这种方式尤其适合large problem,当数据维度特别大时,你只好用迭代的方式,否则矩阵的计算能够算死你。当然在计算过程中,会有各种各样的问题,迭代方向和迭代步长问题,就是最核心的参数吧。
因为看到这个,我突然想到,为什么之前我一直没用到numerical optimization呢,也一直没有需要去看。我回头去看我之前了解的算法,我一般是直接计算,比如之前用的k-means, spectral clustering,而即使是topic models,我用的也是gibbs 采样。那么我就在想,这些为什么文章中没有看到过newton method, conjugate gradient或者trust region, 而这几个算法,看到的比较多的就是在logistic regression中用到,Limited-memory BFGS在其中用的比较多。在看过的分类器中,用的最多的迭代方法是em或者varitional em。 em简单来说,就是对似然函数求最大值。Expectation Maximization (EM) 是一种以迭代的方式来解决一类特殊最大似然 (Maximum Likelihood) 问题的方法,这类问题通常是无法直接求得最优解,但是如果引入隐含变量,在已知隐含变量的值的情况下,就可以转化为简单的情况,直接求得最大似然解。注意,在EM中,是存在隐变量的,一般是因为我们不引入这个隐变量问题是无法求解的。而且一般情况下,隐变量也是我们想要的。这个用别的迭代优化是无法得到的。
coordinate ascent或者descent,是说每次迭代只对一个coordinate进行求解,而不是全部。同时,由EM算法我们可以看到,这类算法和前面提到的各种梯度算法不同,是不进行微分的,直接对各个维度进行迭代,也就是对一个多元函数f()每次在一个方向上求解最优值。维基百科对coordinate descent做了解释。比如对权重系数W求解时,我们不是像其它优化算法那样just once得到所有维度的值,而是每次求解一个w_k,如果维度是d,那么需要求解d个参数。EM就是通过这种每一个维度的求解进行优化的,因此也是coordinate ascent。
因此,大概总结一下,通过对loss函数求最优值,得到最佳权重系数,numerical optimization用在supervised learning模型中,是不是更好点,比如在logistic regression中,我们可以通过最小化误差函数,对分类器进行优化,而且在supervised learning中,因为一般隐变量是label,而supervised learning是不需要隐变量的。而em 或者varitional em用在含有隐变量尤其是是在expoential family中,比如一般在generative model, 比如lda, hdp等模型中,在这个过程中,一般需要隐变量的,而且有些distribution是无法得到的。
参考:
感觉还是不是很清晰,我会继续思考,继续补充。