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

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

3天内不再提示

探讨神经网络基本架构:单元/神经元、连接/权重/参数、偏置项

454398 来源:机器之心 作者:机器之心 2020-10-08 00:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

神经网络(NN)几乎可以在每个领域帮助我们用创造性的方式解决问题。本文将介绍神经网络的相关知识。读后你将对神经网络有个大概了解,它是如何工作的?如何创建神经网络?

神经网络的发展历史

神经网络起源于 WarrenMcCulloch 和 Walter Pitts 于 1943 年首次建立的神经网络模型。他们的模型完全基于数学和算法,由于缺乏计算资源,模型无法测试。

后来,在 1958 年,Frank Rosenblatt 创建了第一个可以进行模式识别的模型,改变了现状。即感知器。但是他只提出了 notation 和模型。实际的神经网络模型仍然无法测试,此前的相关研究也较少。

第一批可以测试并具有多个层的神经网络于 1965 年由 Alexey Ivakhnenko 和 Lapa 创建。

之后,由于机器学习模型具有很强可行性,神经网络的研究停滞不前。很多人认为这是因为 Marvin Minsky 和 Seymour Papert 在 1969 年完成的书《感知机》(Perceptrons)导致的。

然而,这个停滞期相对较短。6 年后,即 1975 年,Paul Werbos 提出反向传播,解决了 XOR 问题,并且使神经网络的学习效率更高。

1992 年,最大池化(max-pooling)被提出,这有助于 3D 目标识别,因为它具备平移不变性,对变形具备一定鲁棒性。

2009 年至 2012 年间,JürgenSchmidhuber 研究小组创建的循环神经网络和深度前馈神经网络获得了模式识别和机器学习领域 8 项国际竞赛的冠军。

2011 年,深度学习神经网络开始将卷积层与最大池化层合并,然后将其输出传递给几个全连接层,再传递给输出层。这些被称为卷积神经网络。

在这之后还有更多的研究。

什么是神经网络?

了解神经网络的一个好方法是将它看作复合函数。你输入一些数据,它会输出一些数据。

3 个部分组成了神经网络的的基本架构:

  • 单元/神经元
  • 连接/权重/参数
  • 偏置项

你可以把它们看作建筑物的「砖块」。根据你希望建筑物拥有的功能来安排砖块的位置。水泥是权重。无论权重多大,如果没有足够的砖块,建筑物还是会倒塌。然而,你可以让建筑以最小的精度运行(使用最少的砖块),然后逐步构建架构来解决问题。

我将在后面的章节中更多地讨论权重、偏置项和单元。

单元/神经元

作为神经网络架构三个部分中最不重要的部分,神经元是包含权重和偏置项的函数,等待数据传递给它们。接收数据后,它们执行一些计算,然后使用激活函数将数据限制在一个范围内(多数情况下)。

我们将这些单元想象成一个包含权重和偏置项的盒子。盒子从两端打开。一端接收数据,另一端输出修改后的数据。数据首先进入盒子中,将权重与数据相乘,再向相乘的数据添加偏置项。这是一个单元,也可以被认为是一个函数。该函数与下面这个直线方程类似:

想象一下有多个直线方程,超过 2 个可以促进神经网络中的非线性。从现在开始,你将为同一个数据点(输入)计算多个输出值。这些输出值将被发送到另一个单元,然后神经网络会计算出最终输出值。

权重/参数/连接

作为神经网络最重要的部分,这些(和偏置项)是用神经网络解决问题时必须学习的数值。这就是你现在需要知道的。

偏置项

这些数字代表神经网络认为其在将权重与数据相乘之后应该添加的内容。当然,它们经常出错,但神经网络随后也学习到最佳偏置项。

超参数

超参数必须手动设置。如果将神经网络看作一台机器,那么改变机器行为的 nob 就是神经网络的超参数。

