它们即是任何神经网络的基本构建块,也可以与层互换使用。 运算符是转换数据的向量值函数。 一些常用的算子是线性、卷积和池化等层,以及 ReLU 和 Sigmoid 等激活函数。
它们在训练开始时为模型参数提供初始值。 初始化在训练深度神经网络中起着重要作用,因为参数初始化不当会导致收敛缓慢或不收敛。 有很多方法可以初始化网络权重,比如从正态分布中抽取小的随机权重。 你可以看看获取完整列表。
它们提供了必要的控制机制,以避免过拟合和促进泛化。 可以通过显式或隐式措施来调节过度拟合。 显式方法对权重施加结构约束,例如,它们的 L1-Norm 和 L2-Norm 的最小化,分别使权重更稀疏和均匀。 隐式度量是专门的操作符,它们通过显式规范化(例如 BatchNorm)或通过更改网络连接(例如 DropOut 和 DropConnect)进行中间表示的转换。
上述组件基本属于库的前端部分。 通过前端,我的意思是向用户公开的组件,以便他们有效地设计神经网络架构。 在后端,这些库支持自动计算模型中各种参数的损失函数梯度。 这种技术通常称为自动微分 (AD)。
每个深度学习库都提供了一种 AD 风格,以便用户可以专注于定义模型结构(计算图)并将梯度计算的任务委托给 AD 模块。 让我们通过一个例子来看看它是如何工作的。 假设我们要计算以下函数关于其输入变量 X₁ 和 X₂ 的偏导数:
您在上图中看到的是反向模式自动微分 (AD) 的味道。 众所周知的反向传播算法是上述算法的一个特例,其中顶部的函数是损失函数。 AD利用这样一个事实,即每个复合函数都由初等算术运算和初等函数组成,因此可以通过将链式规则递归地应用于这些运算来计算导数。