我正在努力更好地理解机器学习原则,但我仍然坚持一切联系在一起。
例如,我被赋予了将一组三种模式分类的任务。每个模式都有一个与之关联的目标值(例如,为简单起见,为1,0和-1)。我把算法通过LMS算法。
我计算了输出和错误:
a = w(n) * x(n)
e(n) = d(n) - w(n)x(n)
然后我重新计算了权重向量:
w(n+1) = w(n) + alpha*x(n)*e(n)
我为这三种模式做了这个。我重复了重量矢量的重新计算超过30次。
现在,我如何处理我创建的这个新的权重向量?我是否将此权重向量应用于一组新的“测试数据”?
现在,“收敛”权重向量是否会成为尝试对任何看不见的数据进行分类的权重向量?
使用此权重向量,如何将其应用于新数据集?梯度下降,均方误差和收敛在哪里适合?
答案 0 :(得分:1)
正如Matias所说,这不是一个神经网络--- LMS(我假设这里代表最小均方)与线性回归等线性方法更为相关。相比之下,神经网络模型类通常由模型组成,其中您有多个节点以电路形式排列,通过几层变换传递输入数据,因此最终结果通常是输入的非常复杂的非线性函数。
话虽如此:您的更新步骤需要在某个地方使用渐变才能解决问题。你写了
w(n+1) = w(n) + alpha*x(n)*e(n)
我将重写为
new_weight = curr_weight + learning_rate * gradient
,其中
gradient = X * transpose(e)
误差向量和输入数据向量的点积。
至于为什么我决定调用它" gradient",请参阅此更新规则的derivation ---更新规则来自均方根给出的成本函数的梯度下降错误。在"足够"迭代,你拥有的权重将是权重,最小化均方误差,因此名称。
现在,我如何处理我创建的这个新的权重向量?我是否将此权重向量应用于一组新的测试数据"? "融合了#34;权重向量现在成为尝试对任何看不见的数据进行分类的权重向量?
是的,确切地说!让我们调用最后一组权重final_weights
,并假设它有k
个条目,其中k
必须是每个数据点的维度(因此您的输入数据可能是{ {1}}矩阵,其中每一行代表一个n-by-k
- 维数据点,以便矩阵维度可用。)
然后,您可以使用
生成对看不见的数据点k
的预测
X ~ 1-by-k
和 prediction = final_weights * X
将是一个浮点值。 (你说你想要0,+ 1,-1作为你的目标值,但是你需要不同的策略,这取决于它们是无序标签还是有序值;即如果它们代表温度,你可能会很幸运地采取地板和天花板prediction
,但如果它们代表无序类别,则可能需要训练三个单独的模型,每个模型都表示属于特定类别的可能性。如果这看起来不清楚则发表评论并且我将添加编辑。)
如果你真的想,你可以在上面使用任意一组权重;只有这样你就会产生可怕的预测,其权重向量完全由零组成,或者完全由随机数组成。训练过程(即所有那些迭代更新)是为了确保你有一个中等体面的权重向量,即根据过去的训练数据生成相当好的预测的向量。
使用此权重向量,如何将其应用于新数据集?
使用上面的预测规则一次将它应用于新的,看不见的数据一个数据点。
梯度下降,均方误差和收敛在哪里适合这个?
梯度下降由上述更新规则实现。考虑成本函数如何
prediction
是您使用的权重的函数;你想最小化成本,所以你使用梯度下降来找到那样做的权重。我们说权重"收敛"因为即使您继续迭代,当您处于最佳权重集时,它们也会停止更新。原因是错误将减少到零,当发生这种情况时,您的更新规则将是
Cost(weights) := mean-square-error(weights)
希望有意义!