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

神经网络概述(Neural Network Overview)

先开始快速浏览一下如何实现神经网络。上篇博客了解了逻辑回归,了解了这个模型(见图1.1.1)如何与下面公式1.1建立联系。

图1.1.1 :

公式1.1:

xwb}z=wTx+b

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

xwb}z=wTx+ba=σ(z)L(a,y)

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

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

图1.1.2

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

xW[1]b[1]}z[1]=W[1]x+b[1]a[1]=σ(z[1])

公式1.4:

a[1]=σ(z[1])W[2]b[2]}z[2]=W[2]a[1]+b[2]a[2]=σ(z[2])L(a[2],y)

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

公式1.5:

da[1]=dσ(z[1])dW[2]db[2]}dz[2]=d(W[2]α[1]+b[2])da[2]=dσ(z[2])dL(a[2],y)

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

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

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

神经网络的表示

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

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

图1.2.1

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

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

a[1]=[a1[1]a2[1]a3[1]a4[1]]

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


图1.2.2

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

posted @   Oten  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示