【机器学习:十一、神经网络的数学表达式】

server/2025/1/15 9:29:35/

神经网络的数学表达式是机器学习的重要理论基础,通过数学语言描述神经网络的结构和工作原理,有助于理解其运算过程、优化方法和性能改进。以下从背景意义、数学表达的重要性、隐藏层与输出层的数学表达,再到二层神经网络的数学表达,进行详细阐述。

1. 数学表达的背景意义

数学表达是将复杂问题用数学模型描述的过程,是机器学习理论发展的基础。

  • 背景:在机器学习的早期阶段,研究者常利用线性回归、逻辑回归等数学工具进行预测,但这些模型在处理复杂非线性数据时表现不佳。神经网络通过引入层次化结构和非线性激活函数,能够处理高度复杂的数据特征,并且需要用数学表达清晰地定义其输入、输出和各层的关系。
  • 意义
    • 数学表达为神经网络的实现提供了理论依据,指导编程实现。
    • 数学公式可以用于推导神经网络的优化方法,例如梯度下降和反向传播。
    • 精确的数学描述使得研究者能够定量评估模型性能,为模型调参提供依据。

2. 为什么需要数学表达

神经网络是由多个线性变换和非线性映射组成的复杂结构,用数学表达式进行描述具有以下必要性:

  • 精确描述计算过程:通过数学公式可以明确表示输入数据如何流经网络的各层,并生成输出。
  • 支持优化过程:数学表达可以定义代价函数、梯度计算过程,以及如何通过优化算法调整网络参数。
  • 促进可解释性:数学表达帮助研究者理解网络中每一层的作用以及参数如何影响模型性能。
  • 通用性:用数学表达能够使同一算法适应不同任务(如回归、分类)的场景。

例如,对于输入数据 X \mathbf{X} X 和权重 W \mathbf{W} W ,通过数学公式可以具体描述输入如何被映射到隐藏层和输出层。

3. 隐藏层的数学表达

隐藏层是神经网络的核心,负责通过线性变换和激活函数提取输入数据中的非线性特征。

  • 线性变换: 隐藏层的每个神经元通过权重矩阵 W \mathbf{W} W 和偏置向量 b \mathbf{b} b 对输入 X \mathbf{X} X 进行线性变换:

    Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] \mathbf{Z}^{[l]} = \mathbf{W}^{[l]} \mathbf{A}^{[l-1]} + \mathbf{b}^{[l]} Z[l]=W[l]A[l1]+b[l]

    其中:

    • W [ l ] \mathbf{W}^{[l]} W[l] :表示第 l l l 层的权重矩阵,维度为 n h × n x n_h \times n_x nh×nx
    • A [ l − 1 ] \mathbf{A}^{[l-1]} A[l1] :为上一层的激活值。
    • b [ l ] \mathbf{b}^{[l]} b[l] :表示第 l l l 层的偏置向量。
  • 激活函数: 通过激活函数引入非线性,使网络能够拟合复杂关系:

    A [ l ] = g ( Z [ l ] ) \mathbf{A}^{[l]} = g(\mathbf{Z}^{[l]}) A[l]=g(Z[l])

    常用的激活函数包括:

    • ReLU(Rectified Linear Unit): g ( z ) = max ⁡ ( 0 , z ) g(z) = \max(0, z) g(z)=max(0,z) ,适用于深度神经网络,收敛速度较快。
    • Sigmoid: g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1 ,常用于输出层。
    • Tanh: g ( z ) = e z − e − z e z + e − z g(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}} g(z)=ez+ezezez ,用于平衡输入数据的分布。

4. 输出层的数学表达

输出层负责将隐藏层的特征映射到最终的预测值,依据任务类型选择不同的数学表达方式。

  • 线性回归输出: 对于回归问题,输出层直接使用线性变换:

    Y ^ = W [ L ] A [ L − 1 ] + b [ L ] \hat{\mathbf{Y}} = \mathbf{W}^{[L]} \mathbf{A}^{[L-1]} + \mathbf{b}^{[L]} Y^=W[L]A[L1]+b[L]

    其中:

    • Y ^ \hat{\mathbf{Y}} Y^ :模型的预测输出。
    • W [ L ] \mathbf{W}^{[L]} W[L] :输出层的权重矩阵。
    • b [ L ] \mathbf{b}^{[L]} b[L] :输出层的偏置。
  • 分类问题输出: 对于分类问题,输出层需要将结果映射为概率分布,通常使用 Softmax 激活函数:

    Softmax ( z j ) = e z j ∑ k = 1 K e z k \text{Softmax}(z_j) = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}} Softmax(zj)=k=1Kezkezj

    其中 K K K 是类别数,Softmax 确保所有输出的和为 1。

  • 二分类问题输出: 使用 Sigmoid 函数:

    y ^ = 1 1 + e − z \hat{y} = \frac{1}{1 + e^{-z}} y^=1+ez1

