[译] 普通程序员如何向人工智能靠拢?

标签: dev | 发表时间:2017-04-22 08:00 | 作者:
出处:http://itindex.net/admin/pagedetail

「范式大学推荐课程」第 4 篇文章:普通程序员如何向人工智能靠拢?


相信看到这篇文章的朋友,几乎都想成为机器学习科学家。


事实上,绝大多数的付费课程,基本上都有完全免费的课程放在另一个地方。我们只是把这些信息整理好,告诉你在哪儿可以找到他们,以及通过什么样的顺序进行学习。


这样,哪怕你是还没毕业的大学生,或者是初入职场的工程师,都可以通过自学的方式掌握机器学习科学家的基础技能,并在论文、工作甚至日常生活中快速应用。


在这里我们推荐一份用户友好型的机器学习教程,你可以通过几个月的学习成为机器学习科学家,完全免费。


一份用户友好型的机器学习教程


当你学习机器学习课程时,有没有被信息过载所淹没?

大部分的学习者都遇到了这个问题,这不是他们的错,因为绝大多数的机器学习课程都过于关注个别算法了。 


没错,虽然算法很重要,但他们还是把太多时间花在了算法上。 


以至于......你几乎很难在短时间内走完一遍机器学习的流程,从而感受到通过它解决具体数据问题的巨大兴奋。


这些机器学习课程关注于算法是因为它容易教。相比之下,如果机器学习老师要带你走一遍机器学习的流程,那么他需要搭建计算环境,完成数据采集、清洗、拆分,特征处理,模型调参和模型预测,甚至他还需要一个面向学习者的交互界面。老师哪有这么多的工具,与其手把手带着学生走一遭,还不如学习机器学习算法。 


但这样的问题是,很难有人能坚持通过自学,成为一个卓越的机器学习科学家。哪怕他是数学博士,或者技术高超的程序员,都很容易陷在细节中而难以有具体项目实现的成就感。 


这份教程将会带来完全不同的思路。它非常适合自学者,即便完全没有编程的基础,也能通过恰当的工具快速实现机器学习模型,解决工作、生活中遇到的具体问题。


值得注意的是,我们享用了世界顶级的机器学习资源,而不需要花费 1 分钱。 


自我学习的方法

我们推荐通过 Doing Shit(不是技术术语)完成你的学习。


在这之前你也许已经学习过机器学习了,但从我和朋友们的经验来看,往往会被各种神秘的符号、公式、大量的教科书和论文整的晕头转向,然后再也不想碰这恼人的玩意了。


我们的方法会更加友好,它的学习过程就像小朋友学习一样,你会了解一些基础的知识(但不一定要完全弄懂),然后通过好用的工具快速实现出来就好了。而当你被建模出来的结果吸引,那时候我们才谈算法背后的数学逻辑和计算逻辑。


所以我们会在学习中做很多机器学习项目,这样的好处是当你面对一个工作机会时,你就是一个经验丰富的机器学习科学家了!


当然自学本身是需要自律的,这本教程将一直陪伴着你,以下是 4 个步骤。

1.前提条件 (不需要完全弄懂)

统计学、编程和数学(也可以不需要编程) 


2.海绵模式 

把自己浸泡在机器学习的各种理论中 


3.目标实践 

通过机器学习包实践 9 个有意思的题目 


4.机器学习项目 

深度参与到感兴趣的项目和领域中



步骤一:前提条件 

机器学习之所以看起来很吓人,是因为总伴随着那些晦涩难懂的术语。实际上,即便你是中文系毕业的,也可以学好机器学习。不过,我们需要你在一些领域有基础的理解。


好消息是,一旦你满足了前提条件,其余的将会非常容易。事实上,几乎所有的机器学习都是把统计学和计算机科学的概念应用于数据领域


任务:确保你了解基础的统计学、编程和数学 


统计学:理解统计学、特别是贝叶斯概率对许多机器学习算法来说都是至关重要的。 

免费的指南:How to Learn Statistics for Data Science, The Self-Starter Way 

https://elitedatascience.com/learn-statistics-for-data-science


