# 2.3 快速搭建你的第一个系统，并进行迭代（Build your first system quickly, then iterate）

如果正在开发全新的机器学习应用，应该尽快建立第一个系统原型，然后快速迭代

改进语音识别系统特定的技术:

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/9a5fd355b0d3a39a021ded507178343d.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/9a5fd355b0d3a39a021ded507178343d.png)

对于几乎所有的机器学习程序可能会有50个不同的方向可以前进，并且每个方向都是相对合理的可以改善系统。但挑战在于如何选择一个方向集中精力处理。如果想搭建全新的机器学习程序，就是快速搭好第一个系统，然后开始迭代。首先快速设立开发集和测试集还有指标，决定目标所在，如果目标定错，之后改也可以。但一定要设立某个目标，然后马上搭好一个机器学习系统原型，找到训练集训练一下，看算法表现如何，在开发集测试集，评估指标表现如何。当建立第一个系统后，就可以马上用到偏差方差分析和错误分析，来确定下一步优先做什么。如果错误分析到大部分的错误来源是说话人远离麦克风，就有很好的理由去集中精力研究这些技术，所谓远场语音识别的技术，就是处理说话人离麦克风很远的情况

建立初始系统所有意义：是一个快速和粗糙的实现（**quick and dirty implementation**），有一个学习过的系统，有一个训练过的系统，确定偏差方差的范围，知道下一步应该优先做什么，能够进行错误分析，观察一些错误，然后想出所有能走的方向，哪些是实际上最有希望的方向

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/4307a97cb4f2e2d6abc7b8ff28b0ca87.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/4307a97cb4f2e2d6abc7b8ff28b0ca87.png)

当这个领域有很多可以借鉴的学术文献，处理的问题和要解决的几乎完全相同，比如人脸识别有很多学术文献，如果搭建一个人脸识别设备，可以从现有大量学术文献为基础出发，一开始就搭建比较复杂的系统。但如果第一次处理某个新问题，还是构建一些快速而粗糙的实现，然后用来找到改善系统要优先处理的方向

![](https://2314428465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Le0cHhI0S0DK8pwlrmD%2F-Le0cKOp1vaxoORIi4ak%2F-Le0cUHh6WSvr6CJESXl%2Fimport.png364?generation=1556953082203939\&alt=media)
