新加坡研究院 AI Department 公众号:follow_bobo
首发于专栏:https://zhuanlan.zhihu.com/c_141391545
个人公众号:follow_bobo
能不能点个赞,就是那种看起来写的还不错的样子
我们先来总结一下上一期的数据情况,顺便补充一点上一期没有讲到的:
目标类别一共20类,每类数量400-50不等
单从数据的情况,数据量少,并且不平衡,这个时候一个最基础的判断是用Pretrained model 实现两个Solution:
- Fine tune with Pretrained model
对于Google自己家的模型,比如Inception系列,我们用Tensorflow来fine tune,,毕竟自己家的模型,总会特别优化一点, 对于其他Pretrained model, 主要用Keras。
可能有人会问,Pretrained model 都是用ImageNet 训练的,但是ImageNet 里面并没有医疗数据呀?
首先,我们的数据量比较少,不建议Train from scratch.
第二,你可以理解为用Pretrained model 的参数来初始化model 的参数,而这些Pretrained model 的参数 的是经过专家们精确调参出来,效果肯定比随机生成参数好很多。最后也证明Fine tune with Pretrained model 在20个epochs 时就收敛了,并且有90%以上的Accuracy。
2. Extracting features with Pretrained model + Xg boost
这是在Kaggle 比赛中很常见的一种做法,特别是针对数据集比较少的时候。在这里最后效果不如 Fine tune,并且考虑到日后我们的数据越来越多,暂时不用这个方法。
如果有读者想有此法,我提醒一下。在提取特征之前,需要对model进行Domain Transfer, 什么意思,举个例子