Реализация многоклассового SGD, веса не обновляются должным образом
Я использую SGD для изучения весов для мультиклассовой классификации. Избегая лишнего, мой код выглядит следующим образом:
def SGD(X, Y, nClasses=3):
weights = np.zeros((nClasses,X.shape[1]))
for epoch in range(epochs):
for x,y in zip(X,Y):
yhat = softmax(np.dot(x,weights[y-1].T))
weights[y-1] -= lr * (yhat-y) * x
Я делаю y-1, потому что мои метки начинаются с 1, то есть 1,2,3,4... поэтому я вычитаю 1, чтобы обновить соответствующие веса.
Однако после тренировки weights[0]
это просто нули, но остальные классы правильно обучены. Это приводит к высокой ошибке и низким баллам. Я не могу понять, почему не обновляется первый набор весов.
Спасибо.