3-3 超参数

3-3 超参数

什么是超参数
超参数也是一种参数,它具有参数的特性,比如未知,也就是它不是一个已知常量。是一种手工可配置的设置,需要为它根据已有或现有的经验,指定“正确”的值,也就是人为为它设定一个值,它不是通过系统学习得到的。
超参=在开始机器学习之前,就人为设置好的参数。
模型参数=通过训练得到的参数数据。
通常情况下,需要对超参数进行优化,给学习机选择-组最优超参数,以提高学习的性能和效果
超参数有哪些
在这里插入图片描述

什么是学习率?

在机器学习中,特别是训练神经网络时,学习率是一个非常关键的超参数。它决定了模型在每一步更新参数时,更新的幅度有多大。可以把它理解为**“步伐大小”**。

学习率的比喻

想象一下你在一个山谷中找寻最低点(这是我们的目标,类似于我们想要找到的最佳模型参数)。学习率就像是你每次走一步时的步幅大小。

  • 大步伐(高学习率):你可以很快地接近山谷底部,但如果步子太大,你可能会错过最低点,甚至来回跳跃,无法稳定下来。
  • 小步伐(低学习率):你会非常谨慎地一步一步走,虽然不会跳过最低点,但前进的速度会很慢,有时可能需要很长时间才能到达目标。

为什么学习率很重要?

  1. 收敛速度

    • 学习率决定了模型训练的收敛速度。合适的学习率可以帮助模型更快地找到最佳解。
  2. 稳定性

    • 如果学习率太高,模型可能会在训练过程中震荡甚至发散,无法稳定在最优点。
    • 如果学习率太低,模型的训练时间会非常长,且可能会陷入局部最优解而不是全局最优解。

调整学习率

在实际训练中,找到一个合适的学习率通常需要一些尝试。以下是常见的策略:

  1. 逐步减少学习率

    • 开始时使用较大的学习率,以便快速接近最优解,然后逐步减小学习率,以更精细地调整参数。这种方法通常用于“学习率调度”或“学习率衰减”。
  2. 使用自适应学习率方法

    • 方法如 Adam、RMSprop 等,可以动态调整学习率,使其在训练过程中自动适应。

我们来写一段代码理解以下学习率

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.datasets import mnist
from tensorflow.keras.optimizers import SGD, Adam
from tensorflow.keras.callbacks import LearningRateScheduler
import matplotlib.pyplot as plt

# 1. 加载和预处理数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0  # 归一化数据

# 2. 构建简单的神经网络模型
def create_model():
    model = Sequential([
        Flatten(input_shape=(28, 28)),
        Dense(128, activation='relu'),
        Dense(10, activation='softmax')
    ])
    return model

# 3. 定义不同的学习率策略

# (a) 固定学习率
fixed_lr = 0.01
model_fixed_lr = create_model()
model_fixed_lr.compile(optimizer=SGD(learning_rate=fixed_lr),
                       loss='sparse_categorical_crossentropy',
                       metrics=['accuracy'])

# (b) 学习率衰减
initial_lr = 0.1
def decay_schedule(epoch):
    return initial_lr * np.exp(-0.1 * epoch)

model_decay = create_model()
model_decay.compile(optimizer=SGD(learning_rate=initial_lr),
                    loss='sparse_categorical_crossentropy',
                    metrics=['accuracy'])
lr_scheduler = LearningRateScheduler(decay_schedule)

# (c) 自适应学习率(使用 Adam)
model_adaptive = create_model()
model_adaptive.compile(optimizer=Adam(),
                       loss='sparse_categorical_crossentropy',
                       metrics=['accuracy'])

# 4. 训练模型并记录历史

# (a) 固定学习率
history_fixed_lr = model_fixed_lr.fit(x_train, y_train, epochs=10,
                                      validation_data=(x_test, y_test),
                                      verbose=0)

# (b) 学习率衰减
history_decay = model_decay.fit(x_train, y_train, epochs=10,
                                validation_data=(x_test, y_test),
                                callbacks=[lr_scheduler],
                                verbose=0)

