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

    文章

    4842

    浏览量

    108178
  • 函数
    +关注

    关注

    3

    文章

    4422

    浏览量

    67850
  • python
    +关注

    关注

    58

    文章

    4885

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么 VisionFive V1 板上的 JH7100 中并存 NVDLA 引擎和神经网络引擎?

    我想知道为什么 VisionFive V1 板上的 JH7100 中并存 NVDLA 引擎和神经网络引擎,请问?您能否举些关于他们的用例的例子?
    发表于 03-25 06:01

    神经网络的初步认识

    日常生活中的智能应用都离不开深度学习,而深度学习则依赖于神经网络的实现。什么是神经网络神经网络的核心思想是模仿生物神经系统的结构,特别是大脑中神经
    的头像 发表于 12-17 15:05 460次阅读
    <b class='flag-5'>神经网络</b>的初步认识

    自动驾驶中常提的卷积神经网络啥?

    在自动驾驶领域,经常会听到卷积神经网络技术。卷积神经网络,简称为CNN,是种专门用来处理网格状数据(比如图像)的深度学习模型。CNN在图像处理中尤其常见,因为图像本身就可以看作是由像素排列成的二维网格。
    的头像 发表于 11-19 18:15 2249次阅读
    自动驾驶中常提的卷积<b class='flag-5'>神经网络</b>是<b class='flag-5'>个</b>啥?

    直播预约 |开源芯片系列讲座第30期:“芯”计划——从零开始设计自己的RISC-V处理器芯片

    鹭岛论坛开源芯片系列讲座第30期「“芯”计划从零开始设计自己的RISC-V处理器芯片」11月17日(周三)20:00精彩开播期待与您云相聚,共襄学术盛宴!|直播信息报告题目“
    的头像 发表于 11-10 12:03 1143次阅读
    直播预约 |开源芯片系列讲座第30期:“<b class='flag-5'>一</b>生<b class='flag-5'>一</b>芯”计划——<b class='flag-5'>从零开始</b>设计自己的RISC-V处理器芯片

    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

    CICC2033神经网络部署相关操作

    在完成神经网络量化后,需要将神经网络部署到硬件加速器上。首先需要将所有权重数据以及输入数据导入到存储器内。 在仿真环境下,可将其存于文件,并在 Verilog 代码中通过 read
    发表于 10-20 08:00

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

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

    神经网络的并行计算与加速技术

    随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度慢、训练时间长等
    的头像 发表于 09-17 13:31 1298次阅读
    <b class='flag-5'>神经网络</b>的并行计算与加速技术

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

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

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

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

    神经网络专家系统在电机故障诊断中的应用

    的诊断误差。仿真结果验证了该算法的有效性。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:神经网络专家系统在电机故障诊断中的应用.pdf【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第
    发表于 06-16 22:09

    神经网络RAS在异步电机转速估计中的仿真研究

    ,在定程度上扩展了转速估计范围。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:神经网络RAS在异步电机转速估计中的仿真研究.pdf【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权
    发表于 06-16 21:54

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

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