5. 二层神经网络的数学表达

二层神经网络由一个输入层、一个隐藏层和一个输出层构成。假设任务是多分类问题,其数学表达如下:

  • 输入到隐藏层的映射

    Z [ 1 ] = W [ 1 ] X + b [ 1 ] \mathbf{Z}^{[1]} = \mathbf{W}^{[1]} \mathbf{X} + \mathbf{b}^{[1]} Z[1]=W[1]X+b[1]

    A [ 1 ] = g [ 1 ] ( Z [ 1 ] ) \mathbf{A}^{[1]} = g^{[1]}(\mathbf{Z}^{[1]}) A[1]=g[1](Z[1])

    其中:

    • X ∈ R n x × m \mathbf{X} \in \mathbb{R}^{n_x \times m} XRnx×m :输入数据矩阵。
    • W [ 1 ] ∈ R n h × n x \mathbf{W}^{[1]} \in \mathbb{R}^{n_h \times n_x} W[1]Rnh×nx :隐藏层权重矩阵。
    • b [ 1 ] ∈ R n h × 1 \mathbf{b}^{[1]} \in \mathbb{R}^{n_h \times 1} b[1]Rnh×1 :隐藏层偏置。
    • g [ 1 ] ( ⋅ ) g^{[1]}(\cdot) g[1]() :隐藏层激活函数(例如 ReLU)。
  • 隐藏层到输出层的映射

    Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] \mathbf{Z}^{[2]} = \mathbf{W}^{[2]} \mathbf{A}^{[1]} + \mathbf{b}^{[2]} Z[2]=W[2]A[1]+b[2]

    Y ^ = g [ 2 ] ( Z [ 2 ] ) \hat{\mathbf{Y}} = g^{[2]}(\mathbf{Z}^{[2]}) Y^=g[2](Z[2])

    其中:

    • W [ 2 ] ∈ R n y × n h \mathbf{W}^{[2]} \in \mathbb{R}^{n_y \times n_h} W[2]Rny×nh :输出层权重矩阵。
    • b [ 2 ] ∈ R n y × 1 \mathbf{b}^{[2]} \in \mathbb{R}^{n_y \times 1} b[2]Rny×1 :输出层偏置。
    • g [ 2 ] ( ⋅ ) g^{[2]}(\cdot) g[2]() :输出层激活函数(例如 Softmax)。

完整的前向传播流程

  1. 输入到隐藏层: A [ 1 ] = g [ 1 ] ( W [ 1 ] X + b [ 1 ] ) \mathbf{A}^{[1]} = g^{[1]}(\mathbf{W}^{[1]} \mathbf{X} + \mathbf{b}^{[1]}) A[1]=g[1](W[1]X+b[1])
  2. 隐藏层到输出层: Y ^ = g [ 2 ] ( W [ 2 ] A [ 1 ] + b [ 2 ] ) \hat{\mathbf{Y}} = g^{[2]}(\mathbf{W}^{[2]} \mathbf{A}^{[1]} + \mathbf{b}^{[2]}) Y^=g[2](W[2]A[1]+b[2])

6. 三层神经网络的数学模型

三层神经网络包含一个输入层、两个隐藏层和一个输出层。它通过多层的线性变换和非线性激活函数完成从输入到输出的复杂映射,能够捕捉非线性特征,适用于多种任务场景。

