在现在的机器学习中,很多人都在研究自适应的参数,不需要人工调参,但是仅仅是自动调参就不能根本上解决
ai识别准确度达不到实际生产的要求和落地困难的问题吗?结论可想而知。如果不改变参数,那就得从算法的结构入手,
比如,现有的谷歌的MnasNet系列,这种是在人工的指导下进行的,但是,仅仅是这样就够了吗?我个人觉得还不够
1、在做机器学习的时候,我们模型的指标提不上去的时候,通常原因是因为边缘样本,也就是我们所说的hard-example,
如果和解决边缘样本呢?目前是人工发现这些样本并增加hard-example数量达到改善模型指标的方式。还有一种方式,就是
将边缘样本细分,将边缘样本单独作为一类别,从而成为非边缘样本。(样本边缘性是相对的,当你将某一个样本作为主要类别,
则与该样本模式相差较大但是划分为同一类别的就是边缘样本。)
2、目前算法是很笨的,他不具备潜意识,只是学习你喂的数据,因此从表现上改变数据的结构,分类,细化问题,可能获得更好的模型体现。
3、但是,问题来了,上面只是从样本上面去做改变,如何从算法方面作出改变呢?
梯度提升树(boost)的优势就是他会将识别错误的样本的基础上,重新训练获得新的决策,(第二颗树训练的目标是基于第一棵树的识别结构的),
而,目前损失函数,就是计算训练样本的和label的之间的loss,并不关注,每个样本loss大小变换与不同的问题。实际上,对于边缘样本,脏样本,
在训练迭代到后期,这些样本的地loss是比较大的,就是他们存在,算法不能收敛完全(比如,后期好的样本的loss已经很低了,每来一次干扰样本,
导致训练,训偏了,这种偏差将需要好几个正常样本的来“修复”)。这时候就想出了,是否除了参数可变自适应,模型结构自适应,数据类别or分布自适应呢?
数据分布自适应:
数据分布自适应,我觉得类似k-means,自适应寻找模型内部的分布,并挖掘这个样本数据集合到底要怎么分类,分几个类别,当然,要结和业务角度出发,
不能破坏我们原有的需求。比如自适应的感受野,在识别卡车和行人问题上,我们能不能根据卡车大小统计和人的大小统计从而归纳出识别人需要几层网络,识别卡车需要几层网络,
然后,在一个网络中,比如,卡车需要M层,人需要N层,则算法自动选取ob=max(M,N)层,当达到M层时自动设计一个针对卡车的输出,N层时,自动设计针对人的输出等等。
也许目前人工智能是因为人工标注学习的结果,也许目前算法还不够智能,也是局限于人工的标注(人工智能成也人工,败也人工?),而不能超越人工的框框架架下面。