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

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

3天内不再提示

从零开始建立一个神经网络

倩倩 来源:AI中国 2020-04-17 15:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

动机:为了更好的理解深度学习,作者决定从零开始建立一个神经网络,而不是像TensorFlow这样的深度学习库。相信理解神经网络的内部工作对于任何有抱负的数据科学家来说都是很重要的。

什么是神经网络?

大多数介绍神经网络的文章在描述它们时会涉及到大脑类比,在不深入研究大脑类比的情况下,将神经网络简单描述为将固定数值映射到期望输出的数学函数理解起来更容易。

神经网络由以下部分组成:

输入层,x

任意数量的隐藏层

输出层,?

每层W和B之间的一组权重和偏差

为每个隐藏层选择激活函数σ。在本教程中,我们将使用Sigmoid激活函数。

下图显示了2层神经网络的体系结构(请注意,在计算神经网络中的层数时通常会排除输入层)

2层神经网络的体系结构

Python创建一个神经网络类很容易。

神经网络训练

简单的2层神经网络的输出是:

您可能会注意到,在上面的等式中,权重W和偏差b是影响?的唯一变量。

当然,权重和偏差的正确度决定了预测的准确性。从输入数据中微调权重和偏差的过程称为神经网络训练。

训练过程的每次迭代包含以下步骤:

计算预测输出?,称为前馈

更新权重和偏差,称为反向传播

下图为过程顺序图。

前馈

正如我们在上面的顺序图中看到的,前馈只是一个简单的演算,对于基本的2层神经网络,神经网络的输出是:

可以在python代码中添加一个前馈函数来做到这一点。简单起见,使假设偏差为0。

然而,仍然需要一种方法来评估我们预测达到什么程度,损失函数可以做到这一点。

损失函数

损失函数有很多种,问题的性质决定该选择哪种损失函数。在本教程中,作者将使用一个简单的sqaures偏差作为损失函数。

也就是说,平方和误差仅仅是每个预测值和实际值之差的平均值。因为差值被平方,所以要测量差值的绝对值。

作者的训练目标是找到最佳的权重和偏差集合,以最大限度地减少损失函数。

反向传播

现在作者已经测量了预测误差,需要找到一种方法来传播误差,并更新权重和偏差。

为了适当的调整权重和偏差,需要知道损失函数关于权重和偏差的导数。

可以从演算中得知,函数的导数就是函数的斜率。

梯度下降算法

如果有导数,可以简单地通过增加/减少更新权重和偏差(参见上图)。这被称为梯度下降。

然而,我们不能直接计算损失函数的权重和偏差,因为损失函数的方程不包含权重和偏差。因此,我们需要链式规则来计算它。

链式规则用于计算损失函数相对于权重的导数。简单起见,只显示了假设1层神经网络的偏导数

得到相对于权重的损失函数的导数(斜率),以便适当调整权重。

现在,将反向传播函数添加到Python代码中。

为了深入理解演算的应用和反向传播中的链式规则,作者强烈推荐3Blue1Brown撰写教程。

结合在一起

现在已经有了完整的python代码来做前馈和反向传播,将神经网络应用于一个例子上,来看看它的完成度。

神经网络应该学习理想的权重集合来表示这个函数。注意,通过检查来计算权重并不是不重要的。

来看看训练神经网络进行1500次迭代后会发生什么。查看下面每个迭代图的损失,可以清楚地看到损耗单调递减到最小。这与之前的梯度下降算法一致。

1500次迭代后神经网络的最终预测(输出)。

从上图可以看出前馈和后向传播算法成功地训练了神经网络,并且预测与实际值相差不大。

请注意,预测和实际值之间可以存在细微的差异。因为它可以防止过拟合,使神经网络更好地归纳看不见的数据。

下一步是什么?

幸运的是,关于神经网络和深度学习还有很多需要了解的内容。例如:

除了Sigmoid函数,还可以使用哪些激活函数?

训练神经网络时的学习率

利用卷积进行图像分类任务

最后的想法

作者从头开始学习了神经网络。

尽管TensorFlow和Keras等深度学习库可以在不完全了解神经网络的内部工作的情况下轻松构建深度网络,但有抱负的数据科学家可以更深入地了解神经网络。

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

    关注

    42

    文章

    4829

    浏览量

    106866
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66894
  • python
    +关注

    关注

    57

    文章

    4859

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是组高效的神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    从零开始利用NMSIS库搭建神经网络

    环境:Vivado2021.1、NucleiStudio_IDE_202102-win64 内容:从零开始利用NMSIS库搭建神经网络,这节主讲基本的NMSIS库卷积函数的解读。
    发表于 10-24 13:47

    在Ubuntu20.04系统中训练神经网络模型的些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练手写数字识
    发表于 10-22 07:03

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

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的
    的头像 发表于 09-28 10:03 723次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    无刷电机小波神经网络转子位置检测方法的研究

    摘要:论文通过对无刷电机数学模型的推导,得出转角:与三相相电压之间存在映射关系,因此构建了以三相相电压为输人,转角为输出的小波神经网络来实现转角预测,并采用改进遗传算法来训练网络
    发表于 06-25 13:06

    低功耗+AI识别:基于树莓派的 LoRa 神经网络安防系统!

    这篇博客展示了如何使用树莓派上的神经网络USB插件来检测或“推断”一个人的位置,从而构建安全系统。Arduino型接收器从零开始构建,通
    的头像 发表于 06-24 16:24 2177次阅读
    低功耗+AI识别:基于树莓派的 LoRa <b class='flag-5'>神经网络</b>安防系统!

    从零开始学电源

    从零开始学电源···内部篇 从零开始学电源---------内部篇 (写这篇文的着眼点就在“从零开始”上,所以涉及到些词汇和技术的时候,我会采取戏说的方式。网上电源高手甚多,且科班出
    发表于 04-07 15:30

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

    BP神经网络与卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 、结构特点 BP神经网络 : BP神经网络
    的头像 发表于 02-12 15:53 1361次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为种常用的机器学习模型,具有显著的优点,同时也存在些不容忽视的缺点。以下是对BP神经网络优缺点的分析
    的头像 发表于 02-12 15:36 1624次阅读

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

    神经网络(即反向传播神经网络)的核心,它建立在梯度下降法的基础上,是种适合于多层神经元网络的学习算法。该算法通过计算每层
    的头像 发表于 02-12 15:18 1314次阅读

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

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

    BP神经网络的基本原理

    BP神经网络(Back Propagation Neural Network)的基本原理涉及前向传播和反向传播两核心过程。以下是关于BP神经网络基本原理的介绍:
    的头像 发表于 02-12 15:13 1557次阅读

    BP神经网络在图像识别中的应用

    传播神经网络(Back Propagation Neural Network),是种多层前馈神经网络,主要通过反向传播算法进行学习。它通常包括输入层、
    的头像 发表于 02-12 15:12 1207次阅读

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

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

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

    在上篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工
    的头像 发表于 01-09 10:24 2282次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法