神经网络简单讲解

神经元模型

当我们谈论神经元模型时,通常是指人工神经元模型,也称为人工神经元或神经元。这是模拟生物神经元的数学模型,是构成人工神经网络的基本单元。

一个典型的人工神经元模型包含以下几个部分:

  1. 输入:神经元接收来自其他神经元的输入,每个输入都有一个权重,用来调节其重要性。

  2. 加权和:输入和对应的权重相乘后求和,得到加权和。加权和表示了神经元对输入的综合响应。

  3. 激活函数:加权和被送入激活函数,激活函数的作用是对加权和进行非线性变换,产生神经元的输出。常用的激活函数包括 sigmoid 函数、ReLU 函数等。

  4. 阈值:有些模型中,神经元的输出需要超过一个阈值才会被激活。

  5. 输出:激活函数处理后的结果即为神经元的输出,它可能作为其他神经元的输入。

激活函数

1. 阶跃函数(Step Function):阶跃函数是最简单的激活函数之一,其输出是根据输入是否超过阈值来确定的。具体来说,当输入大于等于零时输出为1,否则输出为0。阶跃函数在神经网络中很少使用,因为它不连续且不可导,导致在反向传播算法中无法计算梯度。

2. Sigmoid函数:Sigmoid函数是一种常用的激活函数,它将输入值压缩到0到1之间。其公式为:\sigma(x) = \frac{1}{1 + e^{-x}}, Sigmoid函数具有平滑的 S 形曲线,输出在0到1之间,适合用于输出层或隐藏层的非线性变换。然而,Sigmoid函数存在梯度消失的问题,即在接近饱和区域时,梯度接近于零,导致训练困难。

3. ReLU函数(Rectified Linear Unit):ReLU函数是一种简单而有效的激活函数,它在输入大于零时返回输入值,否则返回零。其公式为:f(x) = \max(0, x),ReLU函数解决了梯度消失的问题,加速了模型的训练速度,并且在实践中表现良好。然而,ReLU函数在负数区域输出为零,可能导致神经元“死亡”,即永远不会被激活。

感知机和多层网络

感知机(Perceptron):感知机是一种最简单形式的神经网络模型,由美国心理学家Frank Rosenblatt于1957年提出。它由一个单层的神经元组成,可以用于二分类任务。感知机接收多个输入x_1, x_2, ..., x_n,每个输入有一个对应的权重 w_1, w_2, ..., w_n,然后计算加权和z = \sum_{i=1}^{n} w_i x_i,最后通过激活函数(通常是阶跃函数)得到输出y。感知机的输出 y可以表示为:y = \begin{cases} 1, & \text{if } z \geq \theta \\ 0, & \text{if } z < \theta \end{cases}

其中 \theta是阈值。

多层网络(Multi-layer Network):多层网络是由多个神经元组成的神经网络模型,通常包括输入层、隐藏层和输出层。隐藏层可以有多层,因此网络可以是深层的。多层网络可以通过堆叠多个感知机(或其他单元)来实现对复杂模式的学习和表示。多层网络通常使用反向传播算法进行训练,通过调整权重来最小化损失函数,从而使网络输出尽可能接近真实标签。

在实际应用中,感知机通常用作神经网络的基本单元,而多层网络则是构建复杂模型的基础。通过合理设计网络结构和选择合适的激活函数,可以实现对各种复杂问题的建模和求解。

感知机在线性可分和非线性可分问题中有不同的应用情况:

1. 与、或、非问题(AND, OR, NOT):对于与、或、非这类简单的逻辑运算问题,感知机可以很好地进行处理,因为这些问题是线性可分的。例如,对于AND问题,输入为两个二进制数字  x_1  和x_2,输出为 x_1x_2同时为1时输出1,否则输出0。我们可以设计一个感知机,设置合适的权重和阈值,使得感知机可以正确地进行分类。类似地,对于OR问题和NOT问题,也可以使用感知机进行解决。

