经验分享:我的Deeplearning.ai课程学习之旅!

艾伯特(微信公众号ID:aibbtcom)编译:最近我完成了吴恩达的deeplearning.ai的最后一个课程,所以我想分享一些我的想法和经验,帮助你们来学习这套课程。我发现吴恩达对前三门课程的评论非常有用,所以希望我的课程回顾能够帮助到你。

团队领导;博士

参加这五门课程非常有益。内容结构合理,当然,需要对每个对矩阵代数至少有一点理解、编写Python代码的一些经验也是必需的。在我看来,这个课程是让你开始深度学习各个主题的绝佳方式,而参加完课程后,你应该就会知道自己在哪个领域能够进一步深入学习。

背景

我必须承认,在参加这些课程之前,我对神经网络(NN)持怀疑态度。就传统的机器学习(ML)来说,我不认为像一个黑盒子方法可以将某些函数(神经元)切换在一起,我不能单独进行训练和评估,可能会超越一个精细调整好的评估模型。事实上,深度学习(DL)和人工智能(AI)这样的流行语,让我更加怀疑。

在之前的课程中,我已经体验到Coursera平台很适合我的学习方式。从他的第一个大型开放式网络课程(MOOC)的视频中,我知道吴恩达是ML领域的一名讲师。但是由于Octave,我从来没有在那个课程中完成任务。但我知道这一系列课程可能是以结构化方式进入DL领域的好机会。

通常情况下,我只在一门特定的课程中注册一个我想学习的主题,观看内容并尽快完成作业。但是这一次,我决定彻底和循序渐进地做到这一点。我希望,关于认知具有挑战性的话题的工作可能会帮助我尽快获得好成绩。编程任务一直是重新回到编码和定期在计算机上工作的好机会。事实上,在开始的几周内,我只能坐在显示器前面,看看是否有短暂的时间限制。所以我必须打印出作业,在一张纸上解决,然后在提交给评分员之前输入丢失的代码。此外,在开始时发生了意想不到的副作用。在前三个课程中有可选的视频,吴恩达采访了DL的领袖人物(Hinton,Bengio,Karpathy等)。这些视频不仅具有丰富的内容,而且非常具有激励性,至少对我来说尤其如此。

期待什么

在专业层面上,当你对这个主题相当陌生时,你可以学到很多做deeplearning.ai的专业知识。首先,你要学习NN的基本概念。简单顺序模型中的前向传递如何,什么是反向传播等等。我曾经在一段时间之内,阅读并听说过NN的这些基本构建块。但从来没有像吴恩达那样清晰、有条理。所以我经历了这套课程,作为学习基础知识的非常有效的方式,并且比我事先通过的所有教程、博客文章和讲座都更有价值。

尽管在技术领域的大量营销工作中另有说明,但在第一个入门课程中也会学到,NN在生物模型中没有对应物。神经元中的信号处理与功能(线性的,具有非线性应用)完全不同,神经元由NN组成。

对新手来说,非常有用的是了解DL项目的不同方法。是否使用预先训练的模型进行转移学习或采取端到端的学习方法。数据增强的概念至少在方法层面得到了解决。

在更高级的课程中,将了解图像识别(课程4)和序列模型(课程5)的主题。这里教导了卷积神经网络(CNN)和递归神经网络(RNN)的最常见变体。我认为这是专业化的一个主要优势,你可以得到各种最先进的模型和方法。它可能不会让你成为DL的专家,但你会感觉到你可以进一步专注于该领域的哪一部分。

我发现对深化理解非常有用的是,通过FrançoisChollet的书籍“深度学习与Python”来补充课程的工作。本课程范围内的技术方法论基础在课程讲座中得到了很好的阐述。另一方面,DL项目的实际方面在本课程中有所涉及,但在任务中未得到广泛实施,这些内容已在本书中详细介绍。特别是数据预处理部分在课程的编程任务中明显缺失。在第二组中,您确实得到了使用DL框架(tensorflow和Keras)的教程,但是很明显,Keras的inital创建者的一本书将教会您如何更深刻地实现DL模型。

