社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

吴恩达deeplearningai | 机器学习训练秘籍:第一至四章

一个普普通通简简单单平平凡凡的神 • 8 年前 • 332 次点击  

1 为什么选择机器学习策略

机器学习(machine learning) 是无数重要应用的基础,其包含网络搜索、垃圾邮件检测、语音识别以及产品推荐等内容。假如你和你的团队正在研发一项机器学习应用,并且想要取得较为快速的进展,本书的一些内容将会有所帮助。

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

假设你正在建立一家初创公司,该公司将为猫咪爱好者们提供不计其数的猫咪图片。与此同时,你决定使用 神经网络(neural network) 技术来构建一套计算机视觉系统,用来识别图片中的猫。

你的团队有许多的改进方案,例如:

  • 获取更多的数据,即收集更多猫的图片

  • 收集更加多样化的训练数据集,比如处于不常见位置的猫的图片,颜色奇异的猫的图片,以及使用不同相机参数拍摄的猫的图片

  • 通过增加梯度下降(gradient descent)的迭代次数,使算法训练得久一些

  • 尝试一个拥有更多层(layer)/更多隐藏元(hidden units)/更多参数(parameters)的,规模更大的神经网络

  • 尝试加入正则化(例如 L2 正则化)

  • 改变神经网络的架构(激活函数,隐藏元数量等等)

  • ...

如果你能够在以上可能的方向中做出正确的选择,那么你将建立起一个领先的猫咪图片识别平台,并带领你的公司获得成功。但如果你选择了一个糟糕的方向,则可能因此浪费掉几个月甚至数年的开发时间。

2 如何使用本书帮助你的团队

完成本书的阅读后,你将对于“如何在机器学习项目中设定一个技术方向”有着深层次的了解,但你的团队成员可能不理解你为何要推荐一个特定的方向。例如你希望你的团队定义一个单值的评估指标,但他们并不赞成你的观点,此时你将如何说服他们?

这正是我决定缩短章节篇幅的原因——这样你就能够将它们打印出来,并在需要之时让你的团队成员选择阅读其中的 1 至 2 页即可。

优先级的稍加改变会对团队的生产力产生巨大的影响,我希望你能通过帮助团队进行一些有效的改变,从而成为团队里的超级英雄!

3 先修知识与符号标记

如果你已经学习过机器学习课程(例如我在 Coursera 开设的机器学习 MOOC),或者你有着应用监督学习的经验,则能够理解本文的内容。

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

我将经常提及神经网络(和“深度学习”中所提到的一致),但你只需对此有基础的了解就可以阅读后面的内容。

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

4 规模驱动机器学习发展

不少关于深度学习(神经网络)的想法已经存在了数十年,而这些想法为什么现在才流行起来了呢?

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

  • 数据可用性(data availability) :如今人们在数字设备(笔记本电脑、移动设备等)上花费的时间越来越多,数字化行为与活动产生了海量的数据,而这些数据都可以提供给我们的学习算法用来训练。

  • 计算规模(computational scale) :在近些年前,我们才开始能够使用现有的海量数据集来训练规模足够大的神经网络。

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

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

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

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

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

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

(i) 训练大型的神经网络,效果如同上图的绿色曲线;

(ii) 拥有海量的数据。

在算法训练时,许多其它的细节也同等重要,例如神经网络的架构。但目前来说,提升算法性能的更加可靠的方法仍然是训练更大的网络以及获取更多的数据。

完成 (i) 和 (ii) 的过程异常复杂,本书将对其中的细节作进一步的讨论。我们将从传统学习算法与神经网络中都起作用的通用策略入手,循序渐进地讲解至最前沿的构建深度学习系统的策略。 为了让大家尽快接触到机器学习训练秘籍中文版,我们在最短的时间内组织了翻译工作。若有任何错误,还请包涵。翻译内容仍在持续改进中,如果大家有任何意见和建议,欢迎给我们留言。 欢迎扫码关注我们的公众号!谢谢!


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/LYGRcWpbCK
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11047