问:循环卷积神经网络的定义是什么?
答:循环卷积神经网络 (CCNN) 是一种神经网络架构,专门设计用于处理具有循环依赖性的顺序数据,例如时间序列数据。它是标准卷积神经网络(CNN)的扩展,可以处理输入数据中的圆形边界条件问题。
在标准 CNN 中,卷积层被设计为以空间局部方式从输入数据中提取特征。每个卷积层的输出是一个特征图,它总结了输入数据特定区域的信息。然而,当输入数据具有循环依赖性(例如时间序列)时,标准 CNN 可能无法完全捕获数据中的底层模式。
CCNN 通过使用一种称为循环卷积的特殊类型的卷积运算来解决这个问题。在循环卷积中,输入数据被视为循环缓冲区,其中数据的最后一个元素连接到第一个元素。这允许网络考虑输入数据中的循环依赖性。
此外,CCNN 还可以包括存储单元,类似于循环神经网络 (RNN) 中的循环单元,允许网络存储先前时间步的信息并使用它在当前时间步进行预测。
总之,循环卷积神经网络(CCNN)是一种特定类型的神经网络架构,旨在处理具有循环依赖性的顺序数据。它使用一种称为循环卷积的特殊类型的卷积运算,并且可以包含存储单元来存储先前时间步骤的信息,从而允许网络考虑输入数据中的循环依赖性。
问:为什么卷积神经网络非常适合图像分类问题?
答:卷积神经网络 (CNN) 由于以下几个关键特性而特别适合图像分类任务:
1.卷积层:与传统的全连接神经网络不同,CNN 具有可以自动、自适应地学习特征的空间层次结构的卷积层。这些卷积层对输入应用卷积运算,将结果传递到下一层。这意味着它们可以识别具有空间关系和平移不变性的模式,从而使网络能够识别图像中的对象,无论它们位于何处。
2.共享权重:卷积层中的每个滤波器对输入图像的每个部分使用相同的权重。这意味着,一旦过滤器学会识别图像某一部分中的特征,它就可以识别图像中其他任何地方的相同特征。这大大减少了模型中的参数数量,使其能够更有效地学习并降低过度拟合的风险。
3.池化层:CNN 通常包含池化层,它可以降低数据的维度,同时保留最重要的信息。这使得网络对小偏移或失真不太敏感,并进一步降低了计算复杂性。
4.深度架构:CNN 可以有很多层,不同的层学习识别不同的特征。早期的层可能会识别边缘和颜色等简单特征,而后面的层可能会识别更复杂的形状或对象。这种层次结构使得 CNN 在复杂的图像识别任务中特别有效。
5.对扭曲和变化的鲁棒性:由于其结构和工作原理,CNN 可以处理图像的变化,例如尺寸、旋转、扭曲和位置的变化。这种鲁棒性在图像分类任务中至关重要,因为同一对象可以以不同的形式和位置出现在不同的图像中。
问:什么是一次性学习?是否可以训练深度卷积神经网络进行对象分类,每个类仅使用一张图像?
答:一次性学习是机器学习的一种,其中模型仅根据一个或几个示例来学习识别新对象或类。一次性学习的目标是学习一种可以从少量示例中进行泛化的模型,并识别以前从未见过的新对象或类。
深度卷积神经网络 (DCNN) 可以通过每类仅一张图像进行对象分类训练,但这是一项具有挑战性的任务。一次性学习具有挑战性,因为它要求模型仅从一个或几个示例中学习对象类的一般表示。
人们提出了几种训练 DCNN 进行一次性学习的技术:
1.连体网络:连体网络是一种神经网络架构,由两个相同的子网络组成。训练子网络从输入图像中提取特征,并使用特征之间的距离来确定图像是否属于同一类。
2.度量学习:度量学习是一种用于学习 DCNN 提取的特征之间的距离度量的技术。然后使用学习到的距离度量来确定两个图像是否属于同一类。
3.记忆增强神经网络:记忆增强神经网络 (MANN) 是一种神经网络,具有用于存储对象或类示例的外部记忆组件。然后,网络可以使用存储的示例来识别新的对象或类。
总之,一次性学习是一种机器学习,其中模型仅根据一个或几个示例来学习识别新对象或类。深度卷积神经网络 (DCNN) 可以通过每类仅一张图像进行对象分类训练,但这是一项具有挑战性的任务。已经提出了连体网络、度量学习和记忆增强神经网络等技术来训练 DCNN 进行一次性学习。
问:如何提高神经网络的准确性?
答:1.首先确保输出(因)变量(目标或标签)实际上取决于输入变量(特征)总是一个好主意。您可能正在追逐一个不存在的幽灵。有一种方法可以检查这一点,但在此之前,我们有第二步。
2.首先使用 z 分数标准化输入变量。任何归一化都可以,但使用 z 分数是有原因的。这与下一步有关。
3.您可以进行主成分分析 (PCA)。它将告诉您每个新变量(转换后获得的)对输出变量变化的贡献。PCA将会清楚地回答我一开始提到的关于依赖是否存在的问题。在执行 PCA 之前,必须使用 z 分数对变量进行标准化。
4.PCA 使用新的(转换后的)变量作为神经网络的输入。如果您愿意,您实际上可以使用原始变量,但使用新变量有一个优点,如下所示:如果您愿意,您可以省略某些变量(如果它们对输出变化的贡献可以忽略不计)。
5.确定输出和输入之间肯定存在依赖性后,您可以通过多种方式调整神经网络,直到获得最佳的准确性。
6.对于前馈神经网络,我们仅使用两层。因此,请尝试隐藏层中的神经元数量。
7.增加神经元数量。增加训练的纪元数。一个时期包括一次遍历训练集中的所有数据。许多时期意味着使用相同的数据一次又一次地继续训练,而不需要重新初始化参数。
8.当你做上面提到的两件事时,尝试降低学习率。默认或原始学习率可能太大,无法在多个时期使用。
9.在对神经元数量、历元数和学习率进行实验后,如果精度仍然不够好,则需要检查输入向量在归一化范围内的分布。
10.对于每个变量,制作一个直方图来检查值是否倾斜,是否集中在一个角落或几个地方。如果是这样,其他领域可能在训练期间没有得到很好的体现。
11.创建另一组训练数据,复制代表性不足区域中的数据。
12.Tarin 与修改后的训练集。
问:为什么 CNN 需要隐藏层?
答:CNN可以进行图像分类。为此,它需要识别图像中的某些特征。想想一匹马和一匹斑马。如果您有一个标记垂直黑/白过渡的特征检测器,它对于区分斑马和马非常有用。
但如果你也想认识老虎怎么办?现在您有两只皮肤上带有垂直线元素的动物。需要新功能来提供帮助。
CNN 网络使用隐藏层来生成所需的特征,其复杂性不断增加。从简单的线方向开始,到完整的广义面结束。
图像有点小,但正如您在第 1 层看到的那样,只有彩色单线,因为在第 2 层引入了曲率。第 4 层和第 5 层显示出非常复杂的特征。
深度学习网络的强大之处在于,它们能够在训练期间自行创建所需的特征。您只需向他们提供具有所需输出的图像(马-斑马-虎),其余的可以留给算法。
当然,层数需要在正手时给出——太少,网络也无法正确训练,只能给出概括;太多,网络也不会训练。正确的层数是深度学习社区的一个研究领域。
一般来说,层数越多,网络就越准确,检测到的输出类就越多。然而,更多的层也会增加所需的计算能力。
不要错误地认为深度学习算法非常现代。
早在 80 年代,福岛邦彦等人就奠定了基础。他的手写字符新认知器遵循完全相同的策略。
领取专属 10元无门槛券
私享最新 技术干货