概述
目录
多任务学习 :共享相关任务表征
更多的应用举例
网络结构
keras实现多任务学习(硬共享机制)
多任务学习需要准备的数据不太一样
多任务学习 :共享相关任务表征
定义:基于共享表示(shared representation),把多个相关的任务放在一起学习的一种机器学习方法。
也就是说,基于某些层的参数共享,训练几个具有相似性的任务,然后给出每个任务的分类结果。
举例:比如我们要识别一张图像中的脸是否是人脸、哪种脸部表情、性别、年龄段。针对这个问题,可以用单个模型来预测单个任务,但是可能在数据量不够的情况下,可能会导致过拟合,但是由于这几个任务之间存在一些联系,因此可以考虑用多任务学习,让模型同时给出多个任务的结果。
在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现
多任务学习涉及多个相关的任务同时并行学习,梯度同时反向传播,多个任务通过底层的共享表示(shared representation)来互相帮助学习,提升泛化效果。
更多的应用举例
1.在金融或经济预测中较为常见,我们可能希望预测多种相关指标的值;
2.在生物信息学中同时预测多种疾病的症状。
3.识别图像中车的颜色、车型、姿态等,
网络结构
- 硬共享机制:
在一个基学习器的最后一层加上多个特定的输出层,如softmax或者Dense层
具体的例子:天池fashionAI比赛用的模型
- Soft 参数共享机制
另一方面,在共享 Soft 参数时,每个任务都有自己的参数和模型。模型参数之间的距离是正则化的,以便鼓励参数相似化。例如使用 L2 距离进行正则化
keras实现多任务学习(硬共享机制)
base_model = VGG16(include_top=False, weights='imagenet',input_shape=(width, width, 3), pooling='max')
# for layer in base_model.layers[:16]:
#
layer.trainable = False
input_tensor = Input((width, width, 3))
x = input_tensor
x = Lambda(vgg16.preprocess_input)(x)
x = base_model(x)
x = Dropout(0.5)(x)
x = [Dense(count, activation='softmax', name=name)(x) for name, count in label_count.items()]
model = Model(input_tensor, x)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
多任务学习需要准备的数据不太一样
假设你要预测一个人的三种表情(笑,哭,萌)和性别
然后你有5张表情的图片,6张性别的图片
准备的标签的形状应该是(2,11)2表示两个任务。由于表情的图片,并没有性别的标签,所以就把性别的标签都设为零。
具体如下:
红色框中是5个表情样本的label,但是在没有性别信息,所以全都设为零
同理,蓝色框中是6个性别样本的label,但是在没有表情信息,所以全都设为零
对于模型预测输出的结果,你只关心它本来属于的那个类别即可。
更多相关的内容,可以看这篇博客
最后
以上就是执着背包为你收集整理的多任务学习算法及代码实现多任务学习 :共享相关任务表征更多的应用举例网络结构keras实现多任务学习(硬共享机制)多任务学习需要准备的数据不太一样的全部内容,希望文章能够帮你解决多任务学习算法及代码实现多任务学习 :共享相关任务表征更多的应用举例网络结构keras实现多任务学习(硬共享机制)多任务学习需要准备的数据不太一样所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复