小批量梯度下降算法步骤_梯度下降方法(三种不同地梯度下降方法简介)

梯度下降方法(三种不同地梯度下降方法简介)

标签:#优化##机器学习##梯度下降##深度学习#

时间:2018/10/17 14:20:47

作者:小木

梯度下降是一种迭代优化的方法,它的目标是求解一个函数的最小值。我们以一个简单的例子来说明。

![](http://www.datalearner.com/resources/blog_images/4454250a-98b8-4c35-a469-7b75bca8d099.png)

例如,如上图所示,这是一个二次函数的图像:

```math

y = 8(x-1.5)^2 + 1

```

其最低点是$(1.5,1)$。我们希望找到这个最低点。其实,对于这个简单的二次函数,我们只要求y对x的导数,并令其结果为0即可求出最低点。为了说明梯度下降的原理,我们不采用这种方式。

[TOC]

#### 一、梯度下降(Gradient Descent)的原理

梯度下降的原理就是初始随机选择一个函数上的点,然后沿着某个方向运行选择下一个函数上的点,使得下一个点的函数值比上一个点的函数值小,这样不停迭代直到找到最小值位置。那么,这里有可能有三个问题需要注意

- 首先,为什么不使用刚才说的求导方式找最小值?这是因为并不是所有的函数都容易求导,例如对于多元函数来说,就很难,但是梯度下降的原理则依然有效。

- 其次,什么样的函数可以使用梯度下降求解?需要这个函数是凸函数,这样我们才能找到全局最小值,否则就无法确保找到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小批量梯度下降(mini-batch gradient descent)是一种在机器学习中常用的优化算法,它是梯度下降算法的一种变体。与梯度下降算法一样,小批量梯度下降的目标是最小化损失函数,但它不像梯度下降算法那样需要使用全部的训练数据进行计算,而是每次使用一小部分数据进行计算。 具体来说,小批量梯度下降算法将训练数据分成若干个小批量,每次使用一个小批量数据来计算梯度,并更新模型参数。这样做的好处是可以减少计算量,加快模型的训练速度,同时也可以避免梯度下降算法的局部最优问题。 在Matlab中,可以使用以下代码实现小批量梯度下降算法: 1. 初始化模型参数和学习率 2. 对训练数据进行随机洗牌 3. 将训练数据分成若干个小批量 4. 对每个小批量数据进行如下操作: a. 计算该小批量数据的梯度 b. 根据学习率和梯度更新模型参数 5. 重复步骤3-4,直到达到预设的迭代次数或者达到一定的精度要求。 以下是Matlab代码示例: % 初始化模型参数和学习率 theta = zeros(n, 1); alpha = 0.01; % 对训练数据进行随机洗牌 perm = randperm(m); X = X(perm,:); y = y(perm,:); % 将训练数据分成若干个小批量 batch_size = 32; num_batches = floor(m / batch_size); % 开始迭代 for i = 1:num_iterations % 对每个小批量数据进行如下操作 for j = 1:num_batches % 取出一个小批量数据 batch_start = (j-1)*batch_size+1; batch_end = j*batch_size; X_batch = X(batch_start:batch_end,:); y_batch = y(batch_start:batch_end,:); % 计算该小批量数据的梯度 grad = compute_gradient(X_batch, y_batch, theta); % 根据学习率和梯度更新模型参数 theta = theta - alpha * grad; end % 计算训练误差 train_error = compute_error(X_train, y_train, theta); % 计算测试误差 test_error = compute_error(X_test, y_test, theta); % 输出当前误差 fprintf('Iteration %d: train_error = %f, test_error = %f\n', i, train_error, test_error); % 判断是否满足精度要求 if train_error < epsilon break; end end 其中,compute_gradient和compute_error函数分别用于计算梯度和误差。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值