5 神经网络基础之神经网络的结构

在上一篇中,我们对人工神经元的概念进行了深入探讨,理解了它们的基本构成和功能。在这一篇中,我们将把注意力转向一个更复杂的概念:神经网络的结构。神经网络不仅仅是单个的人工神经元,它们是由多个神经元以特定结构组合在一起的,这种结构使我们能够处理更复杂的问题。

神经网络的基本结构

一个神经网络的基本组成部分包括:

  1. 输入层(Input Layer)

    • 这是网络的第一层,负责接收输入数据。每个输入特征对应于输入层中的一个神经元。
    • 例如,对于一张28x28的手写数字图像,输入层将包含784个神经元(28*28)。
  2. 隐藏层(Hidden Layers)

    • 输入层之后的一层或多层称为隐藏层。这些层不是直接与输入或输出相连的,它们的主要作用是对输入进行特征提取和转换。
    • 网络的复杂度和学习能力通常由隐藏层的数量和每层的神经元数量决定。
    • 隐藏层可以有多层,每层可以有不同数量的神经元,形成多层感知机(MLP)结构。
  3. 输出层(Output Layer)

    • 这是网络的最后一层,负责输出模型的预测。
    • 输出层的神经元数量通常取决于具体的任务,比如二分类问题可以用一个神经元,而多分类任务则需要与类别数相等的神经元。

神经网络示意图

我们可以用一个简单的示意图来说明神经网络的结构。假设我们有一个简单的前馈神经网络:

1
2
3
4
输入层      隐藏层      输出层
(x1) (h1) (o1)
(x2) ----> (h2) ----> (o2)
(x3) ----> (h3)

在这个示意图中,x表示输入特征,h表示隐藏层神经元,而o表示输出层神经元。每层之间通过权重连接。

神经网络的连接

在神经网络中,各层之间的连接是通过加权和来实现的。每个连接都有一个权重,表示其重要性。对于隐层和输出层,神经元的输出通常是通过将输入加权求和,并应用激活函数进行转换。

对于每个神经元,其输出可以表示为:

$$
h_j = f\left( \sum_{i=1}^{n} w_{ij} x_i + b_j \right)
$$

其中:

  • $h_j$ 是隐藏层或输出层的神经元输出。
  • $w_{ij}$ 是输入神经元 $i$ 到隐藏层或输出层神经元 $j$ 的权重。
  • $x_i$ 是输入层神经元的输入。
  • $b_j$ 是偏置项,用于调整输出。
  • $f$ 是激活函数(如ReLU、sigmoid等)。

案例分析:图像分类任务

让我们通过一个实际的案例来更好地理解神经网络的结构。假设我们要构建一个神经网络来进行手写数字的分类(比如MNIST数据集)。

  • 输入层:我们的输入层将包含784个神经元(28x28的图像)。
  • 隐藏层:我们可以设计两个隐藏层,第一个隐藏层有128个神经元,第二个隐藏层有64个神经元。
  • 输出层:输出层将包含10个神经元,分别对应数字0到9。

代码示例

以下是用TensorFlow/Keras构建该神经网络的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import tensorflow as tf
from tensorflow.keras import layers, models

# 创建模型
model = models.Sequential()

# 添加输入层和第一个隐藏层
model.add(layers.Flatten(input_shape=(28, 28))) # 将28x28的图像展平
model.add(layers.Dense(128, activation='relu')) # 第一个隐藏层

# 添加第二个隐藏层
model.add(layers.Dense(64, activation='relu')) # 第二个隐藏层

# 添加输出层
model.add(layers.Dense(10, activation='softmax')) # 输出层,10个神经元

# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

# 打印模型摘要
model.summary()

在这段代码中,我们使用Sequential模型构建了含有两层隐藏层和一层输出层的神经网络。我们可以看到,每层的神经元数量、激活函数的应用以及输入数据的形状都被明确表示。

小结

在本篇中,我们详细探讨了神经网络的结构。理解输入层、隐藏层和输出层的构成及其作用是构建和训练有效神经网络的关键。下一篇将继续讨论激活函数,这是连接神经网络结构与实际输出的关键组件,扮演着重要角色。通过理解激活函数,我们能更好地调整网络以适应特定的任务挑战。

5 神经网络基础之神经网络的结构

https://zglg.work/deep-learning-zero/5/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

学习下节

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论