0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深入了解神经网络

人工智能君 来源:人工智能君 作者:人工智能君 2022-07-08 10:22 次阅读

本章将介绍用于解决实际问题的深度学习架构的不同模块。前一章使用PyTorch的低级操作构建了如网络架构、损失函数和优化器这些模块。本章将介绍用于解决真实问题的神经网络的一些重要组件,以及PyTorch如何通过提供大量高级函数来抽象出复杂度。本章还将介绍用于解决真实问题的算法,如回归、二分类、多类别分类等。
本章将讨论如下主题:
详解神经网络的不同构成组件;
探究PyTorch中用于构建深度学习架构的高级功能;
应用深度学习解决实际的图像分类问题。
3.1详解神经网络的组成部分
上一章已经介绍了训练深度学习算法需要的几个步骤。
1.构建数据管道。
2.构建网络架构。
3.使用损失函数评估架构。
4.使用优化算法优化网络架构的权重。
上一章中的网络由使用PyTorch数值运算构建的简单线性模型组成。尽管使用数值运算为玩具性质的问题搭建神经架构很简单,但当需要构建解决不同领域的复杂问题时,如计算机视觉和自然语言处理,构建一个架构就迅速变得复杂起来。大多数深度学习框架,如PyTorch、TensorFlow和Apache MXNet,都提供了抽象出很多复杂度的高级功能。这些深度学习框架的高级功能称为层(layer)。它们接收输入数据,进行如同在前面一章看到的各种变换,并输出数据。解决真实问题的深度学习架构通常由1~150个层组成,有时甚至更多。抽象出低层的运算并训练深度学习算法的过程如图3.1所示。

poYBAGLHlGaAeEG8AAD5hFaFo4k373.png

图3.1
3.1.1层——神经网络的基本组成
在本章的剩余部分,我们会见到各种不同类型的层。首先,先了解其中最重要的一种层:线性层,它就是我们前面讲过的网络层结构。线性层应用了线性变换:
Y=Wx+b
线性层之所以强大,是因为前一章所讲的功能都可以写成单一的代码行,如下所示。
上述代码中的myLayer层,接受大小为10的张量作为输入,并在应用线性变换后输出一个大小为5的张量。下面是一个简单例子的实现:
可以使用属性weights和bias访问层的可训练参数
线性层在不同的框架中使用的名称有所不同,有的称为dense层,有的称为全连接层(fully connected layer)。用于解决真实问题的深度学习架构通常包含不止一个层。在PyTorch中,可以用多种方式实现。
一个简单的方法是把一层的输出传入给另一层:
每一层都有自己的学习参数,在多个层的架构中,每层都学习出它本层一定的模式,其后的层将基于前一层学习出的模式构建。把线性层简单堆叠在一起是有问题的,因为它们不能学习到简单线性表示以外的新东西。我们通过一个简单的例子看一下,为什么把线性层堆叠在一起的做法并不合理。
假设有具有如下权重的两个线性层:
层 权重
Layer1 3.0
Layer2 2.0
以上包含两个不同层的架构可以简单表示为带有另一不同层的单层。因此,只是堆叠多个线性层并不能帮助我们的算法学习任何新东西。有时,这可能不太容易理解,我们可以用下面的数学公式对架构进行可视化:
Y= 2(3X1) -2Linear layers
Y= 6(X1) -1Linear layers
为解决这一问题,相较于只是专注于线性关系,我们可以使用不同的非线性函数,帮助学习不同的关系。
深度学习中有很多不同的非线性函数。PyTorch以层的形式提供了这些非线性功能,因为可以采用线性层中相同的方式使用它们。
一些流行的非线性函数如下所示:
sigmoid
tanh
ReLU
Leaky ReLU
3.1.2非线性激活函数
非线性激活函数是获取输入,并对其应用数学变换从而生成输出的函数。我们在实战中可能遇到数个非线性操作。下面会讲解其中几个常用的非线性激活函数。
1.sigmoid
sigmoid激活函数的数学定义很简单,如下:

pYYBAGLHlImAORw5AAAcERtbSOY338.png

简单来说,sigmoid函数以实数作为输入,并以一个0到1之间的数值作为输出。对于一个极大的负值,它返回的值接近于0,而对于一个极大的正值,它返回的值接近于1。图3.2所示为sigmoid函数不同的输出。

poYBAGLHlHeAc0KjAABJ_t7RiYQ215.png

图3.2
sigmoid函数曾一度被不同的架构使用,但由于存在一个主要弊端,因此最近已经不太常用了。当sigmoid函数的输出值接近于0或1时,sigmoid函数前一层的梯度接近于0,由于前一层的学习参数的梯度接近于0,使得权重不能经常调整,从而产生了无效神经元。
2.tanh
非线性函数tanh将实数值输出为-1到1之间的值。当tanh的输出极值接近-1和1时,也面临梯度饱和的问题。不过,因为tanh的输出是以0为中心的,所以比sigmoid更受偏爱,如图3.3所示。

