首页 > 解决方案 > 向量化梯度下降函数

问题描述

我对线性代数相当陌生,目前正在学习 Andrew Ng 的机器学习课程。我很难理解以下两个功能是如何相同的。我正在为线性/逻辑回归向量化梯度下降。

theta = theta - (alpha/m)*(X')*(X*theta - y)

theta = theta - (alpha/m)*sum((X*theta -y)*x(i))

我的想法是这x(i)是一个向量,为了进行向量乘法,我需要转置它,但是在尝试模拟一个示例时,我没有看到这是多么必要。任何帮助或解释将不胜感激。

标签: machine-learningvectorizationoctavelinear-regressiongradient-descent

解决方案


假设您指的是底部的方程式,第 4 讲,幻灯片 8,那么您的总和是错误的。术语 x (i)意味着在总和内部,而不是在外部。在“向量化”的情况下,您的输入 X 包含所有单独的观察 x (i)作为(可能)列向量(请检查您的代码以确保)。因此正确的等价下表达式应该是:

theta = theta - (alpha/m)*sum((X*theta -y) .* X)

这确实等效于顶部的其他向量化表达式,因为通常,对于任何两个(列)向量 ab,确实a.' * b等效于sum(a .* b)


推荐阅读