模型结构

  1. 输入层

    • 输入特征向量 X \mathbf{X} X ,维度为 n x n_x nx (特征数量)。
    • 假设共有 m m m 个样本,则输入矩阵为 X ∈ R n x × m \mathbf{X} \in \mathbb{R}^{n_x \times m} XRnx×m
  2. 隐藏层

    • 第一隐藏层有 n h [ 1 ] n_h^{[1]} nh[1] 个神经元。
    • 第二隐藏层有 n h [ 2 ] n_h^{[2]} nh[2] 个神经元。
  3. 输出层

    • 输出层有 n y n_y ny 个神经元,具体数量取决于任务类型(如二分类为 1,多分类为类别数)。

数学表达

1. 第一隐藏层的数学表达

第一隐藏层接受输入层的数据并进行线性变换和非线性激活。其计算公式为:

Z [ 1 ] = W [ 1 ] X + b [ 1 ] \mathbf{Z}^{[1]} = \mathbf{W}^{[1]} \mathbf{X} + \mathbf{b}^{[1]} Z[1]=W[1]X+b[1]

A [ 1 ] = g [ 1 ] ( Z [ 1 ] ) \mathbf{A}^{[1]} = g^{[1]}(\mathbf{Z}^{[1]}) A[1]=g[1](Z[1])

  • W [ 1 ] ∈ R n h [ 1 ] × n x \mathbf{W}^{[1]} \in \mathbb{R}^{n_h^{[1]} \times n_x} W[1]Rnh[1]×nx :第一隐藏层的权重矩阵。
  • b [ 1 ] ∈ R n h [ 1 ] × 1 \mathbf{b}^{[1]} \in \mathbb{R}^{n_h^{[1]} \times 1} b[1]Rnh[1]×1 :第一隐藏层的偏置向量。
  • Z [ 1 ] ∈ R n h [ 1 ] × m \mathbf{Z}^{[1]} \in \mathbb{R}^{n_h^{[1]} \times m} Z[1]Rnh[1]×m :第一隐藏层的线性变换结果。
  • g [ 1 ] ( ⋅ ) g^{[1]}(\cdot) g[1]() :第一隐藏层的激活函数(例如 ReLU、Tanh 等)。

2. 第二隐藏层的数学表达

第二隐藏层接受第一隐藏层的输出 A [ 1 ] \mathbf{A}^{[1]} A[1] 作为输入,进行相同的计算过程:

Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] \mathbf{Z}^{[2]} = \mathbf{W}^{[2]} \mathbf{A}^{[1]} + \mathbf{b}^{[2]} Z[2]=W[2]A[1]+b[2]

A [ 2 ] = g [ 2 ] ( Z [ 2 ] ) \mathbf{A}^{[2]} = g^{[2]}(\mathbf{Z}^{[2]}) A[2]=g[2](Z[2])

  • W [ 2 ] ∈ R n h [ 2 ] × n h [ 1 ] \mathbf{W}^{[2]} \in \mathbb{R}^{n_h^{[2]} \times n_h^{[1]}} W[2]Rnh[2]×nh[1] :第二隐藏层的权重矩阵。
  • b [ 2 ] ∈ R n h [ 2 ] × 1 \mathbf{b}^{[2]} \in \mathbb{R}^{n_h^{[2]} \times 1} b[2]Rnh[2]×1 :第二隐藏层的偏置向量。
  • Z [ 2 ] ∈ R n h [ 2 ] × m \mathbf{Z}^{[2]} \in \mathbb{R}^{n_h^{[2]} \times m} Z[2]Rnh[2]×m :第二隐藏层的线性变换结果。
  • g [ 2 ] ( ⋅ ) g^{[2]}(\cdot) g[2]() :第二隐藏层的激活函数。

3. 输出层的数学表达

输出层接受第二隐藏层的激活值 A [ 2 ] \mathbf{A}^{[2]} A[2] 作为输入,并通过线性变换和激活函数生成最终输出:

Z [ 3 ] = W [ 3 ] A [ 2 ] + b [ 3 ] \mathbf{Z}^{[3]} = \mathbf{W}^{[3]} \mathbf{A}^{[2]} + \mathbf{b}^{[3]} Z[3]=W[3]A[2]+b[3]

Y ^ = g [ 3 ] ( Z [ 3 ] ) \hat{\mathbf{Y}} = g^{[3]}(\mathbf{Z}^{[3]}) Y^=g[3](Z[3])

  • W [ 3 ] ∈ R n y × n h [ 2 ] \mathbf{W}^{[3]} \in \mathbb{R}^{n_y \times n_h^{[2]}} W[3]Rny×nh[2] :输出层的权重矩阵。
  • b [ 3 ] ∈ R n y × 1 \mathbf{b}^{[3]} \in \mathbb{R}^{n_y \times 1} b[3]Rny×1 :输出层的偏置向量。
  • Z [ 3 ] ∈ R n y × m \mathbf{Z}^{[3]} \in \mathbb{R}^{n_y \times m} Z[3]Rny×m :输出层的线性变换结果。
  • g [ 3 ] ( ⋅ ) g^{[3]}(\cdot) g[3]() :输出层的激活函数。
    • 二分类问题:使用 Sigmoid 函数。
    • 多分类问题:使用 Softmax 函数。
    • 回归问题:直接输出线性值(无激活函数)。

前向传播流程总结

整个网络的前向传播可以表示为以下流程:

  1. 第一隐藏层:
    Z [ 1 ] = W [ 1 ] X + b [ 1 ] \mathbf{Z}^{[1]} = \mathbf{W}^{[1]} \mathbf{X} + \mathbf{b}^{[1]} Z[1]=W[1]X+b[1]

    A [ 1 ] = g [ 1 ] ( Z [ 1 ] ) \mathbf{A}^{[1]} = g^{[1]}(\mathbf{Z}^{[1]}) A[1]=g[1](Z[1])

  2. 第二隐藏层:
    Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] \mathbf{Z}^{[2]} = \mathbf{W}^{[2]} \mathbf{A}^{[1]} + \mathbf{b}^{[2]} Z[2]=W[2]A[1]+b[2]

    A [ 2 ] = g [ 2 ] ( Z [ 2 ] ) \mathbf{A}^{[2]} = g^{[2]}(\mathbf{Z}^{[2]}) A[2]=g[2](Z[2])

  3. 输出层:
    Z [ 3 ] = W [ 3 ] A [ 2 ] + b [ 3 ] \mathbf{Z}^{[3]} = \mathbf{W}^{[3]} \mathbf{A}^{[2]} + \mathbf{b}^{[3]} Z[3]=W[3]A[2]+b[3]

    Y ^ = g [ 3 ] ( Z [ 3 ] ) \hat{\mathbf{Y}} = g^{[3]}(\mathbf{Z}^{[3]}) Y^=g[3](Z[3])

反向传播(简述)

为了优化网络参数 W \mathbf{W} W b \mathbf{b} b ,我们需要计算代价函数对各参数的梯度。这通过反向传播实现:

  1. 计算输出层的误差:
    d Z [ 3 ] = Y ^ − Y \mathbf{dZ}^{[3]} = \hat{\mathbf{Y}} - \mathbf{Y} dZ[3]=Y^Y

  2. 计算每一层的梯度:
    d W [ l ] = 1 m d Z [ l ] A [ l − 1 ] ⊤ , d b [ l ] = 1 m ∑ i = 1 m d Z i [ l ] \mathbf{dW}^{[l]} = \frac{1}{m} \mathbf{dZ}^{[l]} \mathbf{A}^{[l-1]^\top}, \quad \mathbf{db}^{[l]} = \frac{1}{m} \sum_{i=1}^m \mathbf{dZ}^{[l]}_i dW[l]=m1dZ[l]A[l1],db[l]=m1i=1mdZi[l]

实例:分类问题中的应用

手写数字识别:

  • 输入:28×28 的灰度图像(784 个像素特征)。
  • 第一隐藏层:128 个神经元,激活函数为 ReLU。
  • 第二隐藏层:64 个神经元,激活函数为 ReLU。
  • 输出层:10 个神经元(代表 0 到 9 的分类),激活函数为 Softmax。

