关于机器学习中的各种“学习”
最近在研究机器学习的时候,我发现各种“学习”概念五花八门,有时候自己也会分不清楚。比如有人说“监督学习”,有人说“自监督学习”,还有对比学习、强化学习……看起来似乎有些混乱。为了理清思路,我花了一点时间把它们整理了一下,顺便写成这篇博客分享给大家。
监督学习
学习数据有标签。比如,你想训练一个模型来识别猫和狗,那么你的训练数据里,每张猫的图片都得标注上“猫”,每张狗的图片都得标注上“狗”。例如:房价预测、垃圾邮件分类等
无监督学习
学习数据没有标签。比如,你有一堆猫和狗的图片,模型不知道哪个是猫,哪个是狗,模型需要根据外形、颜色、大小等把相似的图片分到同一组。例如:聚类、降维等
半监督学习
只有一小部分有标签,绝大部分都没标签。模型会先利用少量有标签的数据学习基本的分类规律,再结合大量无标签的数据来提升泛化能力。例如:医学影像识别(人工标注成本高)、文本分类等
自监督学习
学习数据没有标签。模型会通过自己设计任务来生成“伪标签”,比如在图像任务上,把图片遮住一部分,让模型去预测被遮住的内容。在文本任务上,mask一个词,通过上下文来预测。例如:BERT掩码、MAE视觉无监督算法等
强化学习
学习数据既没有人工标签,也不是自己造伪标签。而是通过和“环境”的交互获得奖励信号来学习。比如,你想训练一只“AI小狗”学会捡球。它一开始什么都不会,乱跑乱捡;当它捡到球并把球叼回来时,你给它奖励,捡错了或没捡到就不给奖励。AI小狗会在不断试错中总结经验,学到怎样做能得到最多奖励。例如:自动驾驶、游戏AI等
对比学习
学习数据没有标签,模型通过“拉近相似样本,拉远不相似样本”来学习特征表示。比如:将一个猫的图片做不同增强(例如翻转,噪声),与原图相比模型要学会把它们识别成同一个东西。而把猫和狗图片放在一起,模型要学会区分这不是同一个东西。例如:图像表示学习,文本表示学习。
迁移学习
借用已有知识,少量新数据快速适应新任务。举个简单例子:可以理解为学会了骑电车,就可以很快的学会骑摩托车。非常适合数据量不足或标注成本高的场景。例如:预训练BERT等
对抗学习
模型通过与对手(通常是另一个模型)“对抗”来学习更强的能力。比如,在生成对抗网络(GAN)中,有一个生成器负责“造假币”,一个判别器负责“鉴别真假”。生成器不断尝试骗过判别器,判别器不断学习识别真假的能力,双方互相提升能力。例如:图像生成,对抗训练提升模型鲁棒性等。
总结
机器学习中的各种“学习”方式其实有不同的特点和应用场景:
监督学习:有标签,直接学习输入到输出的映射
无监督学习:无标签,挖掘数据内部结构
半监督学习:少量标签+大量无标签,降低标注成本
自监督学习:无标签,自造任务生成学习信号
强化学习:通过与环境互动获得奖励学习策略
对比学习:无标签,通过相似性学习特征表示
迁移学习:借用已有知识,加速新任务学习
对抗学习:模型间互相对抗,提升能力