首页 > 其他分享 >三、浅层神经网络

三、浅层神经网络

时间:2024-09-16 09:50:48浏览次数:1  
标签:初始化 函数 ReLU 浅层 神经网络 激活 隐藏

1、神经网络概览

  什么是神经网络?如下图:

  神经网络的结构与逻辑回归类似,只是神经网络的层数比逻辑回归多一层,多出来的中间那层称为隐藏层或中间层。从计算上来看,神经网络的正向传播和反向传播比logistic回归多了一次重复的计算。引入新的标签:方括号上标[i]表示当前所处的层数;圆括号上标(i)表示第i个样本。

2、神经网络表示

  下面我们讲解只有一个隐藏层的神经网络,这是一张神经网络结构图:

  在一个神经网络中,当你使用监督学习训练它时,训练集包含了输入x,还有目标输出y。“隐藏层”的含义是在训练集中这些中间节点的真实数值我们是不知道的,看不到它们的数值。

  现在把隐藏层输出记为a^[1],上标从0开始。用下标表示第几个神经元,注意下标从1开始。例如a^[1]_1表示隐藏层第1个神经元(节点)。在python中,隐藏层有4个神经元就可以写成下面矩阵的形式:

  

  当我们在计算网络的层数时,不算输入层。关于隐藏层对应的权重W^[i]和常数项b^[i]维度问题,总结:第i层的权重W^[i]维度的行等于i层神经元的个数,列等于i-1层神经元的个数;第i层常数项b^[i]的行等于第i层神经元的个数,列始终为1。

3、计算神经网络的输出

  两层神经网络可以看成是逻辑回归再重复计算一次。如下图所示,逻辑回归的正向计算可以分解成计算z和a的两部分:

  下面的圆圈代表了回归计算的两个步骤,神经网络重复计算这些步骤很多次:

  对于两层神经网络,从输入层到隐藏层对应一次逻辑回归运算;从隐藏层到输出层对应一次逻辑回归运算。每层计算时,要注意对应的上标和下标,一般我们记上标方括号表示layer,下标表示第几个神经元。例如a^[l]_i表示第l层的第i个神经元。注意,i从1开始,l从0开始。

  下面,我们将从输入层到输出层的计算公式列出来:(共4个隐藏单元)       然后,从隐藏层到输出层的计算公式为:   

  上述每个节点的计算都对应着一次逻辑运算的过程,分别由计算z和a两部分组成。

4、激活函数

  在隐藏层和输出层可以选择激活函数,目前为止我们用的是sigma激活函数,但有时其他函数效果要好的多。我们看一些可供选择的函数。不同的激活函数有各自的优点。

sigmoid函数-(0,1)

tanh函数(双曲正切函数)-(-1,1)

  

    • 此激活函数的平均值更接近0,类似数据中心化的效果,使数据平均值接近0,这实际让下一层的学习更方便一点。

    • sigmoid函数和tanh函数都有一个缺点,如果z非常大或非常小时,那么导数的梯度(函数的斜率)可能就很小,接近0,这样会拖慢梯度下降算法。

ReLU函数(修正线性单元)-机器学习最受欢迎的工具

  

    • 在选择激活函数时有一些经验法则,如果你的输出是0和1(二元分类),那么sigmoid函数很适合作为输出层的激活函数,然后其他所有单元都用ReLU函数,这是今天大多数人都在用的。

    • ReLU的缺点是当z为负时,导数为0,但还有一个版本,带泄露的ReLU。

Leaky ReLU函数(泄露的ReLU)

  

    • 为什么是0.01,可以把它设成学习函数的另一个参数,根据实际效果进行改动

总结:

  1. sigmoid函数除非用于在二元分类的输出层,不然绝对不要用,或者几乎从来不用。

  2. tanh函数几乎在所有场合都更优越。

  3. 最常用的默认激活函数是ReLU,如果你不确定用哪个,你就用这个,或者也可以试试带泄漏的ReLU。

  深度学习的一个特点是在建立神经网络时经常有很多不同的选择,比如隐藏单元数、激活函数,还有如何初始化权重。当不确定哪种激活函数最有效时,可以先试试在保留交叉验证数据集上或者开发集上跑,看看哪个参数效果好,就用哪个。

5、随机初始化

  当你训练神经网络时,随机初始化权重很重要,对于logistic回归,可以将群组初始化为零,但如果神经网络的各参数数组全部初始化为0,再使用梯度下降算法,那会完全无效

  一般做法是将W进行随机初始化(b可初始化为零)。python里可以使用如下语句进行W和b的初始化:

W_1 = np.random.randn((2,2))*0.01 #随机初始化 
b_1 = np.zero((2,1)) 
W_2 = np.random.randn((1,2))*0.01 
b_2 = 0