数学流程:

  1. Z [ 1 ] = W [ 1 ] X + b [ 1 ] \mathbf{Z}^{[1]} = \mathbf{W}^{[1]} \mathbf{X} + \mathbf{b}^{[1]} Z[1]=W[1]X+b[1]
  2. A [ 1 ] = max ⁡ ( 0 , Z [ 1 ] ) \mathbf{A}^{[1]} = \max(0, \mathbf{Z}^{[1]}) A[1]=max(0,Z[1])
  3. Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] \mathbf{Z}^{[2]} = \mathbf{W}^{[2]} \mathbf{A}^{[1]} + \mathbf{b}^{[2]} Z[2]=W[2]A[1]+b[2]
  4. A [ 2 ] = max ⁡ ( 0 , Z [ 2 ] ) \mathbf{A}^{[2]} = \max(0, \mathbf{Z}^{[2]}) A[2]=max(0,Z[2])
  5. Z [ 3 ] = W [ 3 ] A [ 2 ] + b [ 3 ] \mathbf{Z}^{[3]} = \mathbf{W}^{[3]} \mathbf{A}^{[2]} + \mathbf{b}^{[3]} Z[3]=W[3]A[2]+b[3]
  6. Y ^ = Softmax ( Z [ 3 ] ) \hat{\mathbf{Y}} = \text{Softmax}(\mathbf{Z}^{[3]}) Y^=Softmax(Z[3])

总结

三层神经网络通过两层隐藏层的线性变换和激活函数,将输入特征映射到复杂的输出空间。其数学模型清晰地定义了各层之间的关系,为前向传播、反向传播和优化提供了明确的计算依据。这样的模型广泛应用于分类、回归和其他机器学习任务中。

7. 总结

神经网络的数学表达是其理论和实践的核心基础。从输入层、隐藏层到输出层,通过线性变换和非线性激活函数构成复杂映射关系。数学表达不仅为网络优化提供基础,也为实际问题的建模和分析提供了强大支持。通过案例分析,如手写数字识别和图像分类,数学表达展示了其在实际场景中的应用潜力。


http://www.ppmy.cn/server/158241.html

相关文章

【机器学习:十九、反向传播】

1. 计算图和导数 计算图的概念 计算图(Computation Graph)是一种有向无环图,用于表示数学表达式中的计算过程。每个节点表示一个操作或变量,每条边表示操作的依赖关系。通过计算图,可以轻松理解和实现反向传播。 计算…

基于单片机的公交车报站系统设计

摘 要 目前,我国经济快速发展,城市化进程不断加快。公交车作为居民日常出行的重要交通工具,公交车的服务质量直接影响到乘客的乘车体验,关系到城市智能交通的发展。为了解决传统公交车上车载终端信息闭塞的问题,提高公…

《零基础Go语言算法实战》【题目 2-26】goroutine 的执行效率问题

《零基础Go语言算法实战》 【题目 2-26】goroutine 的执行效率问题 请说出下面的代码存在什么问题。 package main import "fmt" type Func func(string) string func exec(name string, vs ...Func) string { ch : make(chan string) fn : func(i int) { ch &…

HTML - 其他标签

本章介绍一些最新引入标准的标签。 1.<dialog> 1.1 基本用法 <dialog>标签表示一个可以关闭的对话框。 <dialog>Hello world </dialog>上面就是一个最简单的对话框。 默认情况下&#xff0c;对话框是隐藏的&#xff0c;不会在网页上显示。如果要让…

深度学习模型代码书写指导和建议

在深度学习模型开发中,确保 输入张量的维度和表示意义正确对齐 是至关重要的。以下是详细的指导和建议,帮助你在开发过程中减少错误,提高代码的健壮性。 1. 理解输入和输出张量的维度与含义 1.1 明确每个张量的含义和维度 在设计模型之前,确保了解每个张量的维度顺序和每…

C++中线程同步与互斥的4种方式介绍、对比、场景举例

在C中&#xff0c;当两个或更多的线程需要访问共享数据时&#xff0c;就会出现线程安全问题。这是因为&#xff0c;如果没有适当的同步机制&#xff0c;一个线程可能在另一个线程还没有完成对数据的修改就开始访问数据&#xff0c;这将导致数据的不一致性和程序的不可预测性。为…

anaconda 安装笔记

anaconda 安装笔记 1. conda介绍2. 安装步骤每次找安装文档,都很麻烦,直接记录一篇到CSDN 1. conda介绍 conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一…

【“软件工程”基础概念学习】

基础和相关概念 英文&#xff1a;Software Engineering 软&#xff1a;物体内部的组织疏松&#xff0c;受外力作用后容易改变形状软件&#xff1a; 计算机系统的组成部分&#xff0c;是指挥计算机进行计算、判断、处理信息的程序系统。通常分为系统软件和应用软件。借指某项活…