Nestrov加速梯度下降未加速多元线性回归

时间:2019-01-27 09:55:57

标签: machine-learning linear-regression

我使用香草GD训练了多元线性回归模型,以加快执行时间,我切换到动量GD,但时间几乎没有变化,几乎没有毫秒,然后切换到Nesterov加速GD,但结果是相同的在没有加速的情况下,我仍然可以获得与我的代码相同的执行时间。为什么会这样呢?我预计会提高100-1000倍,但是几乎没有毫秒级的提升。

在有规律的迭代间隔的情况下,我还打印了成本,但在此同时,对于所有三个GD,成本都是相同的,我期望对于Nesterov,成本应更快地降低。

我尝试了几乎所有可能的beta值,但没有任何反应。

这是我的代码,在运行开始时,我用0.0初始化self.theta_vect和self.velocity_vect

def ModelTrainingWithNestrovAcceleration(self,des_mat,y_vect) : 

    self.theta_vect += ( self.beta * self.velocity_vect )

    h_vect = self.PredictResult(des_mat)
    error_vect = h_vect - y_vect

    regularization_term = self.lmbda * sum(self.theta_vect)

    avg_delta_vect = np.matmul(des_mat.T,error_vect)  

    self.velocity_vect = ( self.beta * self.velocity_vect ) - (self.alpha/len(des_mat)) * ( avg_delta_vect + regularization_term )

    self.theta_vect += self.velocity_vect

我的代码有误吗?如果不是,那么为什么会有这种意外行为。

0 个答案:

没有答案