人工智能——深度学习

news2024/11/28 12:54:47

4. 深度学习

4.1. 概念

深度学习是一种机器学习的分支,旨在通过构建和训练多层神经网络模型来实现数据的高级特征表达和复杂模式识别。与传统机器学习算法相比,深度学习具有以下特点:

  • 多层表示学习:深度学习使用深层神经网络,允许多个层次的特征表达和抽象,从而能够自动发现和提取输入数据中的重要特征。
  • 端到端学习:通过将输入直接映射到输出,深度学习可以实现端到端的学习,无需手工设计特征提取器或预处理步骤。
  • 大规模并行计算:深度学习模型通常需要进行大量的矩阵运算,在现代硬件(如GPU)上可以进行高效的并行计算,加快了训练和推断的速度。
  • 梯度下降优化:深度学习模型通常使用梯度下降等优化算法来最小化损失函数,并通过反向传播算法有效地更新网络参数。
  • 泛化能力强:深度学习模型具有很强的泛化能力,能够在未见过的数据上进行准确的预测和分类。

深度学习在各个领域都取得了重大突破,包括计算机视觉、自然语言处理、语音识别等。它已经应用于图像分类、目标检测、机器翻译、智能助手等众多任务中,并在许多比赛和实际应用中取得优秀的结果。

神经网络功能强大,并且深度学习则是优化了数据分析,建模过程,因此基于神经网络的深度学习可以统一原来的传统机器学习。AlphaGo是深度学习战胜了世界围棋第一人李世石。2016年Google翻译基于深度学习更新,翻译能力得到大幅提升。最新的Google翻译是基于大语言模型。

4.2. 神经网络

4.2.1. 定义

4.2.1.1. 概念

深度学习是一种基于人工神经网络的机器学习方法,其核心思想是通过多层次的神经网络来模拟人脑的神经元之间的连接。深度学习的特点是可以通过大规模的数据来训练模型,并且可以自动学习到数据的特征表示。

上图就是一个神经网络的基本结构图,X1到Xn是输入,O1到Oj是输出,圆圈是神经元(也称感知机),连线带权重参与计算生成下一个神经元。隐层在实际的神经网络中可能会多层,并且都是全连接,所以计算量巨大,所以需要AI CPU、AI GPT等。

4.2.1.2. 感知机

如下图是一个神经元,其有3个输入数据x附加不同的权重w,另外有一个偏置(可以理解为线性函数中的截距)。

h = f(u + b)

我们先假设没有激活函数,来看下神经元的效果。

  • 如下图,单层单个元神经元可以用来作为分类。

  • 如下图,单层多个神经元可以完全更精细的线性分类分类

通过上面的示例可以看出,在没有激活函数的情况下,无论在多少个神经元作用下,其都是使用累加计算的,总是一阶的,总是线性的。线性函数只能处理一些简单的场景,复杂场景多是需要用曲线或曲面来区分的。如下图,用线段无法区分大小写字母。

我们就需要在神经元加一个函数来加强其能力,这就是激活函数的作用,它让神经元具备非线性表达能力。

我们让激活函数为Sigmoid函数,那么直线与Sigmoid函数相乘,就变成了曲线。

那么在3个神经元在3个激活函数的作用下,就可以形成3条曲线。

3条曲线在不同的权重作用下,可以拟合为一条新的形状,可以达到区分大小写字母的能力。

理论上来说,只要神经元足够多,无论多么复杂的分类都可以实现。

激活函数

激活函数可以选择不同的函数,Sigmoid是以前比较受欢迎的激活函数,但是其存在一些问题。当权重很小时,Sigmoid函数的作用也很小,容易导致梯度消失(简单讲是指区别度不大,导致学习的效率不佳)。ReLU系列的激活函数包括ReLU、Leaky ReLU、PReLU、ELU。

不同的激活函数有不同的应用场景,不同的计算量,需要根据经验进行选择调整。

softmax回归

为了结果更清晰,好对比,我们可能需要将结果进行归一化处理(归一化也被称为单位化,即所有结果之和为1)。

经过softmax回归计算之后,输出的结果可能是这样的:

4.2.2. 损失函数

如何评估神经网络的效果,我们就需要用到损失函数。损失函数(Loss Function)用来估量模型的预测值 f(x) 与真实值 y 的偏离程度。因为误差有正有负,所以可以采用平均绝对误差,均方误差(平均平方误差, Mean Squared Error ,MSE),这些多用于回归问题。用于二分类问题(是/否,对与错),多用交叉熵损失函数(CrossEntropy Loss)。多分类问题,可以用softmax函数,如上图的动物分类。

