首页 > 其他分享 >神经网络入门篇:详解神经网络概述和表示

神经网络入门篇:详解神经网络概述和表示

时间:2023-11-09 12:57:58浏览次数:37  
标签:implies 入门篇 神经网络 详解 计算 array 隐藏 输入

神经网络概述(Neural Network Overview)

先开始快速浏览一下如何实现神经网络。上篇博客了解了逻辑回归,了解了这个模型(见图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} \]

如上所示,首先需要输入特征\(x\),参数\(w\)和\(b\),通过这些就可以计算出\(z\),公式1.2:

\[\left. \begin{array}{l} x\\ w\\ b \end{array} \right\} \implies{z={w}^Tx+b} \implies{a = \sigma(z)}\\ \implies{{L}(a,y)} \]

接下来使用\(z\)就可以计算出\(a\)。将的符号换为表示输出\(\hat{y}\implies{a = \sigma(z)}\),然后可以计算出loss function \(L(a,y)\)

神经网络看起来是如下这个样子(图1.1.2)。正如之前已经提到过,可以把许多sigmoid单元堆叠起来形成一个神经网络。对于图3.1.1中的节点,它包含了之前讲的计算的两个步骤:首先通过公式1.1计算出值\(z\),然后通过\(\sigma(z)\)计算值\(a\)。

图1.1.2

在这个神经网络(图1.1.2)对应的3个节点,首先计算第一层网络中的各个节点相关的数\(z^{[1]}\),接着计算\(\alpha^{[1]}\),在计算下一层网络同理;
会使用符号\(^{[m]}\)表示第\(m\)层网络中节点相关的数,这些节点的集合被称为第\(m\)层网络。这样可以保证\(^{[m]}\)不会和之前用来表示单个的训练样本的\(^{(i)}\)(即使用表示第\(i\)个训练样本)混淆;
整个计算过程,公式如下:
公式1.3:

\[\left. \begin{array}{r} {x }\\ {W^{[1]}}\\ {b^{[1]}} \end{array} \right\} \implies{z^{[1]}=W^{[1]}x+b^{[1]}} \implies{a^{[1]} = \sigma(z^{[1]})} \]

公式1.4:

\[\left. \begin{array}{r} \text{$a^{[1]} = \sigma(z^{[1]})$}\\ \text{$W^{[2]}$}\\ \text{$b^{[2]}$}\\ \end{array} \right\} \implies{z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}} \implies{a^{[2]} = \sigma(z^{[2]})}\\ \implies{{L}\left(a^{[2]},y \right)} \]

类似逻辑回归,在计算后需要使用计算,接下来需要使用另外一个线性方程对应的参数计算\(z^{[2]}\),
计算\(a^{[2]}\),此时\(a^{[2]}\)就是整个神经网络最终的输出,用 \(\hat{y}\)表示网络的输出。

公式1.5:

\[\left. \begin{array}{r} {da^{[1]} = {d}\sigma(z^{[1]})}\\ {dW^{[2]}}\\ {db^{[2]}}\\ \end{array} \right\} \impliedby{{dz}^{[2]}={d}(W^{[2]}\alpha^{[1]}+b^{[2]}}) \impliedby{{{da}^{[2]}} = {d}\sigma(z^{[2]})}\\ \impliedby{{dL}\left(a^{[2]},y \right)} \]

知道这其中有很多细节,其中有一点非常难以理解,即在逻辑回归中,通过直接计算\(z\)得到结果\(a\)。而这个神经网络中,反复的计算\(z\)和\(a\),计算\(a\)和\(z\),最后得到了最终的输出loss function

应该记得逻辑回归中,有一些从后向前的计算用来计算导数\(da\)、\(dz\)。同样,在神经网络中也有从后向前的计算,看起来就像这样,最后会计算\(da^{[2]}\) 、\(dz^{[2]}\),计算出来之后,然后计算计算\(dW^{[2]}\)、\(db^{[2]}\) 等,按公式1.4、1.5箭头表示的那样,从右到左反向计算。

至此大概了解了一下什么是神经网络。

神经网络的表示

先回顾一下上一篇博客的图片,在这里将讨论这些图片的具体含义,也就是画的这些神经网络到底代表什么。

首先关注一个例子,本例中的神经网络只包含一个隐藏层(图1.2.1)。这是一张神经网络的图片,让给此图的不同部分取一些名字。

图1.2.1

有输入特征\(x_1\)、\(x_2\)、\(x_3\),它们被竖直地堆叠起来,这叫做神经网络的输入层。它包含了神经网络的输入;然后这里有另外一层称之为隐藏层(图1.2.1的四个结点)。待会儿会回过头来讲解术语"隐藏"的意义;在本例中最后一层只由一个结点构成,而这个只有一个结点的层被称为输出层,它负责产生预测值。解释隐藏层的含义:在一个神经网络中,当使用监督学习训练它的时候,训练集包含了输入\(x\)也包含了目标输出\(y\),所以术语隐藏层的含义是在训练集中,这些中间结点的准确值是不知道到的,也就是说看不见它们在训练集中应具有的值。能看见输入的值,也能看见输出的值,但是隐藏层中的东西,在训练集中是无法看到的。所以这也解释了词语隐藏层,只是表示无法在训练集中看到他们。

