深度模型中的优化 - 优化策略和元算法篇

news2025/1/12 13:24:20

序言

在人工智能与机器学习的快速发展中,深度模型作为核心技术之一,其优化问题至关重要。深度模型通过构建多层神经网络来模拟人脑的学习与推理过程,处理复杂数据模式与任务。然而,这些强大能力的背后,离不开高效的优化策略与元算法的支撑。优化旨在通过调整模型参数,最小化预设的损失函数,从而提升模型性能,确保模型能够更准确地拟合数据并泛化至未见过的样本。

优化策略和元算法

  • 许多优化技术并非真正的算法,而是一般化的模板,可以特定产生算法,或是并入到很多不同的算法中。

batch normalization

坐标下降

Polyak平均

监督预训练

  • 有时,如果模型太复杂难以优化,或是如果任务非常困难,直接训练模型来解决特定任务可能太过挑战。有时训练一个较简单的模型来求解问题,然后使模型更复杂会更有效。训练模型来求解一个简化的问题,然后转移到最后的问题,有时也会更有效些。这些在直接训练目标模型求解目标问题之前,训练简单模型求解简化问题的方法统称为预训练( pretraining \text{pretraining} pretraining)。
  • 贪心算法( greedy algorithm \text{greedy algorithm} greedy algorithm)将问题分解成许多部分,然后独立地在每个部分求解最优值。令人遗憾的是,结合各个最佳的部分不能保证得到一个最佳的完整解。然而,贪心算法计算上比求解最优联合解的算法高效得多,并且贪心算法的解在不是最优的情况下,往往也是可以接受的。贪心算法也可以后跟一个微调( fine-tuning \text{fine-tuning} fine-tuning)阶段,联合优化算法搜索全问题的最优解。使用贪心解初始化联合优化算法,可以极大地加速算法,并提高寻找到的解的质量。
  • 预训练算法,特别是贪心预训练,在深度学习中是普遍存在的。在本篇章中,我们会具体描述这些将监督学习问题分解成其他简化的监督学习问题的预训练算法。这种方法被称为贪心监督预训练( greedy supervised pretraining \text{greedy supervised pretraining} greedy supervised pretraining)。
  • 在贪心监督预训练的原始版本( Bengio et al., 2007c \text{Bengio et al., 2007c} Bengio et al., 2007c) 中,每个阶段包括一个仅涉及最终神经网络的子集层的监督学习训练任务。
    • 贪心监督预训练的一个例子如图例1所示,其中每个附加的隐藏层作为浅监督 MLP \text{MLP} MLP的一部分预训练,以先前训练的隐藏层输出作为输入。
    • 并非一次预训练一层, Simonyan and Zisserman (2015) \text{Simonyan and Zisserman (2015)} Simonyan and Zisserman (2015)预训练深度卷积网络( 11 11 11层权重),然后使用该网络前四层和最后三层初始化更深的网络(多达 19 19 19层权重)。
    • 非常深的新网络的中间层是随机初始化的。然后联合训练新网络。
    • 还有一种选择,由 Yu et al. (2010) \text{Yu et al. (2010)} Yu et al. (2010)提出,将先前训练 MLP \text{MLP} MLP的输出,以及原始输入,作为每个附加阶段的输入。
  • 为什么贪心监督预训练会有帮助呢?最初由 Bengio et al. (2007d) \text{Bengio et al. (2007d)} Bengio et al. (2007d)提出的假说是,其有助于更好地指导深层结构的中间层的学习。一般情况下, 预训练在优化和泛化两边面都是有帮助的。
  • 另一个与监督预训练有关的方法扩展了迁移学习的想法: Yosinski et al. (2014) \text{Yosinski et al. (2014)} Yosinski et al. (2014)在一组任务上预训练了 8 8 8层权重的深度卷积网络( 1000 1000 1000 ImageNet \text{ImageNet} ImageNet对象类的子集),然而用该网络的前 k k k层初始化同样规模的网络。然后第二个网络的所有层(上层随机初始化)联合训练以执行不同的任务( 1000 1000 1000 ImageNet \text{ImageNet} ImageNet对象类的另一个子集),但训练样本少于第一个任务。神经网络中另一个和迁移学习相关的方法将在篇章:表示学习 - 迁移学习和领域自适应中讨论。
  • 另一条相关的工作线是 FitNets(Romero et al., 2015) \text{FitNets(Romero et al., 2015)} FitNets(Romero et al., 2015)方法。
    • 这种方法始于训练深度足够低和宽度足够大(每层单元数),容易训练的网络。
    • 然后,这个网络成为第二个网络(被指定为学生)的老师。
    • 学生网络更深更窄( 11 11 11 19 19 19层),且在正常情况下很难用 SGD \text{SGD} SGD训练。
    • 训练学生网络不仅需要预测原任务的输出,还需要预测教师网络中间层的值,这样使得训练学生网络变得更容易。
    • 这个额外的任务说明了隐藏层应如何使用,能够简化优化问题。
    • 附加参数被引入来从更深的学生网络中间层去回归 5 5 5层教师网络的中间层。
    • 然而,并非预测最终分类目标,该目标是预测教师网络的中间隐藏层。
    • 学生网络的低层因而具有两个目标:学生网络的输出完成其目标,和预测教师网络的中间层。
    • 尽管一个窄而深的网络似乎比宽而浅的网络更难训练,但窄而深网络的泛化能力可能更好,并且如果其足够窄,参数足够少,那么其计算代价更小。
    • 没有隐藏层的提示,学生网络在训练集和测试集上的实验表现都很差。
    • 因而中间层的提示是有助于训练很难训练的网络的方法之一,但是其他优化技术或是架构上的变化也可能解决这个问题。

