【深度学习】机器学习基础

机器学习就是让机器具备找一个函数的能力

带有未知的参数的函数称为模型

通常一个模型的修改,往往来自于对这个问题的理解,即领域知识

损失函数

  • 平均绝对误差(Mean Absolute Error,MAE)
    在这里插入图片描述
  • 均方误差(Mean Squared Error,MSE)

加粗样式

  • 交叉熵(cross entropy):有一些任务中 y 和 ^y 都是概率分布,这个时候可能会选择交叉熵

梯度下降

解一个最优化的问题。把未知的参数找一个数值出来,看代哪一个数值进去可以让损失 L 的值最小。
梯度下降(gradient descent)是经常会使用优化的方法

假设只有一个未知参数w,怎么样找一个 w 让损失的值最小。
首先要随机选取一个初始的点 w0,计算在 w 等于 w0 的时候,参数 w 对损失L的微分在这里插入图片描述

计算在这一个点,在 w0 这个位置的误差表面的切线斜率,也就是这一条蓝色的虚线,它的斜率,如果这一条虚线的斜率是负的,代表说左边比较高,右边比较低。在这个位置附近,左边比较高,右边比较低。如果左边比较高右边比较低的话,就把 w 的值变大,就可以让损失变小。如果算出来的斜率是正的,就代表左边比较低右边比较高。左边比较低右边比较高,如果左边比较低右边比较高的话,就代表把 w 变小了,w 往左边移,可以让损失的值变小
在这里插入图片描述

w左右移动的步伐大小取决于:

  • 1、斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点
  • 2、学习率(learning rate)η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。(在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter))

所以w的更新如下:
在这里插入图片描述

不断地移动 w 的位置,最后会停下来。往往有两种情况会停下来

  • 1、设定更新次数的超参数:上限可能会设为 100 万次,参数更新 100 万次后,就不再更新了
  • 2、当不断调整参数,调整到一个地方,它的微分的值就是这一项,算出来正好是 0 的时候,如果这一项正好算出来是 0,0 乘上学习率 η 还是 0,所以参数就不会再移动位置

局部最小值和全局最小值问题
梯度下降有一个很大的问题,没有找到真正最好的解,没有找到可以让损失最小的 w。

如果在梯度下降中,w0 是随机初始的位置,也很有可能走到 wT 这里,训练就停住了,无法再移动 w 的位置。(事实上局部最小值是一个假问题,在做梯度下降的时候,真正面对的难题不是局部最小值。)

在这里插入图片描述

对于有多个未知参数,w、b。
在这里插入图片描述

激活函数

在这里插入图片描述

线性模型,不管如何设置 w 跟 b,永远制造不出红色线,永远无法用线性模型制造红色线。显然线性模型有很大的限制,这一种来自于模型的限制称为模型的偏差,无法模拟真实的情况。

所以需要写一个更复杂的、更有灵活性的、有未知参数的函数。红色的曲线可以看作是一个常数再加上一群 Hard Sigmoid 函数。Hard Sigmoid 函数的特性是当输入的值,当 x 轴的值小于某一个阈值(某个定值)的时候,大于另外一个定值阈值的时候,中间有一个斜坡。所以它是先水平的,再斜坡,再水平的。所以红色的线可以看作是一个常数项加一大堆的蓝色函数(Hard Sigmoid)
在这里插入图片描述

假设 x 跟 y 的关系非常复杂也没关系,就想办法写一个带有未知数的函数。直接写 Hard Sigmoid 不是很容易,但是可以用一条曲线来理解它,用Sigmoid 函数来逼近 Hard Sigmoid,

Sigmoid 函数的表达式为
在这里插入图片描述
在这里插入图片描述

Hard Sigmoid 可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的加总
在这里插入图片描述

Sigmoid 和 ReLU 是最常见的激活函数

https://blog.csdn.net/caip12999203000/article/details/127067360

批量

