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

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个小时以上,端对端的学习就开始发挥优良的作用。

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

相关推荐
itwangyang52021 分钟前
AIDD - 从机器学习到深度学习:蛋白质-配体对接评分函数的进展
人工智能·深度学习·机器学习
mingo_敏41 分钟前
深度学习中的并行策略概述:2 Data Parallelism
人工智能·深度学习
Jack_pirate3 小时前
深度学习中的特征到底是什么?
人工智能·深度学习
微凉的衣柜3 小时前
微软在AI时代的战略布局和挑战
人工智能·深度学习·microsoft
哦哦~9214 小时前
深度学习驱动的油气开发技术与应用
大数据·人工智能·深度学习·学习
程序员一诺9 小时前
【深度学习】嘿马深度学习笔记第10篇:卷积神经网络,学习目标【附代码文档】
人工智能·python·深度学习·算法
MUTA️9 小时前
RT-DETR学习笔记(2)
人工智能·笔记·深度学习·学习·机器学习·计算机视觉
学术头条12 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客12 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
Ven%12 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip