一位16岁CEO教你如何在高中阶段入门人工智能
大数据文摘作品
编译:冯琛、龙牧雪
What? 高中生也可以?
人工智能、大数据已经被纳入了我国高中“新课标”,但估计大多数高中生要是真想了解这一学科恐怕是一头雾水:高数没学过,编程也不会,老师也不教,这怎么学人工智能?
新加坡有位高中生Karan Jaisingh已经学习人工智能和机器学习一年了。不久前,他在GitHub发出了一篇长文,专门教广大高中生(以及高中老师、高中生家长、准高中生、准高中生家长……)入门人工智能。
不看不知道,他的LinkedIn显示他还是个CEO!他正在开发一个错题集和期末复习相关的App
文摘菌不禁惦记起了广大想入行的本科生、硕士生、博士生……告诉我,春节假期余额严重不足了,你计划要看的书翻开了吗?如果没有,可以参考下面这篇入门指南,它虽然是针对高中生而写,但使用的都是主流教程和工具。
高中生写给高中生
这份指南中整合的内容,是为打算在机器学习和人工智能这个新兴领域内有所建树的高中生准备的。目前在这个领域还没有适合高中生的学习路径。这份指南的特别之处在于,你不需要了解线性代数、偏导以及其他高中生没有学到的复杂数学概念。
如果你能够定期按照这个路径学习,我相信在短短三个月内你会进步飞速。接下来我们就正式开始吧。
学习Python,你需要使用它编写算法
我强烈推荐Python,不仅仅因为它超容易上手,还因为它提供了机器学习会用到的几乎所有好用的函数库。R也很好用,但是我认为Python更适合高中生。除了基础的编程,Numpy、Pandas和Matplotlib是机器学习中最有用的几个函数库。
如果你没有任何编程经验,我推荐你上一门多伦多大学的免费课程。多伦多大学是目前在机器学习和人工智能方面水平最高的大学之一。这门课耗时数周,但它值得你花费时间。你在这门课程中学到的大多数知识都能应用于任何其他的编程语言,唯一不同的只有语法。
课程链接:
https://www.coursera.org/learn/learn-to-program?siteID=SAyYsTvLiGQ-rs4V8qoewjp3oL7Nr.r_Fw&utm_content=10&utm_medium=partners&utm_source=linkshare&utm_campaign=SAyYsTvLiGQ#
如果你有除Python之外的编程经验,可以直接浏览以下语法教程,这最多耗时一天。
教程链接:
https://www.tutorialspoint.com/python/python_basic_syntax.htm
学习了Python的基本知识后,你需要了解Numpy、Pandas两个函数库(Matplotlib可以之后再说)。Numpy数组和Pandas用于调用和更改数据,Matplotlib用来制作图表将数据可视化。下面两个课程只需要几天时间就能完成:
Numpy: http://cs231n.github.io/python-numpy-tutorial/
Pandas: https://pandas.pydata.org/pandas-docs/stable/10min.html
文摘菌备注:这篇Numpy教程是斯坦福CS231n的配套练习,想同步学可以看大数据文摘翻译的视频+笔记
http://study.163.com/course/courseMain.htm?courseId=1003223001
机器学习的基础知识
如果要说一门通用的机器学习课程,那非吴恩达(Andrew Ng)的课程莫属。对于高中学生来说,这门课程可能有点难度,因为它涉及到偏导数等概念(尽管这些概念不是必须的)。建议反复观看第3至5周的课程。
我鼓励每个人都学学这门课并做笔记,虽然基于Matlab的编程相关的教程和练习不是必须的,而且根据我的经验,这个课程对于高中生来说难以掌握。但不用担心,我们将用更短的时间在Python中完成相同(甚至更先进)的算法。
课程链接:
https://www.coursera.org/learn/machine-learning
学习各种机器学习算法并了解如何实现
在没有通用数学基础的情况下想要理解机器学习算法,理论上讲是很难的。但是一个澳洲团队解决了这个问题。
来自SuperDataScience团队的Kirill Eremenko和Hadelin de Ponteves,特别擅长在现实生活中寻找实现简单算法的途径。更厉害的是,这让没有复杂数学背景的高中生可以轻松理解。
他们的课程包括Python和R,不用担心R的部分,只需要看Python的教程就可以了。如果你觉得他们的课有点慢,可以用1.25倍速播放。
他们的课在Udemy上,是付费的,但Udemy一般都给他们的课90%的折扣。在这可以找到课程,通常只要花费10美元。
课程链接:
https://www.udemy.com/machinelearning/learn/v4/overview
该课程涵盖了从基本回归分析到深度卷积神经网络。如果你还想探索更深的领域,机器学习课程的最后提供了他们的深度学习课程,有90%的折扣。但是,因为第二个课程太新了,其中的概念可能有点超前并缺乏合适的分类整理。
如果你不愿意花钱学,你可以看看谷歌的免费深度学习课程,或者密西根大学的免费课程。但是这些课程都与SuperDataScience的课程相差甚远。
谷歌的免费深度学习课程:
https://www.udacity.com/course/deep-learning--ud730
密西根大学的免费课程:
https://www.coursera.org/learn/python-machine-learning
对于这些课,做笔记不是必须的,网上有很多算法小抄,你一下就能看明白这些算法是怎么运作的。
小抄链接:
https://www.analyticsvidhya.com/blog/2017/02/top-28-cheat-sheets-for-machine-learning-data-science-probability-sql-big-data/
探索、探索再探索
现在你掌握了广泛的机器学习概念,并且学到了大量的技能。是时候在这些基础项目上小试牛刀啦。我建议上Kaggle或者UCI机器学习库,找个你感兴趣的数据集,对它进行建模解决一些问题。尝试各种不同的算法,尝试去不断优化模型表现。
Kaggle:
https://www.kaggle.com/
UCI机器学习库:
http://archive.ics.uci.edu/ml/datasets.html
确保你用的数据集简单明了,它们不应该需要太多的预先处理和修改。一些我能想到的简单数据集:鸢尾花数据、葡萄酒数据、威斯康星州乳腺癌数据、自闭症筛查数据、国会投票数据、MNIST手写数字数据和MNIST时尚数据。
如果你遇到障碍,Stack Overflow是你的好朋友,上面有你所有问题的答案。如果没有,发布一个问题,几个小时内就能得到解答。
Stack Overflow链接:
https://stackoverflow.com/
寻找一个特别感兴趣的领域,深入研究
现在你已经有了对全部基础知识有了很好的广泛了解。我建议你在机器学习的范围内寻找一个感兴趣的领域,并且深入了解它。在高中阶段,你可能没有时间成为所有领域的专家,但可以尝试去征服一个或两个领域。
计算机视觉
应用一种特殊的神经网络使计算机观察并理解事物,这应该是当下机器学习及人工智能最热门的领域。斯坦福大学发布了相关在线课程,讲义、课堂笔记和作业都公开。尽管课程涉及的数学有些复杂,不要担心,试着去学习一下,该课程只是为了加深你的知识。另外,你还可以看看OpenCV,这是一个计算机视觉库,它可以为你处理很多复杂的东西。这是一个很好的教程。当你完成上述这些,就去Kaggle和UCI上找更多的高级图像数据集,或者参加Kaggle的竞赛。
斯坦福CS231n在线课程:
http://cs231n.stanford.edu/
OpenCV教程:
https://www.youtube.com/watch?v=Z78zbnLlPUA&list=PLQVvvaa0QuDdttJXlLtAJxJetJcq
mqlQq
斯坦福CS231n中文字幕视频+笔记:
http://study.163.com/course/courseMain.htm?courseId=1003223001
自然语言处理
了解计算机如何学习说话也是当下的一个突出话题。斯坦福大学又提供了一个在线课程。如果你不了解其中的一些数学概念,不要担心,只需要了解这个领域的工作原理。对于实现NLP应用,你可以学习Udemy课程。你也可以选择Siraj Raval的视频。如果你已经完成了这些,可以尝试开始做简单的众所周知的项目,比如创建聊天机器人,情感分析或为歌曲创建歌词。
斯坦福CS224n在线课程:
http://web.stanford.edu/class/cs224n/
Udemy课程:
https://www.udemy.com/data-science-natural-language-processing-in-python/
Siraj Raval的视频:
https://www.youtube.com/watch?v=9zhrxE5PQgY
大数据文摘经授权译制Siraj Raval多个视频,戳这里看
强化学习
该领域专注于机器如何以特定方式学习,其最受欢迎的应用程序是在电玩领域。 Siraj Raval在这方面又有了一个不错的视频集合,另外David Silver的UCL课程非常棒,虽然初学者可能会觉得有点难 。一旦你完成了这些工作,就可以开始从网上下载基础项目,并添加人工智能元素来改进他们的行为模式。
Siraj Raval:
https://www.youtube.com/watch?v=i_McNBDP9Qs&list=PL2-dafEMk2A5FZ-MnPMpp3PBtZcINKwLA
David Silver的UCL课程:http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html
数据科学
这是一个萌芽的领域,有许多令人兴奋的工作机会。我建议你学习SuperDataScience的付费课程或加州大学圣地亚哥分校基于Python的免费课程。你还必须学习SQL以及Matplotlib。在学生时期学习的优势在于找工作——我有高中的朋友拿到了数据科学实习的offer,因为从他们的工作中获得的数据可以立即被公司拿去盈利。公司总是很需要数据科学家。
SuperDataScience的付费课程:
https://www.udemy.com/datascience/
加州大学圣地亚哥分校的免费课程:
https://www.edx.org/course/python-data-science-uc -san-diegox-dse200x
SQL:
https://www.khanacademy.org/computing/computer-programming/sql
Matplotlib:
https://www.youtube.com/watch?v=q7Bo_J8x_dw
还有像代表性学习(用于推荐系统)、Adversial Networks(AI改进AI)和遗传算法(以与自然进化类似的方式改进解决方案)等领域,但在我看来,对于大多数高中学生来说,这些是延伸学习。因为这些领域目前没有盈利空间,他们不像其他领域被学习和发掘得那么全面。如果你对其中某个领域特别感兴趣,也可以尽情去探索。
真正了解人工智能领域
如果你想要长期在这个领域中工作,了解它是什么、有什么突破性进展以及它对社会的影响至关重要。
高中生应该做如下几件事来加深对该领域的了解、增长见识:
开始阅读研究论文:它们不像你想象的那么有挑战性。即使只有高中数学水平也可以读懂很多论文。如果你读到一篇不理解的,放下它不用读了,还有很多其他的替代选择。
https://www.kdnuggets.com/2017/04/top-20-papers-machine-learning.html
关注领域内的先驱:像吴恩达、Ian Goodfellow和Yann LeCunn都经常接受采访,他们给出了这一领域内专家对于人工智能课题的权威观点。
https://www.youtube.com/user/Maaaarth/videos
与时俱进:Wired是科技达人的最佳平台之一。它每天发布多个与AI相关的故事。这是个方便快捷了解实时趋势的好途径。另外,订阅TechCrunch的Facebook Messenger机器人 - 它通常会每天推送与人工智能相关的有趣文章。
https://www.wired.com/tag/artificial-intelligence/
了解内涵:没有比看TED更好的方式了。他们的发言人在这个领域非常权威,并且在发言中越来越强调人工智能。
https://www.youtube.com/user/TEDtalksDirector/videos
了解哲学:人工智能有支持者也有反对者。然而,它背后的哲学是有趣的。推荐一些我喜欢并且适合高中生阅读的探究该领域的书籍,包括Ray Kurzweil的《如何创造心灵》和Max Tegmark的《生活3.0》。
http://s3.amazonaws.com/arena-attachments/1446178/cffa5ebc74cee2b1edf58fa9a5bbcb1c.pdf?1511265314
做贡献:如果你喜欢从他人的经验中学习,看看脸书上的人工智能和深度学习小组。或者,如果你更喜欢对话,看一下Reddit上的人工智能相关问题。
https://www.reddit.com/r/artificial/
结论
并不是每个人都要遵循这一条路径,你也可以寻找自己的学习路径。机器学习和人工智能是一个新领域,一般是研究生在学习相关课程。但这并不是说此领域晦涩难懂,只要掌握学习方法,什么时候学习都不算晚。
你觉得几岁开始学习人工智能比较合适?欢迎留言讨论~
原文链接:https://github.com/kjaisingh/high-school-guide-to-machine-learning/blob/master/README.md