2. 异或问题(XOR):与与、或、非问题不同的是,异或问题是非线性可分的,无法通过单层感知机进行解决。异或问题的输入为两个二进制数字 x_1x_2,输出为x_1x_2 不同时为1时输出1,否则输出0。由于异或问题无法用单层感知机进行线性划分,因此需要使用多层感知机(即多层网络)来解决。通过在隐藏层引入非线性激活函数(如sigmoid函数、ReLU函数等),多层感知机可以学习并表示非线性关系,从而解决异或问题。

 

多层前馈神经网络(Multi-layer Feedforward Neural Network):

这是最常见的神经网络结构之一,也称为多层感知机(MLP)。它由一个输入层、一个或多个隐藏层以及一个输出层组成,其中每一层都是前向连接的(即不同层之间的神经元没有反馈连接),并且每个神经元都与下一层的所有神经元连接。在多层前馈神经网络中,信息从输入层经过隐藏层传递到输出层,隐藏层的存在可以帮助网络学习到非线性的特征和关系,从而提高模型的表现能力。

单隐层网络(Single Hidden Layer Network):

指只包含一个隐藏层的神经网络。单隐层网络在理论上可以用来逼近任何复杂的函数,但在实际应用中可能不够灵活,因为它的表达能力受到隐藏层神经元数量的限制。单隐层网络通常用于较简单的问题或者作为其他更复杂网络的组件。

双隐层网络(Double Hidden Layer Network):

指包含两个隐藏层的神经网络。双隐层网络相比于单隐层网络具有更强的表达能力,可以更好地学习复杂的非线性关系。双隐层网络在某些复杂问题上表现得更好,但同时也会增加训练和调参的复杂性。

误差逆传播算法

当我们讨论误差逆传播(Backpropagation, 简称 BP)算法和BP网络时,通常是指用于训练多层前馈神经网络(MLP)的一种算法和相应的网络结构。下面我将分别对误差逆传播算法和BP网络进行详细解释:

误差逆传播算法(Backpropagation Algorithm):

 算法原理:误差逆传播算法是一种基于梯度下降的优化算法,用于调整神经网络中的权重,以最小化网络的误差。算法基于链式法则,通过反向传播计算每个权重对误差的贡献,并根据梯度的方向更新权重值,使得误差逐渐减小。

算法步骤:
     1. 前向传播:将输入数据经过神经网络的前向传播,计算每个神经元的输出。
     2. 计算误差:根据网络输出和真实标签计算网络的误差。
     3. 反向传播:从输出层开始,根据链式法则计算每个神经元的误差梯度,并将梯度传播回每一层的神经元。
     4. 权重更新:根据误差梯度和学习率,更新每个权重值,使得误差逐渐减小。

BP网络(Backpropagation Neural Network):

网络结构:BP网络是一种多层前馈神经网络(MLP),通常包含输入层、一个或多个隐藏层以及输出层。隐藏层和输出层之间的连接是全连接的。
   
训练过程:BP网络通过误差逆传播算法进行训练,即通过反复迭代前向传播和误差逆传播来调整网络的权重,使得网络能够学习到输入和输出之间的映射关系。

特点:BP网络具有强大的学习能力和适应性,能够学习和表示复杂的非线性关系。然而,训练BP网络需要大量的数据和计算资源,且容易陷入局部最优解。

累积误差逆传播(Accumulated Error Backpropagation)算法

累积误差逆传播算法是一种改进的误差逆传播算法,用于训练多层神经网络(MLP)。它在传统的误差逆传播算法基础上进行了改进,主要是为了解决传统算法中梯度消失和梯度爆炸的问题。

累积误差逆传播算法的基本思想是在反向传播过程中累积每一层的误差梯度,然后将累积的梯度用于更新权重,从而提高了网络的训练效果和收敛速度。

