神经网络1-基础过关

众所周知,机器学习是一门跨学科的学科,主要研究计算机如何通过学习人类的行为和思维模式,以实现某些特定的功能或目标。机器学习流程主要分为四步:

1.数据获取--> 2.特征工程 -->3. 建立模型 --> 4.评估与应用。

神经网络是机器学习的一种方法,通过模仿人类神经网络来实现学习,深度学习是神经网络的典型代表之一。深度学习的目标是让计算机能够从大量数据中自动提取出有用的特征,并进行分类或回归等任务。深度学习用一句话来总结就是:是一种自动寻找特征的方法。

1. 权重参数和偏置项参数

对于神经网络而言,最基础的表达式是:f(x,W)=Wx+b,其中,x表示特征向量,W表示权重矩阵,b表示偏置项参数。我们首先以最简单的神经网络为例进行入门了解。

假设,我们现在有一个分类任务,我们打算使用一层神经网络进行学习。那么在该神经网络中,f(x,W)表示得分函数,表示在某个类别的得分。因此,我们可以简单的将f(x,W)视为一个分数结果,你有几个类别,那你就会有几个得分函数,权重矩阵W就有多少行。相应的W的列就是特征向量x的个数,需要注意,特征向量x一般是一个列向量。以此类推,偏置项参数b就是一个和特征向量x结构相同的列向量。我们以图像数据进行举例:

7bef798dfb39449a935e24ecb71e3a98.png

对于图像而言,每张图片都是采用“宽度 x 高度 x 颜色通道”来进行表示,上图的图像数据32x32x3表示图像的宽度和高度都是32像素,而颜色通道为3,通常代表RGB颜色模式。这意味着图像是一个32x32像素的RGB图像,其中每个像素由三个值(R、G、B)表示,每个值的范围通常是0-255。这三个通道的数值可以组合成不同的颜色,从而实现彩色图像的表示。

在最基本的神经网络中,对于图像数据而言,通过维度扩展,将32x32x3的图像直接拉成一个3072x1的一个特征向量,然后结合权重参数和偏执参数来进行学习。假设这个分类问题最终由10个类别,那么权重矩阵是一个W是一个10x3072的矩阵b则是一个1*3072的列向量

8978404ef1a143beb23ee12629f38663.png

具体举例可以看下图:

933d27817a814e3d89529f1891da1e3b.png

在神经网络中,权重参数和偏置参数都是重要的组成部分,它们分别具有以下作用:

权重参数:

  1. 决定每个神经元对输入的重要性。
  2. 通过不断调整权重,神经网络可以学习到适应任务的特征表示。
  3. 每个权重对应一个输入特征,可以理解为输入特征的系数,用于计算加权输入。

偏置参数:

  1. 偏置是一个常数项,用于为神经元引入一个偏移量。
  2. 它与神经元的输入加权求和相结合,并通过激活函数进行非线性变换。
  3. 偏置的作用是使得神经元能够更好地拟合数据和提取特征。
  4. 在前向传播过程中,偏置用于调整神经元的输入和输出。

在得到神经网络的输出之后,我们既可以根据输出结果直接进行分类(输出得分),也可以衔接其他的分类器开进行进一步分类(输出特征)。

2. 神经网络的整体结构

实际上,神经网络一般不会这么简单的处理数据,使用仅仅一层网络就完成了任务,这样处理过于简单,模型的学习效果也会比较差。在实际处理过程中,神经网络视一般是一个具有多层架构的网络,如下图所示。每一层都由多个神经元构成,此时,f(x,W)其实就是一个神经元通过前一层所有神经元输出的计算得分,我们通过链接的前一层的所有神经元的输出和参数矩阵,得到本层本神经元的得分,然后再利用非线性函数进行非线性变换进行输出,作为下一层神经元的输入。这样,我们在每一层都可以得到多个f(x,W)

在多层神经网络中,参数矩阵W可以决定每一层有多少个神经元,即我们可以通过确定参数矩阵的行数来自行决定多个神经元。例如,在上面的举例中,我们可以选择10x3072的参数矩阵,最终输出10个得分值,也可以选择20x3072的参数矩阵得到20个得分值。这种参数矩阵行数的选择在多层神经网络中,就是对每一层的神经元数量的选择。 通过将原始的m个特征可以在不同的层转换为不同数量的逻辑特征,这样处理非常有利于计算机更加深刻的理解输入特征。下图是关于多层感知机的一个简单示例。

最后,我们可以在最后一层的时候,按照实际的分类需求,将输出变换为类别数量,这样可以直接完成训练。或者我们直接生成我们认为合适的特征数量,然后再衔接一个分类器完成分类任务。通过这个流程,我们就完成了神经网络的分类训练过程。从这个流程中,我们可以明显发现,神经网络的决策边界由是由权重参数和偏置项来决定的。

2.1 层次结构

通过上述分析,我们可以总结神经网络的主要层次结构,分别包括三大层:输入层、隐藏层和输出层。

  • 输入层:这一层负责接收输入数据。输入的数据数量就是原始数据的特征数量(输入层神经元数量)。这一层的每个神经元通常只有一个输出参数,即激活值,即原始数据特征值。
  • 隐藏层:这是神经网络中最为重要的部分,它包括四大部分:卷积层、激活层、池化层、全连接层。这些层次通过对输入数据进行各种转换和处理,从而提取出输入数据的特征。隐藏层的意义在于提供思考过程,使得网络可以做出更为复杂的决策和预测
  • 输出层:这一层负责输出神经网络的处理结果。每个神经元有三个参数:权重、激活值和偏置。其中,权重表示该神经元与下一层网络输入的某个神经元的紧密程度,激活值则是经过激活函数计算之后得到的输出值,偏置则是一个可选参数。

神经网络的层次结构可以根据具体的应用和需求进行不同的设计和调整,例如增加或减少隐藏层的数量、调整每层的神经元数量等。这些设计因素会直接影响到神经网络的性能和效果。类比人的大脑,输入层可以看作是我们接收到的信息,隐藏层可以看作是我们大脑的思考过程,而输出层则是我们做出的决策或反应。因此,神经网络的层次结构在很大程度上模拟了人脑的工作过程。

2.2 神经元

神经元是神经网络中的基本计算单位,也被称为节点或单元。每一层网络的神经元个数,我们可以视为计算机在这一层网络理解问题需要使用到的特征个数。它的主要功能是接收来自其他节点或外部源的输入,并根据这些输入计算输出。每个输入都有一个相关的权重,这个权重是根据输入信息的相对重要性进行分配的。神经元的内部结构可以看作是一个线性函数和一个激活函数的组合,线性函数负责计算输入的加权和,而激活函数则负责将这个加权和转换为神经元的输出。

在神经网络中,神经元通常按照层次结构进行组织,形成输入层、隐藏层和输出层。输入层负责接收输入数据,隐藏层负责提取输入数据的特征,而输出层则负责输出神经网络的处理结果。神经元的类型有很多种,其中最常见的是感知器(Perceptron)S型神经元。感知器是一种二元线性分类器,主要用于求解分类问题。而S型神经元则是一种连续可微的函数,其输出值在0和1之间,通常用于模拟生物神经元的激活函数。

总的来说,单层的神经元的数量越多,训练出来的模型效果越好,但出现过拟合的可能性也就越高。一般我们对神经元个数的设置是64,128,256,512等等。

3.3 全连接

神经网络的全连接(Fully Connected)指的是层内无连接,而层与层之间的连接是全部连接的。也就是说,在前馈神经网络中,每一层网络的神经元之间彼此是互不连接的,而与下一层网络的每一个神经元都都是相互相连的。这种连接方式也被称为密集连接(Dense Connection)

