机器学习三个基本要素:优化算法

在确定了训练集 D、假设空间 ℱ 以及学习准则后,如何找到最优的模型𝑓(x,θ∗) 就成了一个最优化(Optimization)问题。机器学习的训练过程其实就是最优化问题的求解过程。

参数与超参数 在机器学习中,优化又可以分为参数优化和超参数优化。模型𝑓(x;θ)中的θ称为模型的参数,可以通过优化算法进行学习。除了可学习的参数θ之外,还有一类参数是用来定义模型结构或优化策略的,这类参数叫作超参数(Hyper-Parameter)。
常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化项的系数、神经网络的层数、支持向量机中的核函数等。超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习.因此,超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的方法对一组超参数组合进行不断试错调整。

梯度下降法

为了充分利用凸优化中一些高效、成熟的优化方法,比如共轭梯度、拟牛顿法等,很多机器学习方法都倾向于选择合适的模型和损失函数,以构造一个凸函数作为优化目标.但也有很多模型(比如神经网络)的优化目标是非凸的,只能退而求其次找到局部最优解。
在机器学习中,最简单、常用的优化算法就是梯度下降法,即首先初始化参数θ0,然后按下面的迭代公式来计算训练集D 上风险函数的最小值:

其中θt为第t次迭代时的参数值,α为搜索步长.在机器学习中,α一般称为学习率(Learning Rate)。

提前停止

针对梯度下降的优化算法,除了加正则化项之外,还可以通过提前停止来防止过拟合。
在梯度下降训练的过程中,由于过拟合的原因,在训练样本上收敛的参数,并不一定在测试集上最优。因此,除了训练集和测试集之外,有时也会使用一个验证集(Validation Set)来进行模型选择,测试模型在验证集上是否最优。在每次迭代时,把新得到的模型 𝑓(x;θ) 在验证集上进行测试,并计算错误率。如果在验证集上的错误率不再下降,就停止迭代,这种策略叫提前停止。如果没有验证集,可以在训练集上划分出一个小比例的子集作为验证集。图中给出了提前停止的示例。

随机梯度下降法

在公式 (2.27)的梯度下降法中,目标函数是整个训练集上的风险函数,这种方式称为批量梯度下降法.批量梯度下降法在每次迭代时需要计算每个样本上损失函数的梯度并求和。当训练集中的样本数量N 很大时,空间复杂度比较高,每次迭代的计算开销也很大。
在机器学习中,我们假设每个样本都是独立同分布地从真实数据分布中随机抽取出来的,真正的优化目标是期望风险最小。批量梯度下降法相当于是从真实数据分布中采集 N个样本,并由它们计算出来的经验风险的梯度来近似期望风险的梯度。为了减少每次迭代的计算复杂度,我们也可以在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,即随机梯度下降法。当经过足够次数的迭代时,随机梯度下降也可以收敛到局部最优解。
随机梯度下降法的训练过程如算法2.1所示.

批量梯度下降和随机梯度下降之间的区别在于,每次迭代的优化目标是对所有样本的平均损失函数还是对单个样本的损失函数。由于随机梯度下降实现简单,收敛速度也非常快,因此使用非常广泛。机梯度下降相当于在批量梯度下降的梯度上引入了随机噪声。在非凸优化问题中,随机梯度下降更容易逃离局部最优点。

小批量梯度下降法

随机梯度下降法的一个缺点是无法充分利用计算机的并行计算能力。小批量梯度下降法是批量梯度下降和随机梯度下降的折中.每次迭代时,我们随机选取一小部分训练样本来计算梯度并更新参数,这样既可以兼顾随机梯度下降法的优点,也可以提高训练效率。
第t次迭代时,随机选取一个包含K个样本的子集St,计算这个子集上每个样本损失函数的梯度并进行平均,然后再进行参数更新:

在实际应用中,小批量随机梯度下降法有收敛快、计算开销小的优点,因此逐渐成为大规模的机器学习中的主要优化算法。

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

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

相关文章

mybatis查询结果resultMap映射vo源码分析

概述 mybatis是一个常用的持久层框架;通常搭配mysql使用; 在将查询结果映射成一个复杂vo的时候,通常会用到resultMap,在其中嵌套association和collection等操作;将一个复杂查询拆分成简单查询; 在vo中的变…

WSL 配置 Docker 内存和 CPU 资源限制

我用的电脑一共有40G内存,最近发现电脑重启后,VmmemWSL 进程很快就会占用一多半的内存(20G),电脑中有多个停止运行的容器,正常启动状态的只有一个 MySQL 服务,通过 docker stats 查看占用内存也…

PyCharm安装教程

1.1 为什么要安装python开发环境 上一篇文章我们安装了python,准确来说是python解释器,它没有自带的可视化开发工具,只能通过命令行窗口来执行python代码,这里我们就来下载一个用于python开发的可视化工具——PyCharm。 1.2 PyC…

boost1.55 安装使用教程 windows