交叉熵损失函数(CrossEntropy Loss)

熵是用来描述物体混乱程度的概念,越混乱熵越大,也可以理解为数据越随机熵就越大。信息熵越大,事物越具不确定性,事物越复杂。

信息熵公式:

交叉熵主要用于度量两个概率分布之间的差异性。交叉熵越小,表示模型输出分布越接近真实值分布。

在机器学习框架中,交叉熵都有直接提供接口,我们只需要知道交叉熵的概念及其应用场景,知道使用即可。

4.2.3. 计算

4.2.3.1. 前向传播

有如下一个神经网络,3个输入,2个输出,单层神经网络有4个神经元。

转换为数学形式:

一步步从前往后进行计算,这就是前向传播计算。x1、x2、x3总是一起参与计算,其总的输出可以用一个矩阵[x1, x2, x3]表示,所以在神经网络的计算是,需要大量的矩阵计算。所以现在有很专用用于神经网络计算的神经网络处理器(Neural network Processing Unit, NPU)。

前向传播主要用于预测结果。

4.2.3.2. 反向传播

在神经网络学习的过程中,我们通过误差函数来求一个最小误差时的权重和截距(神经网络中叫偏置)。我们可以使用最小二乘法,也可以使用梯度下降法。使用最小二乘法效果好,但是计算量非常大,尤其是在大型神经网络中,如果使用最小二乘法计算量巨大,所以一般使用梯度下降法,梯度下降使用学习率(权重的步进值)这个超参数来控制下降的速度,来提升计算速度。

梯度下降是通过误差函数反向往前推的,所以也被称为反向传播。反向传播主要用于学习(训练)。

4.2.2. 分类

深度学习的主要方法包括卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN)等。

1. 卷积神经网络:

卷积神经网络是一种专门用于处理具有网格结构的数据(如图像和语音)的神经网络。卷积神经网络通过卷积层、池化层和全连接层等组件来提取图像的特征表示,从而实现图像分类、目标检测和图像生成等任务。

2. 循环神经网络:

循环神经网络是一种可以处理序列数据(如语言和时间序列)的神经网络。循环神经网络通过循环连接来处理序列数据的时序信息,并且可以自动学习到序列数据的上下文信息。循环神经网络在自然语言处理、语音识别和机器翻译等领域有广泛应用。

传统的循环神经网络是全连接的,并不关注数据的前后顺序(如语言的前后顺序或时间序列等)。RNN中每个神经元的输出,不仅仅有上一层神经元的输出,还可能把数据序列前处理神经元的输出作为输入。

因为CNN增加了输入,计算量增加了。为了优化RNN,引入了LSTM(长短期记忆网络),减少计算量,并优化了前后依赖关系。

3. 生成对抗网络:

生成对抗网络是一种由生成器和判别器组成的对抗性模型。生成器通过学习训练数据的分布,生成与训练数据相似的新样本;判别器则通过学习区分真实样本和生成样本。生成对抗网络在图像生成、图像修复和文本生成等任务中取得了重要的突破。

4.3. 学习过程

4.3.1. 步骤

  1. 数据准备:收集和预处理数据,使其适合神经网络训练。这可能包括清理数据、删除异常值和对数据进行编码。
  2. 网络架构:设计神经网络的架构,包括层数、神经元数和连接方式。
  3. 初始化权重和偏差:为网络中的权重和偏差分配初始值。
  4. 前向传播:将输入数据通过网络,计算每个神经元的输出。
  5. 计算损失:将网络输出与预期输出进行比较,计算损失函数的值。
  6. 反向传播:使用链式法则计算损失函数相对于网络权重和偏差的梯度。
  7. 权重更新:使用梯度下降或其他优化算法更新网络权重和偏差,以减少损失。
  8. 重复步骤 4-7:重复前向传播、计算损失和反向传播的步骤,直到损失函数达到最小值或达到预定义的训练迭代次数。

4.3.2. 超参数

超参数(Hyperparameter)是机器学习模型中需要人为设定的参数,它们不是通过训练数据自动学习得到的,而是需要人工指定的参数。训练深度神经网络涉及调整以下超参数:

  • 学习率:控制权重更新的步长。
  • 批大小:每次前向和反向传播处理的数据样本数。
  • 正则化:防止过拟合的技术,例如权重衰减和 dropout。
  • 激活函数:神经元输出的非线性函数。
  • 优化器:用于更新权重的算法,例如梯度下降和 Adam。每次训练完成需要更新权重参数,直到损失函数达到要求,退出训练。