全连接神经网络(Fully Connected Neural Network,简称FCNN)是一种最基础的人工神经网络结构,也称为多层感知器(Multilayer Perceptron,MLP)。在全连接神经网络中,每个神经元都与前一层和后一层的所有神经元相连接,形成一个密集的连接结构。通过矩阵乘法和偏置加法操作,全连接层可以将输入特征与每个神经元的连接权重进行组合,从而得到输出结果。这种网络结构能够学习输入数据的复杂特征,并进行分类、回归等任务。

4.4 非线性

神经网络的非线性(Nonlinearity)指的是神经网络能够学习和表示复杂、非线性的输入输出关系。这种非线性特性是神经网络强大的表征学习能力的基础,使其能够逼近任何复杂的非线性函数。

神经网络的非线性主要来源于两个方面:

  1. 激活函数(Activation Functions):在神经网络的每一层中,输入数据通过权重和偏置的线性变换后,会经过一个非线性函数,比如ReLU、sigmoid等,然后输出到下一层。这种非线性函数的引入使得神经网络可以学习到更加复杂的数据特征,而不仅仅是线性关系。但是现在一般不使用sigmoid函数了,因为使用sigmoid函数作为激活函数会出现梯度消失的情况。
  2. 多层结构:神经网络通过多层的非线性变换,从原始的数据中提取出更有意义的特征。每一层都通过非线性函数对前一层的输出进行变换,这种组合使得整个网络可以表示非常复杂的非线性映射关系。

神经网络的非线性使得其可以处理各种复杂的任务,如图像识别、语音识别、自然语言处理等。这些任务中的输入输出关系通常是非常复杂的非线性关系,而神经网络的非线性特性使其能够有效地学习和表示这些关系。

3. 损失函数

在使用神经网络进行分类的学习的过程中,我们也存在一个问题:我怎么知道我学习的结果是不是正确呢?或者说,我怎么知道我学习的结果正确程度怎么样呢?

例如,在上面的十分类问题,我们通过计算f(x,W)得到每个类别的得分函数。我们一般取f(x,W)最大的作为正确类别。然而,我们预测的类别是否正确呢?这点我们并不知道。因此我们需要一个帮助我们判断我们学习结果可靠性的指标。损失函数就是神经网络中用来帮助判断是否预测正确的那个指标。

损失函数(也称为代价函数,Loss函数)在神经网络中是一个非常重要的概念,主要用于衡量模型预测结果与真实值之间的差异或错误程度。损失函数的选择一般取决于问题的类型和具体任务。

  • 在回归问题中,常见的损失函数是均方误差(Mean Squared Error,MSE),它计算预测值与真实值之间的平方差的均值。均方误差可以用于连续值的预测问题,并且具有收敛速度快等优点。
  • 在分类问题中,常见的损失函数是交叉熵损失(Cross-Entropy Loss)。对于多分类问题,通常使用多分类交叉熵损失;对于二分类问题,可以使用二分类交叉熵损失。交叉熵损失通过计算预测概率分布与真实标签之间的交叉熵来衡量模型的错误程度。

在下图的举例中,我们利用每个样本在不正确的类别的得分与在正确类别得分的差值来评估模型。从结果我们可以看出来损失函数值越小,说明分类的结果越好,这个模型越可靠。损失函数越大,那么说明我们训练的模型效果越差,需要继续改进。

bb77c73fd1dc49348f36526af8b7e485.png

此外,损失函数还有许多其他选择,如平均绝对误差(Mean Absolute Error,MAE)等。在实践中,选择适当的损失函数需要根据具体问题和数据集的特点来决定。除了选择适当的损失函数外,还需要注意损失函数的计算方式和优化方法。在神经网络的训练过程中,通常使用梯度下降等优化算法来最小化损失函数。通过计算损失函数的梯度,可以逐步更新神经网络的权重和偏置参数,以逐渐减小损失函数的值,提高模型的预测精度。

