0%

你的 Eyeball 开发集应该足够大,大到可以让你了解到算法的主要错误类别。如果你正在从事一项人类可以表现很好的任务(如识别图像中的猫咪),下面是一些指导方针:

Read more »

假设你有一个含有5000个样本的大型开发集,其中有20%的错误率。这样,算法对约1000个图片进行错误分类。手动检查1000张图片是非常耗费时间的, 所以我们可能决定在错误分析中不使用所有的图片。

在这种情况下, 我会明确的将开发集分为两个子集,只看其中一个子集,另一个不看。你可能会在你查看的那部分数据中过拟合,此时你可以使用那部分未使用的数据来进行调参。

Read more »

在错误分析期间,你可能会注意到开发集中的一些样本被错误标记(mislabeled)。当我说”dislabeled”时,我的意思是在模型训练之前,这个样本被错误的打了标签。即(x, y)中的类别y值不正确。例如,也许一些不是猫咪的图片被错标记为猫咪,反之亦然。如果你觉得一小部分的被错误标记的样本很重要,你可以再添加一个错误标记的类别:

Read more »

当你使用猫咪APP的时候,注意到一些被错误,识别成猫咪的狗样本。一些狗长的像猫!
于是一个团队成员建议和第三方软件进行合作,使系统可以更好的处理狗样本。这些改变需要花一个月的时间,并且团队成员热衷于这一方案,你会让他们这样做吗?
在为这个任务投资一个月前,我建议你首先评估一下它实际上会提高多少系统 的准确率。然后你才能理性的选择是否值得花费这一个月的开发时间。

Read more »

你想建立一个新的反垃圾邮件系统,你的团队有以下想法:
• 收集一个含有大量垃圾邮件的训练集。例如,设置一个“蜜罐”:故意发送虚假的电子邮件给已知垃圾邮件发送者,以便于能够自动收集它们发送到这些地址的垃圾邮件。
• 开发用于理解电子邮件文本内容的功能。
• 开发用于理解电子邮件header(不清楚可以参考:https://whatismyipaddress.com/email-header )特性的功能,以显示消息所经历的一组网络服务器。
• and more.
尽管我在反垃圾邮件上已经做了大量工作,但我还是很难选择其中的一个方向,如果你不是应用领域的专家,那将更难。
所以,开始的时候不要试图设计和构建完美的系统。相反,应该快速构建和训练出一个基本系统——在短短几天的实际内5即使基本系统与你“最佳”系统相差很多,研究基本系统的功能仍非常具有价值:你可以很快的找到你最希望的方向的线索。接下来几章将告诉你如何去阅读这些线索。

5 这个建议是针对那些想要构建人工智能应用的读者,而不是那些想要发表学术论文的学者,稍后我会回到做研究的话题。

Read more »

• 从分布中选择开发集和测试集 ,它需要反映你将来的数据情况,并且它的效果足够好,这可能与训练的数据不在同一分布。
• 尽可能在同一分布选择你的开发集和测试集。
• 为你的团队选择一个单一数字的评估指标来进行优化。如果你关心多个指标,你可以把它们合并到一个指标中(例如:平均多个错误指标),或设定满足指标和优化指标。
• 机器学习是一个高度迭代的过:在发现你满意的结果之前需要尝试大量的idea。
• 开发/测试集和单一数字指标可以帮助你快速的评估算法,从而迭代的更快。
• 当开始一个全新的应用时,尝试快速建立开发/测试集和评估指标,最好在一周之内,当然,如果在成熟的机器学习应用上可以花费比这更长的时间。
• 当你拥有大量数据的时候,根据70% : 30%的比例划分训练/测试集这个经验可能不太适用;开发/测试集可以 占远小于30%的数量。
• 你的开发集应该足够大,足够检测到算法的改变,但没必要太大,只要达到你可以对你的系统整体性能有一个评估即可。
• 如果你的开发集和苹果指标没有引导你的团队往正确的方向走,请快速改变它们:
(1)如果在开发集上过拟合了,你可以去获取更多的数据
(2)如果你数据的实际分布和开发/测试集的分布不同,那么你需要去更新你的数据集
(3)如果你的评估指标不能在衡量对于你来说很重要的东西,请改变它

当开始一个新项目的时候,我会试图快速的选择开发/测试集,因为这样可以给团队一个很明确的目标。
我通常会要求我的团队在不到一周的时间内(几乎不会超过这个时间)提供一个初始的开发/测试集和评估指标,并且提出一个不太完美的方案迅速行动起来,这比花更多的时间去思考更好。但在一些比较成熟的应用上,一周时间可能不够,比如:反垃圾邮件(anti-spam)是一个成熟的深度学习应用。我见过一些团队会花费数月的时间在已完成的成熟系统上,去获得更好的开发集/测试集。

如果之后发现你最初的开发/测试集或评价指标与目标有些偏差,那么请修改它们。例如:如果你的开发集和评估指标在分类器A上表现的效果比B好,但是你的团队认为B在实际的产品中表现的更加优越,这可能表示你需要重新更改你的开发/测试集或者你的评价指标。

Read more »

机器学习需要的数学基础
了解一下?
个人觉得线性代数,概率统计这两权重很大。
微积分主要用于算法公式推导。
算法主要是考察代码能力,能否将算法转换为程序至关重要。
最后一个数据预处理主要用于实际项目时,需要对数据进行清洗等操作。

Read more »