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

    文章

    4775

    浏览量

    100915
  • 函数
    +关注

    关注

    3

    文章

    4338

    浏览量

    62770
  • python
    +关注

    关注

    56

    文章

    4800

    浏览量

    84826
收藏 人收藏

    评论

    相关推荐

    如何构建多层神经网络

    构建多层神经网络(MLP, Multi-Layer Perceptron)模型是在机器学习和深度学习领域广泛使用的技术,尤其在处理分类和回归问题时。在本文中,我们将深入探讨如何从头开始
    的头像 发表于 07-19 17:19 927次阅读

    如何编写BP神经网络

    传播过程,即误差从输出层反向传播回输入层,并据此调整网络参数。本文将详细阐述如何编写BP神经网络,包括网络结构设计、前向传播、损失函数计
    的头像 发表于 07-11 16:44 600次阅读

    怎么对神经网络重新训练

    重新训练神经网络复杂的过程,涉及到多个步骤和考虑因素。 引言 神经网络种强大的机器学习模型,广泛应用于图像识别、自然语言处理、语音
    的头像 发表于 07-11 10:25 478次阅读

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

    BP神经网络和人工神经网络(Artificial Neural Networks,简称ANNs)之间的关系与区别,是神经网络领域中基础且
    的头像 发表于 07-10 15:20 1183次阅读

    rnn是递归神经网络还是循环神经网络

    RNN(Recurrent Neural Network)是循环神经网络,而非递归神经网络。循环神经网络种具有时间序列特性的神经网络,能
    的头像 发表于 07-05 09:52 599次阅读

    递归神经网络与循环神经网络样吗

    神经网络种基于树结构的神经网络模型,它通过递归地将输入数据分解为更小的子问题来处理序列数据。RvNN的核心思想是将复杂的序列问题
    的头像 发表于 07-05 09:28 922次阅读

    递归神经网络是循环神经网络

    递归神经网络(Recurrent Neural Network,简称RNN)和循环神经网络(Recurrent Neural Network,简称RNN)实际上是同一个概念,只是不同的翻译方式
    的头像 发表于 07-04 14:54 813次阅读

    循环神经网络和卷积神经网络的区别

    结构。它们在处理不同类型的数据和解决不同问题时具有各自的优势和特点。本文将从多个方面比较循环神经网络和卷积神经网络的区别。 基本概念 循环神经网络种具有循环连接的
    的头像 发表于 07-04 14:24 1357次阅读

    循环神经网络和递归神经网络的区别

    处理序列数据方面具有显著的优势,但它们在结构和工作原理上存在些关键的区别。 循环神经网络(RNN) 1.1 RNN的结构 循环神经网络种具有循环连接的
    的头像 发表于 07-04 14:19 954次阅读

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

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

    反向传播神经网络和bp神经网络的区别

    反向传播神经网络(Backpropagation Neural Network,简称BP神经网络)是种多层前馈神经网络,它通过反向传播算法来调整
    的头像 发表于 07-03 11:00 831次阅读

    bp神经网络是深度神经网络

    BP神经网络(Backpropagation Neural Network)是种常见的前馈神经网络,它使用反向传播算法来训练网络。虽然BP神经网络
    的头像 发表于 07-03 10:14 885次阅读

    bp神经网络和卷积神经网络区别是什么

    结构、原理、应用场景等方面都存在定的差异。以下是对这两种神经网络的比较: 基本结构 BP神经网络种多层前馈神经网络,由输入层、隐藏层和
    的头像 发表于 07-03 10:12 1258次阅读

    卷积神经网络和bp神经网络的区别

    不同的神经网络模型,它们在结构、原理、应用等方面都存在定的差异。本文将从多个方面对这两种神经网络进行详细的比较和分析。 引言 神经网络
    的头像 发表于 07-02 14:24 4404次阅读

    建立神经网络模型的三步骤

    建立神经网络模型是复杂的过程,涉及到多个步骤和细节。以下是对建立神经网络模型的三
    的头像 发表于 07-02 11:20 1028次阅读