【人工智能】基础三:深度学习概述、人工神经网络基础

news2024/11/28 19:47:12

文章目录

  • 一. 深度学习
    • 1. 深度学习概念
    • 2. 深度学习原理
    • 3. 深度学习学习方式
    • 4. 深度学习训练方法
  • 二. 人工神经网络基础
    • 1. 神经元感知器模型
    • 2. 神经网络模型
    • 2. 学习方式
    • 3. 学习规则
      • 3.1. 正向传播求误差
      • 3.2. 反向传播求偏导(ing)
    • 4. 激活函数

一. 深度学习

1. 深度学习概念

深度学习的概念来源于人工神经网络(Artificical Nerural Network,ANN),所以又被称为深度神经网络(Deep Neural Network, DNN)。人工神经网络主要使用计算机的计算单元和存储单元模拟人类神经大脑系统中大量的神经细胞(神经元)通过神经纤维传导并相互协同工作的原理。

深度学习通过算法构造多层神经网络,经过多层处理,逐渐将初始的底层特征转换为高层特征表示,再用自学习模型便可完成复杂的分类等学习任务。 因此,可将深度学习理解为深度特征学习或深度表示学习。

典型的深度学习模型又卷积神经网络(Convolutional Neural Network,CNN)、循环神经网路(Recurrent Neural Network,RNN)、长短时记忆神经网络(Long Short-Term Memory,LSTM)
深度置信网络(Deep Belief Network ,DBN)。

 

2. 深度学习原理

传统的机器学习算法需要手工编码特征,这个过程不仅耗时,而且需要较高的专业知识和一定的人工参与才能完成。相比之下,深度学习直接从数据中自动学习各种特征并且进行分类或识别。因此,在解决复杂问题(如目标识别、自然语言处理等)时,传统的机器学习通常把问题分为几块,一个一个地解决再进行组合,但是深度学习则是端到端(end-to-end)的解决。如下图

在这里插入图片描述

具体来说,深度学习与机器学习的不同之处在于:

  1. 强调模型结构的深度,隐藏层一般5、6层,多者甚至十几、几十层。
  2. 明确特征学习的重要性,逐层进行特征变换,将样本在原空间的特征表示变换到一个新的特征空间。与人工构造特征相比,更能刻画丰富的内在信息
    通过设计建立适量的神经元计算节点和多层运算层次结构,选择合适的输入层和输出层,加上网络的学习和调优,从而建立从输入到输出的函数关系,虽然不能100%地找到输入与输出的函数关系,但是可以尽可能地逼近现实的关联关系,进而使用训练成功的网络模型实现对复杂任务处理的自动化需求。

 

3. 深度学习学习方式

根据训练数据有无标签将深度学习的学习方式分为三类,分别是监督学习,无监督学习和半监督学习。

  1. 监督学习
    将训练样本的数据加入到神经网络的输入段,将期望答案和实际输出作差,可以得到误差信号,通过得到的误差信号调整权值大小,一次来优化模型输出。监督学习算法训练含有很多特征的数据集,不过数据集中的样本都有一个标签或目标。监督学习包含随机变量x及其相关联的值或向量y,然后用x预测y,通常是估计p(y|x),例如Iris数据集注明了每个花卉样本属于什么品种,监督学习算法通过研究该数据集,学习如何通过测量结果将样本划分为3个不同品种。

  2. 无监督学习
    不确定数据标签,直接训练数据,模型根据数据特征进行自动学习,无监督学习算法续联含有很多特征的数据集x,在该数据集上学习出有用的结构性质。在深度学习中,通过学习生成数据集的整个概率分布p(x),显式地入概率估计、隐式地入合成或去噪。还有一些其他类型的无监督任务,如聚类将数据集分为相似样本的集合。

  3. 半监督学习
    介于有监督和无监督之间,不需要给定具体的数据标签,但需要对神经网络的输出进行评价,以此来调整网络参数。在半监督学习的框架下,p(x)产生的未标记样本和p(x,y)中的标记样本都用于估计p(y|x)。

 