4.3.3. 挑战

训练深度神经网络的挑战

  • 过拟合:网络在训练数据上表现良好,但在新数据上表现不佳。
  • 欠拟合:网络无法从训练数据中学到足够的模式。
  • 梯度消失和爆炸:在反向传播过程中,梯度可能变得非常小或非常大,这会阻碍训练。
  • 局部最小值:优化算法可能收敛到局部最小值,而不是全局最小值。

4.3.4. 最佳实践

训练深度神经网络的最佳实践

  • 使用交叉验证来防止过拟合。
  • 使用正则化技术来减少过拟合。
  • 仔细调整超参数以获得最佳性能。
  • 使用早期停止来防止过拟合。
  • 使用权重初始化技术来防止梯度消失和爆炸。

4.4. 应用

深度学习理论上可以完全替代传统的机器学习算法,只要神经元足够,训练数据足够。传统机器学习能够达到的效果,深度学习都可以达到,并且可以拟合得更好。大力出奇迹在深度学习中完美体现。

4.4.1. 多元线性回归

如下13个自变量(输入),一个因变量(输出),因为是线性回归,只用一个神经元,且不需要激活函数。训练完成生成模型之后,可以保存模型,下次就直接使用模型来进行预测了。

4.4.2. 其他

深度神经网络推荐使用Pytorch。

Github上的代码示例:GitHub - yunjey/pytorch-tutorial: PyTorch Tutorial for Deep Learning Researchers

GitHub - zergtant/pytorch-handbook: pytorch handbook是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门,其中包含的Pytorch教程全部通过测试保证可以成功运行

GitHub - chenyuntc/pytorch-book: PyTorch tutorials and fun projects including neural talk, neural style, poem writing, anime generation (《深度学习框架PyTorch:入门与实战》)

GPU测试平台,可以利用Google的免费在线虚拟机器:https://colab.research.google.com/

或阿里云魔搭社区虚拟机,GPT免费36小时:魔搭社区

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

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

相关文章

智过网:报考中级注册安全工程师需要什么条件?

随着社会的快速发展和科技的日新月异,安全生产问题越来越受到人们的关注。中级注册安全工程师作为专业安全管理人才,其职责与角色日益凸显。那么,想要报考中级注册安全工程师,需要满足哪些条件呢? 首先,报考…

lanqiao.125卡片换位(2016年蓝桥杯C/C++省赛C组)

题目&#xff1a; 语法点&#xff1a; 1. unordered_map<string,int> dist; //存储图的不同状态及不同状态对应的步数 2. unordered_map的相关操作&#xff0c;详细见C中的unordered_map用法详解-CSDN博客 dist.count(x) //来寻找x出现的次数 dist.find(x) //来…

STM32学习和实践笔记(6):自己进行时钟配置的思路

在《STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (d)-CSDN博客》 中&#xff0c;我了解到&#xff0c;在程序执行我们写的main函数之前&#xff0c;实际上先执行了一个汇编语言所写的启动文件&#xff0c;以完成相应的初始…

51单片机学习笔记15 LCD12864(带字库)显示屏使用

51单片机学习笔记15 LCD12864&#xff08;带字库&#xff09;显示屏使用 一、LCD12864简介二、管脚定义三、命令1. 功能能设定2. 清屏指令&#xff08;0x01&#xff09;3. 地址归位4. 进入设定点5. 显示状态开关6. 设定CGRAM地址7. 设定DDRAM地址8. 写资料到RAM9. 读出RAM 四、…

Flink WordCount实践

目录 前提条件 基本准备 批处理API实现WordCount 流处理API实现WordCount 数据源是文件 数据源是socket文本流 打包 提交到集群运行 命令行提交作业 Web UI提交作业 上传代码到gitee 前提条件 Windows安装好jdk8、Maven3、IDEA Linux安装好Flink集群&#xff0c;可…

37-代码测试(下):Go语言其他测试类型及IAM测试介绍

。 Go中的两类测试&#xff1a;单元测试和性能测试。 我就来介绍下Go 语言中的其他测试类型&#xff1a;示例测试、TestMain函数、Mock测试、Fake测试等&#xff0c; 示例测试 示例测试以Example开头&#xff0c;没有输入和返回参数&#xff0c;通常保存在example_test.go…

Verilog实现手表计时

实现手表的计时功能&#xff1a; 1.具有start启动信号、pause暂停信号&#xff0c;可以自定义其触发机制。 2.具有时间更改接口&#xff0c;可以更改时、分、秒。 3.输出时、分、秒。 Verilog设计 模块端口定义&#xff1a; module watch1(input wire clk …

mp4转flv怎么转?电脑怎么把视频转成flv?

MP4&#xff08;MPEG-4 Part 14&#xff09;是一种多媒体容器格式&#xff0c;广泛用于包含视频、音频、字幕等多种数据流。MP4因其高度灵活性、压缩效率和兼容性成为视频领域的主流格式&#xff0c;支持范围涵盖从在线视频到移动设备的各类应用场景。 FLV文件格式的多个优点 …

Linux虚拟内存简介

Linux&#xff0c;像多数现代内核一样&#xff0c;采用了虚拟内存管理技术。该技术利用了大多数程序的一个典型特征&#xff0c;即访问局部性&#xff08;locality of reference&#xff09;&#xff0c;以求高效使用CPU和RAM&#xff08;物理内存&#xff09;资源。大多数程序…

使用MongoDB 构建AI:轻松应对从预测式AI到生成式AI

毫无疑问&#xff0c;如今从生成式AI (GenAI )中获益最大的&#xff0c;是那些早已运用预测式AI (Predictive AI )的组织。 2023年6月&#xff0c;麦肯锡在2023年6月发布的《生成式人工智能的经济潜力》研究中也得出了与此相同的结论。 原因主要有以下几点&#xff1a; 内部文…

SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

HarmonyOS 开发-MpChart运动健康场景实践案例

介绍 MpChart是一个包含各种类型图表的图表库&#xff0c;主要用于业务数据汇总&#xff0c;例如销售数据走势图&#xff0c;股价走势图等场景中使用&#xff0c;方便开发者快速实现图表UI&#xff0c;MpChart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图…

218基于matlab的有限差分法求解泊松方程

基于matlab的有限差分法求解泊松方程&#xff0c;采用SOR超松弛迭代法。模型采用方形区域&#xff0c;划分网格数为100*100&#xff0c;网格数可以很方便的更改。程序已调通&#xff0c;可直接运行。 218有限差分法 泊松方程 SOR超松弛迭代法 - 小红书 (xiaohongshu.com)

react17+antd4 动态渲染导航菜单中的icon

在路由信息对照表中的icon可以有两种形式&#xff1a;一种是组件形式&#xff0c;一种是字符串形式的。 在antd4的Menu.Item和SubMenu中的icon属性的格式为&#xff1a; 1.组件形式 这种方法在渲染时很方便&#xff0c;与antd中的Menu.Item中的icon属性的形式是一致的&#…

第9章 文件和内容管理

思维导图 9.1 引言 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理。它的重点在于保持文件和其他非结构化或半结构化信息的完整性&#xff0c;并使这些信息能够被访问。文件和非结构化内容也应是安全且高质量的。 确保文件和内容…

说说我理解的数据库中的Schema吧

一、SQL标准对schema如何定义&#xff1f; ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合&#xff08;a persistent, named collection of descriptors&#xff09;。 大部分的网上资料定义Schema如下&#xff1a; schema是用来组织和管理数据的一种方式。它…

【攻防世界】mfw(.git文件泄露)

首先进入题目环境&#xff0c;检查页面、页面源代码、以及URL&#xff1a; 发现页面无异常。 使用 dirsearch 扫描网站&#xff0c;检查是否存在可访问的文件或者文件泄露&#xff1a; 发现 可访问界面/templates/ 以及 .git文件泄露&#xff0c;故使用 GItHack 来查看泄露的 …

Visual Studio Code SSH 连接远程服务器

Visual Studio Code通过 SSH 连接远程服务器并实现免密登录&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. **安装插件**&#xff1a;首先&#xff0c;在 VS Code 中安装 "Remote - SSH" 插件。打开 VS Code&#xff0c;点击左侧的扩展图标&#xff0c;搜索…

springboot3整合consul实现服务注册和配置管理快速入门

服务注册&#xff1a; 配置管理&#xff1a; 注册中心的比较&#xff1a; 在微服务的世界中&#xff0c;服务注册是必不可少的。现在比较流行的也就是Consul和Nacos&#xff0c;Zookeeper没有管理界面&#xff0c;一般不建议使用&#xff0c;而Eureka已经处于停更&#xff0…

【VUE】Vue3+Element Plus动态间距处理

目录 1. 动态间距调整1.1 效果演示1.2 代码演示 2. 固定间距2.1 效果演示2.2 代码演示 其他情况 1. 动态间距调整 1.1 效果演示 并行效果 并列效果 1.2 代码演示 <template><div style"margin-bottom: 15px">direction:<el-radio v-model"d…