Gradient Descent 矩阵python实现

时间:2021-02-25 21:26:27

梯度下降法的矩阵方式描述
主要讲解梯度下降法的矩阵方式表述,要求有一定的矩阵分析的基础知识,尤其是矩阵求导的知识。
1. 先决条件:需要确认优化模型的假设函数和损失函数。对于线性回归,假设函数

h Θ ( x ) = Θ 0 x 0 + Θ 1 x 1 + Θ 2 x 2 + + Θ n x n
的矩阵表达方式为:
h Θ ( x ) = X Θ
其中, 假设函数 h Θ y ^ ( m 1 ) 的矩阵, Θ Θ ( n 1 ) 的向量,里面有n个代数法的模型参数。 X ( m n ) m n J ( Θ ) = 1 2 ( X Θ Y ) T ( X Θ Y ) , Y ( m 1 ) 是样本的输出向量,维度为m*1, 1 2 是一个额外加上的系数,用于抵消二元导数的2
2. 算法相关参数初始化: θ 向量可以初始化为默认值,或者调优后的值。算法终止距离ε,步长α
在这里推导一下上述公式,从一维的角度进行推导:

h Θ ( x ) = Θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + + θ n x n
y ^ = h Θ ( x ) = i = 0 n Θ i x i
L ( Θ ) = 1 2 j = 0 m ( y ^ y ) 2
Δ L ( Θ ) Δ Θ i = Δ 1 2 j = 0 m ( y ^ y ) 2 Δ Θ i
0 + + m m
Δ ( 1 2 ( y ^ y ) 2 ) Δ Θ i = ( y ^ y ) Δ ( h Θ ( x ) ) Δ Θ i = ( y ^ y ) x i
L ( Θ ) = j = 0 m ( y ^ j y j ) x j

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) #在这里只要进行这样的矩阵乘法就是实现上述的公式