5 神经网络基础之神经网络的架构
系列进度
神经网络后门攻击 · 第 5 / 21 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
神经网络后门内容应从风险识别和防御验证角度理解,重点是知道问题如何被发现和控制。阅读时可以按「神经网络基本架构 -> 输入层 -> 隐藏层 -> 输出层」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「神经网络基本架构」,再查「输入层」。
在上一篇中,我们探讨了神经网络的基本概念,了解了什么是神经网络,以及它们在智能系统中的应用。今天,我们将深入了解神经网络的架构,这是理解如何构建和优化神经网络的重要步骤。在后续的内容中,我们将讨论神经网络的训练和测试过程,因此一个良好的架构可以直接影响这些过程的有效性。
神经网络基本架构
神经网络是由多个层(layer)组成的,例如输入层、隐藏层和输出层。每一层由多个单元(也称为神经元)组成,这些单元通过权重(weight)连接到前一层的神经元。以下是神经网络架构的基本组件:
学习神经网络架构时,可以同步看后门风险可能出现在哪里:输入触发、特征层响应、分类头偏移。
输入层
输入层是神经网络中接收原始数据的部分。每个输入单元代表一个特征。例如,在图像分类任务中,每个像素可以作为一个输入特征。
隐藏层
隐藏层位于输入层和输出层之间。它们负责从输入数据中提取特征。神经元在隐藏层中重新组合输入数据,并通过激活函数(activation function)引入非线性。常见的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。
示例:ReLU 激活函数
ReLU的数学表达式为:
这一函数在时为,而在时为,接下来的内容中会讨论如何选择激活函数。
输出层
输出层是神经网络的最后一层。其主要作用是将网络产生的特征映射转化为实际的输出结果。例如,在分类任务中,输出层的节点数等于类别的数量,通常使用Softmax函数来计算类别的概率分布。
层的数目和神经元的数量
在单层神经元的情况下,可能程序会遇到严重的欠拟合。对于更复杂的问题,通常需要多层隐含神经元,即深层神经网络(Deep Neural Network,DNN)。随着隐含层数量的增加,模型的复杂性和表达能力也随之提高。例如,一个具有2个隐藏层,每层包含64个神经元的网络架构可以用以下示例代码表示:
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(units=64, activation='relu', input_shape=(input_dim,))) # 第一隐含层
model.add(Dense(units=64, activation='relu')) # 第二隐含层
model.add(Dense(units=num_classes, activation='softmax')) # 输出层
在上面的代码中,我们使用了Keras库来构建一个简单的神经网络架构,其中包括两个隐藏层,每层64个神经元,以及最后的输出层。
连接方式
神经元之间的连接方式影响神经网络的学习能力。最常见的连接方式是全连接层(Fully Connected Layer),其中每个神经元与前一层的每个神经元相连接。也有其他连接方式,例如卷积层(Convolutional Layer)和池化层(Pooling Layer),这在卷积神经网络(CNN)中特别常见,用于处理图像数据。
读完《神经网络基础之神经网络的架构》不要只停在“看懂了”。回头挑一个步骤动手做一遍,再记录哪里卡住,后面的学习会更稳。
案例:卷积神经网络架构
考虑一个图片分类的卷积神经网络架构,通常会包含以下层:
- 输入层:接收图像数据
- 卷积层:提取局部特征
- 池化层:减少特征维数
- 全连接层:进行分类
下面是一个简单的CNN架构示例:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(image_height, image_width, 3))) # 卷积层
model.add(MaxPooling2D(pool_size=(2, 2))) # 池化层
model.add(Flatten()) # 展平层
model.add(Dense(units=128, activation='relu')) # 全连接层
model.add(Dense(units=num_classes, activation='softmax')) # 输出层
架构设计的原则
在设计神经网络架构时,需要遵循一些原则:
- 过拟合与欠拟合:选择合适的层数和神经元数目以避免过拟合或欠拟合。可以通过交叉验证来判断模型的表现。
- 正则化:使用dropout、L1/L2正则化等手段减轻过拟合。
- 超参数调优:调整学习率、批次大小等超参数以优化训练效果。
复习《神经网络基础之神经网络的架构》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《神经网络基础之神经网络的架构》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
结论
今天我们讨论了神经网络的架构及其各个组成部分,包括输入层、隐藏层和输出层。设计良好的架构是训练高效神经网络的基础,为接下来的训练与测试打下了坚实的基础。在下一篇文章中,我们将深入了解如何训练和测试神经网络,以便充分利用我们所设计的架构。请继续关注!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
神经网络基础之神经网络的架构适合谁读?
这是 神经网络后门攻击 系列第 5 / 21 篇,适合正在学习神经网络后门攻击,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇神经网络后门攻击教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读