实际使用梯度下降的时候,会把 N 笔数据随机分成一个一个的批量(batch),一组一组的。每个批量里面有 B 笔数据,所以本来有 N笔数据,现在 B 笔数据一组,一组叫做批量
本来是把所有的数据拿出来算一个损失,现在只拿一个批量里面的数据出来算一个损失
所以实现上每次会先选一个批量,用该批量来算 L1,根据 L1 来算梯度,再用梯度来更新参数,接下来再选下一个批量算出 L2,根据 L2 算出梯度,再更新参数,再取下一个批量算出 L3,根据 L3 算出梯度,再用 L3 算出来的梯度来更新参数。
在这里插入图片描述
所以并不是拿 L 来算梯度,实际上是拿一个批量算出来的 L1, L2, L3 来计算梯度。把所有的批量都看过一次,称为一个回合(epoch),每一次更新参数叫做一次更新。

举个例子,假设有 10000 笔数据,即 N 等于 10000,批量的大小是设 10,也就 B 等于 10。10000 个样本(example)形成了 1000 个批量,所以在一个回合里面更新了参数 1000 次,所以一个回合并不是更新参数一次,在这个例子里面一个回合,已经更新了参数 1000 次了。

所以做了一个回合的训练其实不知道它更新了几次参数,有可能 1000 次,也有可能 10 次,取决于它的批量大小有多大。 批量大小是超参数

深度学习

Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络(neural network)
每一排称为一层,称为隐藏层(hidden layer),很多的隐藏层就“深”,这套技术称为深度学习
在这里插入图片描述
深度学习的训练会用到反向传播(BackPropagation,BP),其实它就是比较有效率、算梯度的方法。

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

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

相关文章

【02-02】SpringMVC基于注解的应用

一、请求处理 1、常用注解 RequestMapping 作用:用来匹配客户端发送的请求(用来处理URL映射,将请求映射到处理方法中),可以在类或者方法上使用。 用在类上,可以将请求模块化,避免请求方法中的…

优刻得首个「国产千卡智算集群」落地,支持智源千亿大模型训练

在人工智能引领的时代浪潮中,算力已成为技术进步与创新的核心驱动力。面对当下AI算力需求的飙升、高端AI芯片供应受限的挑战,加之OpenAI带来的技术封锁,唯有坚定不移的发展自主可控的国产技术方案,持续壮大国产智算集群规模&#…

计算机网络之数据通信原理

1.通信系统的基本组成 信源:信息的发出者; 信宿:信息的接收者; 载体:信息的传送通道; 变换器:将信息变换成载体上可传输的信号; 反变换器:将载体上传输的信号变换成信…

兴趣爱好广泛的人,如何填报高考志愿选专业?

一般来说,高考填报志愿都要以自己的兴趣为基础。但是对于有一些比较优秀的同学来说,自己的兴趣可能是非常广,涉及到各个专业方方面面。有些同学琴棋书画样样精通,对于很多的专业,他们都充满了兴趣,而且兴趣…

navicat Premium发布lite免费版本了

Navicat Premium发布lite免费版本了,下面是完整功能对比链接 Navicat Premium 功能列表 | Navicat 免费版本下载链接如下: Navicat | 免费下载 Navicat Premium Lite 开发功能完全够用,点赞。 dbeaver该如何应对。

MySQL高级-索引-使用规则-前缀索引

文章目录 1、前缀索引2、前缀长度3、查询表数据4、查询表的记录总数5、计算并返回具有电子邮件地址(email)的用户的数量6、从tb_user表中计算并返回具有不同电子邮件地址的用户的数量7、计算唯一电子邮件地址(email)的比例相对于表…

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上,可以配合Native Window创建OpenGL开发环境,并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板,调用OpenGL ES图形库绘制3D图形&…

面试-collection体系

