【机器学习合集】深度学习模型优化方法最优化问题合集 ->(个人学习记录笔记)

news/2024/12/23 14:57:20/

文章目录

  • 最优化
    • 1. 最优化目标
      • 1.1 凸函数&凹函数
      • 1.2 鞍点
      • 1.3 学习率
    • 2. 常见的深度学习模型优化方法
      • 2.1 随机梯度下降法
      • 2.2 动量法(Momentum)
      • 2.3 Nesterov accelerated gradient法(NAG)
      • 2.4 Adagrad法
      • 2.5 Adadelta与Rmsprop法
      • 2.6 Adam法
      • 2.7 Adam算法的改进
    • 3. SGD的改进算法一定会更好吗?
    • 4. 二阶优化算法为何不用?

最优化

  • 最优化是应用数学的一个分支,主要研究在特定情况下最大化或最小化某一特定函数或变量。

1. 最优化目标

1.1 凸函数&凹函数

在这里插入图片描述

1.2 鞍点

在这里插入图片描述

1.3 学习率

在这里插入图片描述

2. 常见的深度学习模型优化方法

深度学习模型的优化是训练深度神经网络的关键步骤,有多种方法可用于此目的。以下是一些常见的深度学习模型优化方法:

  1. 随机梯度下降(SGD)

    • 操作:在每个迭代中,使用一小批训练样本来估计损失函数的梯度,并更新模型参数。
    • 特点:SGD是深度学习中最常见的优化方法,具有较低的计算复杂性。
  2. 小批量梯度下降(Mini-batch GD)

    • 操作:与SGD类似,但在每个迭代中使用多个训练样本来估计梯度。
    • 特点:Mini-batch GD通常比SGD更稳定,并可通过调整批大小来平衡计算效率和收敛速度。
  3. 动量(Momentum)

    • 操作:引入动量项,加速收敛,并减小梯度下降的震荡。
    • 特点:动量有助于克服局部极小值,提高训练速度。
  4. AdaGrad

    • 操作:自适应地调整每个参数的学习率,使稀疏特征的学习率更大。
    • 特点:AdaGrad适用于稀疏数据,但可能会随时间降低学习率。
  5. RMSprop

    • 操作:改进AdaGrad,引入指数移动平均来平滑学习率。
    • 特点:RMSprop适用于非稀疏数据,提高了学习率的稳定性。
  6. Adam

    • 操作:结合动量和RMSprop,具有自适应学习率和动量调整。
    • 特点:Adam通常表现出色,被广泛用于深度学习。
  7. Adadelta

    • 操作:类似于RMSprop,但不需要手动设置学习率。
    • 特点:Adadelta自适应地调整学习率,无需调整超参数。
  8. Nadam

    • 操作:结合Nesterov动量和Adam的优点,同时考虑梯度和自适应学习率。
    • 特点:Nadam通常具有较好的收敛性能。
  9. L-BFGS(Limited-memory Broyden-Fletcher-Goldfarb-Shanno)

    • 操作:使用L-BFGS等优化器来在每个迭代中直接优化损失函数。
    • 特点:L-BFGS通常用于较小的数据集和较小的模型,具有较高的计算复杂性。
  • 这些优化方法具有不同的性能和特点,适用于不同类型的深度学习任务。在实际应用中,通常需要根据任务、数据和模型来选择合适的优化方法,并进行超参数调整以获得最佳性能。