下面是累积误差逆传播算法的基本步骤:

  1. 前向传播:将输入数据经过神经网络的前向传播,计算每个神经元的输出。

  2. 计算误差:根据网络输出和真实标签计算网络的误差。

  3. 反向传播:从输出层开始,计算每一层的误差梯度,并累积到每层的梯度总和中。

  4. 更新权重:根据累积的梯度总和和学习率,更新每个权重值。

  5. 重复迭代:重复以上步骤,直到达到停止条件(如达到最大迭代次数或误差小于阈值)。

“试错法”(trial-by-error)调整隐层神经元数量

调整隐层神经元数量的目标是找到一个适合问题复杂度的模型,既不过度拟合(模型过于复杂,学习了数据中的噪声),也不欠拟合(模型过于简单,无法捕捉数据的复杂关系)。

具体步骤如下:

  1. 初始化:开始时选择一个较小的隐层神经元数量,建立一个简单的模型。

  2. 训练和评估:使用训练数据训练模型,并使用验证数据评估模型的性能。观察模型在验证数据上的表现,包括准确率、损失值等指标。

  3. 调整:根据模型在验证数据上的表现,逐步增加或减少隐层神经元数量。如果模型欠拟合,可以尝试增加神经元数量;如果模型过拟合,可以尝试减少神经元数量。

  4. 重复:反复进行训练、评估和调整的过程,直到找到一个性能最佳的模型。

在调整隐层神经元数量时,需要注意避免过度拟合和欠拟合问题。过度拟合时,模型在训练数据上表现很好,但在验证数据上表现较差;欠拟合时,模型在训练数据和验证数据上表现都较差。通过“试错法”不断调整隐层神经元数量,可以找到一个适合问题的模型,从而获得更好的性能。

缓解BP神经网络的过拟合

  1. 正则化(Regularization):正则化是一种通过添加额外的惩罚项来限制模型复杂度的方法,从而减少过拟合。在BP网络中,常用的正则化方法包括L1正则化和L2正则化。

    • L1正则化:在损失函数中加入权重的L1范数(绝对值之和),使得权重向量中较小的权重趋向于变为零。这样可以使得模型更加稀疏,减少不必要的参数。

    • L2正则化:在损失函数中加入权重的L2范数(平方之和),使得权重向量中所有权重都变得较小。这样可以防止权重过大,减少模型对训练数据的敏感性。

  2. 早停(Early Stopping):早停是一种简单而有效的防止过拟合的方法,其原理是在训练过程中监控模型在验证数据上的性能,并在性能开始下降时停止训练。这样可以防止模型过度学习训练数据中的噪声。

全局最小与局部极小

在神经网络中,我们通常使用损失函数来衡量模型在训练集上的表现,然后通过优化算法(如梯度下降)来调整网络参数以最小化损失函数。在这个过程中,我们追求的是找到损失函数的全局最小值,即使得模型在整个参数空间中达到最低损失的点。

然而,在实际应用中,神经网络的参数空间通常非常庞大,并且损失函数通常是高度非凸的(非凸函数具有多个局部极小值)。这就导致了一个问题:网络可能会陷入局部极小值,而无法达到全局最小值。局部极小值是指在某个局部范围内,损失函数的值比周围点的损失函数值都要小,但不一定是整个参数空间中的最小值。

 

在神经网络训练过程中如何尝试跳出局部极小值以接近全局最小值的策略。下面具体有四种方法:

  1. 多组不同参数值初始化多个神经网络:通过多次尝试不同的随机初始化参数值,可以使得神经网络从不同的初始点开始搜索,从而有可能避免陷入相同的局部极小值,增加找到全局最小值的机会。

  2. 模拟退火技术:模拟退火是一种基于物理学中固体物体退火过程的优化算法。在每一步迭代中,模拟退火以一定的概率接受比当前解更差的结果,这样有助于跳出局部极小值。随着迭代次数的增加,接受次优解的概率逐渐降低,最终保证算法的稳定性。

  3. 随机梯度下降:与标准梯度下降不同,随机梯度下降在计算梯度时引入了随机因素。即使在局部极小值点,由于随机性,梯度仍可能不为零,从而有机会跳出局部极小值点,继续搜索全局最小值。

  4. 遗传算法:遗传算法是一种基于生物进化过程的优化算法,常用于训练神经网络以更好地逼近全局最小值。通过模拟自然选择、交叉和变异等过程,遗传算法可以在大范围内搜索参数空间,有助于找到全局最小值。

