机器学习-3降低损失(Reducing Loss)

机器学习-3降低损失(Reducing Loss)

学习内容来自:谷歌ai学习
https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hl=zh-cn
本文作为学习记录

1.降低损失:迭代方法

迭代学习
下图展示了机器学习算法用于训练模型的迭代试错过程:
在这里插入图片描述

在这里插入图片描述

迭代策略在机器学习中很常见,主要是因为它们可以很好地扩展到大型数据集。
“模型”将一个或多个特征作为输入,并返回一项预测作为输出。为简单起见,假设一个模型接受一个特征 ( X1) 并返回一个预测 (y’):
y’ = b + w 1 w_{1} w1 x 1 x_{1} x1**
在这里插入图片描述
最后,我们已经到达图中的“计算参数更新”部分。机器学习系统会在这里检查损失函数的值,并为b 和 w1生成新值。现在,我们先假设这个神秘的框会产生新值,然后机器学习系统会根据所有标签重新评估所有特征,为损失函数生成一个新值,而该值又产生新的参数值。学习过程会持续迭代,直到该算法发现损失可能最低的模型参数。通常,您可以反复迭代,直到整体损失不再发生变化或变化速度至少变化得非常缓慢。这时候,我们可以说该模型已收敛。

训练机器学习模型时,首先对权重和偏差进行初始猜测,然后以迭代方式调整这些猜测,直到学习出损失可能最低的权重和偏差。

2. 降低损失:梯度下降法 Gradient Descent

迭代方法图包含一个标题为“计算参数更新”的华而不实的绿色方框。我们现在要用更实质的方法代替这种精明的算法。

理解梯度下降就好比在山顶以最快速度下山:好比道士下山,如何在一座山顶上,找到最短的路径下山,并且确定最短路径的方向

假设我们有时间和计算资源来计算w1的所有可能值的损失。对于我们一直在研究的那类回归问题,产生的损失与w1的图表始终是凸形。换句话说,图表将始终是碗状图,如下所示: 图 2. 回归问题产生的损失与权重图呈凸形。
在这里插入图片描述

凸形问题只有一个最小值;即只有一个位置的斜率正好为 0。这个最小值就是损失函数收敛的位置。
通过计算整个数据集内每个w1可能的值的损失函数来寻找收敛点的效率非常低下。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法
通过计算整个数据集中 每个可能值的损失函数来找到收敛点这种方法效率太低。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法。
梯度下降法的第一阶段是为w1选择一个起始值(起点)。起点并不重要;因此,许多算法直接将w1设置为 0 或选择随机值。在下图中,我们选择了一个略大于 0 的起点:
然后,梯度下降法算法会计算损失曲线在起点的梯度。在图 3 中,损失的梯度等于曲线的导数(斜率),可以告诉您哪个方向是“更暖”还是“冷”。当有多个权重时,梯度是偏导数相对于权重的矢量。

执行梯度下降法时,我们会泛化上述过程,以同时调整所有模型参数。例如,为了找到w1和b偏差的最优值,我们会同时计算w1和b的梯度。接下来,我们根据w1和b各自的梯度修改它们的值。然后重复上述步骤,直到达到最小损失。

在这里插入图片描述

原理上就是凸形问题求最优解,因为只有一个最低点;即只存在一个斜率正好为 0 的位置。这个最小值就是损失函数收敛之处。
在这里插入图片描述

梯度下降法的目标:寻找梯度下降最快的那个方向
梯度是一个矢量,因此具有以下两个特征:方向、大小
梯度始终指向损失函数中增长最为迅猛的方向。梯度下降法算法会沿着负梯度的方向走一步,以便尽快降低损失

为了确定损失函数曲线上的下一个点,梯度下降法算法会将梯度大小的一部分与起点相加
在这里插入图片描述

然后,梯度下降法会重复此过程,逐渐接近最低点。(找到了方向)

3.降低损失 (Reducing Loss):学习速率

超参数是编程人员在机器学习算法中用于调整的旋钮。大多数机器学习程序员都会花费大量时间来调整学习速率。如果您选择的学习速率过小,则学习将会花费太长时间:
相反,如果您指定的学习速率过大,则下一个点将永远在井底随意弹跳,就像量子力学实验大错一样:
每个回归问题都存在一个金发姑娘学习速率。“金发姑娘”值与损失函数的平坦程度有关。如果您知道损失函数的梯度较小,则可以放心地尝试较大的学习速率,以抵消小的梯度,从而产生较大的步长。
在这里插入图片描述
在这里插入图片描述

