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

    文章

    4814

    浏览量

    104077
  • 人工智能
    +关注

    关注

    1809

    文章

    49160

    浏览量

    250698
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    神经网络教程(李亚非)

      第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 ?3001次阅读
    卷积<b class='flag-5'>神经网络</b>CNN架构分析-LeNet

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

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

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

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

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

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