低秩矩阵的应用

矩阵的秩

        先来看下线性代数中的“秩”的概念,有如下方程:

低秩矩阵的应用

        其中第3个方程可由前两个方程线性表示,从这个意义上理解,第3个矩阵是“多余”的,因为它并未给求解带来更多的信息。线性代数中一种求解矩阵的秩rank(A)的方法为,通过初等行变换,把矩阵A化为阶梯矩阵,其中非零行的个数就是矩阵的秩rank(A)。

        如果一个矩阵A带有结构信息,即各行/列间的相关性很强,且满足下列条件,则该矩阵A是低秩的:
        A是m × n矩阵,rank(A) << min{m, n},则称A是低秩矩阵。rank(A)的凸近似就是核范数‖A‖*。

低秩矩阵的应用

        矩阵带有结构信息,我们可以联想到:推荐系统“用户-评分”矩阵、人脸图像像素矩阵,等。低秩矩阵每行/列都可以用其它行/列线性表示,利用这种特点我们可以对缺失数据进行恢复。

        这里介绍一下怎样用低秩矩阵来做人脸识别,同一个人脸的不同图像,可能有光照、遮挡物(眼镜、口罩)等因素,面对这些被影响的部分(噪声),我们可以用低秩矩阵来恢复,从而得到一张纯净的人脸。

        考虑同一个人脸的多幅图像,我们把每张图片编码成列向量,然后将这些列向量排列成矩阵,那么这个矩阵应该是低秩矩阵,因为每一张图像同一位置(x, y)的像素值应该是相似的(同一个人脸)。当出现噪音时,这个矩阵就会变得满秩。这时,我们进行低秩分解,就可以得到一个低秩矩阵和一个噪声矩阵。

低秩矩阵的应用

        这时,我们再把每一行恢复成每一幅图像,就可以得到一幅“纯净”的人脸和一幅噪声图(眼镜、光照,等)。

        至于算法实现,我这里就不深入了,现在主要精力放在密码学上 O(∩_∩)O

Reference

机器学习中的范数规则化之(二)核范数与规则项参数选择

 

转载于:https://my.oschina.net/keyven/blog/674939