需要注意的是,上述方法大多是启发式的,没有理论上的保证能够找到全局最小值。在实际应用中,通常结合多种方法来提高神经网络训练的稳定性和效果。

经典的神经网络

RBF网络

径向基函数(Radial Basis Function, RBF)网络是一种人工神经网络,通常用于函数逼近和分类任务。它的特点是具有局部感知能力和全局逼近能力,能够灵活地适应各种复杂的问题。

RBF网络通常由三层组成:输入层、隐藏层和输出层。每一层的作用如下:

  1. 输入层(Input Layer):接受输入数据,将输入数据传递给隐藏层。

  2. 隐藏层(Hidden Layer):使用径向基函数对输入数据进行变换,将输入数据映射到高维空间中。隐藏层的每个神经元都对应一个径向基函数,用于衡量输入数据与该神经元代表的中心之间的距离。常用的径向基函数包括高斯函数、多项式函数等。

  3. 输出层(Output Layer):根据隐藏层的输出计算最终的输出结果。输出层通常是一个线性组合,可以使用线性回归、逻辑回归等方法。

RBF网络的训练过程通常分为以下步骤:

  1. 确定径向基函数的中心:通常使用K-means聚类等方法来确定隐藏层神经元的中心。

  2. 确定径向基函数的宽度:径向基函数的宽度决定了函数的覆盖范围,通常需要通过交叉验证等方法来确定合适的宽度。

  3. 计算隐藏层输出:根据输入数据和径向基函数的中心和宽度计算隐藏层的输出。

  4. 计算输出层权重:使用最小二乘法等方法计算输出层的权重,使得输出结果与实际结果的误差最小化。

RBF网络具有较强的非线性逼近能力和泛化能力,在一些函数逼近、模式识别和时间序列预测等领域有着广泛的应用。但是,由于RBF网络的训练复杂度较高,需要合理选择径向基函数的中心和宽度,以及适当的正则化方法来防止过拟合。

ART网络

竞争型学习(competitive learning)是一种无监督学习(unsupervised learning)的方法,它模拟了神经元之间的竞争和抑制过程,用于发现数据中的特征和结构。在竞争型学习中,神经元之间存在竞争关系,当某个神经元对输入数据的响应最强时,它就会被激活并成为获胜神经元,从而学习到数据的特征。这种机制亦称“胜者通吃 (winner-take-all) 原则。

竞争型学习的基本原理如下:

  1. 神经元竞争:在竞争型学习中,神经元之间存在竞争关系。当一个输入样本被输入网络时,神经元会计算与该样本的相似度,并竞争成为获胜神经元。

  2. 获胜神经元的更新:获胜神经元会更新自己的权重,使得它对输入样本的响应更强。这种更新通常使用Hebbian学习规则,即“细胞同时放电”的原则,即神经元和它所连接的输入神经元之间的连接强度增加。

  3. 邻近神经元的抑制:在竞争过程中,获胜神经元的邻近神经元会受到抑制,使得它们对当前输入的响应减弱。这种抑制有助于确保网络中的神经元对不同特征的表示具有多样性。