这些深度学习模型优化方法在不同方面存在区别和差异,包括学习率调整、收敛性、计算效率和适用性等。以下是它们的一些主要区别和差异:

  1. 学习率调整

    • SGD:通常需要手动设置全局学习率,对学习率敏感。
    • Momentum:引入动量项,加速收敛,但需要额外的动量超参数。
    • AdaGrad:自适应地调整每个参数的学习率,但可能会导致学习率过小。
    • RMSprop:改进AdaGrad,使用指数移动平均,减小学习率的不稳定性。
    • Adam:结合动量和RMSprop,具有自适应学习率和动量,通常无需手动调整学习率。
    • Adadelta:类似RMSprop,但无需手动设置学习率。
    • Nadam:结合Nesterov动量和Adam,同时考虑梯度和自适应学习率。
  2. 收敛性

    • 不同方法在收敛速度和稳定性上有所差异。Adam通常在训练速度和稳定性方面表现良好,而L-BFGS可能需要更多迭代以收敛。
  3. 计算效率

    • SGD和Mini-batch GD通常具有较低的计算复杂性,适用于大规模数据和模型。
    • Adam等方法通常需要更多计算资源,但在训练速度上更具优势。
  4. 适用性

    • 不同方法适用于不同类型的问题。例如,Adadelta和Adagrad适用于稀疏数据,而Adam和Nadam通常适用于一般的深度学习任务。
  5. 超参数数量

    • 不同方法可能需要设置的超参数数量不同。SGD通常只需要设置全局学习率,而Adam和Nadam需要设置更多超参数。
  6. 收敛性能

    • 在不同问题上,不同方法可能具有不同的性能表现。通常需要进行实验来确定哪种方法对特定问题最有效。
  • 总之,每种优化方法都有其优势和劣势,因此选择最佳的方法通常取决于具体的任务和问题。在深度学习中,通常需要进行超参数调整和实验来找到最适合特定任务的优化方法。

在这里插入图片描述

2.1 随机梯度下降法

在这里插入图片描述

2.2 动量法(Momentum)

在这里插入图片描述

2.3 Nesterov accelerated gradient法(NAG)

在这里插入图片描述

2.4 Adagrad法

在这里插入图片描述

2.5 Adadelta与Rmsprop法

在这里插入图片描述

2.6 Adam法

在这里插入图片描述

2.7 Adam算法的改进

在这里插入图片描述

3. SGD的改进算法一定会更好吗?

在这里插入图片描述

4. 二阶优化算法为何不用?

在这里插入图片描述

注意:部分内容来自 阿里云天池


http://www.ppmy.cn/news/1175027.html

相关文章

Python爬虫网易云音乐,Tkinter制作音乐播放器

目录 一、效果展示 二、环境 三、实现过程 四、源码 一、效果展示 页面的美化以及功能还有待升级~ 先来说一下已有功能吧: 可以在搜索框中通过歌曲或歌手名称进行搜索,效果和在网易云官网搜索一样。 点击开始下载,就会将搜索结果的第一…

【Java】泛型通配符

类型通配符 类型通配符<?> 一般用于接受使用&#xff0c;不能够做添加List<?>&#xff1a;表示元素类型未知的list&#xff0c;它的元素可以匹配任何类型带通配符的List仅表示它是各种泛型List的父类&#xff0c;并不能把元素添加到其中类型通配符上限&#xff1…

Java开发面试--RabbitMQ专区

1、 RabbitMQ 是什么&#xff0c;它的优势和使用场景是什么&#xff1f; 答&#xff1a; RabbitMQ是一种开源的消息代理和队列服务器&#xff0c;它允许应用程序顺序地读写、发送和接收消息。基于Erlang语言开发&#xff0c;支持多种客户端&#xff0c;如Python、Ruby、.NET、…

数据分享 I 地级市人口和土地使用面积基本情况

数据地址&#xff1a; 地级市人口和土地使用面积基本情况https://www.xcitybox.com/datamarketview/#/Productpage?id394 基本信息. 数据名称: 地级市人口和土地使用面积基本情况 数据格式: ShpExcel 数据时间: 2021年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据…

数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)

螺旋矩阵 https://leetcode.cn/problems/spiral-matrix/ 描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示…

C++11的std::function和std::bind用法

代码示例 /* demo: std::function<>和std::bind()配合 实现回调函数 */#include <iostream> #include <string> using namespace std; #include <functional> #include <windows.h>typedef std::function<void(const string&)> Reply…

Tauri2 mobile development traps

时间点&#xff1a;2023/10/24。最近在倒腾移动端开发&#xff0c;不想学原生和 flutter&#xff0c;试了试 react-native&#xff0c;开发体验没有想象中的舒服&#xff0c;干脆直接上 tauri 2 吧&#xff0c;半年前就听说 tauri 2 支持移动端&#xff0c;到现在应该可堪小用。…

c_指针

文章目录 *(p1)1表示第 1 行第 1 个元素的地址。如何理解呢&#xff1f;下标运算符的规则括号 int a; // 1.一个整数 int *a; // 2.一个指向整数的指针 int **a; // 3.一个指向指针的指针, 它所指向的指针又指向一个整数型数据 ;一个指向 …