编程:懂得编程将会更灵活的应用机器学习。 

免费的指南:How to Learn Python for Data Science, The Self-Starter Way 

https://elitedatascience.com/learn-python-for-data-science


数学:对原始算法的研究需要线性代数、多变量计算的基础。 

免费的指南:How to Learn Math for Data Science, The Self-Starter Way 

https://elitedatascience.com/learn-math-for-data-science


你可以先看看这些教程,给你的机器学习道路打下知识基础。


步骤二:海绵模式 

海绵模式是尽可能吸收足够多的机器学习理论知识。 


现在有些人可能会想:“如果我不打算进行原创性研究,为什么在可以使用现有机器学习包的时候,还需要学习理论?” 

这是一个合理的问题! 


然而,如果你想把机器学习更灵活的应用于日常工作,学习一些基础理论还是很有好处的,而且你并不需要完全弄懂。下面我们会剧透学习机器学习理论的 5 个理由。

(1)规划和数据采集

数据采集真是一个昂贵和耗时的过程!那么我需要采集哪些类型的数据?根据模型的不同,我需要多少数据?这个挑战是否可行? 

(2)数据假设和预处理 

不同的算法对数据输入有不同的假设,那我应该如何预处理我的数据?我应该正则化吗?假如我的模型缺少一些数据,它还稳定吗?离群值怎么处理? 


(3)解释模型结果 

简单的认为机器学习是一个“黑盒子”的概念是错误的。是的,并不是所有的结果都直接可以解释,但你需要诊断自己的模型然后改善它们。我要怎么评估模型是过拟合还是欠拟合?我要向业务利益相关者怎么解释这些结果?以及模型还有多少的改善空间? 


(4)改进和调整模型 

你的第一次训练很少会达到最佳模式,你需要了解不同的调参和正则化方法的细微差别。如果我的模型是过拟合了,我该如何补救?我应该花更多时间在特征工程上,还是数据采集上?我可以组合我的模型吗? 


(5)驱动商业价值 

机器学习从来不会在真空中完成。如果你不了解武器库中的工具,就无法最大化发挥它们的效能。在这么多结果指标中,哪些是优化的参考指标?哪个更为重要?或者还有其他的算法会表现更好吗? 


好消息是,你不需要一开始就知道所有问题的答案。所以我们推荐你从学习足够的理论开始,然后快速进入到实践。这样的话,你比较能够坚持下来,并在一段时间后真正精通机器学习。


以下是一些免费的机器学习资料。


2.1 机器学习视频课程

这是来自哈佛大学和耶鲁大学的世界级课程。
任务:完成至少一门课程 

哈佛大学数据科学课程 

端到端的数据科学课程。相比吴恩达的课程,它对机器学习的重视程度较低,但是从数据收集到分析,你可以在这里学到整个数据科学的工作流程。 

课程主页: http://cs109.github.io/2015/


斯坦福大学机器学习课程 

这是吴恩达的著名课程,这些视频说清楚了机器学习背后的核心理念。如果你的时间只能上一节课,我们建议这个。 

课程主页:

https://www.youtube.com/watch?v=qeHZOdmJvFU&list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW&index=1



2.2 机器学习参考资料


接下来我们推荐行业中两本经典的教材。 


任务:看这些 PDF 作为教科书 

An Introduction to Statistical Learning 

Gentler 在书里介绍了统计学习的基本要素,适合所有机器学习的学习者。 

PDF 地址: http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf


Elements of Statistical Learning 

严格的介绍了机器学习理论和数学,推荐给机器学习的研究员。 

PDF 地址: http://statweb.stanford.edu/~tibs/ElemStatLearn/


2.3 成功的关键


以下是每个步骤成功的关键。 

A:注重大局,总是问为什么 

每当你被介绍一个新概念时,问一句“为什么”。为什么在某些情况下要使用决策树而不是回归?为什么要规范参数?为什么要拆分数据集?当你了解为什么使用每个工具时,你将成为真正的机器学习从业者。 

B:接受你不会记得所有学过的东西 

