1. 矩阵求逆引理 Matrix inversion lemma
矩阵 , 都是 m x n(m行 n列) 矩阵是 n x n
若 (公式1)
则它的逆矩阵为 (公式2)
如果把vector 看成是一个 Nx1的矩阵,根据以上公式可得,
这里的 相当于公式1中的 ,
是对应公式2的部分,其结果是一个标量scalar,即一个数值
2. Linear regression 线性回归
Data: 是scalar
Model:
注意:这里V不是bias, bias 项包含在里面,这里是指noise 并且假设其服从均匀分布,则
噪音 Noise:
误差Error 记为:
若将误差以矩阵的形式表示,则
矩阵是一个 n 行 (p+1) 列的矩阵,n表示数据量,p则对应数据的维度,多一列常数是为了计算bias,它的每一行是每次输入(向量)的转置的每一行对应每次输入的转置(input is a vector),即, 如下图所示
我们希望最小化E,且此时是未知,于是,可以求取其梯度,即对进行求导,可得
1. 如果是静态的数据,即数据一次性给出,则可以求出w
则
2. 如果是动态的数据,即数据是一直在更新中,源源不断的产生,则可以通过梯度下降的方式更新
方法一:批量模式 batch mode
方法二:随机梯度下降 stochastic update (sample by sample), 即随机从样本数据中选取一个样本,用来更新
但是这种方式收敛过程中会存在更多的噪声,其error 如下图所示
3. Recursive Least Squares 递归最小二乘算法
我们也可以通过递归最小二乘的方式得到线性模型
(备注:很多时候都会讲到最小二乘,它又叫做最小平方法,即求得其的最小平方和,比如通过最小二乘,得到模型的残差bias最小, 即最小化目标值与模型预估值的距离的平方和)
令,有上文可得,
在w的表达式中,比较麻烦的是求,如果得到它,那么我们就能成功求得w,得到我们的线性模型。
如果我们的数据是源源不断的进来,即没法一次性取得所有的数据,我们可以通过最小二乘递归的方式,不断更新w。下面会讨论如何求得逆矩阵。
如上图所示,根据矩阵相乘的基本原理,可以得出,,即其中,可以认为是只有一列的矩阵(px1)。
根据前文提到的matrix inversion lemma, 可以求得其逆矩阵
表达式虽然看上去很复杂,但是计算比原始的逆运算简单,只要记录上一次逆运算的结果,结合当前最新的输入数据,便可得到从而避免了复杂的矩阵求逆过程,进而得到w.
令
(公式3)
残差bias
在现实中,新的数据往往会比旧的数据更有意义,所以需要引入一个遗忘因子(一般在0.98到1之间选择),来评估数据对当前模型的影响,使得越往后数据影响越大(这个实际是加权最小二乘的内容)。对于静态的数据而言,即能够一次性给出所有数据,则没有必要考虑遗忘因子。
此时我们的误差函数为 我们的目标是通过最小化误差求得, 由上可知
此时
根据前文提到的matrix inversion lemma, 可以求得其逆矩阵
(公式4)
为了方便计算, 引入增益矢量 gain vector (公式5)
且定义 ,则由公式4,公式5可得
(公式6)
增益矢量可以进一步化简,得到以下关系 (公式7), 其推导如下
公式3可知 权值 带入公式6 与公式7的结论 则
即 new weight = old weight - gain * prediction error
递归最小二乘算法总结:
1. 计算 增益矢量
2. 计算
3. 计算权值
RLS表现出极快的收敛性,且不需要对矩阵进行求逆运算,在这个方面能节省计算量。计算时不需要加载所有的数据,从而节省了内存,但是,这种好处是以高计算复杂度为代价的。