【问题标题】:Coursera Machine Learning: Gradient Descent vectorizationCoursera 机器学习:梯度下降矢量化
【发布时间】:2018-03-26 07:56:04
【问题描述】:

我在了解如何在 Coursera 上提供的机器学习课程中对函数进行矢量化处理时遇到问题。

在课程中,Andrew Ng 解释说,可以将假设向量化为 theta 乘以 x 的转置:

H(x) = theta' * X

我的第一个问题是当我在练习中实现它时。为什么纸上的向量化是 theta 的转置乘以 x 而 Octave 是 X 乘以 theta?

theta'*X % leads to errors while multiplying

我的第二个问题跟第一个一样。

当我想向量化这个梯度下降函数的总和时:

sum((h(x)-y)*x))

我真的不明白你如何在矢量化后得到这个:

X'*(h(x)-y)

谁能解释一下?

【问题讨论】:

标签: math machine-learning vectorization octave gradient-descent


【解决方案1】:

这是一个品味问题。通常的约定是矩阵向量乘法,即你喜欢的。您可以通过转置所有内容从一种模式切换到另一种模式。也就是说,如果您的乘法 X*theta 有效,则转置公式为 theta.' * X.'

X*thetaX 的每一行都包含一个采样点的数据(内核函数值)。

theta.'*X 约定中,X 的列包含样本点数据。

所以它总是取决于上下文,什么被定义为行向量和什么被定义为列向量,以及它们如何在更大的对象或操作中组合在一起。

【讨论】:

    【解决方案2】:

    在斯坦福大学 Andrew Ng 的 Coursera ML MOOC 中解释理论时,您可能也在参考。他使用 thetha 作为 n X 1 的向量,但在课程工作中,我们有一个 1 X n 向量。所以实际中的theta是theta(theta')的转置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2023-02-25
      • 2019-08-01
      • 2015-11-23
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      相关资源
      最近更新 更多