不要疯狂的做笔记,也不要每个课程都复习 3 次。在自己的实际工作中,你会经常需要回过头查看。


C:继续前进,不要气馁 

尽量避免在一个话题上拖太久的时间。即便是对于机器学习教授来说,有些概念也很不好解释。但是当你在实践中开始应用时,你会很快就懂得概念的真实含义。 

D:视频比教科书更有效 

从我们的经验来看,教科书是很好的参考工具,但它很难坚持。我们强烈推荐视频讲座的形式。 


步骤三:有目的实践 

在海绵模式之后,我们会通过刻意练习的方式磨练技能,把机器学习能力提高到一个新水平。目标包括三个方面:

1.实践完整的机器学习流程:包括数据收集、清洗、预处理,建立模型,调整参数和模型评估。 


2.在真实的数据集中练习,逐渐建立哪种模型适合哪种挑战的直觉。


3.深入到一个具体主题中,例如在数据集中应用不同类型的聚类算法,看哪些效果最好。 


在完成这些步骤后,当你开始解决大型项目时就不会不知所措了。

3.1 机器学习工具

为了快速实现机器学习模型,我们推荐使用现成的建模工具。这样的话,你会在短时间内练习整个机器学习的工作流程,而无需在任何一个步骤花费太多时间。这会给你非常有价值的“大局直觉”(Big Picture Intuition)。


Python:Scikit-Learn 

Scikit-learn 和 Sklearn 是通用机器学习中 Python 的黄金标准库,它具有常规算法的实现。 


R:Caret 

Caret 为 R 语言中的模型包提供一个统一的界面。它还包括了预处理、数据拆分、模型评估的功能,使其成为一个完整的端到端解决方案。 


3.2 实践数据集

学习了工具后,你还需要一些数据集。数据科学和机器学习的艺术,很多都在于解决问题时的几十个微观决定。我们会在不同的数据集中看到建模的结果。


任务:从以下选项中选择 5 到 10 个数据集。我们建议从 UCI 的机器学习库开始,例如你可以选择 3 个数据集,分别用于回归、分类和聚类。 