# 0.01怎么来的?实际上我们通常把权重矩阵初始化成非常小非常小的随机值,因为如果使用tanh函数或sigmoid激活函数,
# 权重太大是计算出来的值可能落在平缓部分,梯度的斜率非常小,意味着梯度下降法会非常慢,学习过程也会非常慢。

  

标签:初始化,函数,ReLU,浅层,神经网络,激活,隐藏
From: https://www.cnblogs.com/pgl6/p/18415233

相关文章

  • 如何修改BP神经网络的传递函数
         BP神经网络每种传递函数都有自己的特点,输入输出值不同,线性和非线性不同,对于有些模型,需要做出有针对性的调整,需要自定义传递函数,这是修改的原因之一,有些模型,数据有一定的物理意义,或者其他特殊要求,有些因子需要单独处理,这个时候也需要自定义传递函数,这是修改的原因......
  • 神经网络-损失函数
    文章目录一、回归问题的损失函数1.均方误差(MeanSquaredError,MSE)2.平均绝对误差(MeanAbsoluteError,MAE)二、分类问题的损失函数1.0-1损失函数(Zero-OneLossFunction)2.交叉熵损失(Cross-EntropyLoss)3.合页损失(HingeLoss)三、总结在神经网络中,损失函数(LossFunc......
  • 深度学习-神经网络构造
    文章目录一、正则化惩罚1.L1正则化2.L2正则化二、梯度下降(GradientDescent)1.基本原理2.注意事项三、BP神经网络1.基本原理2.网络结构3.特点四、总结一、正则化惩罚正则化惩罚(RegularizationPenalty)是机器学习中常用的一种技术,用于减少模型的复杂度,防止模型过拟......
  • 大语言模型特供版汉字:基于部首分解与图神经网络的多因素表示
    汉字嵌部首,图卷蕴深机。嵌入相结合,结构见玄机。泛化能力强,共享共根基。针对汉字在新环境下的调整,本文提出了一种结合传统字符嵌入与部首结构的图表示法,以捕捉汉字的语义和组成结构,专供大模型理解汉字。该方法通过将字符分解为部首并构建图表示,利用图卷积网络生成部首嵌入,并......
  • 【数据挖掘】神经网络
    目录一、神经网络算法概述二、神经网络算法分类三、神经网络算法优缺点和改进3.1神经网络算法优点3.2神经网络算法缺点3.3 神经网络算法改进四、神经网络算法实现4.1 神经网络算法C语言实现4.2 神经网络算法JAVA实现4.3 神经网络算法python实现4.4 神经网络......
  • 【视频讲解】线性时间序列原理及混合ARIMA-LSTM神经网络模型预测股票收盘价研究实例
    原文链接:https://tecdat.cn/?p=37702 原文出处:拓端数据部落公众号 分析师:DongzhiZhang 近年来人工神经网络被学者们应用十分广泛,预测领域随着神经网络的引入得到了很大的发展。本文认为单一神经网络模型对序列所包含的线性信息和非线性信息的挖掘是有限的,因此本文为了进一......
  • 多输入多输出 | Matlab实现SO-BP蛇群算法优化BP神经网络多输入多输出预测
    多输入多输出|Matlab实现SO-BP蛇群算法优化BP神经网络多输入多输出预测目录多输入多输出|Matlab实现SO-BP蛇群算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料预测效果基本介绍多输入多输出|Matlab实现SO-BP蛇群算法优化BP神经网络多输入多输......
  • 神经网络的基本元素
    权重(w₁,w₂,w₃,...) :每个输入都乘以相应的权重。这些权重是模型在训练过程中学习到的参数。偏置(b) :这是一个额外的参数,加到加权输入上以调整激活函数。它有助于模型做出更好的预测。求和和激活函数 :输入的加权和加上偏置后,通过一个激活函数(f)。这个函数决定了神......
  • 二、神经网络基础(逻辑回归和向量化)
    1、二分类  logistic回归是一个用于二分类(BinaryClassification)的算法。二分类就是输出结果y只有0和1两个标签(也有-1和1的情况)。以一个图像识别为例,例如识别猫,1代表猫,0代表不是猫。用y表示输出的结果标签。  在二分类问题中,目标是训练一个分类器,它以图片的特征向量x为输入,......
  • 基于卷积神经网络的图像去噪研究 毕业设计(案例展示)
    开发一种基于卷积神经网络(CNN)的高效图像去噪技术。图像去噪是图像处理领域的一个关键挑战,对于图像质量的提升、目标检测、目标跟踪以及图像分析等研究领域至关重要。CNN因其在图像识别和处理任务中的卓越性能而成为本研究的核心工具。研究内容包括分析图像去噪的重要性、评述当......