什么是迁移学习?
比如训练了一个识别猫的图片的网络,图片有很多,将它迁移到医疗影像诊断的任务上(因为X射线影像很难收集,数据很少)。Task A -> Task B
怎么迁移?
首先,要做预训练 pre-training , 例如cat picture (x,y)训练神经网络。
然后,微调fine-tuning。更改输出层的最后一层(或两层甚至三层,如果Task B数据相对较多),重新训练最后一层的权重。如果Task B数据较多的话还可以重新调整整个网络的参数。
什么时候迁移学习有效?
需要满足三个:
- Task A & Task B 有相同的输入
- Task A 有更多的数据
- Task A 的低纬度特征对Task B的学习有帮助(例如语音识别和唤醒词,都是人类发音,相当于 Task A学习了骨架)
迁移学习有点像厚积薄发,若Task B 比Task A 有更多数据, 就不能Transfer A to B。 就比如上研究生,对各种项目做了深入的调研、研发,实际是积累做研究的能力。待到需要解决其他任务时,只需做一些收集、调研,就可以对新任务做举一反三。