在了解自编码器的具体细节之前,先了解它们的基础——神经网络,这会有所帮助。如果您是机器学习的新手,可以将神经网络视为一种计算系统,它松散地受大脑工作方式的启发,旨在从数据中学习模式。自编码器是一种特定类型的神经网络,因此在此掌握这些基础知识将有助于更顺畅地理解自编码器。本质上,神经网络由简单的处理单元构成,通常称为神经元或节点。可以想象这些神经元像公司划分不同部门一样分层组织。构成要素:神经元和层一个典型的神经网络至少有三种类型的层:输入层: 这是数据首次进入网络的地方。输入层中的每个神经元通常代表数据的一个单一特征。例如,如果您处理图像,每个输入神经元可能对应于单个像素的亮度。隐藏层: 在输入层和输出层之间设有一个或多个隐藏层。它们是网络的主要工作部分。隐藏层中的神经元从前一层获取信息,进行计算,并将其结果传递给下一层。正是在这些隐藏层中,网络开始识别数据中更复杂的模式和关系。一个网络可以有许多隐藏层;拥有多个隐藏层的网络通常被称为“深度”神经网络。输出层: 这一层产生网络处理的最终结果。此输出代表什么取决于具体的任务。它可以是一个预测(例如,“这位顾客会点击广告吗?”)、一个分类(例如,“这张图片是猫还是狗?”),或者,在自编码器的情况下,是输入数据的重建版本。下面是一个简单的图表,说明了这种分层结构:digraph G { rankdir=TB; node [shape=circle, style=filled, margin=0.1, width=0.5, height=0.5, fontname="sans-serif", fontsize=10]; edge [arrowhead=vee, arrowsize=0.7]; subgraph cluster_input { label="输入层"; bgcolor="#e9ecef"; I1 [label="I1", fillcolor="#a5d8ff"]; I2 [label="I2", fillcolor="#a5d8ff"]; I3 [label="I3", fillcolor="#a5d8ff"]; } subgraph cluster_hidden { label="隐藏层"; bgcolor="#e9ecef"; H1 [label="H1", fillcolor="#b2f2bb"]; H2 [label="H2", fillcolor="#b2f2bb"]; H3 [label="H3", fillcolor="#b2f2bb"]; H4 [label="H4", fillcolor="#b2f2bb"]; } subgraph cluster_output { label="输出层"; bgcolor="#e9ecef"; O1 [label="O1", fillcolor="#ffc9c9"]; O2 [label="O2", fillcolor="#ffc9c9"]; } # 连接 {I1, I2, I3} -> {H1, H2, H3, H4} [color="#adb5bd"]; {H1, H2, H3, H4} -> {O1, O2} [color="#adb5bd"]; }一个基本的神经网络结构,展示了输入层、单个隐藏层和输出层。信息从左到右(或如图所示从上到下)流动,通过神经元之间的连接传递。连接和权重:网络的知识一层中的神经元通常会连接到下一层的神经元。这些连接中的每一个都带有一个权重。您可以将这些权重理解为代表着两个神经元之间连接的强度或重要性。如果一个权重具有较大的正值,则表示第一个神经元的信号强烈地激活第二个。如果它是一个较大的负值,则会强烈地抑制它。如果权重接近于零,则第一个神经元对第二个神经元的影响很小。这些权重是神经网络的“可调节旋钮”。神经网络中的“学习”过程主要包括根据其所看到的数据来调整这些权重。信息如何流动当您将数据输入神经网络时:输入层神经元接收初始数据值。这些值沿着连接传递给第一个隐藏层中的神经元。隐藏层中的每个神经元计算其输入的加权和(即,将每个传入值乘以连接的权重并全部加起来)。这个和通常会通过一个激活函数。激活函数是一个简单的数学函数,有助于为网络引入非线性,使其能够学习更复杂的模式。它决定一个神经元是否应该被“激活”,或者激活的程度如何。隐藏层神经元的输出随后传递给下一层,这个过程重复,直到达到输出层。输出层神经元产生网络的最终输出。学习:调整旋钮那么,神经网络如何学习执行任务,例如识别物体,或者像我们将在自编码器中看到的那样,重建其输入呢?它通过迭代调整其权重来学习。在“训练过程”中,网络会看到来自数据集的许多示例。对于每个示例,它会做出预测或产生输出。然后将此输出与期望目标(在监督学习中)进行比较,或者根据某个目标(在无监督学习中)进行评估。如果网络的输出与期望值相距甚远,一个算法(最常见的是反向传播,我们将在“自编码器如何学习”中后续讨论)会计算网络中每个权重对误差的贡献程度。然后,权重会朝应能减少此误差的方向进行微调。这个过程会重复许多次,使用许多不同的数据示例,直到网络的表现令人满意。作为自编码器基础的神经网络自编码器是本课程的主要内容,它们是一种特定类型的神经网络。它们利用这种由层、神经元、连接和权重组成的底层架构,学习如何将数据压缩(编码)成更小的表示形式,然后将其重建(解码)回原始形式。理解这些基本的神经网络组成部分,是理解自编码器如何实现其从数据中学习特征这一显著能力的第一步。随着我们继续学习,我们将看到输入层、隐藏层和输出层如何在自编码器的编码器-解码器结构中扮演特定的角色。目前,请记住神经网络是一个由相互连接的处理单元构成的系统,它通过调整连接的强度来从数据中学习。