首页 > 其他分享 >神经网络入门篇:详解计算一个神经网络的输出(Computing a Neural Network's output)

神经网络入门篇:详解计算一个神经网络的输出(Computing a Neural Network's output)

时间:2023-11-10 10:25:36浏览次数:48  
标签:... Network Computing 神经网络 输出 计算 array sigma

一个神经网络的输出

首先,回顾下只有一个隐藏层的简单两层神经网络结构

图1.3.1

其中,\(x\)表示输入特征,\(a\)表示每个神经元的输出,\(W\)表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。

神经网络的计算

关于神经网络是怎么计算的,从之前提及的逻辑回归开始,如下图所示。用圆圈表示神经网络的计算单元,逻辑回归的计算有两个步骤,首先按步骤计算出\(z\),然后在第二步中以sigmoid函数为激活函数计算\(z\)(得出\(a\)),一个神经网络只是这样子做了好多次重复计算。

图1.3.2

回到两层的神经网络,从隐藏层的第一个神经元开始计算,如上图第一个最上面的箭头所指。从上图可以看出,输入与逻辑回归相似,这个神经元的计算与逻辑回归一样分为两步,小圆圈代表了计算的两个步骤。

第一步,计算\(z^{[1]}_1,z^{[1]}_1 = w^{[1]T}_1x + b^{[1]}_1\)。

第二步,通过激活函数计算\(a^{[1]}_1,a^{[1]}_1 = \sigma(z^{[1]}_1)\)。

隐藏层的第二个以及后面两个神经元的计算过程一样,只是注意符号表示不同,最终分别得到\(a^{[1]}_2、a^{[1]}_3、a^{[1]}_4\),详细结果见下:

\(z^{[1]}_1 = w^{[1]T}_1x + b^{[1]}_1, a^{[1]}_1 = \sigma(z^{[1]}_1)\)

\(z^{[1]}_2 = w^{[1]T}_2x + b^{[1]}_2, a^{[1]}_2 = \sigma(z^{[1]}_2)\)

\(z^{[1]}_3 = w^{[1]T}_3x + b^{[1]}_3, a^{[1]}_3 = \sigma(z^{[1]}_3)\)

\(z^{[1]}_4 = w^{[1]T}_4x + b^{[1]}_4, a^{[1]}_4 = \sigma(z^{[1]}_4)\)

向量化计算
如果执行神经网络的程序,用for循环来做这些看起来真的很低效。所以接下来要做的就是把这四个等式向量化。向量化的过程是将神经网络中的一层神经元参数纵向堆积起来,例如隐藏层中的\(w\)纵向堆积起来变成一个\((4,3)\)的矩阵,用符号\(W^{[1]}\)表示。另一个看待这个的方法是有四个逻辑回归单元,且每一个逻辑回归单元都有相对应的参数——向量\(w\),把这四个向量堆积在一起,会得出这4×3的矩阵。
因此,
公式1.8:
\(z^{[n]} = w^{[n]}x + b^{[n]}\)

公式1.9:

\(a^{[n]}=\sigma(z^{[n]})\)

详细过程见下:
公式1.10:

\[a^{[1]} = \left[ \begin{array}{c} a^{[1]}_{1}\\ a^{[1]}_{2}\\ a^{[1]}_{3}\\ a^{[1]}_{4} \end{array} \right] = \sigma(z^{[1]}) \]

公式1.11:

\[\left[ \begin{array}{c} z^{[1]}_{1}\\ z^{[1]}_{2}\\ z^{[1]}_{3}\\ z^{[1]}_{4}\\ \end{array} \right] = \overbrace{ \left[ \begin{array}{c} ...W^{[1]T}_{1}...\\ ...W^{[1]T}_{2}...\\ ...W^{[1]T}_{3}...\\ ...W^{[1]T}_{4}... \end{array} \right] }^{W^{[1]}} * \overbrace{ \left[ \begin{array}{c} x_1\\ x_2\\ x_3\\ \end{array} \right] }^{input} + \overbrace{ \left[ \begin{array}{c} b^{[1]}_1\\ b^{[1]}_2\\ b^{[1]}_3\\ b^{[1]}_4\\ \end{array} \right] }^{b^{[1]}} \]

对于神经网络的第一层,给予一个输入\(x\),得到\(a^{[1]}\),\(x\)可以表示为\(a^{[0]}\)。通过相似的衍生会发现,后一层的表示同样可以写成类似的形式,得到\(a^{[2]}\),\(\hat{y} = a^{[2]}\),具体过程见公式1.8、1.9。

图1.3.3

如上图左半部分所示为神经网络,把网络左边部分盖住先忽略,那么最后的输出单元就相当于一个逻辑回归的计算单元。当有一个包含一层隐藏层的神经网络,需要去实现以计算得到输出的是右边的四个等式,并且可以看成是一个向量化的计算过程,计算出隐藏层的四个逻辑回归单元和整个隐藏层的输出结果,如果编程实现需要的也只是这四行代码。

总结
通过本篇博客,读者应该可以能够根据给出的一个单独的输入特征向量,运用四行代码计算出一个简单神经网络的输出。接下来将了解的是如何一次能够计算出不止一个样本的神经网络输出,而是能一次性计算整个训练集的输出。

标签:...,Network,Computing,神经网络,输出,计算,array,sigma
From: https://www.cnblogs.com/oten/p/17823480.html

相关文章

  • ACMP: 图神经网络中具有吸引力和排斥力的Allen-Cahn信息传递
    ACMP:Allen-CahnMessagePassingwithAttractiveandRepulsiveForcesforGraphNeuralNetworksICLR2023Abstract​ 神经信息传递是图结构数据的基本特征提取单元,考虑到网络传播中相邻节点的特征,从一层到下一层。我们用一个具有吸引力和排斥力的相互作用的粒子系统以及......
  • 神经网络入门篇:详解神经网络概述和表示
    神经网络概述(NeuralNetworkOverview)先开始快速浏览一下如何实现神经网络。上篇博客了解了逻辑回归,了解了这个模型(见图1.1.1)如何与下面公式1.1建立联系。图1.1.1:公式1.1:\[\left. \begin{array}{l} x\\ w\\ b \end{array} \right\} \implies{z={w}^Tx+b}\]如上所......
  • [论文阅读] [SAGAN] Self-Attention Generative Adversarial Networks
    Self-AttentionGenerativeAdversarialNetworks(mlr.press)ZhangH,GoodfellowI,MetaxasD,etal.Self-attentiongenerativeadversarialnetworks[C]//Internationalconferenceonmachinelearning.PMLR,2019:7354-7363.引用:4501原作者代码:brain-research/self-......
  • geonetwork源码编译与开发入门说明
    本文介绍geonetwork源码编译及简单的开发修改。本文包括源码调试的细节,主要给没怎么接触过java又想调试修改部分java代码的提供一定帮助,比如控制器或修改业务逻辑中的增删改操作等本文使用环境:操作系统:Windows11JDK版本:jdk-8u381-windows-x64.exeMaven版本:apache-maven-3.9.......
  • 机器学习——深度卷积神经网络AlexNet
    AlexNet相对于LeNet的主要优势包括:1.更深的网络结构AlexNet有8层结构,而LeNet只有5层。网络更加深入有利于学习更抽象的高级特征。2.使用ReLU激活函数AlexNet使用ReLU激活函数,避免梯度消失问题,使得深层网络的训练更加容易。3.引入Dropout操作AlexNet在全连接层使用Dro......
  • 整理《DQNViz: A Visual Analytics Approach to Understand Deep Q-Networks》
    DQNViz:AVisualAnalyticsApproachtoUnderstandDeepQ-Networks论文/强化学习可视化摘要打算研究深度强化学习方向,整理最近的一篇2019年的论文,作为总结思考!论文介绍该论文是一篇2019年,有关基于可视化进行强化学习可解释的文章。一作是JunpengWang,作者主要研究领......
  • [论文阅读] [SNGAN] Spectral Normalization for Generative Adversarial Networks
    1802.05957.pdf(arxiv.org)MiyatoT,KataokaT,KoyamaM,etal.Spectralnormalizationforgenerativeadversarialnetworks[J].arXivpreprintarXiv:1802.05957,2018.生成式对抗网络的频谱归一化,相比于WGAN-GP在激进的学习率和β1&β2下表现更好引用:4453代码:https:......
  • 神经网络基础篇:关于 python_numpy 向量的说明(A note on python or numpy vectors)
    关于python_numpy向量的说明主要讲Python中的numpy一维数组的特性,以及与行向量或列向量的区别。并说一下在实际应用中的一些小技巧,去避免在coding中由于这些特性而导致的bugPython的特性允许使用广播(broadcasting)功能,这是Python的numpy程序语言库中最灵活的地方。而本人认为......
  • 神经网络基础篇:Python 中的广播(Broadcasting in Python)
    Python中的广播这是一个不同食物(每100g)中不同营养成分的卡路里含量表格,表格为3行4列,列表示不同的食物种类,从左至右依次为苹果,牛肉,鸡蛋,土豆。行表示不同的营养成分,从上到下依次为碳水化合物,蛋白质,脂肪。那么,现在想要计算不同食物中不同营养成分中的卡路里百分比。现在计算苹......
  • 神经网络基础篇:详解向量化逻辑回归(Vectorizing Logistic Regression)
    向量化逻辑回归讨论如何实现逻辑回归的向量化计算。这样就能处理整个数据集,甚至不会用一个明确的for循环就能实现对于整个数据集梯度下降算法的优化首先回顾一下逻辑回归的前向传播步骤。所以,如果有\(m\)个训练样本,然后对第一个样本进行预测,需要这样计算。计算\(z\),正在使......