什么是深度神经网络及其基础工作原理?
发布时间:2025-04-14 15:00:32 | 责任编辑:字母汇 | 浏览量:5 次
一、深度神经网络的定义
深度神经网络(Deep Neural Network,DNN)是一种具有多个隐藏层的神经网络结构。它模仿人脑神经元之间的连接和信息传递方式来处理数据。与传统的浅层神经网络(如单层感知机)相比,深度神经网络通过增加网络的层数来增强模型的表达能力,能够自动学习数据中的复杂特征和模式。
二、基础工作原理
(一)神经元(节点)的结构
-
输入信号
-
每个神经元接收来自前一层神经元的输入信号。这些输入信号可以是原始数据(如图像的像素值、语音信号的振幅等)或者是经过前一层神经元处理后的特征值。假设一个神经元有
n
个输入,输入信号分别为
x
1
,
x
2
,
…
,
x
n
。
-
-
权重(Weight)
-
每个输入信号都与一个权重值相关联,权重表示输入信号在神经元中的重要性。权重是神经网络需要学习的参数之一。对于输入信号
x
i
,对应的权重为
w
i
。
-
-
偏置(Bias)
-
偏置是一个常数项,它允许神经元的输出在没有输入信号时也能有一个非零的值。偏置可以看作是一个神经元的“阈值”,有助于神经元的激活。
-
-
加权求和
-
神经元将输入信号与其对应的权重相乘后求和,再加上偏置。这个过程可以用公式表示为
z
=
w
1
x
1
+
w
2
x
2
+
⋯
+
w
n
x
n
+
b
,其中
b
是偏置。
-
-
激活函数(Activation Function)
-
激活函数的作用是对加权求和的结果进行非线性变换,使神经网络能够学习和处理复杂的非线性关系。常见的激活函数有:
-
Sigmoid 函数:其表达式为
f
(
z
)
=
1
+
e
−
z
1
。它的输出范围在(0,1)之间,可以将输入值映射到一个概率值,常用于二分类问题的输出层。 -
ReLU(Rectified Linear Unit)函数:表达式为
f
(
z
)
=
max
(
0
,
z
)
。它在输入为正时输出输入值本身,在输入为负时输出为0。ReLU 函数在训练深度神经网络时具有计算速度快、能够缓解梯度消失问题等优点,是目前最常用的激活函数之一。 -
Tanh(双曲正切)函数:表达式为
f
(
z
)
=
tanh
(
z
)
,其输出范围在( - 1,1)之间。它和 Sigmoid 函数类似,但输出值为0时对应的输入值为0,这使得它在某些情况下比 Sigmoid 函数表现更好。
-
-
(二)网络的层次结构
-
输入层
-
输入层是神经网络的第一层,其神经元数量通常与输入数据的特征数量相对应。例如,在图像识别任务中,如果输入图像的大小是 28×28 像素(灰度图像),那么输入层就有 784 个神经元,每个神经元对应一个像素值。
-
-
隐藏层
-
隐藏层是位于输入层和输出层之间的层。深度神经网络有多个隐藏层,每个隐藏层包含多个神经元。隐藏层的作用是提取输入数据的特征。从输入层到第一个隐藏层,神经元会学习输入数据的低级特征,如图像中的边缘、纹理等;随着网络层数的增加,后面的隐藏层会学习更高级的特征,如物体的形状、部分等。隐藏层的神经元数量和层数是神经网络结构的重要参数,需要根据具体任务进行调整。
-
-
输出层
-
输出层是神经网络的最后一层,其神经元数量取决于任务的类型。对于分类任务,输出层的神经元数量通常与类别数量相同,每个神经元的输出表示输入数据属于某个类别的概率(使用 Softmax 激活函数时)。例如,在手写数字识别任务中,输出层有 10 个神经元,分别对应数字 0 - 9。对于回归任务,输出层通常只有一个神经元,输出一个连续的值。
-
(三)前向传播
-
过程描述
-
前向传播是从输入层开始,数据依次通过每一层的神经元进行计算,最终到达输出层的过程。在每一层,每个神经元都会接收来自前一层的输入信号,进行加权求和、加上偏置,然后通过激活函数得到输出,这个输出再作为下一层神经元的输入。
-
例如,假设一个简单的两层神经网络,输入层有 3 个神经元,隐藏层有 2 个神经元,输出层有 1 个神经元。输入数据为向量
[
x
1
,
x
2
,
x
3
]
,隐藏层的权重矩阵为
w
11
w
21
w
31
w
12
w
22
w
32
,偏置向量为
[
b
1
,
b
2
]
,隐藏层的激活函数为 ReLU。那么隐藏层的输出计算过程为:-
首先计算加权求和:
[
z
1
,
z
2
]
=
[
w
11
x
1
+
w
21
x
2
+
w
31
x
3
+
b
1
,
w
12
x
1
+
w
22
x
2
+
w
32
x
3
+
b
2
]
-
然后通过 ReLU 激活函数:
[
h
1
,
h
2
]
=
[
max
(
0
,
z
1
)
,
max
(
0
,
z
2
)]
-
接下来,假设输出层的权重为
[
w
o
1
,
w
o
2
]
,偏置为
b
o
,激活函数为线性函数。输出层的输出计算为:
y
=
w
o
1
h
1
+
w
o
2
h
2
+
b
o
-
-
(四)损失函数和反向传播
-
损失函数(Loss Function)
-
损失函数用于衡量神经网络的预测值与真实值之间的差异。对于不同的任务,损失函数的形式不同。在回归任务中,常用的损失函数是均方误差(Mean Squared Error,MSE),其表达式为
MSE
=
N
1
∑
i
=
1
N
(
y
i
−
y
^
i
)
2
,其中
N
是样本数量,
y
i
是真实值,
y
^
i
是预测值。在分类任务中,常用的损失函数是交叉熵损失(Cross - Entropy Loss),其表达式为
CE
=
−
∑
i
=
1
C
y
i
log
(
y
^
i
)
,其中
C
是类别数量,
y
i
是真实标签的独热编码,
y
^
i
是预测的类别概率。
-
-
反向传播(Backpropagation)
-
反向传播是神经网络训练过程中用来更新网络参数(权重和偏置)的关键算法。它的基本思想是利用链式法则计算损失函数对每个参数的梯度,然后根据梯度来更新参数,使损失函数的值逐渐减小。
-
以一个简单的两层神经网络为例,假设我们已经计算出了损失函数
L
关于输出层权重
w
o
1
的梯度
∂
w
o
1
∂
L
。根据链式法则,这个梯度可以分解为
∂
w
o
1
∂
L
=
∂
y
∂
L
⋅
∂
w
o
1
∂
y
。其中,
∂
y
∂
L
是损失函数对输出的导数,
∂
w
o
1
∂
y
是输出对权重
w
o
1
的导数。通过这种方式,我们可以计算出所有参数的梯度。 -
然后,使用梯度下降算法更新参数。例如,权重的更新公式为
w
o
1
=
w
o
1
−
η
⋅
∂
w
o
1
∂
L
,其中
η
是学习率,它是一个超参数,控制着参数更新的步长。通过不断地进行前向传播计算损失,然后反向传播更新参数,神经网络的性能会逐渐提高。
-
本网站(https://aigc.izzi.cn)刊载的所有内容,包括文字、图片、音频、视频等均在网上搜集。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,予以删除。
上一篇: 人工智能在艺术创作中的创新应用有哪些?
下一篇: 人工智能如何提升网络安全?