为什么编码表示不利于分类?

发布于 2025-01-13 00:49:31 字数 1248 浏览 2 评论 0原文

给定一个预先训练的性能良好的自动编码器。当我在编码(由自动编码器生成)上训练分类器时,分类器的表现非常差。特别是,它比在正常输入(即未编码输入)上训练分类器要差得多。

然而,当我根据分类损失微调编码器时,分类器表现得相当好。

为什么编码表示不利于分类?


详细信息:我正在研究 CIFAR-100 并尝试对粗图像标签进行分类,即 20 个类别(但我认为在 CIFAR-10 上进行分类时我遇到了同样的问题)。分类器有 5 层,我使用 dropout:

classifier = tf.keras.Sequential([
            tf.keras.layers.Dense(512, 
                                  activation='relu',
                                  name='classifier_hidden_1'),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(256, 
                                  activation='relu',
                                  name='classifier_hidden_2'),
            tf.keras.layers.Dense(128, 
                                  activation='relu',
                                  name='classifier_hidden_3'),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(64, 
                                  activation='relu',
                                  name='classifier_hidden_4'),
            tf.keras.layers.Dense(num_classes, 
                                  activation=None,
                                  name='classifier_out'),
        ], name='classifier')

Given a pre-trained well-performing auto-encoder. When I train a classifier on encodings (produced by the auto-encoder) the classifier does very poorly. In particular, it does much worse than training a classifier on normal inputs (i.e. unencoded inputs).

However, when I fine-tune the encoder based on classification loss, the classifier does quite well.

Why are encoded representations bad for classification?


Details: I’m working on CIFAR-100 and trying to classify coarse image labels, i.e. 20 classes (but I think I had the same problem when doing classification on CIFAR-10). The classifier has 5 layers and I’m using dropout:

classifier = tf.keras.Sequential([
            tf.keras.layers.Dense(512, 
                                  activation='relu',
                                  name='classifier_hidden_1'),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(256, 
                                  activation='relu',
                                  name='classifier_hidden_2'),
            tf.keras.layers.Dense(128, 
                                  activation='relu',
                                  name='classifier_hidden_3'),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(64, 
                                  activation='relu',
                                  name='classifier_hidden_4'),
            tf.keras.layers.Dense(num_classes, 
                                  activation=None,
                                  name='classifier_out'),
        ], name='classifier')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文