Java 梯度下降伪码

Java 梯度下降伪码,java,machine-learning,Java,Machine Learning,我将用英语描述梯度下降的过程: 1用于所有文件,例如我们培训语料库中的文档 ->开始,现在我们正在考虑我们的第一份文件 2用于与该培训示例文档关联的特征向量中的所有特征 3取权重值向量*和特定于所考虑文档的特征向量的点积 *权重值向量适用于所有特征,尽管所有特征不会出现在所有文档中,实际上每个文档中只会出现一些特征 4取步骤3得出的值,并将其应用于损失函数。我用的是铰链损耗函数,也就是公式 这个等式是不是说铰链损失目标函数应该是我们训练集中每个文件的误分类误差之和 这是否等同于java代码: M

我将用英语描述梯度下降的过程:

1用于所有文件,例如我们培训语料库中的文档

->开始,现在我们正在考虑我们的第一份文件

2用于与该培训示例文档关联的特征向量中的所有特征

3取权重值向量*和特定于所考虑文档的特征向量的点积

*权重值向量适用于所有特征,尽管所有特征不会出现在所有文档中,实际上每个文档中只会出现一些特征

4取步骤3得出的值,并将其应用于损失函数。我用的是铰链损耗函数,也就是公式

这个等式是不是说铰链损失目标函数应该是我们训练集中每个文件的误分类误差之和

这是否等同于java代码:

Math.max(0, 1 - y * value_from_step_three)
y={1,1}

^这是我的第一点困惑

我想这是不准确的,但我不确定,根据我的心智模型,它应该是正确的

5对于每个重量,更新为:

新权重值j=旧权重值j-学习率*步骤4中的值*特征值j

我有点困惑featurej的值应该是什么,因为我猜这将对应于一个向量,它有考虑中的每个权重的值,即

例如:

Document 1 = ["I", "am", "awesome"]
Document 2 = ["I", "am", "great", "great"]
字典是:

["I", "am", "awesome", "great"]
因此,作为向量的文档如下所示:

Document 1 = [1, 1, 1, 0]
Document 2 = [1, 1, 0, 2]
将有重量:

[WeightI,Weightam,WeightAweasome,Weightgreat]


偏见也是有分量的,不是吗

y={-1,1}就是这样工作的。这是定义。我知道这不是很有用,但是损失函数是这样定义的。请你澄清一下这个评论好吗?我不明白你想说什么,简单地说。损失函数衡量当前解决方案的糟糕程度。在野外有大量的损失函数。但本练习的作者选择了铰链损失函数,它恰好定义在[-1,1]范围内。您可能应该从基本的梯度下降算法开始,然后转到这个问题。