首页 > 其他分享 >第十期机器学习基础 01深度学习基础

第十期机器学习基础 01深度学习基础

时间:2024-10-14 11:35:58浏览次数:8  
标签:01 函数 sigmoid 梯度 学习 神经网络 第十期 RNN

一:机器学习和深度学习对比

(一)传统机器学习

什么是传统机器学习?传统机器学习是指一系列能够从数据中学习规律,并根据这些规律进行预测和决策的算法。 它通常包括以下几种类型的算法:
线性回归和逻辑回归:用于解决回归和分类问题----可以认为:逻辑回归是在线性回归基础上加上sigmod方法,进行0/1分类
决策树和随机森林:用于构建预测模型,进行后续分类---Kd近邻树
支持向量机(SVM):用于分类和回归分析。
聚类算法:如K-means,用于将数据分成不同的组。
朴素贝叶斯:基于贝叶斯定理的分类算法。
这些算法大多数需要人工特征工程,也就是说,需要人类专家根据对领域知识的理解来提取特征,然后再将这些特征输入到机器学习算法中

(二)深度学习

深度学习是基于人工神经网络,通过模仿人脑的结构和功能,通过多层次的神经元网络来处理和分析数据。深度学习之所以“深”,是因为它的网络层数非常多,通常包括数十甚至数百层。 深度学习有几个显著的特点:
  • 自动特征提取:深度学习能够自动从数据中提取特征,而不需要人工干预。这是因为它的多层结构可以逐层提取数据的高级特征
  • 处理非结构化数据:深度学习特别擅长处理图片、语音和文本等非结构化数据,这是传统机器学习难以做到的。
  • 大数据和高计算力需求:深度学习模型需要大量的数据和强大的计算资源,这也是为什么深度学习在大数据时代得以迅速发展的原因。

(三)传统机器学习与深度学习的区别

两者都是从数据中学习规律,并利用这些规律进行预测和决策,但是有着如下区别:
  • 特征工程:传统机器学习依赖人工特征工程,而深度学习通过多层神经网络自动提取特征
  • 数据需求:传统机器学习可以在较少的数据下工作,而深度学习需要大量数据来训练模型
  • 计算需求:深度学习需要更强大的计算能力,通常需要使用GPU来加速计算。
  • 应用场景:传统机器学习主要应用于结构化数据,如表格数据;深度学习则在处理图片、语音和自然语言处理等非结构化数据方面表现优异
选取场景:
  • 如果你的数据量不大,而且是结构化数据,传统机器学习可能会是一个更好的选择。
  • 如果你有大量的非结构化数据,如图像或语音,深度学习可能会表现得更好。

二:深度学习基础

(一)MLP全链接神经网络(经典)

MLP本身并不是超级强大,但你会发现它们几乎集成在任何其他架构中(令人惊讶的是,甚至在transformer中)。MLP基本上是一个线性层序列或完全连接的层。主要有以下特征:
  • 全连接:在全连接的多层感知机中,每个神经元都与前一层的所有神经元相连,因此它对输入数据的特征提取是全局性的。
  • 参数多:每个连接都有一个单独的权重,参数较多,容易导致过拟合
  • 无平移不变性:由于全连接的结构,MLP难以学习到平移不变性,对于图像等具有平移不变性的数据,需要大量数据来进行训练。(平移不变性----图像中目标无论是被平移,被旋转,还是被缩放,甚至是不同的光照条件、视角,都可以被成功地识别出来)
总之,MLP需要大量的参数,对于图像等具有平移不变性的数据,需要更多的数据(因为难学习到平移不变性),并且不适用于序列建模。

(二)补充:激活函数

1.常见的激活函数包括:sigmoid、tanh、Relu、Leaky Relu

  • sigmoid:
值域在0和1之间
函数具有非常好的对称性
函数对输入超过一定范围就会不敏感,梯度消失;
反向传播幂运算计算量大
Sigmoid函数的输出不不是Zero-centered的
  • tanh
tanh函数和sigmoid神经元⼀样,也具有软饱和性。
但是和sigmoid神经元不同的是,它解决了zero-centered的输出问题,因此,在实际操作中,tanh非线性函数比sigmoid非线性函数更受欢迎。
然而,gradient vanishing的问题和幂运算的问题仍然存在。
因为tanh的输出均值比sigmoid更接近0,SGD会更更接近natural gradient(一种二次优化技术),从而降低所需的迭代次数。
但是在二分类中(0,1)还是用sigmoid更好,因为范围在(0,1)之间。

sigmoid与tanh缺点:

sigmoid函数和tanh函数两者共同的缺点是,在特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后斜率就会接近于0,导致降低梯度下降的速度
  • Relu和Leaky Relu
ReLU函数是大多数神经网络的默认激活函数。因此在不知道选择哪种函数作为激活函数时,可以优先选择ReLU函数。
对于Relu:
只要是正值的情况下,导数恒等于1,当是负值的时候,导数恒等于0。从实际上来说,当使用的导数时,=0的导数是没有定义的。但是当编程实现的时候,取值刚好等于0.00000001,这个值相当小,所以,在实践中,不需要担心这个值,是等于0的时候,假设一个导数是1或者0效果都可以。
对于Leaky ReLu:
当是负值时,这个函数的值不是等于0,而是轻微的倾斜,这个函数通常比Relu激活函数效果要好,尽管在实际中Leaky ReLu使用的并不多。

