我使用香草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
我的代码有误吗?如果不是,那么为什么会有这种意外行为。