持续更新
已更新21章
第12章、第19章为阶段性总结章节
第一章:为什么选择机器学习策略
如果你的团队要使用神经网络做一个猫图片识别系统。
如果你能够在以上可能的方向中做出正确的选择,那么你将建立起一个领先的猫咪图片识别平台,并带领你的公司获得成功。但如果你选择了一个糟糕的方向,则可能因此浪费掉几个月甚至数年的开发时间。
第二章:如何使用本书帮助你的团队
完成本书的阅读后,你将对于“如何在机器学习项目中设定一个技术方向”有着深层次的了解。优先级的稍加改变会对团队的生产力产生巨大的影响。
第三章:先修知识与符号标记
简要介绍了监督学习。
第四章:规模驱动机器学习发展
有两个主要因素推动着近期机器学习的发展:
数据可用性(data availability):海量数据对于学习算法是很有用的。
计算规模(computational scale):在近些年前,我们才开始能够使用现有的海量数据集来训练规模足够大的神经网络。
在算法训练时,许多其它的细节也同等重要,例如神经网络的架构。但目前来说,提升算法性能的更加可靠的方法仍然是训练更大的网络以及获取更多的数据。
第五章:开发集和测试集的概念
在大数据时代来临前,机器学习中的普遍做法是使用 70% / 30% 的比例来随机划分出训练集和测试集。这种做法的确可行,但在越来越多的实际应用中,训练数据集的分布与人们最终所关心的分布情况往往不同,此时执意要采取这样的划分则是一个坏主意。(例如猫图片识别系统中,训练集都是网络上找到的清晰图片,而测试集是用户上传的手机拍摄的模糊图片。因此训练好的系统却不能识别用户上传的图片。)
我们通常认为:
训练集(training set)用于运行你的学习算法。
开发集(development set)用于调整参数,选择特征,以及对学习算法作出其它决定。有时也称为留出交叉验证集(hold-out cross validation set)。
测试集(test set)用于评估算法的性能,但不会据此决定使用什么学习算法或参数。
所以对于上边提到的情况你应当这样处理:
合理地设置开发集和测试集,使之近似模拟可能的实际数据情况,并处理得到一个好的结果。也就是说你的测试集不应该仅是简单地将可用的数据划分出 30%,尤其是将来获取的数据(移动端图片)在性质上可能会与训练集(网站图片)不同时。<