设计有助于优化的模型

  • 改进优化的最好方法并不总是改进优化算法。相反,深度模型中优化的许多改进来自于设计易于优化的模型。
  • 原则上,我们可以使用呈锯齿非单调模式上上下下的激励函数,但是,这将使优化极为困难。在实践中,选择一族容易优化的模型比使用一个强大的优化算法更重要。神经网络学习在过去 30 30 30年的大多数进步主要来自于改变模型族,而非改变优化过程。 1980 1980 1980年代用于训练神经网络的带动量的随机梯度下降,仍然是现代神经网络应用中的前沿算法。
  • 具体来说,现代神经网络的设计选择体现在层之间的线性变换,几乎处处可导的激励函数,和大部分定义域都有明显的梯度。
    • 特别地,创新的模型,如 LSTM \text{LSTM} LSTM,整流线性单元和 maxout \text{maxout} maxout单元都比先前的模型(如基于 sigmoid \text{sigmoid} sigmoid单元的深度网络)使用更多的线性函数。这些模型都具有简化优化的性质。
    • 如果线性变换的 Jacobian \text{Jacobian} Jacobian具有相对合理的奇异值,那么梯度能够流经很多层。
    • 此外,线性函数在一个方向上一致增加,所以即使模型的输出远离正确值,也可以简单清晰地计算梯度,使其输出方向朝降低损失函数的方向移动。
    • 换言之,现代神经网络的设计方案旨在使其局部梯度信息合理地对应着移向一个遥远的解。
  • 其他的模型设计策略有助于使优化更简单。
    • 例如,层之间的线性路径或是跳过连接减少了从较低层参数到输出最短路径的长度,因而缓解了梯度消失的问题( Srivastava et al., 2015 \text{Srivastava et al., 2015} Srivastava et al., 2015)。
    • 一个和跳过连接相关的想法是添加和网络中间隐藏层相连的输出的额外副本,如 GoogLeNet \text{GoogLeNet} GoogLeNet( Szegedy et al., 2014a \text{Szegedy et al., 2014a} Szegedy et al., 2014a) 和深度监督网络 ( Lee et al., 2014 \text{Lee et al., 2014} Lee et al., 2014)。
    • 这些“辅助头”被训练来执行和网络顶层主要输出相同的任务,以确保底层网络能够接受较大的梯度。
    • 当训练完成时,辅助头可能被丢弃。这是之前篇章中介绍到的预训练策略的替代方法。以这种方式,我们可以在一个阶段联合训练所有层,而不改变架构,使得中间层(特别是低层)能够通过更短的路径得到一些有些如何更新的有用信息