1.整体collection体系图 2.集合List和Set (1)ArrayList和LinkedList区别 我们知道,通常情况下,ArrayList和LinkedList的区别有以下几点: 1. ArrayList是实现了基于动态数组的数据结构(可以实现扩容,实现方式是建立一个新的数组,再…

安霸CVFlow推理开发笔记

一、安霸环境搭建: 1.远程172.20.62.13 2. 打开Virtualbox,所在目录:E:\Program Files\Oracle\VirtualBox 3. 配置好ubuntu18.04环境,Ubuntu密码:amba 4. 安装toolchain,解压Ambarella_Toolchain_CNNGe…

Android 大话binder通信 (下)

戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 前情提要 Android 大话binder通信 (上)主要介绍了矮挫丑进程一直暗恋白富美进程,遂发送情书给她,以表达对她的爱慕之情,而情书顺利的到达…

linux中awk,sed, grep使用(待补充)

《linux私房菜》这本书中将sed和awk一同归为行的修改这一点,虽然对,但不利于实际处理问题时的思考。因为这样的话,当我们实际处理问题时,遇到比如说统计文本打印内容时,我们选择sed还是awk进行处理呢? 也因…

什么类型的网站需要配置OV证书

目录 什么网站更适合OV证书: 申请OV需要注意: 申请单位组织验证型OV SSL证书的详细步骤 OV SSL证书全称Organization Validation SSL(组织验证性SSL证书),是一种需要验证网站真实身份的数字证书。通过证书颁发机构审查网站企业身份和域名所…

单例模式(下)

文章目录 文章介绍步骤安排及单例讲解step1:注册单例类型(main.cpp)step2:定义类和私有构造函数(keyboardinputmanager.h)step3:(keyboardinputmanager.cpp)step4:在qml中…

springboot 缓存框架Cache整合redis组成二级缓存

springboot 缓存框架Cache整合redis组成二级缓存 项目性能优化的解决方案除开硬件外的方案无非就是优化sql,减少sql 的执行时间,合理运用缓存让同样的请求和数据库之间的连接尽量减少,内存的处理速度肯定比直接查询数据库来的要快一些。今天就…

临时挂载字体文件工具

一、简介 1、FontLoader是一款专为字体管理和快速加载设计的工具,它能够在不占用系统资源的情况下,实现字体的临时加载和快速切换。用户可以将字体文件存放在系统之外的硬盘分区,并通过FontLoader直接从内存中加载这些字体,从而避…

Nginx安装部署

简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 同Tomcat一样,Nginx可以托管用户编写的WEB应用程序成为可访问的网页服务,同时也可以作为流量代理服务器,控制流量的中转。 Ngi…

【MySQL】架构体系概览

本文使用的MySQL版本是8.0 MySQL架构 ​MySQL架构整体由外部程序和MySQL服务器构成。其中内部服务器分成连接层,服务层,服务管理和公共组件,存储引擎层和文件系统层。 连接层 连接层的作用是处理客户端的连接。 网络端口 一台MySQL服务器…

java项目部署工具

Java Web项目部署文档 需要工具 idea\eclipse、node.js(vue部分需要)、mysql、jdk1.8 1. 准备工作 (1)安装jdk 下载地址: jdk1.8下载 一直下一步 安装成功后配置环境变量 默认jdk安装在C:\Program Files\Java\jdk1.8.0_202\ 在Path路径添加:%JAVA_HOME…

mq需要知道的点

一、为什么要使用mq 解耦、异步、削峰 二、mq 有什么优缺点 优点就是在特殊场景下有其对应的好处,解耦、异步、削峰。 缺点有以下几个: 系统可用性降低 系统引入的外部依赖越多,越容易挂掉。万一 MQ 挂了,MQ 一挂&#xff0c…

Jetpack - Navigation: 一个全面的安卓开发指南

引言 导航是任何安卓应用程序中至关重要的部分。无缝地在不同的屏幕之间移动并传递数据,对于流畅的用户体验来说至关重要。在这篇博客中,我们将深入探讨Jetpack的Navigation组件,这个强大的框架旨在简化安卓应用中的导航。我们将涵盖从设置和…