3.1黑塞矩阵(Hessian Matrix)

黑塞矩阵又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。
在这里插入图片描述
在这里插入图片描述

4.降低损失:优化学习速率

谷歌学习平台提供了: 尝试不同的学习速率,看看它们如何影响达到损失曲线最小值所需的步数。
https://developers.google.cn/machine-learning/crash-course/fitter/graph?hl=zh-c
在这里插入图片描述

5.降低损失 (Reducing Loss):随机梯度下降法

在梯度下降法中,批次是用于在单次训练迭代中计算梯度的一组样本。 Google 数据集通常包含大量特征。因此,一个批次可能非常庞大。超大的批量也可能会导致单次迭代就可能需要很长时间才能完成计算。

具有随机抽样样本的大型数据集可能包含冗余数据。事实上,随着批次大小的增加,冗余的可能性会越来越高。一些冗余可能有助于消除嘈杂的梯度,但与大批量相比,大量的批量往往具有更高的预测价值。

如果我们可以通过更少的计算量得出正确的平均梯度,会怎么样?通过从数据集内随机选择样本,我们可以从小得多的样本中估算出大的平均值(尽管会有噪声)。 随机梯度下降法 (SGD) 将这种想法运用到极致,它每次迭代只使用一个样本(批次大小为 1)。如果有足够的迭代,SGD 可以正常工作,但噪声非常嘈杂。术语“随机”表示构成每个批次的一个样本是随机选择的。

小批量随机梯度下降法(小批量 SGD)是介于全批量迭代与 SGD 之间的折衷方案。小批次通常包含 10 到 1,000 个随机选择的样本。小批量 SGD 可以减少 SGD 中的噪声数,但仍然比全批量更高效。

5.1 补充:Goldilocks Principle 金发女孩原则

Goldilocks
(usually initial capital) Not being extreme or not varying drastically between extremes, especially between hot and cold.
Goldilocks Principle = Just the right amount = 刚刚好

西方有这么一个儿童故事叫 “ The Three Bears(金发女孩与三只小熊)”,迷路了的金发姑娘未经允许就进入了熊的房子,她尝了三只碗里的粥,试了三把椅子,又在三张床上躺了躺。最后发现不烫不冷的粥最可口,不大不小的椅子坐着最舒服,不高不矮的床上躺着最惬意。道理很简单,刚刚好就是最适合的,just the right amount,这样做选择的原则被称为 Goldilocks principle(金发女孩原则)

金发姑娘原则不仅适用于日常生活中的决策,也被广泛应用于多个领域,如发展心理学、经济学、通讯科学、医学和天体生物学等。在个人发展和人际关系方面,这个原则鼓励人们寻找平衡点,避免走向极端,从而更有效地解决问题和建立和谐的关系。

在天体宇宙学中,Goldilocks Zone是最适合居住的环境,温度上不过热不过冷,正正好适宜生命的成长,地球就是最典型的Goldilocks Planet。
在经济学中,Goldilocks economy 描述的经济状态不会太热导致通货膨胀,也不太冷导致经济萧条。这种正正好的状态下经济稳定,货币政策有利于市场,就业率也往往较高。

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

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

相关文章

Flink实战五_状态机制

接上文:Flink实战四_TableAPI&SQL 在学习Flink的状态机制之前,我们需要理解什么是状态。回顾我们之前介绍的很多流计算的计算过程,有些计算方法,比如说我们之前多次使用的将stock.txt中的一行文本数据转换成Stock股票对象的ma…

python笔记11

1、模块简介 在Python中,模块是一种组织代码的方式,允许你将相关的代码放在一个文件中,以便更好地组织和重用。模块可以包含变量、函数和类等。下面是关于Python模块的一些基本概念: 1. 创建模块 要创建一个模块,只…

【DB2 流浪之旅】 第一讲 Linux 环境安装 db2 数据库

DB2数据库是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。一般DB2是搭配IBM Power系列小机使用的,兼容性好、性能高。当然DB2也有Linux版本的,相对性能会差一些,主要…

【FAS Survey】《Deep learning for face anti-spoofing: A Survey》

PAMI-2022 最新成果:https://github.com/ZitongYu/DeepFAS 文章目录 1 Introduction & Background1.1 Face Spoofing Attacks1.2 Datasets for Face Anti-Spoofing1.3 Evaluation Metrics1.4 Evaluation Protocols 2 Deep FAS with Commercial RGB Camera2.1 H…

CF1918 D. Blocking Elements [二分+数据结构优化dp]

