梯度下降 from 吴恩达的机器学习

梯度下降:用来求函数最小值的算法,使用梯度下降算法来求出代价函数的最小值。

梯度下降思想是:开始时我们随机选择一个参数的组合 ,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

批量梯度下降(batch gradient descent)算法的公式为:

实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新 



描述:对赋值,使得 按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小 。


\

推导方法



批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有 个训练样本求和。


### 吴恩达机器学习课程作业题目目录 #### 单变量线性回归 该部分作为简单的热身,主要涉及单变量线性回归的内容。具体包括: - **用图显示数据**:绘制散点图来直观展示训练集中的样本分布情况[^3]。 - **梯度下降**:实现并应用批量梯度下降算法以最小化代价函数 \( J(\theta) \)[^3]。 - **调试程序**:通过可视化手段检查模型的学习过程是否正常工作。 - **可视化\( J(\theta) \)**:创建三维表面图和平面轮廓图帮助理解参数空间内的优化路径。 #### 多变量线性回归 此部分内容扩展到处理多个输入特征的情况,并介绍了两种求解方法——迭代法(即梯度下降)和解析法(即正规方程),其中提到后者适用于较小规模的数据集且无需执行归一化操作[^2]。 - **特征归一化**:当采用梯度下降时,对不同尺度的特性实施标准化预处理可以加速收敛速度。 - **梯度下降**:类似于单变量情形下所使用的策略,只不过现在要更新更多的权重参数。 - **正规方程**:提供了一种直接计算最优解的方法而不必经历多次迭代调整的过程。 此外,在实际编码过程中还会涉及到一些辅助性的任务,比如将各种数学表达式转换成高效的矩阵形式以便于计算机快速处理大量数值运算[^4]。 ```python import numpy as np from matplotlib import pyplot as plt def plot_data(X, y): """Plotting the data (X, y).""" fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(X, y, marker='x', c='r') plt.xlabel('Population of City in 10,000s') plt.ylabel('Profit in $10,000s') plt.show() def compute_cost(X, y, theta): m = len(y) predictions = X.dot(theta) square_err = (predictions - y) ** 2 return 1 / (2 * m) * np.sum(square_err) def gradient_descent(X, y, theta, alpha, num_iters): m = len(y) J_history = [] for i in range(num_iters): h = X @ theta loss = h - y[:,np.newaxis] grad = X.T @ loss / m theta -= alpha * grad cost = compute_cost(X, y, theta) J_history.append(cost) return theta, J_history ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值