梯度下降中softmax的正则化

时间:2020-05-14 02:53:03

标签: python classification softmax

我正在使用softmax为多分类器编写梯度下降函数。对于正则化在梯度函数中的工作方式,我有些困惑。我已经指定了矩阵X,以使第一列填充一个,而w是一个矩阵,其中每一行对应于要素的权重,每一列对应于一个标签。我知道,偏差项/拦截不应被正规化。但是,我不清楚如何忽略偏见。

我正在学习的一些代码在计算梯度的函数中具有以下内容:

scores = np.dot(X,w)
predictions = softmax_function(scores)

gradient = -np.dot(X.T,y_actual-y_predictions)/len(y_actual)
regularizer = np.hstack((np.zeros((w.shape[0],1)),w[:,1:w.shape[1]]))
return (gradient, regularizer)

然后,在时代结束时更新w:

w_new = w_old - learning_rate*(gradient+regularizer*lambd)

所以,这是我的问题。在上面的代码中,为什么使用hstack()将零填充在正则化项的第一列中?似乎我们想使用vstack()使正则化器的第一行为零,因为偏置权重将成为第一行。

0 个答案:

没有答案