吴恩达《Machine Learning Yearning》完整中文版开源

吴恩达《Machine Learning Yearning》完整中文版开源啦!

《Machine Learning Yearning》是吴恩达历时两年,根据自己多年实践经验整理出来的一本机器学习、深度学习实践经验宝典。作为一本 AI 实战圣经,本书主要教你如何在实践中使机器学习算法的实战经验。

吴恩达称:这本书的主题是“如何构建机器学习项目”。

“这本书的重点不在于教授具体的机器学习算法,而在于如何使机器学习算法真正发挥作用。有一些技术类的人工智能课程会给你一个锤子;而这本书会教你如何使用这个锤子。如果你渴望成为人工智能领域的技术领导者,并想了解如何为你的团队设定方向,那么这本书将会有所帮助。”


1、机器学习为什么需要策略

机器学习(machine learning)已然成为无数重要应用的基石——如今,在网络搜索、垃圾邮件检测、语音识别以及产品推荐等领域,你都能够发现它的身影。如果你或你的团队正在研发一款机器学习相关应用,并期待取得较快进展,那么这本书将会是你的得力助手。

案例:建立猫咪图片初创公司

想象一下,你正在建立一家初创公司,这家公司的产品目标是为猫咪爱好者们提供数不尽的猫咪图片,你打算应用神经网络(neural network)技术来构建一套计算机视觉系统,通过该系统来识别图片中的猫。

但悲剧的是,目前你的学习算法准确度还不够好。为了改进这个猫咪检测器,你正面临着巨大的压力。可你该怎么做呢?

你的团队给出了许多建议,例如:

  • 获取更多的数据,即收集更多的猫咪图片
  • 收集更加多样化的训练数据集,图片中猫的位置可能不常见,也有可能颜色奇异,或者拍摄时使用不同的相机参数
  • 通过增加梯度下降的迭代次数,使算法训练得久一些
  • 尝试一个拥有更多层/更多隐藏元/更多参数的,规模更大的神经网络
  • 尝试一个更小的神经网络
  • 尝试加入正则化(例如 L2 正则化)
  • 改变神经网络的架构(激活函数,隐藏元数量等等)

在上面众多的方向中,如果你做出了正确的选择,就将建立起一个效果领先的猫咪图片识别平台,并带领你的公司取得成功。但如果你选择了一个糟糕的方向,则可能因此浪费掉几个月的时间。那么你该如何做出决定呢?

这本书将告诉你应该怎么做。众多的机器学习问题会留下一些线索,告诉你什么样的尝试有用,什么样的没用。而学会解读这些线索将会节省你几个月甚至几年的开发时间。

2、如何使用此书来帮助你的团队

完成本书的阅读后,你将进一步理解如何为一个机器学习项目设定技术方向,但团队成员可能不理解你为何要推荐某个特定的方向。有时你希望你的团队定义一个单值评估指标,但他们并不认可你的想法,此时你将如何说服他们?

这正是我决定缩短章节篇幅的原因——这样你就能够将它们打印出来,并且让你的成员仅阅读其中他们需要了解的那几页。

优先级的稍加改变会对团队的生产力产生巨大的影响,我希望你能帮助团队做出一些这样的改变,从而成为团队里的超级英雄!

3、先修知识与符号说明

如果你有学习过机器学习相关课程(例如我在 Coursera 开设的机器学习 MOOC),或者有过监督学习的应用经验,这本书的内容对你而言则不难理解。

本书假设你熟悉监督学习(supervised learning)概念,即使用标注(labeled)的训练样本(x,y)来学习一个从 x 映射到 y 的函数。监督学习算法主要包括线性回归(linear regression)、对数几率回归(logistic regression,又译作逻辑回归、逻辑斯蒂回归)和神经网络(neural network)。虽然机器学习的形式有许多种,但当前具备实用价值的大部分机器学习算法都来自于监督学习。

我将经常提及神经网络(也被人们称为“深度学习” ),但你只需对这个概念有基础的了解便可以阅读本书后面的内容。

如果对上文提到的一些概念你还不是很熟悉,可以在 Coursera 观看《机器学习》前三周的课程内容。(课程地址:http://ml-class.org)

4、规模驱动机器学习发展

关于深度学习(神经网络)的一些想法在几十年前就有了,那为什么它们到现在才流行起来了呢?

推动其近期发展的主要因素有两个:

  • 数据可用性(data availability):如今人们在数字设备(笔记本电脑、移动设备等)上花费的时间越来越多,对应的数字化行为与活动产生了海量的数据,而这些数据都可以提供给我们的学习算法用来训练。
  • 计算规模(computational scale):在近几年前,我们才开始有能力训练出规模足够大的神经网络来使用现有的海量数据集。

具体来说,即使你积累了更多的数据,但应用在类似于对数几率回归(logistic regression)这样较传统的学习算法上,其性能表现(performance)也将趋于 “平稳” 。这意味着算法的学习曲线将 “变得平缓” ,就算提供更多的数据,算法的性能也将不再提升。

传统学习算法似乎并不知道要如何来处理现今这般规模量级的数据。

在同样的监督学习任务下,选择训练一个小型的神经网络(neutral network, NN),你可能会获得较好的性能表现:

该图显示了在小数据集上应用神经网络的效果会更好,但这种效果与将神经网络应用在大数据集时不太一致。在小数据集情况下,传统算法是否会表现得更好,取决于人们如何进行特征选择工程。例如,假设你只有 20 个训练样本,那么使用对数几率回归还是神经网络可能无关紧要;此时人为的特征选择工程比起选择哪种算法将产生更大的影响。但如果你有 100 万个样本数据,我会赞成你使用神经网络。

这里的 “小型神经网络” 指的是只含有少量的隐藏元/层/参数的神经网络。但如果你训练的神经网络规模越来越大,最终很有可能会获得更好的表现:

因此,为了获得最佳的性能表现,你可以这样做:

  1. 训练大型的神经网络,效果如同上图的绿色曲线;
  2. 拥有海量的数据。

在算法训练时,许多其它的细节也同等重要,例如神经网络的架构。但目前来说,提升算法性能的更加可靠的方法仍然是训练更大的网络以及获取更多的数据。完成 1 和 2 的过程异常复杂,本书将对其中的细节作进一步的讨论。我们将从传统学习算法与神经网络中都起作用的通用策略入手,循序渐进地讲解至最前沿的构建深度学习系统的策略。


以上内容节选自《Machine Learning Yearning》,完整内容请点击下方链接阅读。

Github:https://github.com/deeplearni...

在线阅读:https://deeplearning-ai.githu...

中文版:https://github.com/deeplearni...

你可能感兴趣的:(机器学习,开源项目介绍)