迁移学习(Transfer learning)
举一个例子:
假设在原先的猫狗识别的任务里有1,000,000张图片,而放射影像只有1,000张图。
你可以把一个用于猫狗识别的网络应用于放射科影像的任务上,而只需要改动输出层前的最后一层的参数W[L]和b[L]。
即如果数据集较小,只需要重新训练输出层前的最后一层;但如果数据集较大,则需要训练所有的参数。
什么时候使用迁移学习?
1.能够预先学习到很多信息。即用一个数据量很大的相关问题的训练集可以有助于解决数据量较小的问题。
2.任务A的数据集应该多于B的数据集时,才能有所增益。
多任务学习(Multi-task learning)
举一个例子:
在无人驾驶领域:
| 行人 | 0 |
|---|---|
| 车子 | 1 |
| 停止标牌 | 1 |
| 指示灯 | 0 |
和softmax进行多分类任务不同,一张图可能拥有多个标签(即同时存在多种物体)。
构成一个(4,m)维的矩阵,其中4是标签个数,m是样本数。
损失函数如下:
可以看出,即使一些标签没有标记时,也可以拿来训练。因为损失函数只对0/1标签求和(而不计入?)
什么时候使用多任务学习?
1.训练的一系列任务能够从共享的低层次特征中获益。
2.通常你的各个任务中的大量数据是相似的。(比如你要获取A100中1,000张图片的特征,可以通过相似的A1-A99获得额外的99,000张图片的加持。)
3.可以训练一个足够大的神经网络来做好所有的工作,且比单独完成各个任务的效果要更好。
(总体来说,多任务学习的使用频率低于迁移学习,主要应用于计算机视觉。)
端到端学习(End-to-end learning)
即从流水线–>一个庞大的网络(绕过了许多中间步骤)
上为传统方法分解并逐步解决问题,下为端到端学习一步到位解决问题。
特点:端到端学习需要非常庞大的数据集支持,而传统方法适用于小规模的数据集,且精度可能高于端到端学习。
Pros:1.让数据说话。
2.更少地手动设计所需要的组件
Cons:1.可能需要很庞大的数据集。
2.会把潜在的有用的手工设计组件排除在外。