4. 深度学习训练方法

对深度学习的所有层通过进行训练,复杂度会很高。如果每次只训练一层,偏差就会逐层传递。因此在2006年,Geoffrey Hinten提出了一个训练多层神经网络的有效方法,使原始表示X向上生成的高级表示R和改高级表示R向下生成的X尽可能一致,向上的权重用于"认知",向下的权重用于"生成",通过训练让认知和生成达成一致,也就是保证顶层能正确复原底层的节点。例如顶层的一个节点表示人脸,那么所有人脸的图像应该激活这个节点,并且这个方向向下生成的图像应该能够表现为一个大致的人脸图像。

具体来说,就是第一步逐层构建单层神经元,每次训练一个单层网络;第二步当所有层都训练完成后,使用Wake-Sleep算法进行调优,如下图。

在这里插入图片描述

  1. 使用自下而上的非监督学习。
    采用无标签或有标签数据分层训练各层函数,这一步可以看成无监督训练过程,或者特征学习过程。先用数学学习第一层,学习第一层的参数,在学习并得到N-1层后,将N-1的输出作为第N层的输入,训练第N层,从而得到各层的参数。

  2. 自顶而下的监督学习
    基于第1步得到的各层参数来进一步调整多层模型的参数,这一步 是一个有监督训练过程。第1步类似神经网络的随机初始化初值过程, 由于深度学习的第1步不是随机初始化,而是通过学习输入数据的结构 得到,因而这个初值更接近全局最优,从而能够取得更好的效果,所 以深度学习效果好在很大程度上归功于第1步的特征学习过程。

 

二. 人工神经网络基础

人工神经网络是基于生物学中脑认知神经网络的基本原理,模仿大脑神经系统工作原理所创建的数学模型,它有并行的分布处理能力、高容错性、自我学习等特征。

1. 神经元感知器模型

人工神经网络中最基本的单元叫神经元,又叫感知器,如图所示。它是模拟人脑神经系统的神经元(分析和记忆)树突(感知)轴突(传导)的工作原理,借助计算机的快速计算和存储来实现。

在这里插入图片描述

从上图可以看到,人工神经网络中一个基本的神经元由以下几个部分组成:

  • 输入 ( Input ) : 一个神经元可以接收多个输入 { x 1 , x 2 , . . . , x n ∣ x i ∈ R } \{x_1,x_2,...,x_n|x_i∈R\} {x1,x2,...,xnxiR}
  • 权值(Weight):每个输入都有一个权值 w i ∈ R w_i∈R wiR
  • 偏置值(Bias):b∈R
  • 激活函数(Activate Function):激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数, 从而可以应用到众多非线性模型中。
  • 输出(Output): 神经元输出,该输出可由下面公式计算: y = f { Σ i = 0 n ( w i ∗ x i ) + b } y = f\{ Σ_{i=0}^n(w_i * x_i) +b \} y=f{Σi=0n(wixi)+b}

 

2. 神经网络模型

下图为神经网络的结构模型图,最左边的层叫作输入层(Input Layer),最右边的层叫作输出层(Output Layer)。输入层和输出层之间的层叫作隐藏层(Hidden Layer)。含多个隐藏层的神经网络叫作深度神经网络。

对于拟合任意一个函数而言,浅层神经网络浅而宽,需要大量的神经元,而深层神经网络深而窄,需要更多的层和较 少的神经元。

一般来说深层网络参数更少,更节省资源,但是深层网络并不好训练,需要大量的数据和很好的技巧才能去拟合并训练出好的神经网络。

在这里插入图片描述

 

2. 学习方式

神经网络的学习方式很多,根据有无数据训练可以将其分为3大 类。
(1)有监督学习:将训练样本的数据加入到神经网络的输入端, 将期望答案和实际输出做差,可以得到误差信号,通过误差信号来调 整权值大小,以此来优化模型输出。
(2)无监督学习:首先并不给定标准数据样本,而是直接将网络 置于环境之中,由自身根据数据特征进行自动学习。
(3)半监督学习:输入信息介于有监督和无监督之间,不需要给 定标准数据样本,但需要对网络的输出做出评判,以此来调整网络参 数。

 

