学习机器学习
“你应该如何开始机器学习?”
随着AI和ML在科技行业中成为如此巨大的话题,如果没有在网上论坛,与加州大学洛杉矶分校的其他学生讨论,甚至与其他医学预科和人文学科专业人士进行讨论,就很难完成整个学习过程。根据我自己熟悉的ML经验和我通过ACM AI教授给其他人的经验,这是我对这个问题的最好回应:
-
在开始使用任何代码或任何技术术语之前,我认为最好的第一步是全面了解机器学习是什么,以及它试图做什么。当我第一次向其他学生讲授ML时,我发现在开始深入研究梯度下降和损失函数等术语之前,让他们对该领域有一个大致的了解是非常重要的。维基百科所说,机器学习是一门计算机科学领域,它使计算机无需明确编程即可学习。我还可以补充一点:机器学习是AI的一个子领域,它是通过利用训练数据和优化来创建智能系统的独特方法。我建议使用以下链接和视频,让您对这个领域有整体的了解。
- 机器学习简介:喜欢这个视频,因为它从很好的定义开始,并向您介绍重要的术语。
- 什么是机器学习?:解释机器学习的3个不同子区域:监督学习,无监督学习,强化学习
- 机器学习的友好介绍:带有一些很酷的插图的精彩视频,但说实话,我认为从5:54开始观看就足够了。
- 基本机器学习算法概述:不要担心是否确切知道这些术语的含义。只需了解不同的算法及其完成的任务。我们稍后会详细介绍。
- 从zero到hero的机器学习:积极学习机器学习。有时一个简单的坐下来观看正确的视频可以点燃并激发起你ML的热情。如果您了解软件,这是一个很好的起点。不要担心知道每个视频中的每个细节,而是要考虑ML的高级目标。
-
好的很酷,现在你应该大致了解机器学习的目标。我们希望能够创建一个能够执行某项任务的系统,并且我们希望使用我们拥有的数据集来训练该系统。现在让我们跳到机器学习中使用的一些模型。一种有帮助方法是一次一个地学习这些模型,同时也不断思考它们之间的相似点和不同点。对于每个模型,我认为通过以下过程将有所帮助:
- 了解该模型正在采用的高级方法。该模型试图解决什么类型的任务,以及如何解决它?
- 开始深入了解模型的具体内容。想想模型试图计算的功能。常用的损耗函数是什么?此模型是否使用梯度下降进行优化过程?
- 想想可以使用这个模型的例子。模型是用于分类任务还是用于回归任务?在您想到的特定示例中,模型的输入和输出是什么样的?您需要什么类型的数据集来训练此算法?
- 过渡到更实际的练习。如果您对编码感到满意,请尝试在代码中重建模型。想想你将如何编写函数,计算损失,渐变等等。如果现在这有点太令人生畏了(别担心,它最初对我来说也是如此!),那么就试着写下一些伪 - 代码,然后在线查看其他人是如何做到的!
- 最后,我认为学习任何机器学习算法的最酷部分是在实践中看到它。最后一步是进行某种项目或实验,您可以在其中运行您在上一步中编码的算法,或者在您选择的特定问题上运行从SciKitLearn导入的算法。
- 为了确保您真正了解该模型,自行测验是有帮助的。拿一张纸,并(从记忆中)写下模型的摘要,就像你向5岁的孩子解释一样。然后,写一份技术摘要,说明正在计算的功能,培训程序如何发生,损失功能是什么等等。看看你是否可以向朋友解释。考虑一下这个模型可以用于的新问题空间。在进入下一个模型学习之前,请真正问自己是否已经牢固地理解了这些概念(并且在这里诚实地对待自己!)然后继续进行。如果答案仍然是否定的,那么YouTube和Google就是您的朋友:)根据我们对此字段的内容规模,找到能够回答您问题的视频或教程并不难。
好的,这绝对是很多信息。tl; dr是关于机器学习模型的学习涉及很多步骤。首先,了解高级视角,然后确定模型的独特特征,然后测试自己是否可以编码,最后在实际环境中使用模型。如果这需要一周或甚至一个月的线性回归,请不要担心。慢慢地完成这个过程并确保您了解每个步骤对于保留信息至关重要。
对于步骤#3-7,重复我上面讨论的以下每个ML模型的过程。我列出了每个型号的几个链接。你不必每天都看它们,只想包括我能找到的许多好资源。如果您需要更多资料或仍然不了解某个主题,请进行简单的YouTube或Google搜索!你搜索到的数量会让你惊讶。
-
线性回归:
-
Logistic回归:
-
K邻近算法:
-
K-Means:
-
决策树:
可选,但值得您的时间:随机森林,SVM,朴素贝叶斯,梯度提升方法,PCA
所以现在我们对一些ML模型有了不错的理解,我认为我们可以过渡到深度学习。
-
神经网络:如果有人想要开始深度学习,我认为最好的方法是首先熟悉机器学习(你们都会在这一点上做到),然后从神经网络开始。遵循相同的高级理解 - >模型细节 - >代码 - >实际示例方法在这里也会很棒。
- 3Blue1Brown神经网络播放列表:不能夸大这些视频的制作程度。他们深入研究了反向传播和梯度下降,这是理解神经网络的两个关键概念。
- 深度神经网络的工作原理:Brandon Rohrer的另一个很棒的教程。
- 深度学习和神经网络的友好介绍:神经网络的另一个视觉上出现的表现。
- 神经网络游乐场:由谷歌创建的优秀网络应用程序,允许您在浏览器中修改神经网络。很高兴获得一些实际的理解。
- Michael Nielsen关于NN的书:非常深入和全面。
-
卷积神经网络:卷积神经网络是一种特殊类型的神经网络,已成功用于图像处理任务。
- CS 231N主页:斯坦福大学CS231N是一门专注于CNN的研究生课程,最初由费菲莉,安德烈·卡尔帕西等人讲授。
- CS 231N视频讲座:2016年的所有讲座视频。在YouTube上也可能有2017年的播放列表。
- Brandon Rohrer YouTube教程:本教程视频的精彩视觉效果。
- Andrew Ng的CNN课程:来自Andrew Ng的深度学习课程的视频。
-
递归神经网络:递归神经网络是一种特殊类型的神经网络,已成功用于自然语言处理任务。
- 深度学习研究论文评论:NLP:太多无耻的插头或不是吗?大声笑
- CS 224D视频讲座:斯坦福CS 224D是一门专注于RNN并将深度学习应用于NLP的研究生课程。
- RNN和LSTM:我们都诚实地爱着Brandon。
- 循环神经网络 - Intel Nervana:非常全面。
- 了解LSTM网络:Chris Olah的帖子是可读的,但却很深入。
- RNN简介:Denny Britz是另一位有着广泛博客的伟大作家。
-
强化学习:虽然3种先前的ML方法对于理解RL非常重要,但是该领域的许多最新进展结合了深度学习阵营和传统强化学习领域的元素。
- David Silver的强化学习课程:这里有高级课程,但David是一位出色的讲师,我喜欢这些全面的内容。
- 使用Tensorflow进行简单的强化学习:Arthur Juliani有一个博客文章系列,涵盖RL概念和许多实际例子。
真棒,所以现在你应该对ML和DL在今天的年代和时代有一个很好的理解。现在世界就是你的游乐场。阅读研究论文,尝试Kaggle比赛,观看ML技术讲座,建立很酷的项目,与对ML感兴趣的人交谈,永不停止学习,最重要的是,玩得开心!:)这是进入ML并且急于尽快获取知识的好时机,通常只需放慢速度并考虑我们可以利用这项技术在这个世界中创造的惊人应用和积极变化的类型。