计算出损失函数就完成了神经网络的前向传播过程。当我们采用多层权重矩阵来计算得分值的时候,我们就将单层神经网络变成了深度神经网络了。每一层权重参数都是基于前一层权重参数的调整之后进行的进一步调整。

4. 梯度下降法

当我们计算出来损失函数之后,我们需要回头去调整权重参数以减少损失值,提高精度。注意,我们在反向调整参数时,是调整权重参数而不是特征向量,特征向量在神经网络中时固定数值,不会改变。

在求解机器学习算法的模型参数时,梯度下降法是最常采用的方法之一。通过逐步迭代求解,可以得到最小化的损失函数和模型参数值。梯度下降法(Gradient Descent)是一个一阶最优化算法,在使用梯度下降法寻找函数的局部极小值时,需要向函数当前点对应梯度(或近似梯度)的反方向进行迭代搜索,直至达到预设的精度或迭代次数。梯度是一个向量,表示函数在每个变量上的偏导数。在每次迭代中,算法会计算当前点的梯度,然后按照负梯度方向移动一定的步长,从而逐渐逼近函数的局部极小值。

下面我将通过一个简单的例子来说明梯度下降法的工作原理。

假设我们有一个简单的函数 f(x) = x^2,我们希望找到这个函数的最小值。首先,我们随机选择一个初始点 x_0,例如 x_0 = 3。然后,我们计算该点处的梯度,即函数在该点的导数。对于函数 f(x) = x^2,其导数为 f'(x) = 2x。在x_0 = 3处,梯度为 2*3 = 6

接下来,我们根据梯度来更新 x的值。梯度表示函数在该点处的斜率,负梯度方向就是函数值下降最快的方向。因此,我们按照负梯度的方向移动一定的步长,例如步长为 0.1,那么新的x值就是 x_1=x_0 - 0.1 * 6 = 3 - 0.6 = 2.4。然后,我们重复上述过程,计算新点 x_1 = 2.4 处的梯度,即 f'(2.4) = 2*2.4 = 4.8,然后再次按照负梯度的方向移动一定的步长,例如步长仍为 0.1,那么新的 x值就是 x_2=2.4 - 0.1 * 4.8 = 2.4 - 0.48 = 1.92

我们不断重复这个过程,直到达到预设的精度或迭代次数,最终会逼近函数的最小值点x = 0。在这个过程中,我们可以看到每次迭代都会使 x的值更接近最小值点,而梯度的值则会逐渐减小,直到接近于零。

这就是梯度下降法的基本工作原理。通过不断沿着负梯度方向移动,我们可以逐渐逼近函数的最小值点。需要注意的是,在实际应用中,函数的形式可能更加复杂,而且可能存在多个局部最小值点,因此选择合适的初始点、步长和迭代次数等因素都会影响梯度下降法的收敛速度和效果。步长的选择对于梯度下降法的收敛速度和效果有很大的影响,步长过大可能导致算法发散,步长过小则可能导致收敛速度过慢

5. 优化器

神经网络的优化器是用于更新和计算模型权重以减少损失函数的算法。优化器决定了模型在训练过程中如何调整其权重以最小化或最大化某个目标函数。在深度学习中,优化器扮演着至关重要的角色,因为它们可以极大地影响模型的性能和收敛速度。在实际的模型训练中,基于梯度下降法来进行神经网络的损失函数优化已经并不常见了。以下是实际训练过程中常用的几种类型的优化器:

  1. Adam (Adaptive Moment Estimation):
  • Adam 是一种非常流行的优化器,结合了 Adaptive Gradient Algorithm (AdaGrad) 和 Root Mean Square Propagation (RMSProp) 的特点。
  • 它计算梯度的一阶矩估计(平均值)和二阶矩估计(未中心化的方差),然后根据这些估计来调整每个参数的学习率。
  • Adam 通常需要较少的调整即可工作得很好,并且通常比其他优化器更快地收敛。
  1. SGD (Stochastic Gradient Descent,随机梯度下降):
  • SGD 是一种基础的优化算法,用于更新模型的权重。
  • 在每次更新中,它只使用一小部分训练样本来估计梯度,这通常比使用全部数据集要快得多。
  • SGD 的一个主要缺点是它可能会在优化过程中陷入局部最小值或鞍点,并且收敛速度可能较慢,尤其是在高维空间和非凸优化问题中。
  1. RMSProp:
  • RMSProp 是另一种自适应学习率的优化算法,旨在解决 Adagrad 在处理非凸问题时学习率迅速下降的问题。
  • RMSProp 通过使用梯度平方的指数衰减平均值来调整每个参数的学习率。
  • 这有助于在训练过程中保持一个稳定且合适的学习率,从而加速收敛并避免过早停止。