# (c) 自适应学习率
history_adaptive = model_adaptive.fit(x_train, y_train, epochs=10,
                                      validation_data=(x_test, y_test),
                                      verbose=0)

# 5. 可视化训练结果

plt.figure(figsize=(12, 6))

# 绘制损失函数
plt.subplot(1, 2, 1)
plt.plot(history_fixed_lr.history['val_loss'], label='Fixed LR')
plt.plot(history_decay.history['val_loss'], label='Decay LR')
plt.plot(history_adaptive.history['val_loss'], label='Adaptive LR')
plt.xlabel('Epoch')
plt.ylabel('Validation Loss')
plt.title('Validation Loss vs. Epoch')
plt.legend()

# 绘制准确率
plt.subplot(1, 2, 2)
plt.plot(history_fixed_lr.history['val_accuracy'], label='Fixed LR')
plt.plot(history_decay.history['val_accuracy'], label='Decay LR')
plt.plot(history_adaptive.history['val_accuracy'], label='Adaptive LR')
plt.xlabel('Epoch')
plt.ylabel('Validation Accuracy')
plt.title('Validation Accuracy vs. Epoch')
plt.legend()

plt.tight_layout()
plt.show()

训练结果如下
在这里插入图片描述
从图表中,我们可以看到三种不同的学习率策略在模型训练和验证中的表现:

左图:验证损失 vs. 迭代次数 (Validation Loss vs. Epoch)

固定学习率(Fixed LR)
  • 表现趋势: 固定学习率的验证损失逐渐下降,虽然下降较慢,但非常稳定。到第 10 个 epoch 时,验证损失仍然在持续降低。
  • 特点: 固定学习率的优势在于其稳定性和可预测性。在没有明显过拟合或欠拟合的情况下,它可以提供持续的优化。然而,它的速度较慢,在某些情况下可能无法充分利用训练数据。
学习率衰减(Decay LR)
  • 表现趋势: 学习率衰减策略的验证损失快速下降,并在前几个 epoch 内达到相对稳定的较低水平。在最初的几个 epoch 中,损失下降得比固定学习率更快。
  • 特点: 该策略结合了高初始学习率的快速收敛和低学习率的精细调优优势。通过逐渐降低学习率,模型可以在早期快速学习到大部分重要的特征,而在后期更加专注于微调和优化。这使得它在综合性能上往往优于固定学习率。
自适应学习率(Adaptive LR)
  • 表现趋势: 使用自适应学习率的 Adam 优化器在最初几个 epoch 中迅速降低了验证损失,并且在整个训练过程中保持在一个非常低的水平。
  • 特点: Adam 通过自适应调整每个参数的学习率,使其能够在不同梯度尺度下进行优化。这通常使得 Adam 在处理稀疏梯度或高度变化的梯度时非常有效,因此验证损失曲线在初期迅速下降,并能较长时间保持在低位。

右图:验证准确率 vs. 迭代次数 (Validation Accuracy vs. Epoch)

固定学习率(Fixed LR)
  • 表现趋势: 固定学习率的验证准确率逐步上升,尽管上升较慢,但较为稳定。到第 10 个 epoch 时,准确率仍在上升,但没有达到特别高的水平。
  • 特点: 固定学习率在整个训练过程中提供了稳定但渐进的学习步伐。这种稳定性可以在某些情况下防止模型发生大的波动,但也可能导致在相同的 epoch 内,模型的提升速度较慢。
学习率衰减(Decay LR)
  • 表现趋势: 学习率衰减策略在前几个 epoch 内迅速提高了验证准确率,并在随后的 epoch 中逐渐达到并保持在一个相对较高的水平。
  • 特点: 高初始学习率帮助模型快速捕捉全局模式,而衰减后的低学习率帮助模型细化学习。该策略通常在较短的时间内提供高性能,是处理中短期训练的有效方法。