3. 学习规则

学习规则是用来修改神经网络的权值和偏置值的过程和方法,其目的是训练网络,更好地拟合应用的需求,从而完成特殊的任务。常见的学习规则有:

  • Hebb学习规则
  • Delta算法及
  • 反向传播算法(Back- propagation,BP)算法

 

BP算法基本思想

  • BP算法是人工神经网络较常采用的学习方法,其基本思想是逐一地由样本集中的样本 ( X k , Y k ) (X_k ,Y_k) (XkYk)计算出实际输出 O k O_k Ok和误差测度 E p E_p Ep,对 w 1 , w 2 , . . . , w n w_1,w_2,...,w_n w1w2...wn权值做调整,重复这个循环,直到误差降至最低。
  • 用输出层的误差调整输出层权值矩阵,并用此误差估计输出层的直接前导层误差,再用输出层前导层误差估计更前一层的误差,如此获得所有其他各层的误差估计,并用这些估计实现对权矩阵的修改,形成将输出端表现出的误差沿着与输入信号相反的方向逐级向输入端传递的链式求解过程。

 

BP算法学习过程:

  • BP算法学习过程应用到深度学习中分为两个子过程:输入数据正向传递子过程和误差数据反向传递子过程,即“正向传播求误差,反向传播求偏导”
  • 完整的学习过程是:对于一个训练样本,将输入正向传播到输出此时产生误差,然后将误差信号反向从输出层传递到输入层,利用该误差信号求出权重修改量 W j i ( h ) W_{ji}^{(h)} Wji(h) ( h表示层数),通过它更新权值 W j i ( h ) W_{ji}^{(h)} Wji(h) ,称为一次迭代过程。当误差或者 W j i ( h ) W_{ji}^{(h)} Wji(h)仍不满足要求时重复上述操作。

下图以三层神经网络模型为例,详细说明BP算法的原理及推导求解过程。

在这里插入图片描述

 

3.1. 正向传播求误差

在这里插入图片描述

至此,完成了从输入层到输出层的数学表达与计算推导。其中, 在初始化计算时,即第一次完成从输入经过隐藏层计算后到输出的权 值 矩阵的初始值,一般根据实际情况采用随机值或者经验值。

 

3.2. 反向传播求偏导(ing)

 

BP算法虽然是经典的深度学习算法,但对于深层网络仍然有许多不足,主要原因是Sigmoid激活函数易出现梯度减小甚至消失,这也是为什么深层卷积神经网络利用ReLU函数代替Sigmoid激活函数的原因。

 

4. 激活函数

激活函数又叫激励函数,主要作用是对神经元所获得的输入进行非线性变换以此反映神经元的非线性特性。常用的激活函数有以下几种类型。