连续方法和课程学习


  • 图例1:一种形式的贪心监督预训练的示意图( Bengio et al., 2007a \text{Bengio et al., 2007a} Bengio et al., 2007a)。
    • 一种形式的贪心监督预训练的示意图( Bengio et al., 2007a \text{Bengio et al., 2007a} Bengio et al., 2007a)。
      在这里插入图片描述

    • 说明:

      • (a) 我们从训练一个足够浅的架构开始。
      • (b) 同一个架构的另一描绘。
      • © 我们只保留原始网络的输入到隐藏层,并丢弃隐藏到输出层。我们将第一层隐藏层的输出作为输入发送到另一监督单隐层 MLP \text{MLP} MLP(使用与第一个网络相同的目标训练),从而可以添加第二层隐藏层。这可以根据需要重复多层。
      • (d) 所得架构的另一种描绘,可视为前馈网络。为了进一步改进优化,我们可以联合地微调所有层(仅在该过程的结束或者该过程的每个阶段)。

总结

综上所述,深度模型优化中的优化策略和元算法是提升模型性能、确保训练效率与稳定性的关键。通过综合运用数据预处理、模型优化、损失函数选择、正则化与集成方法以及先进的优化算法,我们可以更好地应对深度模型训练中的挑战,推动人工智能技术的持续发展与应用。

往期内容回顾

深度模型中的优化 - 二阶近似方法篇
深度模型中的优化 - 神经网络优化中的挑战篇

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python函数】调用系统命令进行文件夹的创建与删除

大家好,我是一名_全栈_测试开发工程师,已经开源一套【自动化测试框架】和【测试管理平台】,欢迎大家关注我,和我一起【分享测试知识,交流测试技术,趣聊行业热点】。 一、函数说明: 获取系统名称…

人工智能计算机视觉系列—构建你的图像标签管理系统:使用Flask和SQLite实现前后端应用

文章目录 1. 项目背景2. 方案概述3. 环境部署4. 具体实现5. 运行步骤6. 总结 1. 项目背景 在机器学习和计算机视觉的开发过程中,我们经常需要处理大量的图像及其标签信息。一个直观、便捷的图像和标签展示工具可以极大地提高开发效率。本文将介绍如何使用Flask框架…

最靠谱的搭建方式-ESP32入门搭建Arduino开发环境基于mac系统

ESP32入门搭建Arduino开发环境基于mac系统 1.概述 ESP32开发版作为物联网开发非常的方便,不过在入门时候搭建Arduino开发环境比较麻烦,因为Arduino在下载ESP32开发环境时总是失败,因此不得不采用手动安装环境方式。 这篇文章主要介绍mac系统…

Java 并发编程实战权威指南(电子版教程)

前言 Java并发编程主要涉及多线程编程,通过创建多个线程来并发执行任务,从而提高程序的执行效率和响应能力。Java提供了多种机制和技术来实现并发编程,包括进程和线程的管理、同步机制、高级并发工具以及最佳实践。 一、下载地址 下载地址…

hadoop学习笔记3-yarn

4.YARN yarn本质上是一个负责管理资源节点、调度资源节点的资源调度平台,负责为运算程序提供服务器计算资源,把任务调度到合适的节点上执行 4.1yarn架构 yarn 主要由ResourceManager、NodeManager、applicationmaster组件构成 yarn将资源管理和应用程…

PowerDNS架构解析与安装部署指南

1、背景介绍 目前公司使用PowerDNS进行DNS管理,但由于采用的是单节点架构,存在不可用的风险。为提升系统的稳定性和可靠性,我们计划对现有架构进行重构。通过引入高可用性设计,我们将优化系统架构,使其能够在故障情况…

设计模式 之 —— 抽象工厂模式

目录 什么是抽象工厂模式? 定义 特点 抽象工厂模式(java代码示例) 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…

非科班出身的你,如何转行web安全工程师?零基础入门到精通,收藏这一篇就够了