pYYBAGLHlJ2AL8RjAABLvvoiKWw943.png

图3.3
3.ReLU
近年来ReLU变得很受欢迎,我们几乎可以在任意的现代架构中找到ReLU或其某一变体的身影。它的数学公式很简单:
f(x)=max(0,x)
简单来说,ReLU把所有负值取作0,正值保持不变。可以对ReLU函数进行可视化,如图3.4所示。

poYBAGLHlKeAI2nYAABHxGJ09ns971.png

图3.4
使用ReLU函数的一些好处和弊端如下。
有助于优化器更快地找到正确的权重集合。从技术上讲,它使随机梯度下降收敛得更快。
计算成本低,因为只是判断了阈值,并未计算任何类似于sigmoid或tangent函数计算的内容。
ReLU有一个缺点,即当一个很大的梯度进行反向传播时,流经的神经元经常会变得无效,这些神经元称为无效神经元,可以通过谨慎选择学习率来控制。我们将在第4章中讨论调整学习率的不同方式时,了解如何选择学习率。
4.Leaky ReLU
Leaky ReLU尝试解决一个问题死角,它不再将饱和度置为0,而是设为一个非常小的数值,如0.001。对某些用例,这一激活函数提供了相较于其他激活函数更优异的性能,但它不是连续的。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4762

    浏览量

    100522
  • 人工智能
    +关注

    关注

    1791

    文章

    46830

    浏览量

    237480
收藏 人收藏

    评论

    相关推荐

    神经网络教程(李亚非)

      第1章 概述  1.1 人工神经网络研究与发展  1.2 生物神经元  1.3 人工神经网络的构成  第2章人工神经网络基本模型  2.1 MP模型  2.2 感知器模型  2.3
    发表于 03-20 11:32

    labview BP神经网络的实现

    是classes(层级吗?),希望有前辈能够详细的帮我讲解下这个范例!!!谢谢!!!!(本人已对BP神经网络的理论知识有了了解
    发表于 02-22 16:08

    卷积神经网络如何使用

    卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
    发表于 07-17 07:21

    【案例分享】ART神经网络与SOM神经网络

    今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。首先ART神经网络是竞争学习的一个代表,
    发表于 07-21 04:30

    人工神经网络实现方法有哪些?

    人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。那有哪些办法能实现人工神经
    发表于 08-01 08:06

    卷积神经网络原理及发展过程

    Top100论文导读:深入理解卷积神经网络CNN(Part Ⅰ)
    发表于 09-06 17:25

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测
    发表于 07-12 08:02

    基于BP神经网络的PID控制

    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。神经网络具有任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。利用BP
    发表于 09-07 07:43

    神经网络移植到STM32的方法

    问题,一个是神经网络的移植,另一个是STM32的计算速度。神经网络的移植网络采用的是最简单的BP神经网络,基本原理可以自己去了解一下,大概就
    发表于 01-11 06:20

    迁移学习

    神经网络训练方法卷积神经网络介绍经典网络结构介绍章节目标:深入了解神经网络的组成、训练和实现,掌握深度空间特征分布等关键概念,为深度迁移学习
    发表于 04-21 15:15

    机器学习简介与经典机器学习算法人才培养

    神经网络训练方法卷积神经网络介绍经典网络结构介绍章节目标:深入了解神经网络的组成、训练和实现,掌握深度空间特征分布等关键概念,为深度迁移学习
    发表于 04-28 18:56

    卷积神经网络CNN架构分析-LeNet

    对于神经网络和卷积有了粗浅的了解,关于CNN 卷积神经网络,需要总结深入的知识有很多:人工神经网络 ANN卷积
    发表于 11-16 13:28 2750次阅读
    卷积<b class='flag-5'>神经网络</b>CNN架构分析-LeNet

    带你了解深入深度学习的核心:神经网络

    深度学习和人工智能是 2017 年的热词;2018 年,这两个词愈发火热,但也更加容易混淆。我们将深入深度学习的核心,也就是神经网络
    的头像 发表于 04-02 09:47 9786次阅读
    带你<b class='flag-5'>了解</b><b class='flag-5'>深入</b>深度学习的核心:<b class='flag-5'>神经网络</b>

    深度神经网络与基本神经网络的区别

    在探讨深度神经网络(Deep Neural Networks, DNNs)与基本神经网络(通常指传统神经网络或前向神经网络)的区别时,我们需要从多个维度进行
    的头像 发表于 07-04 13:20 658次阅读

    BP神经网络和人工神经网络的区别

    BP神经网络和人工神经网络(Artificial Neural Networks,简称ANNs)之间的关系与区别,是神经网络领域中一个基础且重要的话题。本文将从定义、结构、算法、应用及未来发展等多个方面,详细阐述BP
    的头像 发表于 07-10 15:20 810次阅读