【绝技揭秘】Andrew Ng 机器学习课程第十周:解锁梯度下降的神秘力量,带你飞速征服数据山峰!

简介: 【8月更文挑战第16天】Andrew Ng 的机器学习课程是学习该领域的经典资源。第十周聚焦于优化梯度下降算法以提升效率。课程涵盖不同类型的梯度下降(批量、随机及小批量)及其应用场景,介绍如何选择合适的批量大小和学习率调整策略。还介绍了动量法、RMSProp 和 Adam 优化器等高级技巧,这些方法能有效加速收敛并改善模型性能。通过实践案例展示如何使用 Python 和 NumPy 实现小批量梯度下降。

Andrew Ng 的机器学习课程是学习机器学习基础知识的经典资源之一。第十周的内容主要关注于如何优化梯度下降算法,使其更加高效地收敛。本周的学习重点在于理解不同类型的梯度下降算法及其应用场景,以及如何选择合适的参数来加速学习过程。

首先,回顾一下梯度下降的基本概念。梯度下降是一种迭代优化算法,用于最小化成本函数。在每一步迭代中,参数都会沿着负梯度的方向更新,直到达到局部最小值。梯度下降有三种主要类型:批量梯度下降、随机梯度下降和小批量梯度下降。每种类型都有其特点和适用场景。

批量梯度下降

批量梯度下降是最原始的形式,它使用整个训练集来计算梯度。这种方法的优点在于每次迭代都会朝着全局最小值方向移动,但是当数据集很大时,计算全部样本的梯度非常耗时。

随机梯度下降

随机梯度下降(SGD)在每次迭代时只使用一个训练样本来估计梯度。这种方法的主要优点是计算速度快,尤其当数据集非常大时。然而,由于每次迭代都只基于一个样本,梯度的估计往往不够准确,导致参数更新路径波动较大。

小批量梯度下降

小批量梯度下降(Mini-batch Gradient Descent)是介于批量梯度下降和随机梯度下降之间的一种折衷方案。它在每次迭代时使用一小批样本(例如 50 或 100 个样本)来计算梯度。这种方法兼顾了速度和稳定性,是实践中最常用的选择。

选择合适的批量大小

批量大小的选择对梯度下降算法的性能有很大影响。较小的批量大小可以加快学习过程,但也可能导致更多的迭代次数。较大的批量大小则可以减少迭代次数,但可能需要更多的时间来完成一次迭代。实践中,通常会选择介于 50 到 256 之间的批量大小。

学习率调整策略

学习率是梯度下降算法中一个重要的超参数。初始阶段,较高的学习率可以使算法更快地收敛;随着迭代次数增加,学习率应该逐渐减小,以便算法能够更精细地逼近最小值。常见的学习率调整策略包括固定衰减、指数衰减等。

动量法

动量法是一种改进梯度下降算法的方法,它通过引入一个动量项来加速收敛过程。动量项相当于梯度下降过程中的一种惯性,可以减少振荡,使算法更快地沿梯度方向移动。动量法的更新规则如下:

v = beta * v + alpha * gradient
theta = theta - v

其中,alpha 是学习率,beta 是动量系数(通常取值为 0.9),gradient 是梯度,v 是累积的梯度,theta 是待优化的参数。

RMSProp

RMSProp 是另一种优化算法,它可以自动调整每个参数的学习率,以解决学习率衰减的问题。RMSProp 的更新规则如下:

cache = gamma * cache + (1 - gamma) * gradient ** 2
theta = theta - (alpha / (np.sqrt(cache) + epsilon)) * gradient

其中,gamma 是衰减率(通常取值为 0.9),epsilon 是一个小常数(如 1e-8),用于防止除以零的情况。

Adam 优化器

Adam 优化器综合了动量法和 RMSProp 的优点,它同时考虑了梯度的一阶矩估计(动量)和二阶矩估计(RMSProp)。Adam 优化器在实践中表现出色,通常作为默认选择。

实践案例

下面是一个使用 Python 和 NumPy 实现的小批量梯度下降示例:

import numpy as np

def compute_cost(X, y, theta):
    m = len(y)
    predictions = X.dot(theta)
    cost = (1.0 / (2 * m)) * np.sum(np.square(predictions - y))
    return cost

def gradient_descent(X, y, theta, alpha, num_iters, batch_size):
    m = len(y)
    J_history = np.zeros(num_iters)

    for iter in range(num_iters):
        shuffled_indices = np.random.permutation(m)
        X_shuffled = X[shuffled_indices]
        y_shuffled = y[shuffled_indices]

        for start in range(0, m, batch_size):
            end = min(start + batch_size, m)
            X_batch = X_shuffled[start:end]
            y_batch = y_shuffled[start:end]

            gradients = (1.0 / batch_size) * X_batch.T.dot(X_batch.dot(theta) - y_batch)
            theta = theta - alpha * gradients

        J_history[iter] = compute_cost(X, y, theta)

    return theta, J_history

# 示例数据
X = np.array([[1, 2], [1, 3], [1, 4]])
y = np.array([3, 5, 7])
theta = np.zeros(2)
alpha = 0.01
num_iters = 1500
batch_size = 2

theta, J_history = gradient_descent(X, y, theta, alpha, num_iters, batch_size)

print("Final theta:", theta)

总之,优化梯度下降算法对于提高机器学习模型的训练效率至关重要。通过合理选择批量大小、学习率调整策略以及应用先进的优化技巧(如动量法、RMSProp 和 Adam 优化器),可以显著加速模型的训练过程,并提高模型的整体性能。

相关文章
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
梯度下降求极值,机器学习&深度学习
梯度下降求极值,机器学习&深度学习
46 0
|
6天前
|
机器学习/深度学习 算法 Python
“探秘机器学习的幕后英雄:梯度下降——如何在数据的海洋中寻找那枚失落的钥匙?”
【10月更文挑战第11天】梯度下降是机器学习和深度学习中的核心优化算法,用于最小化损失函数,找到最优参数。通过计算损失函数的梯度,算法沿着负梯度方向更新参数,逐步逼近最小值。常见的变种包括批量梯度下降、随机梯度下降和小批量梯度下降,各有优缺点。示例代码展示了如何用Python和NumPy实现简单的线性回归模型训练。掌握梯度下降有助于深入理解模型优化机制。
21 2
|
17天前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
17天前
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)
|
2月前
|
机器学习/深度学习 算法 Python
探索机器学习中的梯度下降优化算法
【8月更文挑战第1天】在机器学习的广阔天地里,梯度下降法如同一位勇敢的探险家,指引我们穿越复杂的数学丛林,寻找模型参数的最优解。本文将深入探讨梯度下降法的核心原理,并通过Python代码示例,展示其在解决实际问题中的应用。
70 3
|
4月前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
53 3
|
5月前
|
机器学习/深度学习 监控 算法
LabVIEW使用机器学习分类模型探索基于技能课程的学习
LabVIEW使用机器学习分类模型探索基于技能课程的学习
47 1
|
5月前
|
机器学习/深度学习
Coursera 吴恩达Machine Learning(机器学习)课程 |第五周测验答案(仅供参考)
Coursera 吴恩达Machine Learning(机器学习)课程 |第五周测验答案(仅供参考)
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
8天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
22 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练