首页 > 其他分享 >初学者:神经网络(2)

初学者:神经网络(2)

时间:2024-12-11 13:31:14浏览次数:5  
标签:函数 梯度 神经网络 初学者 激活 式子 神经元

       上一篇文章中我们说神经网络的基本结构,神经网络训练的基本原理,这篇文章我们先来说一说神经网络中一个特别重要的东西---激活函数。

       还是引用上一篇文章的老图。

       如果按照上图的结构来输出最终的结果,那么计算过程如下:

hj=i=1nxicijy=j=1mwjhj

       现在开始解释这个式子:

第一个式子是计算每个神经元的值:第j个神经元的值等于每个输入的x值乘相对应的权重c后再相加。

第二个式子是计算神经网络最终输出的值:将各个神经元的值乘以相对于的权重w后相加。

将两个式子合并后就得到了上述图片过程的计算式:

y=j=1mwjhj=j=1mwji=1nxicij

如果用矩阵形式表示如下:

y=x1x2xnc11c12c21c1mc2mcn1cn2cnmw1w2wm

可以明显看出来,如果使用矩阵的话,神经网络的运算将会便捷很多。在电脑中gpu(显卡)的矩阵运算速度比cpu更快,这也是为什么神经网络训练时会多使用gpu训练而非cpu。

但是问题就来了,如果使用上述式子计算神经网络,那么神经网络的输出将会是线性的。那么什么是线性?

请大家思考一下,假设给定两个式子:

如果将他们合成一个式子,会得到下述式子:

可以看出,无论有多少个式子,他们最终都会被整理成一个线性式子。神经网络的矩阵运算也是如此,如果仅仅只是线性的相乘相加运算,那么无论有多少层神经元,总能被一层神经元所表示。这样的神经网络复杂度往往不能满足实际的要求。

为了解决这个问题,我们必须往神经网络中引入非线性的因素,简单来说,我们必须把线性的神经网络“掰弯”。前人把将线性运算非线性化的函数称之为“激活函数”,在神经网络中,运算往往是一层层进行的,我们把进行非线性化运算的计算层称之为“激活函数”。

下面简单介绍一种简单的激活函数,以便读者理解激活函数的用法。

Sigmoid函数是一种常被使用的激活函数,他的函数式子如下所示:

在神经网络中,如果输出值经过激活层,那么将会被代入上述函数σ(x)中,进行非线性化处理。

如图所示为sigmoid函数的图像,输出为0到1,所以sigmoid函数也常常被用于二分类问题的激活函数。

那么问题又来了,上篇文章的时候我们说了神经网络的训练方法是梯度下降,那么如果引入了激活函数,那么该如何训练神经网络?答案是照样求偏导数,照样代入公式更新参数。但是有时候训练过程中,由于引入了非线性的因素,计算梯度时有可能会出现以下情况:

  1. 梯度消失与梯度爆炸:当神经网络层过于多时,由于神经网络的方向传播过程是求偏导相乘。这个过程可能会使梯度过小导致梯度消失,这个时候神经网络无法正常训练下去;也有可能会使梯度过大,导致梯度爆炸,这个时候神经网络的参数更新将会变得异常导致无法正常训练神经网络。
  2. 神经元死亡:这是由于训练过程中,某个神经元的权重过小接近于零,这个时候此神经元对于神经网络将会没有贡献,导致神经网络性能不佳。

读者们可以尝试变化学习率、替换激活函数、改变初始化权重来解决此类问题。

标签:函数,梯度,神经网络,初学者,激活,式子,神经元
From: https://blog.csdn.net/flyless_sparrow/article/details/144398237

相关文章

  • 神经网络学习
    感知和学习RosenblattPerceptron计算流程:初始化:随机初始化权重\(\mathbf{W}\)和偏置b。循环训练:从训练集中随机选择一个样本$(\mathbf{X}_i,y_i)$。检查分类结果是否正确:如果$y_i\cdot(\mathbf{W}\cdot\mathbf{X}_i+b)\leq0\((分类错误),则更新权重和偏......
  • 线性神经网络在因果推断中的潜在用途
    线性神经网络在因果推断中的潜在用途摘要:本文深入探讨线性神经网络在因果推断领域的潜在用途。首先介绍因果推断的基本概念与重要性,阐述传统因果推断方法及其局限性。接着详细剖析线性神经网络的架构与原理,包括神经元的数学模型、前向传播与反向传播算法等核心内容。探讨......
  • 基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
    理论基础算法本质与背景层次化(Hierarchial)Softmax算法是在深度学习领域中解决大规模词嵌入训练效率问题的重要突破。该算法通过引入Huffman树结构,有效地将传统Softmax的计算复杂度从线性降至对数级别,从而在处理大规模词汇表时表现出显著的优势。在传统的神经网络词嵌入模型中,So......
  • 有关卷积神经网络详细内容
    一、卷积神经网络(ConvolutionalNeuralNetwork,缩写CNN)的基本概念1.定义        -卷积神经网络是一种专门为处理具有网格结构数据(如图像、音频)而设计的深度学习模型。它通过卷积层(ConvolutionalLayer)、池化层(PoolingLayer)和全连接层(Fully-ConnectedLayer)等组......
  • 全连接神经网络
    全连接神经网络整体架构线性函数从输入到输出的映射举一个例子我们通过一个简单的全连接层来判断西瓜甜不甜,其中影响西瓜甜不甜的因素暂定为3个,分别是瓜蒂(x1),拍西瓜产生的声音(x2),西瓜皮的纹路(x3)。我们将者三个作为全连接层的输入,中间隐藏层神经元的数量为4,而全连接层的输......
  • python基于卷积神经网络的车牌识别仿真
    大家好,我是陈辰学长,一名在Java圈辛勤劳作的码农。今日要和大家分享的是一款《python基于卷积神经网络的车牌识别仿真》毕业设计项目。项目源码以及部署相关事宜,请联系陈辰学长,文末会附上联系信息哦。......
  • 【机器学习】任务十二:循环神经网络
    1.循环神经网络1.1什么是循环神经网络(RNN)?循环神经网络(RecurrentNeuralNetwork,RNN)是一种用于处理序列数据的神经网络类型,它的主要特点是拥有循环连接,使得网络可以对序列中的每个时间步(timestep)进行处理,并将前一个时间步的信息传递到当前时间步,从而捕捉序列数据中的时序......
  • 神经网络入门实战:(十九)完整训练及测试代码,以数据集CIFAR10为例
    完整实操之:CIFAR10数据集的训练与测试CIFAR10数据集,有50000张训练图片,有10000张测试图片下方代码中:训练轮次为10轮;batch_size=64,50000/64=782(向上取整),所以训练一轮就等于训练了782个batch_size的图片,10轮就是7820;最终运行结果展示两个部分:画出78......
  • 每天五分钟计算机视觉:神经网络风格迁移的代价函数
    本文重点在前面的一节课程中,我们介绍了神经网络风格迁移技术,要想实现神经风格迁移,我们也应该通过最小化代价函数的方式来完成。本节课程我们就将学习如何定义神经风格迁移的代价函数。风格迁移的基本原理风格迁移的基本原理在于利用神经网络提取图像的内容和风格特征,并通过......
  • 每天五分钟深度学习:神经网络的前向传播的计算(多样本)
    本文重点前面我们学习了单样本的前向传播,本文我们学习多样本的前向传播,我们先来回忆一下,神经网络的单样本的前向传播的向量化的方式:m个样本依次进行前向传播这里我们说明一下符号:我们使用(m)表示第m个样本,用[m]表示神经网络的第m层a[2](i)表示第i个样本计算前向传播时第......