在进行机器学习工程的时候,想想以下问题:


  • 你需要为每个数据集执行哪些类型的预处理?

  • 你需要进行降维操作吗?你可以使用什么方法? 

  • 你可以如何拆分数据集? 

  • 你怎么知道模型是否出现“过拟合”? 

  • 你应该使用哪些类型的性能指标? 

  • 不同的参数调整会如何影响模型的结果? 

  • 你能够进行模型组合以得到更好的结果吗? 

  • 你的聚类结果和直观的相符么?


    UCI 机器学习报告 

    UCI 机器学习报告采集了超过 350 个不同的数据集,专门为机器学习提供训练数据。你可以按照任务搜索(回归、分类或聚类),也可以按照行业、数据集大小搜索。 

    http://archive.ics.uci.edu/ml/


    Kaggle 

    Kaggle.com 以举办数据科学比赛闻名,但是该网站还拥有超过 180 个社区数据集,它们包含了有趣的话题,从用户宠物小精灵到欧洲足球比赛的数据应有尽有。 

    https://www.kaggle.com/datasets


    Data.gov 

    如果你正在寻找社会科学或者与政府有关的数据集,请查看 Data.gov。这是美国政府开放数据集合,你可以搜索超过 190,000 个数据集。 

    https://www.data.gov/


    步骤四:完成机器学习项目 

    好了,现在到了真正有趣的部分了。到目前为止,我们已经涵盖了前提条件、基本理论和有目的实践。现在我们准备好进入更大的项目。 


    这一步骤的目标是将机器学习技术整合到完整的、端到端的分析中。 


    4.1 完成一个机器学习项目

    泰坦尼克号幸存者预测挑战是一个非常受欢迎的机器学习实践项目,事实上,这是  Kaggle.com 上最受欢迎的比赛。 


    我们喜欢以这个项目作为起点,因为它有很多伟大的教程。你可以从中了解到这些有经验的数据科学家们是怎么处理数据探索、特征工程和模型调参的。 

    Python 教程 

    我们真的非常喜欢这个教程,因为它教会你如何进行数据预处理和纠正数据。教程由 Pycon UK 提供。 

    教程地址: https://github.com/savarin/pyconuk-introtutorial


    R 教程

    在 R 中使用 Caret 包来处理几个不同的模型。本教程很好总结了端到端的预测建模过程。 

    教程地址: http://amunategui.github.io/binary-outcome-modeling/


    这是一个“不负责任”的快速教程:仅仅是个教程,跳过了理论讲解。不过这也很有用,而且它显示了如何进行随机森林操作。 

    教程地址: http://will-stanton.com/machine-learning-with-r-an-irresponsibly-fast-tutorial/


    4.2 从头写个算法

    为了对机器学习有更深的理解,没有什么比从头写个算法有帮助了,因为魔鬼总是在细节里。


    我们建议从一些简单的开始,例如逻辑回归、决策树或者 KNN 算法。

     

    这个项目也为你提供了一个将数据语言翻译成程序语言的实践。当你想把最新的学术界研究应用于工作时,这个技能将会十分方便。 

    而如果你卡住了,这里有一些提示: 


    • 维基百科有很多好资源,它有很多常见算法的伪代码。

    • 为了培养你的灵感,请尝试查看现有机器学习软件包的源代码。

    • 将你的算法分解,为采样、梯度下降等编写单独的功能 

    • 从简单开始,在尝试编写随机森林前,先执行一个决策树。


      4.3 选择一个有趣的项目或领域

      如果你没有好奇心,你是很难学好的。但目前为止,也许你已经找到了想坚持下去的领域,那么开始建模吧!


      老实说这是机器学习最好的部分了。这是一个强大的工具,而一旦你开始理解,很多想法都会主动找上门。 

      好消息是,如果你一直在跟踪,也准备好从事这份工作,那么你的收获会远超你的想象! 


      我们也推荐了 6 个有趣的机器学习项目。 

      地址: https://elitedatascience.com/machine-learning-projects-for-beginners

      恭喜你到达了自学指南的终点


      这里有一个好消息,如果你已经遵循并完成了所有任务,那么你在应用机器学习上将会比 90% 自称是数据科学家的人更好。 


      而更好的消息是,你还有很多东西要学习。例如深度学习、强化学习、迁移学习、对抗生成模型等等。 


      成为最好的机器学习科学家的关键是永远不要停止学习。在这个充满活力、激动人心的领域,开始你的旅程吧!


      该教程由 EliteDataScience 提供,我们翻译了这份教程,略有改动。这是原文链接: https://elitedatascience.com/learn-machine-learning


      「范式大学」由第四范式发起,致力于成为“数据科学家”的黄埔军校。「范式大学系列课程」会和大家推荐戴文渊、杨强、陈雨强等机器学习领域顶尖从业人士的最新分享,以及由第四范式产品团队推荐和整理的机器学习材料。








      相关 [普通 程序员 人工智能] 推荐:

      [译] 普通程序员如何向人工智能靠拢?

      - - IT瘾-dev
      「范式大学推荐课程」第 4 篇文章:普通程序员如何向人工智能靠拢. 相信看到这篇文章的朋友,几乎都想成为机器学习科学家. 事实上,绝大多数的付费课程,基本上都有完全免费的课程放在另一个地方. 我们只是把这些信息整理好,告诉你在哪儿可以找到他们,以及通过什么样的顺序进行学习. 这样,哪怕你是还没毕业的大学生,或者是初入职场的工程师,都可以通过自学的方式掌握机器学习科学家的基础技能,并在论文、工作甚至日常生活中快速应用.

      普通程序员、文艺程序员、2B程序员

      - 可可 - 宇宙的心弦
      希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.

      普通程序员如何转向AI方向?

      - - IT瘾-bigdata
      眼下,人工智能已经成为越来越火的一个方向. 普通程序员,如何转向人工智能方向,是知乎上的一个问题. 本文是我对此问题的一个回答的归档版. 本文的目的是给出一个简单的,平滑的,易于实现的学习方法,帮助 “普通” 程序员踏入AI领域这个门. 这里,我对普通程序员的定义是:拥有大学本科知识;平时工作较忙;自己能获取的数据有限.

      普通程序员,如何转为当前紧缺的大数据相关人才?

      - - IT瘾-bigdata
      前段时间跟候选人聊天,一个有多年工作经验的资深 iOS 工程师告诉我,他最近正在学习 Machine Learning 相关的知识. 他觉得,对于程序员来说,技术进步大大超过世人的想象,如果你不跟随时代进步,就会落后于时代. 我其实已经听过很多人跟我说过类似的话. 只不过不同人嘴里提到的词汇各有不同——大数据、数据挖掘、机器学习、人工智能…… 这些当前火热的概念各有不同,又有交叉,总之都是推动我们掌控好海量数据,并从中提取到有价值信息的技术.

      人工智能技术新进展

      - - 生命奥秘
      新的计算机人脑模型可以模拟更加复杂的人类行为. 人类的大脑是一个高度复杂的器官,在众多对人类大脑的研究工作当中就包括了从分子水平到人类行为活动水平等多个层面采集大脑相关信息的工作. 这种超大范围的研究方式很有可能会让大脑研究走向专业不断细化的发展方向,这种趋势虽然有利于大脑研究的不断深化,可是同时也会带来知识碎片化的结果.

      由人工智能管理的港铁

      - - Solidot
      港铁公司运营香港地铁跻身全世界最出色地铁系统之列,它的准时抵达记录高达99.9%,超过了伦敦和纽约地铁. 数百公里长的繁忙地铁系统需要大量人力维护,港铁公司平均每周有多达1万人执行2600项维护工作,工人们工作都是提前规划好的,由人工智能进行管理. 港铁公司计划将人工智能推广到它在其它城市运营的地铁系统,其中北京有可能第一个采用.

      [微言]人工智能有多可怕?

      - - 海德沙龙(HeadSalon)
      @whigzhou: 花了两个多小时思考强人工智能引出的问题,得出的结论是:相信陪审团. 然后发现,这不就是 我去年得出过的结论嘛~哈. 不过,其间经历的逻辑链条那是相当漫长,而且有了一些新想法,容我慢慢道来. @whigzhou: 1)强人工智能很快(也就是几十年内)会出现;2)强AI的出现会让世界很不一样,但并不像有些人所想象的#那么#不一样;3)其实,“只有一小撮人(或组织)有能力做一些绝大多数人做不到、甚至完全无法理解的事情”——这早就不是什么新鲜事了.

      注意:人工智能非你所想!

      - - 译言最新精选
      译者: 果果向前冲 原文地址: gizmodo.com. 艾萨克·阿西莫夫的机器人三定律还不足以控制人工智能. 上图是幻想插画家之父迈克尔·蕙兰为《曙光中的机器人》设计的封面. 近20年前“深蓝”与盖里·卡斯帕罗夫对战象棋获胜一事被誉为史上最具意义的机器智能测试. 时至今日,谷歌的“阿法狗”与国手李世石在围棋锦标赛中决一胜负,对决前三局两次告捷,表明多年来人工智能经历了显著进化.

      恰到好处的人工智能

      - - 可能吧
      技术不应该给用户带来使用难度,而是提高效率,并恰到好处地提供帮助. 这是我在使用 Google 智能音箱 Google Home 之后的总结. 智能、AI,是今年创投圈的关键词. 如果你在京东、淘宝上搜索各种家电,多多少少这些产品都会说自己是「智能」的,到底什么是智能. 把安卓系统塞到硬件里,这个硬件是不是就是智能了.

      2017年人工智能研究报告

      - - 互联网数据中心-199IT
      81%的IT公司正在或者计划投资人工智能(AI). Cowen预测人工智能将会将人类的生产力提升到一个新的水平,而微软会冲在最前面. 数字化市场或市场自动化、Salesforce自动化(CRM)和数据分析将成为人工智能最为成熟的三大应用领域. 据angel.co的数据显示,目前有2200多家人工智能初创公司,其中超过50%的初创公司是在最近两年成立的.