math - 需要梯度下降数学实现解释。

标签 math machine-learning linear-algebra linear-regression logistic-regression

我知道解决方案,但我不明白以下方程如何转换为代码。

Gradient Descent

  • 为什么总和不见了?
  • 为什么我们要转置 ((sigmoid(X * theta)-y) 表达式?

解决方案

grad  = (1/m) * ((sigmoid(X * theta)-y)' * X);

最佳答案

原始线 J(theta) 表示逻辑回归的成本函数。

您显示的代码,grad = ...,是 J(theta) 相对于参数的梯度;也就是说,grad 是 d/dtheta J(theta) 的实现。导数很重要,因为它在梯度下降中用于将参数移向最佳值(以最小化成本 J(theta))。

下面是梯度公式,以红色框出,取自第一个 link以下。请注意,J(theta) 与上面的公式相同,h(x) 表示 sigmoid 函数。

所有训练样本的总梯度需要对 m 求和。在上面的 grad 代码中,由于省略了求和,您正在计算一个训练示例的梯度;因此,您的代码可能正在计算 stochastic gradient descent 的梯度,不是完全梯度下降。

enter image description here

有关详细信息,您可以在 google 上搜索“逻辑回归成本函数导数”,该链接会指向以下链接:

  1. 这个尤其拥有您需要的一切:http://feature-space.com/2011/10/28/logistic-cost-function-derivative/

  2. 这些显然是 Andrew Ng 的机器学习和梯度下降逻辑回归类(class)的一些讲义:http://www.holehouse.org/mlclass/06_Logistic_Regression.html

  3. 如何逐步计算导数的说明:https://math.stackexchange.com/questions/477207/derivative-of-cost-function-for-logistic-regression

关于math - 需要梯度下降数学实现解释。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40554016/

相关文章:

python - Open AI Gym Cartpole 的策略梯度方法

c++ - Eigen 库,雅可比 SVD

matrix - D 编程语言的线性代数库

sql - Average 函数在关系数据库中如何工作?

java - 非黑色背景的吴氏抗锯齿线算法

javascript - 我在处理带有逗号小数分隔符的数字时遇到问题

python - NumPy 中的高效 3x3 和 2x2 行列式

java - 如何理解导致ArrayIndexOutOfBoundsException异常的mod计算的数学公式?

machine-learning - 为什么rnn的平均权重不断攀升?

machine-learning - "high-capacity cnn"或 "high-capacity architecture"的定义是什么?