学习率(Learning Rate)是机器学习中的一个重要超参数,它决定了模型在训练过程中权重更新的步长大小。换句话说,学习率控制了模型在每一次迭代中,沿着损失函数梯度下降的方向移动的步长这些优化器各有优缺点,并且适用于不同的场景和问题。在实践中,通常需要根据具体的应用、数据集和模型架构来选择最合适的优化器。

注意:

优化器和损失函数在机器学习中都扮演着至关重要的角色,但它们的功能和目的有所不同。

损失函数(Loss Function)是用于定义单个训练样本与真实值之间的误差的函数。它的主要任务是衡量模型所作出的预测离真实值之间的偏离程度。在分类问题中,例如交叉熵损失函数,会计算出loss,即当一张图片经过神经网络处理后,属于每种类的可能性与这个图片真实属于的类之间的差异。损失函数的目标是最小化这个误差,从而使模型的预测结果更加准确。

优化器(Optimizer)则是用于更新神经网络以减小损失函数的工具。在构建好神经网络之后,我们需要根据实际数据在网络上的表现,求出期望值和实际值之间的差距,即损失。然后,优化器会利用这个损失信息来更新网络的权重和偏差,从而减小损失。常用的优化器包括梯度下降法(Gradient Descent)等。

总的来说,损失函数和优化器是机器学习中不可或缺的两个组成部分。损失函数定义了我们需要优化的目标,而优化器则提供了实现这个目标的方法和手段。通过不断地调整网络参数以减小损失,我们可以使模型的预测能力得到提升,从而更好地解决实际问题。

6. 正则化惩罚项与过拟合

即便我们得到了评价一个模型好坏的标准,但我们依然面临一个问题:如果存在两个训练好的模型,他们对分类的结果拥有相同的损失函数,那我们该怎么选择模型呢?这时候我们就需要引入正则化惩罚项来优化损失函数。

正则化惩罚项是用来调整权重参数的,一般是使得权重参数分布更加平滑。因此实际上使用的损失函数一般是:损失函数 = 数据损失 + 正则化惩罚项\lambda R(w) 。正则化惩罚项是在机器学习和统计学习领域中常用的一种方法,用于防止过拟合和提升模型的泛化能力。通过在目标函数中增加一个或多个正则化项,可以约束模型的复杂度,从而使得模型更加简洁、稳定和可靠。

cf41e7bc438e4d0080268dce0a45cc64.png

简而言之,损失函数的正则化惩罚项就是用来惩罚那些存在潜在过拟合模型的。我们期望获得的学习模型是一个精度高,泛化效果好的模型,他能解决这一类的所有问题,而不是仅仅我们给出示例。

举个例子,假如我们是高三老师,我们希望通过示例教学,使得自己的学生能通过例题学习解决所有相关类型的问题。然而在教学过程中也可能出现部分同学只会做例题,对于同一类型的变性题则不会求解。对于这种类型的同学,我们会认为其举一反三的能力较差,即不会“泛化”解题技巧。我们当然希望自己教出来的学生不仅仅会做例题,还会做所有相关的变形之后的题目。这种是否能适用于相同类型的其他问题的能力,在机器学习中称为泛化能力。在机器学习中,泛化能力强的模型可能并不是训练精度最高的模型,这就好像班里高考成绩最好的可能不是模拟考最好的一样。在例题考试中你能打满分,只能说明你“拟合”的好,泛化能力怎么样却并不知道。如果你例题考试可以考到150分满分,但是高考只有90分,那就说明你平时的学习是“过拟合”了,只会做以前做过的,不适应产生变化了的相关试题。

一般我们会给正则化惩罚项R(w)分配一个惩罚项系数\lambda用来调节惩罚力度\lambda越大,惩罚力度越大,说明你期待模型是越平滑越好,通俗理解就是泛化能力越强越好,但这可能会损失精度。相反,分配较小的\lambda说明你不希望过多的调节原来的模型,你觉得还是训练精度更加重要。 

正则化惩罚项通常包括L1正则化、L2正则化等多种形式。这些正则化项的作用是增加模型复杂度的惩罚,使得模型更加倾向于选择简单的解,而不是过度拟合训练数据。具体来说,

  • L1正则化也称为Lasso回归,它通过对权重参数的绝对值之和进行惩罚,从而使得模型中的某些权重参数变得接近于零,达到简化模型的效果。
  • L2正则化也称为Ridge回归,它通过对权重参数的平方进行惩罚,使得模型中的权重参数变得较小,从而避免过拟合。

在实际应用中,正则化惩罚项的强度可以通过超参数进行调整。例如,在支持向量机(SVM)中,可以通过调整C参数来控制对错分样本的惩罚程度和模型的复杂度。在神经网络中,可以通过调整正则化强度的超参数来平衡模型的复杂度和拟合能力。

7. Softmax分类器

一般情况下,我们不会将神经网络的输出设置为具体数据,因为我们很少直接将神经网络的“得分”情况作为直接的判别标准。同时,我们也需要考虑方便神经网络的反向传播,即为基于损失函数的调整参数做准备。因此,我们在使用神经网络完成任务的时候往往会使用Softmax分类器来将计算出来的得分转换成概率。对于得分值,可以通过归一化,标准化的方式先预处理数据,如下图所示。

edc25c0e1c4b40e081ec884300a9410f.png

Softmax分类器是一种基于概率的分类模型,它通过构建一个softmax函数,将神经网络输出的特征值映射到概率分布上。对于给定的输入样本,Softmax分类器计算其属于各个类别的概率,并将概率最大的类别作为预测结果。至于损失函数,Softmax分类器通过计算交叉熵来获得,具体来说就是计算出分类概率的对数的负值作为损失值。

Softmax分类器的优点在于它可以处理多分类问题,并且能够给出每个类别的概率分布,从而提供更多的分类信息。然而,Softmax分类器也存在一些缺点,例如对于输入特征的选择和处理、模型的训练和调参等方面需要一定的技巧和经验。此外,对于大规模高维数据集,Softmax分类器的计算复杂度较高,需要进行高效的算法优化和并行处理。

一般来说,使用神经网络进行回归任务,其损失值可以直接由得分值来进行表示。但是对于分类任务,其损失值需要由分类概率来进行表示。

8. 数据预处理

在将原始数据输入到神经网络之前,我们还需要对其进行一系列的处理和转换,以提高神经网络的性能和效果。数据预处理是神经网络训练过程中非常重要的一步,因为它能够帮助神经网络更好地学习和理解数据。数据预处理的主要目的包括:

  1. 归一化(Normalization):将原始数据转换为在一定范围内(如0到1或-1到1)的标准形式,以消除不同特征之间的量纲和取值范围差异对神经网络训练的影响。常见的归一化方法有最小-最大归一化Z-score归一化等。
  2. 标准化(Standardization):通过减去均值并除以标准差,将数据转换为符合标准正态分布的形式。标准化可以消除数据的偏斜和量纲差异,使得不同特征之间具有相同的权重
  3. 缺失值处理(Missing Value Handling):对于数据中存在的缺失值,需要进行适当的处理,如填充缺失值、删除含有缺失值的样本等。
  4. 噪声过滤(Noise Filtering):对于数据中存在的噪声,可以通过平滑、滤波等方法进行过滤,以减少噪声对神经网络训练的影响。
  5. 特征选择(Feature Selection):从原始特征中选择出对神经网络训练有帮助的特征,以提高神经网络的性能和效果。