传送门:CF [前题提要]:二分数据结构优化dp,赛时想到了二分,想到了dp,想到了应该是某种双log的做法,但是硬是想不出正确的dp的定义,看了讲解感觉dp方程的定义还是很典的,dp题写的少是这样的… 题目要求我们输出满足所有去掉的数字和以及区间段和的最大值的最小值.不难想到使用二…

meson、ninja编译dpdk

解压目录meson编译dpdk meson buildmeson编译dpdk debug版 meson setup --buildtypedebug debugbuildmeson编译使用静态库,编译example meson .. --prefix/usr/local --buildtypedebugoptimized --default-librarystatic -Dexamplesallninja编译 ninjaninja安装…

springboot-前后端分离——第二篇

本篇主要介绍一个发送请求的工具—postman,然后对请求中的参数进行介绍,例如简单参数、实体参数、数组参数、集合参数、日期类型参数以及json类型参数,对这些参数接收进行总结。最后对响应数据进行介绍,使用统一响应结果返回浏览器…

在JAVA中如何使用ASCLL码

在Java中,你可以直接使用ASCII码来表示和处理字符。ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种计算机编码系统,用于表示英文字符为数字。ASCII码使用7位或8位二进制数表示…

轮转数组[中等]

优质博文:IT-BLOG-CN 一、题目 给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,…

Golang k8s相关yaml包的区别

问题背景 大概是因为 k8s 定义了一些特殊的数据类型,所以 k8s 对象 yaml 序列化时与其它 yaml 包结果不同。 源代码 package mainimport ("log""os""github.com/ghodss/yaml"yamlv2 "gopkg.in/yaml.v2"yamlv3 "k8s…

八数码问题dfs

import java.util.*;public class Main{static String end "12345678x";public static void swap(char[] arr,int x,int y){char temp arr[x];arr[x] arr[y];arr[y] temp;}public static int bfs(String start){//key:String 存放12345678x这种格式的字符//value…

基金分红方式:现金分红与红利再投

基金是一种集合性投资工具,通过基金,投资者可以间接持有多种证券组合,包括股票、债券等。在投资基金时,投资者通常会关注基金的收益分配方式,其中现金分红和红利再投是两种常见的方式。 一、什么是基金分红 基金分红…

Centos7安装原生Nginx并配置反向代理

一、背景 当我的应用程序需要集群化部署之时,必然需要一个反向代理,当然Nginx的大名,这里不做更多的介绍了,这里介绍一下Nginx常用的四大阵营 1 Ngnix 原生版本 nginx news 2 Nginx Plus 商用版(收费的&#xff09…

Android 12系统源码_页面管理(四)获取系统当前最上层的Activity信息

前言 很多应用开发人员,在日常开发过程中,经常会遇到一些需求,例如需要知道当前最上层的Activity是哪个,并结合这个Activity的名称来完成一些特定场景的需求。最简单的方法,是在创建Activity的时候将该Actvity存储到一…

20240127在ubuntu20.04.6下配置whisper

20240131在ubuntu20.04.6下配置whisper 2024/1/31 15:48 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】800¥ 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装! 3、配置whispe…

经典左旋,指针面试题

今天给大家带来几道面试题! 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 我们可以先自己自行思考,下面是参考答案: 方法一: #define _CRT_SEC…

2024美赛数学建模D题思路+模型+代码+论文(持续更新)

2024美赛数学建模A题B题C题D题E题F题思路模型代码论文:开赛后第一时间更新,获取见文末名片 组队环节: 美赛最多是3个人参赛,一般的队伍都是由三人组成(当然如果你很大佬也可以一个人参赛),队伍…

力扣hot100 划分字母区间 贪心 思维 满注释版

Problem: 763. 划分字母区间 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 代码随想录 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public List<Integer> partitionLabels(String s){// 创建哈希…

【nginx实战】通过nginx实现http请求的keep alive长连接

文章目录 一. 概述二. nginx与client的长连接1. keepalive_timeout指令2. keepalive_requests指令场景分析 三. 保持和server的长连接1. location设置场景分析 2. upstream设置3. 场景分析场景1&#xff1a;场景2&#xff1a;场景3&#xff1a; 一. 概述 当使用nginx作为反向代…

神经网络的一些常规概念

epoch&#xff1a;是指所有样本数据在神经网络训练一次&#xff08;单次epoch(全部训练样本/batchsize)/iteration1&#xff09;或者&#xff08;1个epochiteration数 batchsize数&#xff09; batch-size&#xff1a;顾名思义就是批次大小&#xff0c;也就是一次训练选取的样…