一、迁移学习
1.Finetune
在一个数据集上训练完神经网络后(pre_training预训练),在另一个数据集上再训练
再训练方法:
1)前面的层不动(冻结),重新初始化最后一层的权重,并把y值改为新数a据的y,然后训练最后一层
2)前面的层不动(冻结),删除最后一层,在后面加入新的几层,并把y值改为新数据的y,然后训练新加入的几层
如果数据量较充足的情况下,以上方法前面的层也可以重新训练,可以使用之前训练的结果做参数初始化
2.Finetune什么时候可以用:
1)源域数据量比目标域数据量充足
2)源域前面层学到的基础特征对目标域学习有帮助(eg.识别不同领域的图像)
3)两个域的输入特征是一样的(这个是finetune所以有这个要求,其实迁移学习也包含输入特征不同的情况下的研究)
二、多任务学习:
idea:各任务的学习有互相帮助的作用
1.方法:
最后一层从1维输出改为多维输出,每个node代表一个任务(1,1,0,1)
注意:与softmax不一样的地方,softmax是只有一个node可以是1,多任务学习可以同时多个为1
**如果多任务学习的标签打标的时候有些标签的有些任务有缺失值,仍然可以使用这些数据,算loss的时候这一条数据不算缺失标签的任务的loss就可以了
2.什么时候可以用多任务学习;
1) 这些任务之间存在共性可以被基础层学到
2)(经验)每个任务的数据量差不多,并且如果想在多个任务中的一个任务上比单一训练有所提升,那么其他所有任务加在一起的数据量应该远超过单个任务的数据量
3)使用多任务学习方法后可以建一个更大且足够大的神经网络
3.多任务学习用的比迁移学习少很多
三、端到端学习
什么是端到端学习:
有些机器学习目标传统上需要分多个步骤学习,端到端就是不用人工设计中间步骤,直接从一开始的输入学最后的目标输出;
有点:
省事儿,不用人工设计了,并且人工设计不合理的话不如直接让数据说话
缺点:
1.需要端到端数据量大
1)人工设计的每一步数据量都够,但是端到端的不够
2)本身训练端到端就需要较大的数据才能学到
2.人工部分的帮助就没了
总而言之,看看数据量够不够学端到端复杂度的东西
网友评论