除了以上常见的数据预处理方法外,还有一些其他的技术和方法,如数据增强(Data Augmentation)、主成分分析(PCA)等,也可以用于神经网络的数据预处理。总之,神经网络的数据预处理是神经网络训练过程中非常重要的一步,通过合理的预处理可以提高神经网络的性能和效果,使其更好地学习和理解数据。

9. 参数初始化

最后,就是神经网络的参数初始化(Parameter Initialization)了。神经网络的参数初始化指的是在训练神经网络之前,为其参数(如权重和偏置)赋予初始值的过程。这些参数在神经网络的训练过程中会被不断地调整和优化,以使得神经网络的输出能够尽可能地接近真实值,从而达到提高模型性能的目的。

参数初始化是神经网络训练的关键步骤之一,因为初始参数的选择会直接影响到神经网络的训练速度和效果。如果初始参数选择不当,可能会导致神经网络训练陷入局部最优解,或者出现梯度消失、梯度爆炸等问题,从而影响模型的性能。

常见的神经网络参数初始化方法包括:

  1. 预训练初始化(Pre-trained Initialization):使用在大规模数据集上预训练的模型参数作为初始值。这种方法可以提供一个较好的起点,有助于神经网络更快地收敛到较好的解。预训练模型通常可以通过微调(Fine-tuning)来适应新的任务和数据集。
  2. 随机初始化(Random Initialization):按照某种随机分布(如正态分布、均匀分布等)为神经网络参数赋予初始值。随机初始化可以打破对称权重现象,使得不同的神经元在训练初期就具有区分性。但是,随机初始化的参数范围和分布需要谨慎选择,以避免出现梯度消失或梯度爆炸等问题。
  3. 固定值初始化(Fixed Value Initialization):将神经网络的参数初始化为某个固定的值,如0或1等。这种方法在一些特殊情况下可能会有效,但在大多数情况下并不推荐使用,因为它可能会导致神经网络在训练初期就陷入局部最优解。

神经网络的参数初始化是一个非常重要的步骤,需要根据具体的任务和数据集选择合适的初始化方法,以确保神经网络能够快速地收敛到较好的解,并避免一些常见的训练问题。

10. dropout

神经网络的dropout是一种正则化技术,主要用于防止过拟合。虽然我们在第5小节介绍了损失函数的正则化惩罚项的概念,但是在实际训练过程中,由于全连接神经网络使用的参数过多,因此训练的难度非常大。而dropout则是这样一种来加快训练的防止过拟合的正则化技术。dropout会随机地“关闭”一部分神经元,这意味着在每次迭代中,神经网络都会训练一个不同的网络结构。这有助于减少神经元之间的依赖性,增强模型的泛化能力。

具体来说,对于每一次训练,dropout会随机选择一定比例的神经元(通常是50%),并将它们的输出设置为0。这意味着在前向传播过程中,这些神经元不会对下一层产生任何影响。然而,在反向传播过程中,这些被“关闭”的神经元的权重仍然会进行更新。然后在下一轮的训练中,dropout又会随机选择一定比例的神经元进行忽略,直到达到满足训练的要求为止。

需要注意的是,dropout只在训练阶段使用,而在测试或预测阶段,所有的神经元都会被激活,以充分利用神经网络的全部能力。此外,由于dropout的随机性,每次训练迭代都会使用不同的网络结构,这有助于减少测试集中的错误。总的来说,dropout是一种有效的正则化技术,可以提高神经网络的泛化能力,减少过拟合现象,并改善模型在未知数据上的表现。

  • 72
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值