激活函数描述
线性激活函数f(x) = kx + c
k、c为常数,线性函数常用于线性神经网络中
符号激活函数 f ( x ) = { 0 , x < 0 1 , x > = 0 f(x)=\{^{1 , x>=0}_{0, x<0} f(x)={0,x<01,x>=0
Sigmoid激活函数 f ( x ) = 1 / ( 1 + e − x ) f(x)=1/(1+e^{-x}) f(x)=1/(1+ex)
在这里插入图片描述
双曲正切激活函数在这里插入图片描述
高斯激活函数在这里插入图片描述
ReLU激活函数 f ( x ) = { 0 , x < 0 x , x > = 0 f(x)=\{^{x , x>=0}_{0, x<0} f(x)={0,x<0x,x>=0 也可表示为 f(x)=max(0,x)。

 

在神经网络中,ReLU激活函数得到广泛应用,如图5-10所示,尤其在卷积神经网络中,往往不选择Sigmoid或tanh函数而选择ReLU函数,原因有以下几点:
在这里插入图片描述

  1. 代价更小,计算速度更快:与Sigmoid函数必须计算指数和导数比较,ReLU代价小,计算速度更快
  2. 梯度不会丢失:Sigmoid函数导数最大值为1/4,并且链式求导导致梯度越来越小,训练深度神经网络容易导致梯度丢失,但是ReLU函数的导数为1,不会出现梯度下降,以及梯度消失问题,从而更易于训练深层网络。
  3. 较为理想的激活率:有研究表明,人脑在工作时只有大概5%的神经元被激活,而Sigmoid函数大概有50%的神经元被激活,而人工神经网络在理想状态时有15%~30%的激活率,所以ReLU函数在小于0的时候是完全不激活的,所以可以适应理想网络的激活率要求。

当然,没有一种完美的激活函数,不同的神经网络有不同的需求函数,需要根据具体的模型选取合适的激活函数。

 

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

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

相关文章

【环境搭建问题】linux服务器安装conda并创建虚拟环境

1.检查有没有conda 首先看root文件夹下有没有anaconda或者conda 没有的话就要先下载安装conda&#xff1a; https://repo.anaconda.com/archive/index.html 在这个链接下找自己需要的。服务器一般为linux&#xff0c;所以我这里选择的是&#xff1a; 2.安装conda 下载安装…

阳光混合试验的三个指标

户外干燥气候循环系统&#xff08;仿真模拟空气干燥气侯&#xff09;户外湿冷气侯循环系统&#xff08;仿真模拟寒湿和冰冷晚间气侯&#xff09;室内干燥气候耐久度 阳光模拟温湿度试验箱 主要用于汽车及零部件的曝晒试验、如塑料样板、仪表盘、中控屏、方向盘、保险杠等&…

基于 GADF+Swin-CNN-GAM 的高创新电能扰动信号识别模型!

往期精彩内容&#xff1a; 电能质量扰动信号数据介绍与分类-Python实现-CSDN博客 Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(三)基于Transformer…

【计算机毕设论文】基于SpringBoot的诗词管理系统

&#x1f497;博主介绍&#xff1a;✌全平台粉丝5W,高级大厂开发程序员&#x1f603;&#xff0c;博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】小伙伴可以关注我 感兴趣的可以先收藏起来&#xff0c;同学门有不懂的毕设选题&#xff0c;项目以及论文编写等…

轻松入门Linux—CentOS,直接拿捏 —/— <1>

一、什么是Linux Linux是一个开源的操作系统&#xff0c;目前是市面上占有率极高的服务器操作系统&#xff0c;目前其分支有很多。是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统 Linux能运行主要的UNIX工具软件、应用程序和网络协议 Linux支持 32…

小程序开发_05协同工作和发布

一、开发流程 二、权限管理 三、不同成员的权限 四、小程序发布上线的步骤 上传代码--->提交审核-->发布1. 上传代码 提交审核 三、发布上线

文件IO相关作业

1> 使用文件IO完成&#xff0c;将源文件中的所有内容进行加密&#xff08;大写转小写、小写转大写&#xff09;后写入目标文件中 源文件内容不变 #include<myhead.h>int main(int argc, const char *argv[]) {//判断传入的是否是两个文件if(argc!3){write(2,"inp…

期末复习资料——计算机系统基础

第一章 1、下列关于机器字长、指令字长和存储字长的说法中&#xff0c;正确的时_②、③_ ①三者在数值上总是相等的。②三者在数值上可能不相等。③存储字长是存放在一个存储单元中的二进制代码位数。④数据字长就是MDR的位数。 机器字长、指令字长和存储字长&#xff0c;三…

【区块链+绿色低碳】碳低链 | FISCO BCOS应用案例

在碳中和、碳达峰国家战略的号召下&#xff0c;碳中和数字化、协同低碳的发展如火如荼。但是在金融业的实际场景应用中&#xff0c; 存在数据收集效率低、数据核查困难、服务单一等问题&#xff0c;痛点集中为两个&#xff1a;一是数据冗杂&#xff0c;可能会存在数据篡改&…

【python报错已解决】`AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘`

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言&#xff1a; 在数据分析或者数据处理的过程中&#xff0c;我们经常会遇到各种各样的报错信息&#xff0c;这些报错信息往…

【漏洞复现】APP分发签名系统index-uplog.php存在任意文件上传漏洞

漏洞描述 APP分发签名系统index-uplog.php存在任意文件上传漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵…

游戏类App出海广告变现,新手开发者如何选对聚合广告平台?

无论是轻量化小游戏还是中重度游戏&#xff0c;厂商的终极目标都是盈利。从商业化角度来说&#xff0c;单一的变现模式存在一些问题。纯内购驱动的游戏除了少数大竞技品类&#xff0c;大多是为垂直玩家设计&#xff0c;难以扩量。而纯广告变现驱动的游戏&#xff0c;在抗风险方…

所谓有趣的灵魂,实际上就是这个人的信息密度和知识层面,都远高于你!

1. 信息界的“百科全书” 信息密度&#xff1a;大脑里的“硬盘” 我们先来八一八什么是信息密度。想象一下&#xff0c;如果大脑是个硬盘&#xff0c;那么信息密度高的人&#xff0c;硬盘里存的可都是高清大片和无损音乐&#xff0c;随时准备给你来一场视听盛宴。 知识层面&am…

vue3数据结构的渲染01

处理数据&#xff1a; //现有原始数据showCertificateUrl “url01;url02” 使用以下代码将两条通过分号";"分割的url进行处理 const parseUrls () > {urls.value [];// 每次重新赋值前一定要清空之前的旧数据&#xff01;if (!showCertificateUrl.value) {retu…

[前端]解决Iframe即使设置高度100%,但还是显示滚动条scrollbar的问题

前言 好烦,你看看这两个重复的滚动条. 一个是来自iframe,另一个来自父级的div(overflow: auto;) 我已经在css中设置了iframe的height: 100%;border: none;,但无论如何还是显示出了父级的scrollbar 解决 将iframe的display: block;即可. 或者vertical-align: bottom;

安全测试与渗透测试的区别

在这个数字化时代&#xff0c;网络安全如同数字世界的守护神&#xff0c;其重要性不言而喻。而在这场没有硝烟的战争中&#xff0c;安全测试与渗透测试作为两大核心利器&#xff0c;常常被提及却又容易混淆。今天&#xff0c;就让我们揭开它们的神秘面纱&#xff0c;一探二者之…

2024.7.30 作业

1> 使用文件IO完成&#xff0c;将源文件中的所有内容进行加密&#xff08;大写转小写、小写转大写&#xff09;后写入目标文件中&#xff0c;源文件内容不变 #include <myhead.h> int main(int argc,const char *argv[]) {int fd1 -1,fd2 -1;if((fd1 open(".…

【和相同的二元子数组】python刷题记录

R2-前缀和专题 目录 前缀和哈希表 双指针 ps: 第一眼过去&#xff0c;这题应该能用双指针解出来&#xff0c;应该也能用前缀和解题。 前缀和哈希表 适用于 nums[i] 值不固定为 0 和 1 的其他情况 class Solution:def numSubarraysWithSum(self, nums: List[int], goal: i…

Vue入门记录(一)

效果 本文为实现如下前端效果的学习实践记录&#xff1a; 实践 入门的最佳实践我觉得是先去看官网&#xff0c;官网一般都会有快速入门指引。 根据官网的快速上手文档&#xff0c;构建一个新的Vue3TypeScript&#xff0c;查看新建的项目结构&#xff1a; 现在先重点关注comp…

前端科举八股文-手撕代码篇

前端科举八股文-手撕代码篇 手撕排序算法选择排序思路 冒泡排序思路 快速排序思路 手撕bind方法思路解析 手撕js的继承方案构造继承实现原理 原型继承实现原理 组合继承实现原理 寄生组合继承实现原理 手撕instanceOf实现原理 手撕new 操作符手撕防抖实现原理 手撕节流实现原理…