自适应谐振理论(Adaptive Resonance Theory, ART)网络是一种神经网络模型, 是竞争型学习的重要代表,旨在模拟人类大脑对动态模式识别和记忆的能力。ART网络由斯蒂芬·格罗斯伯格(Stephen Grossberg)于1976年提出,是一种无监督学习模型,具有自适应、稳健、快速学习等特点,在模式识别、聚类和记忆等领域有着广泛的应用。

  1. 竞争层计算相似度:在接收到比较层的输入信号后,识别层神经元之间相互竞争以产生获胜神经元。竞争的方式是计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜出。

  2. 获胜神经元更新:获胜神经元将向其他识别层神经元发送信号,抑制其激活。如果输入向量与获胜神经元对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该类别,并更新连接权重,使得以后在接收到相似输入样本时该模式类有更大可能获胜。如果相似度不大于识别阈值,则会在识别层增设一个新的神经元,其代表向量设置为当前输入向量。

  3. 识别阈值影响:识别阈值对ART网络的性能有重要影响。识别阈值较高时,输入样本被分成比较多、比较精细的模式类;识别阈值较低时,会产生比较少、比较粗略的模式类。

  4. 解决可塑性-稳定性窘境:ART网络很好地缓解了竞争型学习中的“可塑性-稳定性窘境”。可塑性指神经网络学习新知识的能力,稳定性指神经网络在学习新知识时对旧知识的保持记忆。ART网络通过调节识别阈值,既能学习新知识,又能保持对旧知识的记忆,从而实现了增量学习或在线学习的能力。

SOM 网络

自组织映射(Self-Organizing Map, SOM)网络是一种无监督学习的人工神经网络,常用于聚类分析、数据可视化和降维等任务。SOM网络由芬兰科学家Teuvo Kohonen于1982年提出,其基本原理是通过自组织的方式将高维输入空间映射到低维的输出空间,从而保留输入数据的拓扑结构。

SOM网络通常由一个二维或三维的网格组成,每个节点称为神经元。这些神经元排列成一个拓扑结构,通常是一个矩形或六边形的网格。每个神经元都有一个与输入数据相对应的权重向量,用于表示该神经元在输入空间中的位置。

SOM网络的学习过程包括两个关键阶段:竞争阶段和合作阶段。

  1. 竞争阶段:在竞争阶段,输入样本与所有神经元的权重向量进行比较,找到与输入样本最相似的神经元,称为获胜神经元。相似度通常使用欧氏距离或余弦相似度等度量方式来计算。

  2. 合作阶段:在合作阶段,获胜神经元及其邻近神经元的权重向量会被调整,使得它们更加接近输入样本。这种调整方式通常使用拉普拉斯函数(Laplacian function)或高斯函数(Gaussian function)等函数来实现,使得邻近神经元的权重也会受到影响,从而保持了输入空间的拓扑结构。

SOM网络的优点包括能够保持输入数据的拓扑结构、对噪声和异常值具有一定的鲁棒性、可以有效地降低数据的维度以及易于可视化和解释等。SOM网络在数据挖掘、图像处理、模式识别等领域有着广泛的应用。

级联相关网络

级联相关(Cascade-Correlation)网络是一种由斯科特·福克斯(Scott Fahlman)和查尔斯·莱尔(Charles Lebiere)于1990年提出的神经网络模型。它是一种动态增量学习网络,能够自适应地增加隐藏层神经元,以逐步提高网络的性能。

级联相关网络的主要特点包括:

  1. 动态增加隐藏层神经元:级联相关网络的特殊之处在于,它可以在训练过程中动态地增加隐藏层神经元,而传统的神经网络需要预先确定隐藏层的大小。这种动态增加隐藏层神经元的能力使得网络可以在需要时自适应地扩展,从而提高网络的性能。

  2. 训练方式:级联相关网络的训练过程分为两个阶段。首先,它会使用一组输入数据训练一个初始网络,然后通过动态增加隐藏层神经元来改善网络的性能。在增加隐藏层神经元时,级联相关网络会保持原有神经元的连接权重不变,并且只训练新添加的神经元。

  3. 激活函数:级联相关网络通常使用sigmoid函数或者类似的激活函数来实现非线性映射。

  4. 应用:级联相关网络在处理复杂问题和大规模数据集时表现出色,特别是在需要动态调整网络结构以适应变化数据特征的情况下。

