50、迁移学习:领域自适应案例研究

迁移学习:领域自适应案例研究

1. 实验背景与数据选择

本次研究涉及多个领域,包括书籍、DVD、厨房用品和电子产品。每个领域都有 2000 个带有二元标签(积极和消极)的标注示例,厨房和电子产品领域还有大量未标注示例,但在实验中未使用未标注示例,必要时将部分标注示例视为未标注。

实验选择了两种不同的源 - 目标领域组合:
- 源领域为厨房用品,目标领域为电子产品。
- 源领域为书籍,目标领域为厨房用品。

所有数据集被划分为训练集和测试集,分别包含 1600 和 400 个示例。验证数据从训练数据集中选取,可按百分比或分层抽样。虽然目标不是复制论文或微调每个方法以获得最佳结果,但还是进行了一些参数调整,保持大多数参数标准或恒定,以观察相对影响。

2. 软件工具和库

为进行案例研究,使用了以下主要的开源工具和库:
- Keras (www.keras.io)
- TensorFlow (https://www.tensorflow.org/)
- Pandas (https://pandas.pydata.org/)
- scikit - learn (http://scikit - learn.org/)
- Matplotlib (https://matplotlib.org/)

3. 探索性数据分析(EDA)

与其他案例研究类似,进行了一些基本的 EDA 以了解数据及其特征。
- 词分布条形图 :图 11.14a 和 11.14b 展示了源领域和目标领域整个语料库中情感的词分布四分位数比较。这清楚地表明,从厨房用品领域到电子产品领域的差异可能不如从书籍领域到厨房用品领域的评论差异大。
- 积极情感词云 :图 11.15a - c 展示了书籍、厨房用品和电子产品评论中积极情感数据的词云。通过直观观察高频词,可以明显看出厨房 - 电子产品词云之间的相似性以及书籍 - 厨房用品词云之间的差异。
- 消极情感词云 :图 11.16a - c 展示了书籍、厨房用品和电子产品评论中消极情感数据的词云,也体现了相同的特征。

4. 领域自适应实验

详细描述了使用迁移学习技术进行的所有实验,包括训练过程、模型、算法和更改。目标不是为每个实验获得最佳调优的模型,而是实际了解每种技术及其偏差和过程在这些复杂的现实任务中的表现。使用分类准确率作为评估指标,因为测试数据中积极和消极情感的数量相等。

4.1 预处理

对原始数据进行一些基本的预处理以进行情感分类任务:
1. 从基于 XML 的文档中解析数据。
2. 将数据分词为单词,去除基本停用词,并对序列进行基本填充,以使每个示例具有恒定的最大长度表示。
3. 通过查找源领域和目标领域的所有单词创建词汇表,大多数实验中词汇表的最大大小为 15000。
4. 对于一些向量空间模型,使用 n - 元组大小为 2 且最大特征大小为 10000 的词袋表示。

4.2 实验设置

大多数实验使用 Kim 的 CNN 模型作为分类器模型,并使用在 60 亿个单词上训练的 100 维标准 GloVe 嵌入。以下是实验名称及其目的:
1. 训练源数据 + 测试目标数据 :了解由于领域变化,在源数据上训练并仅在目标数据上测试时发生的迁移学习损失。这可以是随着时间逐步发生的,也可能是由于模型部署在完全不同的环境中。这为实验提供了基本的最坏情况分析。
2. 训练目标数据 + 测试目标数据 :为未见过源数据但完全在目标训练数据上训练并在目标测试数据上进行预测的模型提供最佳情况分析。
3. 预训练嵌入源数据 + 训练目标数据 :尝试了解无监督预训练嵌入对学习过程的影响。在这个实验中,嵌入层被冻结且不可训练。使用无监督嵌入在目标领域上训练模型,并在目标测试集上进行测试。
4. 预训练嵌入源数据 + 训练目标数据 + 微调目标数据 :使用无监督嵌入在目标领域上训练模型,并使用目标训练数据微调嵌入层。
5. 预训练嵌入 + 训练源数据 + 微调源数据和目标数据 :这可能是预训练和微调的最佳情况,从无监督学习中学习嵌入,在源数据上训练,在目标数据上微调,从而有更多示例来学习跨领域的有用表示。
6. 堆叠自动编码器和 DNNs :使用带有堆叠自动编码器的 DNNs 进行无监督潜在特征表示学习。以无监督方式在源领域上训练模型,在目标训练数据上使用新的分类层微调模型,并在目标数据上进行测试。
7. 堆叠自动编码器和 CNNs :目标是了解使用 CNN 作为自动编码器从未见的源数据中学习的潜在表示对目标领域的影响。以下是构建自动编码器的示例代码:

input_layer = Input(shape=(300, 300))
# encoding layers to form the bottleneck
encoded_h1 = Dense(128, activation='tanh')(input_layer)
encoded_h2 = Dense(64, activation='tanh')(encoded_h1)
encoded_h3 = Dense(32, activation='tanh')(encoded_h2)
encoded_h4 = Dense(16, activation='tanh')(encoded_h3)
encoded_h5 = Dense(8, activation='tanh')(encoded_h4)
# latent or coding layer
latent = Dense(2, activation='tanh')(encoded_h5)
# decoding layers
decoder_h1 = Dense(8, activation='tanh')(latent)
decoder_h2 = Dense(16, activation='tanh')(decoder_h1)
decoder_h3 = Dense(32, activation='tanh')(decoder_h2)
decoder_h4 = Dense(64, activation='tanh')(decoder_h3)
decoder_h5 = Dense(128, activation='tanh')(decoder_h4)
# output layer
output_layer = Dense(300, activation='tanh')(decoder_h5)
# autoencoder using deep neural networks
autoencoder = Model(input_layer, output_layer)
autoencoder.summary()
autoencoder.compile('adadelta','mse')

使用带有编码层的自动编码器进行分类的代码如下:

# create a sequential model
classification_model = Sequential()
# add all the encoding layers from autoencoder
classification_model.add(autoencoder.layers[0])
classification_model.add(autoencoder.layers[1])
classification_model.add(autoencoder.layers[2])
classification_model.add(autoencoder.layers[3])
classification_model.add(autoencoder.layers[4])
classification_model.add(autoencoder.layers[5])
# flatten the output
classification_model.add(Flatten())
# classification layer
classification_model.add(Dense(2, activation='softmax'))
classification_model.compile(optimizer='rmsprop',
                             loss='categorical_crossentropy',
                             metrics=['accuracy'])
  1. 边缘化堆叠自动编码器 :了解 mSDA 架构在领域自适应中的影响。首先使用源数据和目标数据学习联合表示,然后使用 mSDA 的最后一层作为特征层,与输入层连接,从标注的源数据中训练 SVM,并对未标注的目标测试数据进行预测。
  2. 基于二阶统计的方法(Deep CORAL、CMD 和 MMD) :查看当目标数据未标注时,一种可以从源数据和目标数据学习的基于二阶统计的方法是否有助于在领域转移下预测目标数据。
  3. 领域对抗神经网络(DANN) :查看当目标数据未标注时,一种可以从源数据和目标数据学习的对抗性方法是否有助于在领域转移下预测目标数据。

以下是不同实验在两个不同数据集上的测试准确率表格:
| 实验 | 源(书籍)和目标(厨房用品)测试准确率 | 源(厨房用品)和目标(电子产品)测试准确率 |
| — | — | — |
| 训练源数据 + 测试目标数据 | 69.0 | 78.00 |
| 训练目标数据 + 测试目标数据 | 84.25 | 82.5 |
| 预训练嵌入源数据 + 训练目标数据 | 81.5 | 80.25 |
| 预训练嵌入源数据 + 训练目标数据 + 微调目标数据 | 85.0 | 84.5 |
| 预训练嵌入 + 训练源数据 + 微调源数据和目标数据 | 85.75 | 86.75 |
| 堆叠自动编码器和 DNNs | 67.75 | 63.75 |
| 堆叠自动编码器和 CNNs | 78.25 | 79.25 |
| 边缘化堆叠自动编码器 | 48.0 | 69.75 |
| CORAL | 63.25 | 69.25 |
| CMD | 63.25 | 69.25 |
| MMD | 63.25 | 69.25 |
| DANN | 75.00 | 80.0 |

4.3 结果与分析

根据上述实验结果,有以下几点观察和分析:
1. 领域转移损失 :从书籍到厨房用品的领域转移损失更高。书籍到厨房用品的训练准确率为 78.25,测试准确率为 69.00,损失为 9.25;而厨房用品到电子产品的训练准确率为 83.75,测试准确率为 78.00,损失为 5.75。词云和数据分布证实,书籍评论与厨房用品和电子产品评论有很大不同。
2. 预训练嵌入的影响 :使用预训练嵌入有明显影响,从仅使用冻结嵌入到在源数据和目标数据上训练嵌入的逐步改进证明了迁移学习的有效性。
3. 最佳实验方法 :对于书籍 - 厨房用品和厨房用品 - 电子产品这两种领域组合,使用预训练嵌入,先在源数据上进行端到端训练,然后在目标数据上进行微调,能得到较好的结果。这表明无监督学习和微调以适应领域转移的优势非常明显。
4. 自动编码器与网络结构 :堆叠自动编码器与 CNN 结合的效果优于与普通 DNN 结合,这证明了自动编码器在捕捉潜在特征方面的有效性,以及分层 CNN 在捕捉分类信号方面的优势。
5. 统计技术的表现 :大多数统计技术,如 CORAL、CMD 和 MMD,表现不佳。
6. 对抗性方法的潜力 :像 DANN 这样的对抗性方法在浅层网络中显示出很大的潜力。

下面用 mermaid 流程图展示整个实验流程:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px

    A(数据选择):::process --> B(预处理):::process
    B --> C(实验设置):::process
    C --> D1(训练源数据+测试目标数据):::process
    C --> D2(训练目标数据+测试目标数据):::process
    C --> D3(预训练嵌入源数据+训练目标数据):::process
    C --> D4(预训练嵌入源数据+训练目标数据+微调目标数据):::process
    C --> D5(预训练嵌入+训练源数据+微调源数据和目标数据):::process
    C --> D6(堆叠自动编码器和 DNNs):::process
    C --> D7(堆叠自动编码器和 CNNs):::process
    C --> D8(边缘化堆叠自动编码器):::process
    C --> D9(基于二阶统计的方法):::process
    C --> D10(领域对抗神经网络):::process
    D1 --> E(结果评估):::process
    D2 --> E
    D3 --> E
    D4 --> E
    D5 --> E
    D6 --> E
    D7 --> E
    D8 --> E
    D9 --> E
    D10 --> E
5. 读者和从业者的练习建议

对于有兴趣进一步探索的读者和从业者,以下是一些可以尝试的有趣问题:
1. 合并训练数据的影响 :将源训练数据和目标训练数据合并在一起,然后在未见过的目标测试数据上进行测试,会有什么影响?
2. 使用标注和未标注数据学习嵌入 :使用源数据和目标数据的标注和未标注数据来学习嵌入,再结合各种技术,会有什么影响?基于情感的嵌入是否比通用嵌入能得到更好的结果?
3. 不同嵌入技术的影响 :不同的嵌入技术对实验会有什么影响?
4. 不同深度学习框架的影响 :在第 6 章中学到的不同深度学习框架用于分类,对实验会有什么影响?
5. 其他领域自适应技术 :使用其他领域自适应技术,如 CycleGAN 或 CoGAN,会有什么结果?
6. 其他源 - 目标领域组合 :对于其他源 - 目标领域组合,如 DVD - 厨房用品,迁移损失和改进情况如何?
7. 语音识别迁移学习 :这些技术中哪些可以用于语音识别迁移学习问题?

通过这些练习,读者和从业者可以更深入地理解迁移学习在领域自适应中的应用,并探索不同方法的潜力和局限性。

综上所述,本次领域自适应实验通过多种迁移学习技术,对不同领域的数据进行了深入研究。从实验结果来看,不同的方法在不同的领域组合中表现各异,预训练和微调的结合在大多数情况下能取得较好的效果。同时,对抗性方法也显示出了一定的潜力,而一些统计技术的表现有待提高。未来,可以进一步探索不同的数据处理方式、模型架构和技术组合,以更好地应对领域转移带来的挑战。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值