梯度下降法的矩阵方式描述
主要讲解梯度下降法的矩阵方式表述,要求有一定的矩阵分析的基础知识,尤其是矩阵求导的知识。
1. 先决条件:需要确认优化模型的假设函数和损失函数。对于线性回归,假设函数
hΘ(x)=Θ0x0+Θ1x1+Θ2x2+⋯+Θnxn
的矩阵表达方式为:
hΘ(x)=XΘ
其中, 假设函数
hΘ
为
y^(m∗1)
的矩阵,
Θ
为
Θ(n∗1)
的向量,里面有n个代数法的模型参数。
X(m∗n)维的矩阵。m代表样本的个数,n代表样本的特征数。损失函数的表达式为
J(Θ)=12(XΘ−Y)T(XΘ−Y)
,其中
Y(m∗1)
是样本的输出向量,维度为m*1,
12
是一个额外加上的系数,用于抵消二元导数的2
2. 算法相关参数初始化: θ 向量可以初始化为默认值,或者调优后的值。算法终止距离ε,步长α
在这里推导一下上述公式,从一维的角度进行推导:
hΘ(x)=Θ0x0+θ1x1+θ2x2+⋯+θnxn
y^=hΘ(x)=∑i=0nΘixi
L(Θ)=12∑j=0m(y^−y)2
ΔL(Θ)ΔΘi=Δ(12∑mj=0(y^−y)2)ΔΘi
0+⋯+m的累和是m个特征点累和当只看一个样本时,上式可看成:
Δ(12(y^−y)2)ΔΘi=(y^−y)∗Δ(hΘ(x))ΔΘi=(y^−y)∗xi
得到多维:
L(Θ)=∑j=0m(y^j−yj)∗xj
1. x = np.array(x) #
X(m∗n)
2. y = np.array(y) #
Y(m∗1)
#m是样本个数,n是特征点个数
3. x= np.concatenate((np.ones((x.shape[0],1)),x), axis=1) #add bias
4. x_t = x.transpose()
4. w = mp.zero.(len(x[0]) #w.shape = n+1 value = 0
5. x_tmp = np.dot(x,w) # this is
y^
6. loss = x_tmp - y
7. gra = np.dot(x_t, loss) #在这里只要进行这样的矩阵乘法就是实现上述的公式