在下⼀节我会介绍⼀个神经⽹络,我们可以⽤它来很好地分类⼿写数字。准备进⼊下⼀节时, 解释⼀些可以让我们命名⽹络中不同部分的术语是很有帮助的。假设我们有这样的⽹络:
前⾯提过,这个⽹络中最左边的称为输⼊层,其中的神经元称为输⼊神经元。最右边的,即输出层包含有输出神经元,在本例中,输出层只有⼀个神经元。中间层,既然这层中的神经元既不是输⼊也不是输出,则被称为隐藏层。“隐藏”这⼀术语也许听上去有些神秘——我第⼀次听到这个词,以为它必然有⼀些深层的哲学或数学涵意——但它实际上仅仅意味着“既⾮输 ⼊也⾮输出”。上⾯的⽹络仅有⼀个隐藏层,但有些⽹络有多个隐藏层。例如,下⾯的四层⽹络有两个隐藏层:
有些令⼈困惑的是,由于历史的原因,尽管是由S型神经元⽽不是感知器构成,这种多层⽹络有时被称为多层感知器或者MLP。在这本书中我不会使⽤MLP这个术语,因为我认为这会引起混淆,但这⾥想提醒你它的存在。
设计⽹络的输⼊输出层通常是⽐较直接的。例如,假设我们尝试确定⼀张⼿写数字的图像上 是否写的是“9”。很⾃然地,我们可以将图⽚像素的强度进⾏编码作为输⼊神经元来设计⽹络。 如果图像是⼀个64×64的灰度图像,那么我们会需要4096 = 64×64个输⼊神经元,每个强度 取0和1之间合适的值。输出层只需要包含⼀个神经元,当输出值⼩于0.5时表⽰“输⼊图像不 是⼀个9”,⼤于0.5的值表⽰“输⼊图像是⼀个9”。
相⽐于神经⽹络中输⼊输出层的直观设计,隐藏层的设计则堪称⼀⻔艺术。特别是,通过⼀ 些简单的经验法则来总结隐藏层的设计流程是不可⾏的。相反,神经⽹络的研究⼈员已经为隐 藏层开发了许多设计最优法则,这有助于⽹络的⾏为能符合⼈们期望的那样。例如,这些法则 可以⽤于帮助权衡隐藏层数量和训练⽹络所需的时间开销。在本书后⾯我们会碰到⼏个这样的 设计最优法则。
⽬前为⽌,我们讨论的神经⽹络,都是以上⼀层的输出作为下⼀层的输⼊。这种⽹络被称为 前馈神经⽹络。这意味着⽹络中是没有回路的——信息总是向前传播,从不反向回馈。如果确实有回路,我们最终会有这样的情况:σ函数的输⼊依赖于输出。这将难于理解,所以我们不允许这样的环路。
然⽽,也有⼀些⼈⼯神经⽹络的模型,其中反馈环路是可⾏的。这些模型被称为递归神经⽹络。这种模型的设计思想,是具有休眠前会在⼀段有限的时间内保持激活状态的神经元。这种激活状态可以刺激其它神经元,使其随后被激活并同样保持⼀段有限的时间。这样会导致更多 的神经元被激活,随着时间的推移,我们得到⼀个级联的神经元激活系统。因为⼀个神经元的 输出只在⼀段时间后⽽不是即刻影响它的输⼊,在这个模型中回路并不会引起问题。
递归神经⽹络⽐前馈⽹络影响⼒⼩得多,部分原因是递归⽹络的学习算法(⾄少⽬前为⽌) 不够强⼤。但是递归⽹络仍然很有吸引⼒。它们原理上⽐前馈⽹络更接近我们⼤脑的实际⼯作。 并且递归⽹络能解决⼀些重要的问题,这些问题如果仅仅⽤前馈⽹络来解决,则更加困难。然⽽为了篇幅,本书将专注于使⽤更⼴泛的前馈⽹络。