自适应学习率(Adaptive LR)
  • 表现趋势: 自适应学习率的验证准确率在前几个 epoch 内迅速上升,并在后续 epoch 中迅速达到最高水平。与学习率衰减相比,Adam 优化器在早期和中期表现更优。
  • 特点: 自适应学习率的优势在于其高效和智能的参数调整能力。这使得模型能够在短时间内获得非常高的准确率,特别适合处理具有复杂梯度分布的问题。

综合分析

  1. 训练效率: 从这两幅图中可以看出,自适应学习率(Adam)在前几个 epoch 内的表现最为优越,快速降低了损失并提高了准确率。这表明 Adam 优化器非常适合快速训练和复杂模型的优化。

  2. 长期性能: 学习率衰减策略在验证损失和准确率上的表现较为平衡,在较短的时间内也能提供良好的性能。它通过逐步减小学习率,平衡了快速收敛和精细调优的需求,是处理中长期训练的有效策略。

  3. 稳定性: 固定学习率尽管收敛较慢,但表现非常稳定。它适用于稳定性要求较高的任务,尤其是当模型需要在整个训练过程中保持一致的优化步伐时。

总结

  • Adam 优化器:在短期内提供了最快的收敛速度和最高的验证准确率,适合快速迭代和处理复杂梯度的问题。
  • 学习率衰减:在训练的早期具有快速收敛的优势,同时在中期和后期也能保持稳定的性能提升,是一种非常有效的策略。
  • 固定学习率:提供了稳定的优化过程,尽管在训练速度和性能上可能稍逊于前两者,但它的可预测性和简单性使其在某些情况下仍然具有吸引力。

根据这些结论,选择适合具体任务和数据的学习率策略,可以显著提高模型训练的效率和性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777914.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP PS学习笔记01 - PS概述,创建Project和WBS

本章开始学习PS(Project System)。 1,PS的概述 PS(Project System)是SAP企业资源规划系统中的一个关键模块,主要用于项目管理。 它提供了一个全面的框架来规划、控制和执行项目,涵盖了从项目启…

AttackGen:一款基于LLM的网络安全事件响应测试工具

关于AttackGen AttackGen是一款功能强大的网络安全事件响应测试工具,该工具利用了大语言模型和MITRE ATT&CK框架的强大功能,并且能够根据研究人员选择的威胁行为组织以及自己组织的详细信息生成定制化的事件响应场景。 功能介绍 1、根据所选的威胁行…

03:Spring MVC

文章目录 一:Spring MVC简介1:说说自己对于Spring MVC的了解?1.1:流程说明: 一:Spring MVC简介 Spring MVC就是一个MVC框架,Spring MVC annotation式的开发比Struts2方便,可以直接代…

【TB作品】脉搏测量,ATMEGA8单片机,Proteus仿真,ATmega8控制脉搏测量与显示系统

硬件组成: LCD1602脉搏测量电路(带灯)蜂鸣器报警按键设置AT24C02 功能: (1)LCD1602主页显示脉搏、报警上限、报警下限; (2)五个按键:按键1:切换设…

数据库测试|Elasticsearch和ClickHouse的对决

前言 数据库作为产品架构的重要组成部分,一直是技术人员做产品选型的考虑因素之一。 ClkLog会经常遇到小伙伴问支持兼容哪几种数据库?为什么是选择ClickHouse而不是这个或那个。 由于目前市场上主流的数据库有许多,这次我们选择其中一个比较典…

(软件06)串口屏的应用,让你的产品显得高级一点(下篇)

本文目录 学习前言 单片机代码实现 学习前言 目前市面上我记得好像有IIC的屏幕、SPI的屏幕、并口屏幕、还有就是今天我们介绍的这个串口屏了,串口屏,就是用串口进行通讯的,上篇我们已经介绍了屏幕供应商提供的上位机软件进行配置好了&#…

2000-2019年各省市资源错配指数

资源错配指数(Misallocation Index)是衡量一个地区或国家资源配置效率的重要经济指标。以下是对资源错配指数相关数据的介绍: 数据简介 定义:资源错配指数是一个反映生产要素配置合理性的指标,高指数意味着资源配置效…

