【深度学习原理】神经网络结构 & 符号约定

时间:2024-04-03 19:34:30

本文将主要讲解全连接神经网络的基本结构,包括对神经元、网络的输入 & 输出,权重w & 偏置b,**函数的理解与符号约定。主要参考Neural Networks and Deep Learning这本书,非常适合初学者入门。

一、神经元—神经网络的组成单元

【深度学习原理】神经网络结构 & 符号约定

神经元模型的符号约定:输入:x\vec{x},权重(weight):w\vec{w},偏置(bias):bb,未**值:zz,**输出值:aa
神经元可用于解决部分二分类问题——当有一个类别未知的x\vec{x}输入感知机,若输出值a = 1时,感知机被**,代表_x_属于第一类;若输出值a = 0时,感知机未**,则代表x属于第二类。而对于sigmoid神经元,若输出值a ≥ 0.5时,代表x属于第一类,否则为第二类。

二、sigmoid神经元的优势

不难看出,感知机可以轻松实现“与非”逻辑,而与非逻辑可以组合成其他任意的逻辑,但对于一些过于复杂的问题,我们难以写出其背后地逻辑结构。这时候神经网络就能大显身手:它可以自适应的学习规律,调节网络地权重和偏置等参数,我们只需要用大量的数据对其正确地训练,即可得到我们想要的效果!
那有一个很有意思的问题:相比于阶跃函数,为什么我们在神经网络中更愿意采用sigmoid函数作为**函数呢?

【深度学习原理】神经网络结构 & 符号约定

首先,由于感知机的**函数为阶跃函数(在0处突变),权重的一个小的变化就可能导致输出值的突变,而如果将**函数替换为sigmoid函数,输出值的变化就能发生相应的小的变化,有利于网络学习;另外,由于采用二次代价函数作为损失函数时,利用BP算法求梯度值需要对冲激函数求导,sigmoid函数正好时连续可导的,而且导数很好求。

【深度学习原理】神经网络结构 & 符号约定

三、全连接神经网络结构

为了便于理解,先画一个三层的全连接神经网络示意图,**函数都选用sigmoid函数。全连接神经网络指除输出层外,每一个神经元都与下一层中的各神经元相连接。网络的第一层为输入层,最后一层为输出层,中间的所有层统称为隐藏层。其中,输入层的神经元比较特殊,不含偏置bb,也没有**函数σ()\sigma(·)

【深度学习原理】神经网络结构 & 符号约定

神经网络结构的符号约定wkjlw^l_ {kj}代表第ll层的第kk个神经元与第(l1)(l-1)层的第jj个神经元连线上的权重;WlW^l代表第ll层与第l1l-1层之间的所有权重ww构成的权重矩阵。bklzklaklb^l_ {k}、z^l_ {k}、a^l_ {k}分别代表第ll层的第kk个神经元对应的偏置、未**值、**值;blzlal\vec{b}^l、\vec{z}^l、\vec{a}^l则分别代表第ll层的所有偏置组成的列向量、所有未**值组成的列向量以及所有**值组成的列向量。

注意!wkjlw^l_ {kj}的**上角标数字ll是连线右边的层的层数,而下角标数字kjkj**是先写连线右边的层中神经元所在的位置kk,再写连线左边的层中神经元所在的位置jj,此顺序是为了使WxW·\vec{x}时无需转置,方便书写。

下面展示了一个手写体识别的三层全连接神经网络结构:

【深度学习原理】神经网络结构 & 符号约定

隐藏层的功能可以看作是各种特征检测器的组合:检测到相应特征时,相应的隐藏层神经元就会被**,从而使输出层相应的神经元也被**。

【深度学习原理】神经网络结构 & 符号约定

近期的更新计划是 1. 如何利用梯度下降算法求解损失函数的最小值(即网络的训练过程)、2. 如何利用BP反向误差传播算法优化梯度求解、3. 梯度下降算法的常见变种。后面也会更新一些BP网络、CNN网络源代码,欢迎关注,有不严谨之处请指正~