Relu的优点:

(1)ReLU函数的左侧导数为0,右侧导数恒为1,这就避免了“梯度消失“的发生 (2)计算速度非常快,只需要判断输入是否大于0,收敛速度远快于sigmoid和tanh

Relu缺点:

(1)恒为1的导数容易导致“梯度爆炸“,但设定合适的阈值可以解决这个问题(更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内) (2)Dead ReLU Problem:如果左侧横为0的导数有可能导致把神经元学死,不过设置合适的步长(学习率)也可以有效避免这个问题的发生。 (3)偏移现象:输出值具有偏移现象(输出均值恒大于零),但是使用合理的Leaky Relu,可以使得左边的值小于0

2.重点---为什么需要激活函数

激活函数对模型学习、理解非常复杂和非线性的函数具有重要作用:激活函数可以引入非线性因素。 如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。 举例:y = 2x + 3 是一个线性函数,它的图像是一条斜率为 2 的直线;y = x^2 + 1 是一个非线性函数,它的图像是一条开口向上的抛物线。非线性是自然界和人类社会的普遍特征,非线性函数比线性函数更能揭示变量之间的真实关系。因此,在一些情况下,我们必须用非线性函数来描述现象,从而揭示规律。----区别可以认为:线性函数梯度导数是常数,网络将不能很好地训练和从数据中捕获复杂的模式。非线性则不是 没有激活函数神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

3.基本所有的激活函数都是非线性函数。那么神经网络为什么需要这些非线性激活函数呢?

正常的神经网络结构见下:  

标签:01,函数,sigmoid,梯度,学习,神经网络,第十期,RNN
From: https://www.cnblogs.com/ssyfj/p/18463716

相关文章

  • JavaScript中Promise学习
    Promise是强大的异步编程工具,它允许我们更好的管理和处理异步操作。这里将探讨Promise中的reject以及如何使用catch来处理异步错误 什么是promise?promise是一种代表异步操作最终完成或失败的对象。它有三种状态:1、Pending(进行中):初始状态,既不成功也不失败2、Fulfilled(已成......
  • 第十期机器学习基础 03GPT的发展
    一:GPT-1---预测未来在自然语言中,大量的未标记文本语料库非常丰富,但是有标签的数据训练的效果比较好,如果想要在没有标签的数据集上训练出好的模型比较难。因此作者提出了一个想法,在无标签的数据上训练一个预训练模型,然后在这些有标签的子任务上训练一个微调模型。(当时之前是CV领......
  • 第十期机器学习基础 02注意力机制和Transformer/Bert
    一:注意力机制(一)前提背景1.人类的选择性视觉注意力视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无......
  • 零基础学习网工第2天 —— 小白入门系列
    零基础学习网工第2天——小白入门系列静态路由手动配置而非动态决定,需要管理员进行手动配置。实验:通过两个路由器实现pc和server的通信PC去往不同的网段需要经过网关,网关需要查路由表,一步步将数据传到目标。实现跨路由器的数据包传递,ip如下图所示。配置PC1的IP、子......
  • 研究学习的循环递进三段论
        在研究学习,编程语言、编译器、计算机科学、类型论、集合论等多门学科及分支后,我貌似隐隐约约地感受到,研究学习的过程分为三个阶段,我称之为研究学习的三段论,其中的段,是阶段的意思。对应了,武侠小说中,研习武术的三个过程,即心法,内功,外功。        1.直观感......
  • perl学习笔记14_安装模块
    目录1.问题2.手工下载模块3.安装模块到本地目录4.使用模块1.问题在工作站内网,安装perl模块会有两个问题:没有网络,需要手工下载模块.没有perl目录权限,需要把模块安装到本地.2.手工下载模块在外网进入cpan网站:https://metacpan.org/.在搜索框输入要下载的模......
  • Python 中快速上手机器学习的基础算法
    机器学习作为一种让计算机从数据中自动学习的技术,在近年来得到了迅猛发展。本文将介绍几种基础的机器学习算法,并通过Python代码示例展示它们的应用。1.什么是机器学习机器学习是一种让计算机学会从数据中自动“学习”并做出预测或决策的技术。不需要显式地编程告诉计算机......
  • 101基于java ssm springboot协同过滤算法高考志愿填报系统(源码+文档+运行视频+讲解视
    项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......
  • C语言分支与循环的学习(小知识)
    学习目录 1.if 表达式成立(为真),则语句执行;表达式不成立(为假),这语句不执行。    注解:C语言中,非零表示真,0表示假。如果一个表达式的结果不是0,这语句执行。反之,则语句执行。实例:输入一个整数,判断是否为奇数该程序的执行逻辑是包含头文件#include<stdio.h>,输入主函数,......
  • 101基于java ssm springboot协同过滤算法高考志愿填报系统(源码+文档+运行视频+讲解视
    项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......