很难事先知道什么算法最适合一个新问题。就算是经验丰富的机器学习研究人员通常也需要尝试一系列方法后才能发现一些令人满意的方法。当构建一个机器学习系统时,我经常: 1.以一些如何构建系统的想法开始 2.用代码实现这些想法 3.做实验,实验会告诉我们哪些想法效果好。(通常,我开始的几个想法效果并不好)基于这些已学到的想法,我们回到第1步再产生更多想法,并循环下去。 上图就是迭代过程。这一圈你走的越快,你的进展就越快。这就是为什么开发集和测试集重要:当你尝试一个想法时,你可以在开发集上测量想法的表现,这能使你快速地发现是否你正在朝着正确的方向前进。 与此相对的是,假设你没有具体的开发集和度量(metric),每次你的团队开发一个新的猫分类器,就需要将这个分类器合并到你的app中,然后玩上几小时感觉一下新分类器是否有提升。这过程相当慢呀是不是?而且,当你的分类器从95.0%提升到95.1%时,你并不能通过玩app感觉出来这0.1%呀。拥有开发集和度量可以使你快速递检测出哪个想法会使分类集得到一点提升,从而使你快速判断出哪个想法需要再微调,哪个想法需要抛弃。
新闻热点
疑难解答