你可以阅读我的另一篇文章(https://towardsdatascience.com/gas-and-nns-6a41f1e8146d),了解如何优化神经网络超参数。

激活函数

也称为映射函数(mapping function)。它们在 x 轴上输入数据,并在有限的范围内(大部分情况下)输出一个值。大多数情况下,它们被用于将单元的较大输出转换成较小的值。你选择的激活函数可以大幅提高或降低神经网络的性能。如果你喜欢,你可以为不同的单元选择不同的激活函数。

以下是一些常见的激活函数:

  • Sigmoid


Sigmoid 函数
  • Tanh


tanh 函数
  • ReLU:修正线性单元


修正线性单元函数
  • Leaky ReLU


Leaky ReLU 函数

这是神经网络在任何问题中都可获得复杂度的原因。增加层(具备单元)可增加神经网络输出的非线性。

每个层都包含一定数量的单元。大多数情况下单元的数量完全取决于创建者。但是,对于一个简单的任务而言,层数过多会增加不必要的复杂性,且在大多数情况下会降低其准确率。反之亦然。

每个神经网络有两层:输入层和输出层。二者之间的层称为隐藏层。下图所示的神经网络包含一个输入层(8 个单元)、一个输出层(4 个单元)和 3 个隐藏层(每层包含 9 个单元)。

深度神经网络

具有两个或更多隐藏层且每层包含大量单元的神经网络称为深度神经网络,它催生了深度学习这一新的学习领域。上图所示神经网络就是这样一个例子。

神经网络学习时发生了什么?

教神经网络解决问题的最常见方式是使用梯度下降。梯度下降相关内容,参见:https://hackernoon.com/gradient-descent-aynk-7cbe95a778da

除梯度下降外,另一种常见的训练神经网络方法是使用反向传播。使用这种方法,神经网络输出层的误差会通过微积分中的链式规则向后传播。这对于没有微积分知识的初学者来说可能会难以理解,但也不要被吓倒,反向传播相关内容,推荐阅读:http://neuralnetworksanddeeplearning.com/chap2.html

训练神经网络有许多注意事项。但对于初学者来说,没有必要在一篇文章中了解全部。

实现细节(如何管理项目中的所有因素)

为了解释如何管理项目中的所有因素,我创建了一个 Jupyter Notebook,包含一个学习 XOR 逻辑门的小型神经网络。Jupyter Notebook 地址:https://github.com/Frixoe/xor-neural-network/blob/master/XOR-Net-Noteboo...

在查看并理解 Notebook 内容后,你应该对如何构建基础神经网络有一个大致的了解。

Notebook 创建的神经网络的训练数据以矩阵排列,这是常见的数据排列方式。不同项目中的矩阵维度可能会有所不同。

大量数据通常分为两类:训练数据(60%)和测试数据(40%)。神经网络先使用训练数据,然后在测试数据上测试网络的准确率。

关于神经网络的更多信息(更多资源链接)

如果你仍然无法理解神经网络,那么推荐以下资源:

YouTube:

Siraj Raval (https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A)

3Blue1Brown (https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw)

The Coding Train (https://www.youtube.com/playlist?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh)

Brandon Rohrer (https://www.youtube.com/channel/UCsBKTrp45lTfHa_p49I2AEQ)

giant_neural_network (https://www.youtube.com/channel/UCrBzGHKmGDcwLFnQGHJ3XYg)

Hugo Larochelle (https://www.youtube.com/channel/UCiDouKcxRmAdc5OeZdiRwAg)

Jabrils (https://www.youtube.com/channel/UCQALLeQPoZdZC4JNUboVEUg)

Luis Serrano (https://www.youtube.com/channel/UCgBncpylJ1kiVaPyP-PZauQ)

Coursera:

Neural Networks for Machine Learning (https://www.coursera.org/learn/neural-networks) by University of Toronto

Deep Learning Specialization (https://www.coursera.org/specializations/deep-learning) by Andrew Ng

Introduction to Deep Learning (https://www.coursera.org/learn/intro-to-deep-learning) by National Research University Higher School of Economics

编辑:hfy


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

    关注

    42

    文章

    4829

    浏览量

    106807
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18927
  • 神经元
    +关注

    关注

    1

    文章

    369

    浏览量

    19110
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    :   神经网络卷积函数   神经网络激活函数   全连接层函数   神经网络池化函数   Softmax 函数   神经网络支持功能
    发表于 10-29 06:08

    脉冲神经元模型的硬件实现

    ;其中配置信息通过 APB 接口配置到神经元状态存储模块和突触存储模块,对神 经核使用的神经元模型参数,突触权重神经元个数等
    发表于 10-24 08:27

    SNN加速器内部神经元数据连接方式

    的数量级,而且生物轴突的延迟和神经元的时间常数比数字电路的传播和转换延迟要大得多,AER 的工作方式和神经网络的特点相吻合,所以受生物启发的神经形态处理器中的NoC或SNN加速器通常使用AER协议来进行
    发表于 10-24 07:34

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    神经元,但却能产生复杂的行为。受此启发,与传统的神经网络相比,LNN旨在通过模拟大脑中神经元之间的动态连接来处理信息,这种网络能够顺序处理数
    的头像 发表于 09-28 10:03 708次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    【「AI芯片:科技探索与AGI愿景」阅读体验】+神经形态计算、类脑芯片

    是 AI芯片发展的重要方向。如果利用超导约瑟夫森结(JJ)来模拟与实时突触电路相连的神经元,神经网络运行的速度要比目前的数字或模拟技术提升几个数量级。 1、超低温类脑芯片 JJ: QPSJ: SNW
    发表于 09-17 16:43

    无刷直流电机单神经元PI控制器的设计

    摘要:研究了一种基于专家系统的单神经元PI控制器,并将其应用于无刷直流电机调速系统中。控制器实现了PI参数的在线调整,在具有PID控制器良好动态性能的同时,减少微分对系统稳态运行时的影响,并较好
    发表于 06-26 13:34

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,将训练好的模型的权重偏置文件以TXT文件格式导出,然后通过python程序将txt文件转化为coe
    的头像 发表于 06-03 15:51 901次阅读
    基于FPGA搭建<b class='flag-5'>神经网络</b>的步骤解析

    BP神经网络网络结构设计原则

    ,仅作为数据输入的接口。输入层的神经元个数通常与输入数据的特征数量相对应。 隐藏层 :对输入信号进行非线性变换,是神经网络的核心部分,负责学习输入与输出之间的复杂映射关系。隐藏层可以有一层或多层,层数和神经元数量根据具体问题而定
    的头像 发表于 02-12 16:41 1257次阅读

    BP神经网络与卷积神经网络的比较

    多层。 每一层都由若干个神经元构成,神经元之间通过权重连接。信号在神经网络中是前向传播的,而误差是反向传播的。 卷积
    的头像 发表于 02-12 15:53 1324次阅读

    BP神经网络的实现步骤详解

    的层数、每层神经元的数量以及激活函数。 初始化权重偏置 : 随机初始化输入层与隐藏层、隐藏层与隐藏层、隐藏层与输出层之间的连接权重,以及各
    的头像 发表于 02-12 15:50 1132次阅读

    什么是BP神经网络的反向传播算法

    神经网络(即反向传播神经网络)的核心,它建立在梯度下降法的基础上,是一种适合于多层神经元网络的学习算法。该算法通过计算每层网络的误差,并将这些误差反向传播到前一层,从而调整
    的头像 发表于 02-12 15:18 1289次阅读

    BP神经网络与深度学习的关系

    ),是一种多层前馈神经网络,它通过反向传播算法进行训练。BP神经网络由输入层、一个或多个隐藏层和输出层组成,通过逐层递减的方式调整网络权重,目的是最小化
    的头像 发表于 02-12 15:15 1358次阅读

    BP神经网络的基本原理

    输入层、隐藏层和输出层组成。其中,输入层负责接收外部输入数据,这些数据随后被传递到隐藏层。隐藏层是BP神经网络的核心部分,它可以通过一层或多层神经元对输入数据进行加权求和,并通过非线性激活函数(如ReLU、sigmoid或tanh)进行处理,从而提取出数据中的特征。最后,
    的头像 发表于 02-12 15:13 1529次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络神经网络由多个神经元组成,神经元之间通过
    的头像 发表于 01-23 13:52 848次阅读

    人工神经网络的原理和多种神经网络架构方法

    所拟合的数学模型的形式受到大脑中神经元连接和行为的启发,最初是为了研究大脑功能而设计的。然而,数据科学中常用的神经网络作为大脑模型已经过时,现在它们只是能够在某些应用中提供最先进性能的机器学习模型。近年来,由于
    的头像 发表于 01-09 10:24 2263次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b><b class='flag-5'>架构</b>方法