在机器学习领域有很多学习模式,比方说监督学习、半监督学习、强化学习、无监督学习等。平时大家接触比较多的一般都是监督学习,在监督学习里面,比方说要做个人和鱼的图像分类模型,假设有200张图片,那就需要把这200张样本都打好标记再训练。
监督学习存在很多问题,比如最直接的一点,当样本打标成本很高的时候,比如要标记一个人脸,可能需要在图片上打上百个点,用监督学习很消耗资源。
主动学习(Active Learning)很好地解决了这个问题,主动学习的本质是让训练样本的利用率最大化,今天就来介绍下主动学习的一些内容。
ActiveLearning的基本逻辑很好理解,就是构建一个打标和训练流程的闭环,有点类似于boosting算法。
在ActiveLearning中,不需要训练样本全部打标,可以先打标部分样本,然后跑一次分类模型,接着对未打标样本做一次预测。可以根据预测结果将未打标样本分成两类,一类是不确定性大,也就是信息熵大的样本,另一类是不确定性小但是信息熵也小的样本。然后针对信息熵大的样本再次训练。
这里面有个问题,什么叫不确定性大的样本呢?还是举文章开篇的例子,假设做人和鱼的分类模型,什么样的样本是不确定性高的呢?当然是哪种很难分辨人还是鱼的样本,比如美人鱼,哈哈。
总结下,ActiveLearning的本质就是先标记部分样本,然后训练一个简单分类模型,通过这个模型找到高信息熵样本并打标,然后再重新用新训练集finetune模型。
ActiveLearning显而易见的一个业务价值就是比较节省数据打标资源。很多论文已经讲了ActiveLearning在一些场景下的优势。
我个人感觉,ActiveLearning会在一些数据样本打标代价很高的场景落地,比如金融风控领域的负样本模型训练、图像语音的模型训练。
另外,一些云端机器学习平台产品如果可以集成Active Learning的能力对客户是很有吸引力的。虽然我还没机会做这种产品的设计,但是可以预想到未来云上的机器学习平台,能否对高信息熵样本做主动学习,将是一个重要的用户抓手。