Charu C.Aggarwal的《神经网络与深度学习》一书将感知器权重更新规则列为
W <- W + a *(y_i-y_hat_i) * X
其中W是您的权重向量,X是您的数据向量,其中y_i是其对应标签,y_hat_i是y_i的预测标签,最后a是学习率。
我理解这一点。
这本书继续说,体重的更新本质上是
W <- W + a *∇w_i* L-i
在讨论了感知器标准的平滑代理损失函数之后。
因此,如果我要实现自己的Perceptron,我不确定在体重更新中实际上必须使用哪一个?
我正在从事的分类任务只是根据数据y = x(在(0,0)和(1,1)之间)的哪一侧随机采样(x,y)对将数据分类为一个类。跌倒。
如果使用第一个列出的公式,我将获得100%的训练准确度,但并非总是很高的验证准确度。
我尚不知道您将如何实现第二个公式。
如果您使用我提到的第一个权重更新方案,我将不完全了解感知器算法的损耗和权重更新之间的关系。
data_instance = self.features[index]
label_instance = self.true_labels[index]
w_sum =
self.weighted_sum(data_instance,self.weight_vector[index])
prediction = self.sign_activation(w_sum)
print(prediction)
predicted_labels[index] = prediction
loss = self.squared_loss(prediction, label_instance)
print('Loss: ', loss)
#WEIGHT UPDATES--Perceptron Criteria
label_distance = self.true_labels[index] - prediction
label_distance_lr = self.lr * label_distance
updated_data_instance = [x*label_distance_lr for x in data_instance]
new_weight_list = [None] * len(self.weight_vector[index])
current_weights = self.weight_vector[index]
for i in range(len(new_weight_list)):
new_weight_list[i] = current_weights[i] + updated_data_instance[i]
self.weight_vector[index] = new_weight_list
以上是我当前如何实现体重更新的方法。这是一种基于感知器标准进行体重更新的可接受方法吗?