想从其他行业转行到算法工程师的人,无外乎以下几个原因: 现在工资太低 工作没有前景 对现在的工作没有热情 对web安全工程师很感兴趣 那么,转行web安全工程师,你需要掌握哪些技能呢? ​ 为了帮助大家更好的学习网络…

第100+18步 ChatGPT学习:R实现SVM分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言,不想学Python咯。 答曰:可!用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了,就帮各位搬运一下吧。 二、R代码实现SVM分类 (1&a…

Docker部署nacos...用户名密码错误

前提 镜像选择v2.3.0版本,因为最新的没拉下来用的别的地方save load的镜像。 官方示例 官方文档 数据库脚本,直接去数据库新建数据库nacos吧,执行脚本,执行完成后,发现只有建表语句,查询得知&#xff0c…

springboot+Activiti7整合实践 (九) 网关

系列文章目录 第一章 springbootActiviti7整合实践 (一) 第二章 springbootActiviti7整合实践 (二) 模型定义 第三章 springbootActiviti7整合实践 (三) 流程定义 第四章 springbootActiviti7整合实践 (四) 分配规则 第五章 springbootActiviti7整合实践 (五) 发布流程 第…

股票预测模型中注意力多层Attention RNN LSTM 的应用

全文链接:https://tecdat.cn/?p37152 原文出处:拓端数据部落公众号 Attention 机制是一种在神经网络处理序列数据时极为关键的技术,它赋予了模型“聚焦”能力,能够自动评估输入序列中各部分的重要性。通过为序列中的每个元素分…

一文读懂CST电磁仿软件的TLM算法原理和历史背景

这期我们免公式地介绍一下TLM原理。TLM(Transmission Line Method)是传输线矩阵算法,基于Huygens的波传播模型的三维全波电磁算法,注意是full wave哦! 什么是Huygens原理? 惠更斯原理能准确计算波的传播。…

三大旗舰实力,奇瑞风云T10全球上市,售价18.99万元起

旗舰之上,10力超群!7月25日,超长续航旗舰电混SUV——风云T10于弥勒全球上市。基于全球标准及全球验证体系打造的风云T10,凭借旗舰级的性能、安全、空间三大产品价值,树立了新能源时代的新标杆。新车共推出3款车型&…

目标检测 YOLOv5-7.0 详细调试自制数据集实战

目标检测 YOLOv5-7.0 详细调试&自制数据集实战 一、项目介绍及环境配置(一)项目解读(二)版本选择(三)环境配置 二、如何利用YOLOv5进行预测(detect.py)(一&#xff0…

DOS攻击实验

实验背景 Dos 攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段,残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃。 实验设备 一个网络 net:cloud0 一台模…

如何在go里使用jwt(包含示例)

什么是JWT JWT就是一种基于Token的轻量级认证模式,服务端认证通过后,会生成一个JSON对象,经过签名后得到一个Token(令牌)再发回给用户,用户后续请求只需要带上这个Token,服务端解密之后就能获取…

关于安装yarn后pnpm无法使用的问题

踩坑经过 因为公司项目变更需要,需要切换到yarn包管理工具,师父帮我调整了node版本,然后全局安装了yarn:npm install -g yarn 然后在项目里面用了yarn install然后用yarn dev语句跑起来了新项目。但是现在老项目有bug&#xff0c…

基于JSP、java、Tomcat三者的项目实战--校园交易网(2)登录,注册功能实现

技术支持:JAVA、JSP 服务器:TOMCAT 7.0.86 编程软件:IntelliJ IDEA 2021.1.3 x64 OK,那我们进入正题,随着前面一篇博客的尚未完结基于JSP、java、Tomcat三者的项目实战--校园交易网(2)登录功能…

2024杭电多校(4)1012. 寻找宝藏 【扫描线、树状数组二维偏序】

寻找宝藏 题意 思路 如果没有矩形陷阱区域的话&#xff0c;设 f i f_i fi​ 表示从 ( 0 , 0 ) (0, 0) (0,0) 到 ( i , p i ) (i, p_i) (i,pi​) 的最大收益&#xff0c;那么可以很容易通过扫描线 d p dp dp 求出&#xff1a; f i v i max ⁡ j < i ∧ p j < p …