下面列出你可以特别期望从这五门课程中学到什么,以及一些在课程工作中的个人经验。之后,我会总结一些最后的想法。

神经网络与深度学习

本课程向您介绍NN的基本构建模块。您将了解逻辑回归、成本函数、激活以及(sochastic-&mini-batch-)梯度下降如何工作。你也可以用Python中的numpy快速介绍矩阵代数。

 

该课程是一个简单的介绍。吴恩达是一位出色的讲师,即使是数学背景较弱的人也应该能够很好地跟踪内容。

在作业中,首先用单个感知器进行二元分类,然后为同一任务研究生成多层感知器,最后编码一个具有numpy的深度NN。尤其是这两个图像分类任务在某种意义上具有启发性和回报性,您将从中获得有效的猫分类器。正如你在图片上看到的那样,它决定了猫是否在图像上。

改进深度神经网络:超参数调整、正则化和优化

正如其标题所示,在本课程中,您将学习如何微调您的深层神经网络。这些讲座中最常见的问题,如过度拟合或消失/爆炸渐变,得到了解决。您将学习如何找到合适的权重初始化、使用丢失、正则化和规范化。当然,不同的优化算法是如何工作的,以及哪一种是您的问题的选择权。

本课程最有用的见解是我使用随机值进行超参数调整,而不是采用更加结构化的方法。事实证明,在规定的空间和正确的尺度上选取随机值比使用网格搜索更有效率。

这个课程的任务有点枯燥,我想是因为他们必须处理的内容。但是,每一个都是非常有启发意义的,特别是有关优化方法的。作为奖励,您将在课程结束时获得有关如何使用tensorflow的教程,这对于下列课程即将进行的作业非常有用。

构建机器学习项目

这绝对是一只黑天鹅。由于它的内容只是为期两周的研究,我期望在前两个入门课程和之后的关于CNN和RNN的高级课程之间有一个快速的填充。此外,我认为我很习惯构建ML项目。但事实证明,这对我来说是最有价值的课程。

在本课程中,将学习开发DL模型的良好实践。将你的数据分解成一个训练,开发和测试集应该听起来很熟悉大多数ML从业者。在开始项目之前,请彻底决定要优化的矩阵。而且,应该量化模型执行的域的Bayes-Optimal-Error(BOE)。这是一个重要的步骤,我之前没有意识到(通常,我将性能与基准模型进行了比较 – 这一点同样重要)。当你必须评估模型的性能时,你当然会将开发错误与BOE(或HLE)和训练错误进行比较。因此,你可以将可避免的偏差(BOE与训练错误)与模型的差异(训练到开发错误)进行比较。而这两者的哪一个更大取决于,你应该采用什么策略来进一步提高性能。例如,如果方差存在问题,则可以尝试获取更多数据,添加正则化或尝试完全不同的方法(例如替代体系结构或不同的超参数搜索)。

你还可以了解建立项目的不同策略以及具体的转移和端到端学习。

卷积神经网络

由于我对计算机视觉不太感兴趣,至少在参加本课程之前,我对其内容的期望并不高。但事实证明,这成为我整个系列课程中最有教育意义的一门课程。

在本课程中,你将主要了解CNN及其如何应用于计算机视觉任务。从演讲视频中,你可以了解CNN的构建模块以及它们如何能够改变张量。有些视频也专门用于残留网络(ResNet)和初始体系结构。

 

我亲自找到了有关YOLO算法的视频,分别是关于YOLO算法的作业。基本功能在演讲中非常直观,我从未想过,物体检测可以是一项令人愉快的任务。但建立一个杰出但复杂的模型有时也是不够的。在YOLO的背景下,特别是其继任者,很显然,预测速度也是一个重要的衡量指标。

对所有五个课程最有教育意义的任务成为一个,在那里你实现一个低水平抽象的CNN架构。编码反向传播的可选部分加深了对逆向学习步骤如何真正起作用的理解。

 

