在计算了我的参数 w 和 u 的梯度之后,下一步以 SGD 方式优化它们是什么?
After Calculation the gradients of my paramter w and u, what is the next step to optimize them in a SGD way?
我要编码的内容: 我要构建一个简单的神经网络,其中包含一个权重矩阵 w 和一个用于得分的第二个参数 u。将我的输入向量与 w 相乘后,将结果与向量 u 相乘得到一个数字的结果,这就是我的分数。
我现在所在的位置:我根据我的损失函数计算了两个参数的梯度。
我的问题:现在我不知道下一步该怎么做?
我的解决方案建议: 我可以用 w = w + learingrate * w_grad 更新参数吗(以及 u = u learning rate *u_grad) 并执行此程序,直到我的成本/损失值减少...
这有用吗?
这个对吗?
这是随机梯度下降的简单实现吗?
我正在 Java 编写代码,如果您有一个简单且良好的记录示例如何以简单的方式优化神经网络,您可以与我分享。
提前致谢!
我想 w_grad 是偏导数。如果说到您的解决方案建议,那就是所谓的迭代优化方式。只是一个澄清。而不是 w = w + learingrate * w_grad 你应该使用 w = w - learingrate * w_grad。它工作正常,但如果你有多核机器,它将只使用一个核心。如果您需要性能提升,您可以尝试批处理算法。 w = w - 学习率 * Summ(w_grad)。在 w_grad 计算
期间实现了性能提升
我要编码的内容: 我要构建一个简单的神经网络,其中包含一个权重矩阵 w 和一个用于得分的第二个参数 u。将我的输入向量与 w 相乘后,将结果与向量 u 相乘得到一个数字的结果,这就是我的分数。
我现在所在的位置:我根据我的损失函数计算了两个参数的梯度。
我的问题:现在我不知道下一步该怎么做?
我的解决方案建议: 我可以用 w = w + learingrate * w_grad 更新参数吗(以及 u = u learning rate *u_grad) 并执行此程序,直到我的成本/损失值减少... 这有用吗? 这个对吗? 这是随机梯度下降的简单实现吗?
我正在 Java 编写代码,如果您有一个简单且良好的记录示例如何以简单的方式优化神经网络,您可以与我分享。
提前致谢!
我想 w_grad 是偏导数。如果说到您的解决方案建议,那就是所谓的迭代优化方式。只是一个澄清。而不是 w = w + learingrate * w_grad 你应该使用 w = w - learingrate * w_grad。它工作正常,但如果你有多核机器,它将只使用一个核心。如果您需要性能提升,您可以尝试批处理算法。 w = w - 学习率 * Summ(w_grad)。在 w_grad 计算
期间实现了性能提升