深度学习基础—迁移学习、多任务学习和端对端学习

1.迁移学习


1.1.概念

神经网络经过任务A的学习,并将部分学习到的知识迁移到任务B中,从而使任务B的学习得到提升。

1.2.如何进行迁移学习

假设已经训练好一个图像识别的神经网络,这个神经网络的训练数据集是各种各样的图片,比如汽车、动物、花草等,我称之为任务A。现在有任务B,对医院放射科的图片进行识别,就需要把任务A中学习到的网络结构迁移到任务B中,网络结构如下图所示:

如果任务B的数据量较少,可以将网络的最后一层删去,然后重新初始化最后一层的权重(也可以调整最后两层),然后进行训练。如果任务B的数据量较多,也可以对网络整体进行训练,由于网络之前在任务A中已经训练成一个能图像识别的网络了(这个过程也叫预训练),因此在任务B中网络的训练需要再更新参数(这个过程也叫微调)。网络已经在先前任务累计了图像识别的基础,因此在现在的任务就能学习的更快,也需要更少的数据。

1.3.迁移学习的使用场景

****1.任务A和任务B的输入都是x。****比如任务A和任务B的输入都是图像或音频或文字。

****2.任务A的数据量比任务B更多。****因为任务B中的数据更贴近其工作场景,也就是说任务B中单个数据的价值比任务A中单个数据的价值大。

****3.任务A的低层次特征可以帮到任务B。****比如想要学习跑步,就需要先学会走,而任务A的作用就是学走路,可以帮助到任务B学跑步。在具体的图像识别就是任务A已经学习到一些图片的结构特征,比如色块、分辨率、边缘特征等,任务B也是图片,因此这些低层次的特征可以帮助到任务B。

但是注意,如果从数据量少的任务中迁移到数据量多的任务中,可能效果就不是那么好。

2.多任务学习


2.1.概念

神经网络同时学习多个任务,每个任务的学习又能帮助到其他任务,即网络的学习是并行的。

2.2.如何进行多任务学习

假设需要进行无人驾驶汽车模型的训练,对于一个图片,需要同时识别出图片中的汽车、行人、告示牌、交通信号灯,如果不进行多任务学习,就需要训练4个网络,而多任务学习只需要训练1个网络就可以完成4个任务。如下如所示,对于输入的标签,有m个,每个样本的标签为4*1的列向量,这4个位置分别就是4个任务对应识别标签。

网络的损失函数为:

其中对j求和就是对输出的标签那4个分量(汽车、行人、告示牌、交通信号灯)求和,对i求和就是对所有的样本输出求和。

上图所示的就是网络的结构,注意最后一层是4个神经元,每个神经元对应一个任务,同时输出4个任务的结果,因此才被称为多任务学习。实际上,对于输入的标签如果某个y列向量的4个位置有一些不清楚或无效数据,网络也可以运行的很好,因为在计算损失的时候,对于这些无效位置的数据,不计入损失。

2.3.多任务学习的使用场景

****1.多个任务可以共用低层次特征。****比如无人驾驶汽车的识别,道路上交通灯、告示牌,这都是汽车出现的场景中常见的存在,并且经常同时出现。

****2.多个任务的数据量接近(不一定准确)。****多任务之间通常具有一定程度的相似性,因此数据之间也可以提供一定的帮助,比如某个任务只有1000个样本,需要进行100个任务,但如果只专注于第100个任务的学习,那么网络只有1000个样本,利用上其余99个任务的数据,在多任务数据量接近的情况下,就多了99000个样本,对网络的性能就有大幅提升。但是如果任务的数据量参差不齐或者差别较大,可能就出现总数据量较少或某个任务表现不良的情况。就好比多条流水线组装汽车,只有每条流水线的速度相当,整体效率才能又快又没有冗余。

****3.网络的规模大。****多任务学习通常会提升网络的性能,但是如果出现多任务学习降低了网络的性能,只有一种可能就是网络的规模很小。

3.end-to-end learning(端对端学习)


3.1.什么是端对端的深度学习

对于一些数据处理系统或学习系统,可能需要多个阶段,端对端的深度学习就是使用一个神经网络来完成所有阶段的学习。

3.2. 端对端学习 的优缺点

优点:

1.只让数据说话

2.更少的手工设计组件

缺点:

1.需要大量的数据

2.可能排除了一些有用的手工设计组件

3.3. 端对端学习 的使用场景

一个关键的问题是:****是否有足够多的数据可以直接学习x映射到y的足够复杂的函数?****比如在X光判断骨龄的任务中:

处理这个问题目前较好的一种方式就是:1.将图片分割成每个骨头。2.根据不同的骨头部位,对照骨龄和长度对应表,查询年龄。相比之下,采用端对端的学习方式,就会缺少很多数据,因为根据骨相判断年龄常用于刑侦科,这种数据比较少,不足以训练出一个性能良好的网络。

而在语音识别领域,比如识别cat单词,需要经过:1.MFCC算法从音频提取一组特定的人工设计特征。2.应用机器学习算法提取音位。3.把音位串接起来组成单词。4.把词串接起来组成文本。如果较少的语音音频比如3000个小时,使用端对端的学习效果可能不好,但是一旦音频数量达到10000个小时以上,端对端的学习就开始发挥优良的作用。

**总结:**端对端学习通常需要较大的数据量,如果数据量较少,使用多阶段的学习方式效果更好。如果数据量很多,使用端对端学习可以简化学习步骤,一步到位。

相关推荐
RWKV元始智能1 小时前
RWKV超并发项目教程,RWKV-LM训练提速40%
人工智能·rnn·深度学习·自然语言处理·开源
AI技术增长3 小时前
Pytorch图像去噪实战(六):CBDNet真实噪声去噪实战,解决合成噪声模型落地效果差的问题
pytorch·深度学习·机器学习
小糖学代码4 小时前
LLM系列:2.pytorch入门:8.神经网络的损失函数(criterion)
人工智能·深度学习·神经网络
Jmayday5 小时前
Pytorch:RNN理论基础
pytorch·rnn·深度学习
AI周红伟7 小时前
周红伟:GPT-Image-2深度解析:从技术原理到实战教程,为什么它能让整个AI圈炸锅?
人工智能·gpt·深度学习·机器学习·语言模型·openclaw
端平入洛7 小时前
梯度是什么:PyTorch 自动求导详解
人工智能·深度学习
Uopiasd1234oo8 小时前
上下文引导模块改进YOLOv26局部与全局特征融合能力双重提升
深度学习·yolo·机器学习
动物园猫9 小时前
工业织物缺陷目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
深度学习·yolo·目标检测
ACCELERATOR_LLC9 小时前
【DataWhale组队学习】DIY-LLM Task6 评估与基准测试
人工智能·深度学习·大模型·模型评估
狮子座明仔10 小时前
ThinkTwice: 让模型学会“做完题再检查一遍“,推理+自纠错联合训练只加3%开销
大数据·人工智能·深度学习