【问题标题】:Why does fully convolutional network plateau first and then learns?为什么全卷积网络先平稳后学习?
【发布时间】:2019-06-21 09:08:15
【问题描述】:

为什么全卷积网络先平稳后学习?

我正在训练一个全卷积网络来对手写汉字进行分类。我使用的开发数据集有 250 个类,每个类有 200 - 300 个样本。

而且我发现无论我如何调整模型,不知何故,到目前为止我尝试过的所有模型都有类似的行为,它们一开始都处于稳定状态,然后精度开始飙升,而损失减少,因为如下图所示:

我很想知道更多关于这种行为背后的原因。

非常感谢!

编辑

很抱歉之前没有提供更多详细信息。

到目前为止,我表现最好的网络如下,使用 LR 为 0.1 的 Adadelta 优化器。我的权重是使用 xavier 初始化的。

Input(shape=(30, 30, 1))
Lambda(
    lambda image: tf.image.resize_images(
        image, size=(resize_size, resize_size),
        method=tf.image.ResizeMethod.BILINEAR
    )
)

Conv2D(filters=96, kernel_size=(5, 5), strides=(1, 1), padding="same", "relu")
Conv2D(filters=96, kernel_size=(1, 1), strides=(1, 1), padding="same", "relu")
MaxPooling2D(pool_size=(3, 3), strides=2)

Conv2D(filters=192, kernel_size=(5, 5), strides=(2, 2), padding="same", "relu")
Conv2D(filters=192, kernel_size=(1, 1), strides=(1, 1), padding="same", "relu")
MaxPooling2D(pool_size=(3, 3), strides=2)

Conv2D(filters=192, kernel_size=(3, 3), "same", "relu")
Conv2D(filters=192, kernel_size=(1, 1), "same", "relu")
Conv2D(filters=10, kernel_size=(1, 1), "same", "relu")
AveragePooling2D(pool_size=(3, 3))
Flatten()
Dense(250, activation="softmax")

model = Model(inp, x)

model.compile(
    loss=categorical_crossentropy,
    optimizer=Adadelta(lr=0.1),
    metrics=["accuracy"],
)

输入的数据都是手写的汉字,是我自己转成MNIST格式的,大小为30x30x1(Input层后面有Lambda层是因为我是按照原@987654322 @paper,他们使用了 32x32 的输入尺寸),如下:

这就是上面的损失和准确率图表的产生方式。

希望这能提供更好的直觉。谢谢。

【问题讨论】:

  • 这可能有很多原因。您能否添加有关您正在使用的损失和优化器的信息?
  • 基本上它是一个 adadelta,LR 为 0.1,softmax 损失,因为我要分类超过 250 个类

标签: machine-learning neural-network deep-learning conv-neural-network loss-function


【解决方案1】:

我们无法具体回答,因为您忽略了充分识别您的网络和输入,更不用说训练方法了。为了完全跟踪高级训练特征,我们需要通过所讨论的迭代对内核进行一些详细的可视化。

一般来说,这仅仅是因为高度复杂的模型通常需要几次迭代才能获得比随机结果更好的结果。我们从随机权重和内核开始。在最初的几次迭代中,模型必须克服混乱,在早期内核中建立一些有用的模式,并找到与足够多的输出类别相关的权重,以使准确度超过 0.4% 并具有统计显着性。

部分问题在于,在最初的几次迭代中,模型也会偶然发现在混乱中有用的模式,但实际上损害长期学习。例如,它可能会构建一个黑点图案,并猜对了这与哺乳动物的眼睛和车轮有关。很快,飞机和 Airedale 在结构上相关的概括就被证明是一个错误的假设。它必须打破这些类别之间的二级相关性并找到其他东西。

这种学习使准确度保持在较低水平的时间比您想象的要长。该模型在最初的几次迭代中得出了数百个关于分类的结论,任何与一两个正确猜测相关的东西。然后它必须学习足够的知识来区分有效的和无效的。 是模型开始取得进步的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多