同之前的章节一样, 我们通过矩阵 来表示个样本的小批量, 其中每个样本具有个输入特征。 对于具有个隐藏单元的单隐藏层多层感知机, 用表示隐藏层的输出, 称为隐藏表示(hidden representations)。 在数学或代码中,也被称为隐藏层变量(hidden-layer variable) 或隐藏变量(hidden variable)。 因为隐藏层和输出层都是全连接的, 所以我们有隐藏层权重 和隐藏层偏置 以及输出层权重 和输出层偏置。 形式上,我们按如下方式计算单隐藏层多层感知机的输出 :
注意在添加隐藏层之后,模型现在需要跟踪和更新额外的参数。 可我们能从中得到什么好处呢?在上面定义的模型里,我们没有好处! 原因很简单:上面的隐藏单元由输入的仿射函数给出, 而输出(softmax操作前)只是隐藏单元的仿射函数。 仿射函数的仿射函数本身就是仿射函数, 但是我们之前的线性模型已经能够表示任何仿射函数。
我们可以证明这一等价性,即对于任意权重值, 我们只需合并隐藏层,便可产生具有参数 和 的等价单层模型:
为了发挥多层架构的潜力, 我们还需要一个额外的关键要素: 在仿射变换之后对每个隐藏单元应用非线性的激活函数(activation function)。 激活函数的输出(例如,)被称为活性值(activations)。 一般来说,有了激活函数,就不可能再将我们的多层感知机退化成线性模型:
由于中的每一行对应于小批量中的一个样本, 出于记号习惯的考量, 我们定义非线性函数也以按行的方式作用于其输入, 即一次计算一个样本。 我们在 中 以相同的方式使用了softmax符号来表示按行操作。 但是本节应用于隐藏层的激活函数通常不仅按行操作,也按元素操作。 这意味着在计算每一层的线性部分之后,我们可以计算每个活性值, 而不需要查看其他隐藏单元所取的值。对于大多数激活函数都是这样。
为了构建更通用的多层感知机, 我们可以继续堆叠这样的隐藏层, 例如和, 一层叠一层,从而产生更有表达能力的模型。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/674.html