面部识别有两个任务,一个是人脸识别。这是一个很好的举措,在这些主题的讲座和任务中,您将了解deeplearning.ai团队成员,至少从他们的照片中可以看出,把这些作为示例图像来验证。

神经类型转移,基本上,你必须实现Gatys,2015年张量流程的体系结构。当你浏览中间记录的结果时,你可以看到你的模型如何学习并在时代中将样式应用到输入图片。

序列模型

最后一个,我认为是最难的。你将学习RNN、门控重发单元(GRU)和长期短期内存(LSTM)的概念,包括它们的双向实现。虽然这对我来说是使这种专业化理解和使用这些模型的最终目标,但我发现内容难以遵循。这可能是因为复杂的概念,如时间倒序、词嵌入或波束搜索。而且我认为,这些非平凡主题的数量会更好地分成四个,而不是实际的三个星期时间。

另一方面,本课程的测验和编程作业显得非常简单。你将学习如何开发从角色序列中学习以获得新的相似内容的RNN。

 

把所有的东西都化为泡影!使用Word嵌入和LSTM

很棒的是,你在第二周学习的不仅是关于词嵌入,而且关于它嵌入中包含的社会偏见的问题。而最重要的是,你将学习如何以三步走的方式解决这个问题:识别 – 抵消 – 均衡。最后,一个非常有教育意义的是最后的编程任务。您可以像在Amazon Echo或Google Home设备中找到的触发器检测器一样构建触发器检测器来唤醒它们。

最后的想法

最后,我会说,如果你对这个主题不太熟悉,你可以从这个专业化中受益最多。如果您已经熟悉NN的基础知识,请跳过前两门课程。如果你对图像识别和序列模型也非常熟悉,我会建议仅参加“构建机器学习项目”课程。

另一方面,要知道你是哪种学习类型。如果你是一个严格的实践者,这种专业化可能不适合你。人们说,fast.ai提供了更多这样的体验。此外,如果你只对理论性的东西感兴趣而没有实际的实施,那么你可能不会对这些课程感到满意 – 也许在你当地的大学学习一些课程,也许你只对DL的一个特定领域感兴趣,也许你也可能会选择更合适的课程。比如说,如果你只想了解自动驾驶,那么在Udacity上注册“Self-driving Car”nanodegree”可能会更有效率。在deeplearning.ai的第三课中,你对这个主题的了解可能过于肤浅,缺乏实际的实施。但是,如果你认为这个方法是全面的介绍,并且希望将它与DL的各个领域的实践经验结合起来,我肯定会推荐进行deeplearning.ai专业化。

做这个专业化可能不仅仅是DL的第一步。每门课程都朝着正确的方向迈出了一步,所以最终总共有五步。尽管如此,我很清楚,这绝对不足以在人工智能中追求更多职业。我认为它构建了对该领域的基本理解。但进一步说,你必须练习很多,最后还可以阅读更多有关DL变体方法背景的知识(例如在讲座中提到的更高级的论文中)。但是,通过这门课程的学习,你可以开始以结构化的方式开展工作。这非常有价值,尤其是在一个围绕它开展工作的领域。

如果你想获得关于deeplearning.ai专业化的更多信息,并听到另一个(但相似的)我可以推荐观看Christoph Bonitz关于他参加MOOCs的经历的谈话,他在Vienna Deep学习聚会。

最重要的是,我不会后悔把时间花在Coursera的专业上。我的大部分希望都已经实现,我在专业水平上学到了很多东西。完成所有课程,包括可选部分,这也是一个很好的决定。

最后,我从这个特殊化中脱颖而出:现在我完全相信DL方法及其强大功能。它的主要优势在于具有大量数据的可扩展性以及模型推广到类似任务的能力,这些可能不会从传统的ML模型中获得。所以,我想感谢吴恩达,整个deeplearning.ai团队和Coursera在DL上提供如此有价值的内容。

艾伯特(http://www.aibbt.com)让未来触手可及

发表评论

电子邮件地址不会被公开。 必填项已用*标注