第一步 :首先在boost官网上下载库压缩包 添加链接描述 选择自己需要的版本进行下载 解压后执行booststrap.bat 用来生成创建b2.exe 和bjam.exe 拓展:.\b2 --help 了解一下有哪些参数可以配置 默认b2.exe编译后,链接到项目如果出现如下错误…

人工智能基本常识:让深度学习技术更加人性化

近年来,人工智能技术日臻成熟。现在,许多产品和服务都依靠人工智能技术实现自动化和智能化,因此它与我们的日常生活息息相关。无论是为我们带来各种便利的家用设备,还是我们一直在使用的产品制造方式,人工智能的影响无…

低代码开发与传统软件开发:未来趋势与竞争格局

近年来,低代码开发平台的快速发展引起了各行各业的广泛关注。低代码开发平台简化了软件开发的复杂性,提供了更快速、更灵活的开发方式。于是,许多人开始产生一个疑问:未来低代码开发是否会取代传统软件开发?今天这篇文…

nodejs微信小程序+python+PHP沧州地区空气质量数据分析系统-计算机毕业设计推荐 django

本系统不仅主要实现了注册登录,系统首页,个人中心,用户管理,城市区域管理,空气状况管理,空气质量管理,系统管理,数据爬取,大屏分析等功能,通过这些功能基本可…

CompressAI benchmark经典/传统图像编码器的使用

文章目录 使用简介安装依赖编译安装BPG 使用简介 CompressAI的github仓库中Usage-Evaluation给出了传统编解码器的使用帮助,但是并未给出详细的使用方法。本文旨在进行总结使用方法。下图是传统编解码器相关代码的存放地点,其中codecs为各种编解码器类的…

Java版企业电子招标采购系统源码—鸿鹄电子招投标系统-企业战略布局下的采购寻源

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审…

Impala4.x源码阅读笔记(二)——Impala如何高效读取Iceberg表

前言 本文为笔者个人阅读Apache Impala源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。 Iceberg表是一种用于存储大规模结构化数据的…

L1-040:最佳情侣身高差

题目描述 专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)1.09 (男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。 下面就…

如何建立一套完善的销售管理体系?

如何建立一套完善的销售管理体系? 该提问下已有许多专业的回答,从多个角度为题主出谋划策:销售主管如何提升个人能力、销售团队如何管理、PDCA管理方法论、销售闭环……似乎都与硬性的个人能力挂钩,销售能力、管理能力等等。 或…

电商控制台系统前台注册登录后台审核的测试

电商项目(前台): 登录接口 注册接口 后台: 注册审核:建一个线程类 注意程序中的一个问题。 这里是 5 条记录,2 条记录显示应该是 3 页,实际操作过程 有审核机制,出现了数据记录动态变…

如何使用Selenium进行Web自动化测试?一文6个步骤轻松玩转!

概述: Web自动化测试是现代软件开发过程中至关重要的一环。Selenium是一个强大的自动化测试工具,可以模拟用户在Web浏览器中的操作,实现自动化的测试流程。本文将介绍如何使用Selenium进行Web自动化测试,并附带代码示例&#xff0…

容器技术与操作系统

文章目录 容器技术 vs 虚拟机操作系统容器 Docker与操作系统 容器技术 vs 虚拟机 操作系统 操作系统是一个很重而且很笨的程序,简称笨重,有多笨重呢? 操作系统运行起来是需要占用很多资源的,大家对此肯定深有体会,刚…

基于模型驱动的可视化开发平台——JNPF

目录 一、模型驱动原理 二、低代码核心功能 1.业务建模: 2.表单建模: 3.页面建模: 4.流程建模: 5.报表建模: 6.门户建模: 7.大屏建模: 8.移动建模: 目前,国外内…

一个例子带你入门影刀编码版(二)

文章结构 摘要元素定位店铺所有宝贝单个宝贝详细信息相关链接 摘要 将通过一个电商业务场景下的真实需求,带领大家零基础入门影刀编码版,本系列将会分三步讲解,从接到需求到最后完成发版,整个过程中我们需要做些什么?…

BugKu-Web-Simple_SSTI_1Simple_SSTI_2(浅析SSTI模板注入!)

何为SSTI模块注入? SSTI即服务器端模板注入(Server-Side Template Injection),是一种注入漏洞。 服务端接收了用户的恶意输入以后,未经任何处理就将其作为Web应用模板内容的一部分,模板引擎在进行目标编译渲…

深入理解TheadLocal的使用场景和注意事项

前言 在日常实际开发当中我们往往会看到项目中有使用 ThreadLocal 的场景,大多数人有时候可能涉及不到自己的业务则没有进行关注。通常我在看代码时对于一些未知的东西常常引起我的好奇,我往往会分析:为什么要这么做?好处是什么&…

fuxploide,一款针对文件上传的Fuzz检测工具

fuxploide,一款针对文件上传的Fuzz检测工具 1.工具概述2.安装3.参数解析4.使用案例1.工具概述 Fuxploider 是一种开源渗透测试工具,可自动检测和利用文件上传表单缺陷。该工具能够检测允许上传的文件类型,并能够检测哪种技术最适合在所需的 Web 服务器上上传 Web Shell 或任…