神经网络架构是指构成神经网络的层(Layers)、连接方式、激活函数和其它组件的组织结构。神经网络架构的设计对于模型的性能至关重要,因为它决定了模型如何学习和处理数据。以下是神经网络架构的一些关键组成部分:
-
层的类型:神经网络由不同类型的层组成,如输入层、隐藏层和输出层。隐藏层可以是执行特征提取的地方,常见的隐藏层类型包括全连接层(Fully Connected Layers)、卷积层(Convolutional Layers)和池化层(Pooling Layers)
-
层的数量:神经网络的深度,即层的数量,可以影响模型的学习能力。更深的网络可能能够学习更复杂的特征,但也可能导致过拟合和训练难度增加
-
神经元的数量:每层中的神经元数量是另一个重要的架构决策,它影响模型的复杂性和参数数量。
-
连接模式:神经元之间的连接方式,如前馈连接(Feedforward Connections)、循环连接(Recurrent Connections)或跳跃连接(Skip Connections)。
-
激活函数:激活函数用于引入非线性,使网络能够学习复杂的模式。常见的激活函数包括ReLU、Sigmoid、Tanh等。
-
正则化、优化器、损失函数。
大多数使用的神经架构都是由专家手动设计的,这是一个消耗资源且容易出错的过程。此外,很难从固有知识中跳出固定的思维范式,开发出优秀的架构。为了减少繁重的设计成本,出现了一种新的技术,即NAS。可以使算法在较少人为干预的情况下自动设计网络架构。
NAS的目的是在一个定义好的搜索空间中,找到最佳的网络结构。NAS主要包括以下三个关键要素:
-
搜索空间:定义了所有可能的网络架构的集合,包括层的类型、层的数量、每层的神经元数量等。
-
搜索策略:指导如何在搜索空间中高效地探索,常见的搜索方法包括随机搜索、贝叶斯优化、进化算法、强化学习等。如果搜索策略是强化学习,则可以叫此时的NAS为基于强化学习的NAS。
-
性能估计:评估候选架构的性能,通常通过在验证集上的表现来衡量。