Science期刊政策反转:允许生成式AI用于论文写作,意味着什么?

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 关于各大top期刊和出版社对于生成式AI用于论文写作中的规定,娜姐之前写过一篇文章: 如何合理使用AI写论文?来看Top 100学术期刊和出版社的…

Go 中的类型推断

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

昇思25天学习打卡营第08天 | 模型训练

昇思25天学习打卡营第08天 | 模型训练 文章目录 昇思25天学习打卡营第08天 | 模型训练超参数损失函数优化器优化过程 训练与评估总结打卡 模型训练一般遵循四个步骤: 构建数据集定义神经网络模型定义超参数、损失函数和优化器输入数据集进行训练和评估 构建数据集和…

东芝TB6560AHQ/AFG步进电机驱动IC:解锁卓越的电机控制性能

作为一名工程师,一直在寻找可靠且高效的组件来应用于你的项目中。东芝的TB6560AHQ/AFG步进电机驱动IC能够提供精准且多功能的电机控制,完全符合现代应用的高要求,保证高性能和易用性。在这篇文章中,我们将探讨TB6560AHQ/AFG的主要…

CentOS 7.9 停止维护(2024-6-30)后可用在线yum源 —— 筑梦之路

众所周知,centos 7 在2024年6月30日,生命周期结束,官方不再进行支持维护,而很多环境一时之间无法完全更新替换操作系统,因此对于yum源还是需要的,特别是对于互联网环境来说,在线yum源使用方便很…

直播预告 | VMware大规模迁移实战,HyperMotion助力业务高效迁移

2006年核高基专项启动,2022年国家79号文件要求2027年央国企100%完成信创改造……国家一系列信创改造政策的推动,让服务器虚拟化软件巨头VMware在中国的市场份额迅速缩水。 加之VMware永久授权的取消和部分软件组件销售策略的变更,导致VMware…

移动端UI风格营造舒适氛围

移动端UI风格营造舒适氛围

XXL-JOB中断信号感知

目录 背景 思路 实现逻辑 总结 背景 在使用xxl-job框架时,由于系统是由线程池去做异步逻辑,然后主线程等待,在控制台手动停止时,会出现异步线程不感知信号中断的场景,如下场景 而此时如果人工在控制台停止xxl-job执…

insert阻塞了insert?

一、发现问题 在arms监控页面看到某条insert语句的执行时长达到了431毫秒。 数据库中存在,insert语句受到了行锁阻塞,而阻塞的源头也在执行同样的insert语句,同样都是对表USERSYS_TASK_USER_LOG_TEMP01的插入操作,很是费解。 二…

idea创建的maven项目pom文件引入的坐标报红原因

如下所示 我们在引入某些依赖坐标的时候,即使点击了右上角的mavne刷新之后还是报红。 其实这是正常现象,实际上是我们的本地仓库当中没有这些依赖坐标,而idea就会通过报红来标记这些依赖来说明在我们的本地仓库是不存在的。 那有的同学就会…

ODOO17的邮件机制-系统自动推送修改密码的邮件

用户收到被要求重置密码的邮件: 我们来分析一下ODOO此邮件的工作机制: 1、邮件模板定义 2、渲染模板的函数: 3、调用此函数的机制: 当用户移除或增加了信任的设备(如电脑、手机端等),系统会自…

农业气象站:现代农业的守护者与引领者

随着科技的飞速发展,农业领域也在经历着前所未有的变革。在这一变革中,农业气象站以其独特的功能和作用,逐渐成为了现代农业的守护者与引领者。 农业气象站,顾名思义,是专门用于观测和记录农田气象要素的设施。这些气象…

轻松设置:服务器域名配置全攻略

目录 前置条件 在阅读本篇内容之前,请先确保以下物料已准备好: 一台公网服务器,服务正常运行申请完成的域名,在对应域名服务商后台正常DNS解析域名备案完成可选条件:有https访问请求时,需要申请SSL证书 …