现在再引入几个符号,就像之前用向量\(x\)表示输入特征。这里有个可代替的记号\(a^{[0]}\)可以用来表示输入特征。\(a\)表示激活的意思,它意味着网络中不同层的值会传递到它们后面的层中,输入层将\(x\)传递给隐藏层,所以将输入层的激活值称为\(a^{[0]}\);下一层即隐藏层也同样会产生一些激活值,那么将其记作\(a^{[1]}\),所以具体地,这里的第一个单元或结点将其表示为\(a^{[1]}_{1}\),第二个结点的值记为\(a^{[1]}_{2}\)以此类推。所以这里的是一个四维的向量如果写成Python代码,那么它是一个规模为4x1的矩阵或一个大小为4的列向量,如下公式,它是四维的,因为在本例中,有四个结点或者单元,或者称为四个隐藏层单元;
公式1.7

\[a^{[1]} = \left[ \begin{array}{ccc} a^{[1]}_{1}\\ a^{[1]}_{2}\\ a^{[1]}_{3}\\ a^{[1]}_{4} \end{array} \right] \]

最后输出层将产生某个数值\(a\),它只是一个单独的实数,所以的\(\hat{y}\)值将取为\(a^{[2]}\)。这与逻辑回归很相似,在逻辑回归中,有\(\hat{y}\)直接等于\(a\),在逻辑回归中只有一个输出层,所以没有用带方括号的上标。但是在神经网络中,将使用这种带上标的形式来明确地指出这些值来自于哪一层,有趣的是在约定俗成的符号传统中,在这里所看到的这个例子,只能叫做一个两层的神经网络(图1.2.2)。原因是当计算网络的层数时,输入层是不算入总层数内,所以隐藏层是第一层,输出层是第二层。第二个惯例是将输入层称为第零层,所以在技术上,这仍然是一个三层的神经网络,因为这里有输入层、隐藏层,还有输出层。但是在传统的符号使用中,如果阅读研究论文,会看到人们将这个神经网络称为一个两层的神经网络,因为不将输入层看作一个标准的层。


图1.2.2

最后,要看到的隐藏层以及最后的输出层是带有参数的,这里的隐藏层将拥有两个参数\(W\)和\(b\),将给它们加上上标\(^{[1]}\)(\(W^{[1]}\),\(b^{[1]}\)),表示这些参数是和第一层这个隐藏层有关系的。之后在这个例子中会看到\(W\)是一个4x3的矩阵,而\(b\)是一个4x1的向量,第一个数字4源自于有四个结点或隐藏层单元,然后数字3源自于这里有三个输入特征,之后会更加详细地讨论这些矩阵的维数,到那时可能就更加清楚了。相似的输出层也有一些与之关联的参数\(W^{[2]}\)以及\(b^{[2]}\)。从维数上来看,它们的规模分别是1x4以及1x1。1x4是因为隐藏层有四个隐藏层单元而输出层只有一个单元,之后会对这些矩阵和向量的维度做出更加深入的解释,所以现在已经知道一个两层的神经网络什么样的了,即它是一个只有一个隐藏层的神经网络。

标签:implies,入门篇,神经网络,详解,计算,array,隐藏,输入
From: https://www.cnblogs.com/oten/p/17819469.html

相关文章

  • Lambda表达式详解
    什么是Lambda表达式Lambda表达式是一种匿名函数,它可以用于创建可传递给其他函数或方法的简洁代码块。Lambda表达式可以在需要函数或委托的任何地方使用,并且通常用于简化代码和提高可读性。Lambda表达式的语法Lambda表达式的基本语法如下所示:(parameter_list)=>expression......
  • C3P0连接池详解及配置
    数据库连接是一个耗费大量资源且相当慢的操作,所以为了提高性能和连接速度,诞生了连接池这样的概念。在多用户并发操作过程中,连接池尤为重要。它是将那些已连接的数据库连接存放在一个容器里(连接池),这样以后别人要连接数据库的时候,将不会重新建立数据库连接(这样蜗牛的慢动作谁都受......
  • BlockingQueue队列详解
    /**本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被......
  • maven pom文件详解
    代码下载地址:http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/......
  • STL之unordered_set与unordered_map的模拟实现(万字长文详解)
    unordered_set与unordered_map的模拟实现哈希节点类#pragmaonce#include<iostream>#include<vector>namespaceMySTL{template<classT>structHashNode{HashNode(constT&data=T())......
  • 第二节:队列详解 和 面试题剖析
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 【django开发】知识经验总结共50页md文档。今日分享:django配置和数据库操作详解
    Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原......
  • .NET 8 IEndpointRouteBuilder详解
    Map​ 经过对WebApplication的初步剖析,我们已经大致对Web应用的骨架有了一定了解,现在我们来看一下HelloWorld案例中仅剩的一条代码:app.MapGet("/",()=>"HelloWorld!");//3添加路由处理​ 老规矩,看签名:publicstaticRouteHandlerBuilderMapGet(thisIEndpointRout......
  • org.apache.log4j.Logger 详解
    org.apache.log4j.Logger 详解1. 概述1.1. 背景  在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打......
  • 软件测试|MySQL BETWEEN AND:范围查询详解
    简介在MySQL数据库中,使用BETWEENAND操作符可以进行范围查询,即根据某个字段的值在指定范围内进行检索数据。这个操作符非常有用,因为它可以让我们轻松地筛选出位于两个特定值之间的数据,而不需要使用复杂的条件语句。BETWEENAND操作符的语法BETWEENAND操作符的基本语法如下:SE......