与一般的前馈神经网络相比,级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合。

级联相关网络的提出为神经网络领域带来了新的思路和方法,尤其是在动态学习和适应性方面。它的独特性和有效性使得它成为神经网络研究中的一个重要方向。

Elman 网络

递归神经网络(Recurrent Neural Networks, RNNs)是一类具有循环连接的神经网络,其内部结构允许信息在网络内部进行循环传播。这种循环结构使得RNNs能够处理序列数据,并在自然语言处理、时间序列分析等领域取得了很好的效果。

RNNs具有以下特点:

  1. 循环连接:RNNs的神经元之间存在循环连接,使得网络可以保持状态并将先前的信息传递到下一个时间步。

  2. 内部状态:RNNs在处理每个时间步的输入时,会维护一个内部状态(hidden state),用于存储之前时间步的信息,这使得网络能够对序列数据进行建模。

  3. 灵活性:RNNs具有很高的灵活性,可以根据任务的需要设计不同结构的网络,如单向RNN、双向RNN、多层RNN等。

  4. 梯度传播:传统的RNNs在训练过程中容易遇到梯度消失或梯度爆炸的问题。为了解决这个问题,人们提出了一些改进的RNN结构,如长短期记忆网络(Long Short-Term Memory, LSTM)和门控循环单元(Gated Recurrent Unit, GRU)等。

RNNs在自然语言处理中被广泛应用,如语言建模、机器翻译、文本生成等任务。它们也被用于时间序列分析、视频分析等领域。尽管RNNs在许多任务上表现出色,但也存在一些问题,如处理长序列时的记忆问题和计算效率问题。为了解决这些问题,研究人员提出了许多改进的模型和结构,如注意力机制(Attention Mechanism)、Transformer等。

Elman网络

Elman网络是一种循环神经网络(RNN),最早由Jeffrey Elman在1990年提出。Elman网络的主要特点是引入了一个称为“上下文层”的隐藏层,用于存储网络在前一个时间步的状态,从而在处理序列数据时具有记忆能力。

Elman网络的结构包括输入层、上下文层、隐藏层和输出层。其中,隐藏层和上下文层之间存在全连接的权重,使得上下文层可以存储并传递前一个时间步的信息。在每个时间步,网络接收当前输入和前一个时间步的上下文层状态作为输入,经过隐藏层和输出层计算得到输出,并更新上下文层的状态。

Boltzmann机

Boltzmann机(Boltzmann Machine)是一种基于能量的随机生成神经网络模型,由Geoffrey Hinton和Terry Sejnowski于1985年提出。它是一种无监督学习模型,可以用于处理概率分布和模式识别等问题。

Boltzmann机的基本结构包括可见层(visible layer)和隐藏层(hidden layer),它们之间存在全连接的权重。每个单元(神经元)都有一个状态(0或1),表示神经元的激活状态。Boltzmann机的每个状态都对应一个能量值,通过能量函数来定义。

Boltzmann机的学习过程主要包括两个阶段:概率重构和权重更新。

  1. 概率重构:在概率重构阶段,Boltzmann机根据当前的权重和可见单元的状态来计算隐藏单元的状态,然后根据隐藏单元的状态再次计算可见单元的状态,这个过程不断重复,直到达到稳定状态。

  2. 权重更新:在权重更新阶段,Boltzmann机根据概率重构的结果来更新权重,使得模型能够更好地拟合数据分布。更新权重的方法通常使用梯度下降算法。

Boltzmann机的训练过程是一个迭代的过程,通过不断地重构和更新权重,使得模型能够逐渐学习到数据的分布特征。然而,由于Boltzmann机的训练过程复杂且计算量大,导致其在实际应用中受到一定限制。后来,研究人员提出了一些改进的模型,如受限玻尔兹曼机(Restricted Boltzmann Machine, RBM),它简化了Boltzmann机的结构并改进了训练算法,使得模型更容易训练和应用。

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值