翻译 | AI科技大本营
参与 | 林椿眄
作为一名高中生,我在过去的一年里自学了机器学习与人工智能的相关课程,在这里和大家分享下我自己的学习心得,希望能够对那些机器学习或人工智能初学者有所帮助,这也是我写这篇文章的目的所在。
在过去的几个月里,我试着每天花几个小时来了解这个领域,通过观看Youtube上面的课程视频来学习相关知识,并独立地开始练习一些相应的项目。不仅如此,我一直跟随着一些比我更有经验的同事学习,并得到他们的指导和帮助,这使我受益匪浅。现在,我觉得我可以和大家分享自己的一些经验,希望能指导初学者正确快速的入门这个领域。
在这篇文章中,我所总结的所有信息普遍适用于那些对这个领域有兴趣的高中生。文章的编排是按照时间顺序进行,这与其他入门指南的内容安排有所不同,高中生不需要理解线性代数,偏导数及其他复杂的数学概念,而只需要按照我们的安排一步步学习。考虑到高中生的学习能力及时间安排,这种学习方式对绝大多数的高中生都非常适用,我相信你可以在三个月内达到相当高的专业水平。
下面让我们开始吧!
1. 学习Python,并用于算法编程。
在此,我强烈建议初学者学习Python。Python不仅非常容易适合初学者掌握,而且它几乎支持机器学习中所有的依赖库。虽然R语言很有用,但一般说来Python更适合高中生学习。除了基本编程外,对于机器学习来说,最有用的库包括Numpy,Pandas和Matplotlib。
对于那些没有编程基础的同学,我建议学习多伦多大学(现在是ML / AI最好的大学之一)开设一门编程课程。虽然这需要几周的学习时间,但是通过本课程你可以获得的大部分编程所需的知识。不仅如此,该课程对所有人都是免费的,你可以在https://www.coursera.org/learn/learn-to-program?siteID=SAyYsTvLiGQrs4V8qoewjp3oL7Nr.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的基础知识后,你还需要了解我上面提到的前两个库(Matplotlib可以晚点)。 Numpy和Pandas可以用于修改和使用数据,而Matplotlib则用于图表和数据的可视化。你可以通过以后链接来学习Numpy和Pandas库,这不会花费你太多的时间:
Numpy:
http://cs231n.github.io/python-numpy-tutorial/
Pandas:
https://pandas.pydata.org/pandas-docs/stable/10min.html
有了Python的编程基础,现在你可以开始学习机器学习和人工智能所需的核心编程。
2. 深入了解机器学习的基础知识。
Andrew Ng的机器学习(Machine Learning)课程是一门最通用的机器学习课程。由于课程中涉及到一些偏导数的概念(尽管整个课程的学习并不需要完全理解这些概念),因此对于高中学生来说这门课程可能还有点难度。然而,我发现课程中第3至5周的一些讲座对高中生的入门学习还是有益的。
我鼓励每个人都可以尝试着开始这个课程的学习并相应地做一些笔记。尽管课程的学习不需要太难的数学知识及相关的Matlab编程能力,但这对于高中生来说仍然还是难以掌握。不用担心,我们将在短时间内用Python复现其中相同(或更先进)的算法。
免费课程链接:https://www.coursera.org/learn/machine-learning.
3. 学习各种机器学习算法,并理解如何在真实世界的场景中应用它们。
理论上来说,高中生无法直接理解一些大学的数学知识及相关的机器学习算法。但是澳大利亚的一个研究团队解决了这个问题。来自SuperDataScience团队的Kirill Eremenko和Hadelin dePonteves通过寻找在现实生活中场景来应用各种机器学习算法,这种学习的方法是非常有效的。此外,在应用中适当地深入理解算法的功能,而无需接触复杂高深的数学知识,这对于高中生学习机器学习算法来说,无疑是一大福利。
他们的课程资源在Udemy上,你可以通过以下链接https://www.udemy.com/machinelearning/learn/v4/overview 获取课程的详细信息。
虽然这门课程不是免费的,但Udemy上的课程定期都享受90%或以上的折扣,这门课的价格约为10美元。
此外,这门课程的学习涵盖了Python和R语言,你只需通过Python来实现课程后的任务而无需涉及R语言。如果你发现课程的进度太慢,可以通过设置倍速播放来学习这个课程(我是这样做的,发现这样非常好用)。课程的内容涵盖了从基本的回归算法到深度卷积神经网络的所有机器学习内容。如果你想进一步探索更先进的领域,其深度学习课程将在机器学习结束时提供,你将享受90%的折扣。然而,深度学习课程中的一些新颖的概念可能有点先进,也无适当的说明文档,这可能对初学者来说不好理解。
如果你不愿意学习这门付费的课程,那么还可以通过https://www.udacity.com/course/deep-learning-ud730或密歇根大学推出的免费机器学习课程www.coursera.org/learn/python-machine-learning来开始你的机器学习之旅。
你还可以通过查看Google的免费深度学习课程来获得该领域的一些最前沿的知识。但是,这些与SuperDataScience团队的课程相差甚远。
对于这些课程,笔记并不是必需的,因为网上有大量的“算法备忘单(algorithmcheat sheets)”资源,它们简便地记录了一些基本概念、编程知识及相关依赖库的使用方法,这能方便你在需要的时候快速的查阅。
你可以通过这个链接https://www.analyticsvidhya.com/blog/2017/02/
top-28-cheat-sheets-for-machine-learning-data-science-probability-sql-big-data/ 获取一些备忘单的详细信息。
4. 进一步探索机器学习的应用。
到目前为止,你已经掌握了广泛的机器学习基本知识,并学到了大量的技能及编程知识。这些足以让你独立地去完成一些基础的项目。我建议去Kaggle(https://www.kaggle.com/)或UCI机器学习库(http://archive.ics.uci.edu/ml/datasets.html),找到你所感兴趣的项目或数据集,运用机器学习算法对其进行初步建模,并通过微调模型参数来尝试优化模型的性能。
在开始一个项目之前,首先要确保所使用的数据集是简单且干净的,它们需要进行太多的数据预处理或修改操作。一些简单的数据集包括theIris,BreastCancerWisconsin,AutismScreening,CongressVoting,HandwrittenDigits MNIST 和 FashionMNIST ones等。
如果你在项目过程中遇到问题,你可以通过StackOverflow(https://stackoverflow.com/)提出你的问题,这是个活跃的社区,社区里有各种各样的领域大牛。通常,你只需发布一个bug,在几个小时内就会得到答复,总有人能够解答你的问题。
在这里我没有更多要说的,当你了解该领域的基本知识并掌握了相关的编程知识,接下来你只需要通过实战项目来多加练习,熟悉解决问题的整体流程,在不断实战中锻炼并提高自身的专业能力,这只能靠你自己去努力!
5. 找到一个特别感兴趣的领域,并深入探索。
虽然你现在已经对机器学习的基础知识有了广泛而深入的理解,但是对于这些机器学习算法的实际应用还没有很清楚地界限。因此,我建议你要尽快找到一个特别感兴趣的机器学习应用领域,并进行深入研究。在高中期间,你可能没有充分的时间深入研究所有的机器学习领域,那么请从你最感兴趣的领域开始深入探索吧。
下面,我会列出一些可能涉及的领域,但你在开始之前要明白你正在学习的是什么。我还会通过一个简单的YouTube提供你所需要的高级解释。
1. 计算机视觉:这可能是目前机器学习/人工智能领域最热门的领域。通过计算机使用特殊类型的深度神经网络来识别、检测和理解图像内容。斯坦福大学发布了在线的计算机视觉课程(http://cs231n.stanford.edu/),课程内容包括专题讲座,课程笔记和作业任务。
通过这个课程,你可以掌握涵盖计算机视觉的大部分知识。此外,你还可以了解OpenCV,这是一个计算机视觉库,涵盖计算机视觉中所有的知识及应用。完成这些课程学习后,你可以试着开始探索Kaggle和UCI上更先进的图像数据集,甚至可以参加Kaggle的比赛。
OpenCV教程:
https://www.youtube.com/watchv=Z78zbnLlPUA&list=PLQVvvaa0QuDdttJXlLtAJxJetJcqmqlQq
2. 自然语言处理:了解计算机如何学习说话也是当前一个热门的研究话题。斯坦福大学推出的一个在线的自然语言处理课程(http://web.stanford.edu/class/cs224n/)。你不需要掌握很复杂的数学概念,通过这门课程的学习,你可以了解这个领域的相关知识及工作原理。对于课程任务的实现,你可以参考这个Udemy课程:https://www.udemy.com/data-science-natural-language-processing-in-python/。
但是,你也可以选择Siraj Rava的MachineLearnerl的视频(如https://www.youtube.com/watch?v=9zhrxE5PQgY)。如果你已经完成了这些课程,那么可以尝试开始一些简单的项目,如建立聊天机器人,情感分析或为歌曲创建歌词,这个简单的YouTube视频应该帮助你开展你的项目。
3. 强化学习:该领域专注于如何让机器以特定方式进行学习,其在视频游戏领域的应用最为广泛。
SirajRaval推出了一个不错的视频教程,你可以在这个链接(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),但这对于初学者入门学习来说有很大的难度。
一旦你完成了这些课程学习后,就可以开始从网上下载一些基础项目,并尝试添加人工智能元素来修改代理的行为及智能体的学习方式。更多的视频教程可以在Youtube上搜索。
4. 数据科学:这是一个新兴的领域,在现实生活中有广泛的应用,也创造了大量的工作机会。
建议你以SuperDataScience的课程(https://www.udemy.com/datascience/)或UC San Diego的课程(https://www.edx.org/course/python-data-science-uc-san-diegox-dse200x)开始你的应用学习,前者是需要付费的,后者是一门基于python的免费课程。此外,你也可以通过Google搜索找到数据科学的特定学习路径。
5. 你还必须要学习SQL以及Matplotlib的相关课程。如果可以的话,在掌握数据科学领域的相关知识后,最好能够找到一些公司的实习,因为公司实际的业务问题能够让你通过项目更好地巩固数据科学的工作流程,在实战中快速的提高自己的能力,这对日后的职业发展也有很大的帮助。
SQL:
https://www.khanacademy.org/computing/computer-programming/sql
Matplotlib:
https://www.youtube.com/watch?v=q7Bo_J8x_dw
6. 此外,还有的应用领域诸如像表示学习(用于推荐系统),生成对抗网络(利用AI来改进AI)及遗传算法(以类似自然进化的方式来改进问题的解决方案)也是值得你进一步探究的。但从目前情况来看,很多子应用领域还未被完全的挖掘和探索。对于一名高中生来说,如果你对其中某一个领域有特别感兴趣,那么就尽情地开始探索这些领域吧。
对于一名高中生而言,如果你想在未来长期致力在机器学习或人工智能领域工作,那么一个至关重要的问题是你要了解它是什么,它的突破性在哪里及它对社会的影响。此外,你还需要尽快地确定一个感兴趣的领域,这将决定你未来学习和研究的方向。一旦你确定了研究的领域并对该领域的工作有了必要的了解,那么你就可以按着以上的步骤开始针对性学习。不仅如此,在高中阶段还需要扎实地掌握该领域的知识并对其发展有个总的把握,对于这些我将给出我的一些建议:
1. 开始阅读研究论文:这听起来并不是多么有挑战性的工作。阅读研究性的论文对于大多数高中生来说是完全可以的,论文中的大部分内容也是容易把握的。如果偶尔碰到一个不明白的问题,可以尝试跳过这些障碍,只要能理清论文整体的思路即可。
你可以通过这个链接(https://www.kdnuggets.com/2017/04/top-20-papers-machine-learning.html)获取大量优秀的论文,你还可以通过这个链接(http:// www.jmlr.org/papers/)找到最新的一些论文(在其中的第5部分中找到你所感兴趣或与你的专业知识相关的领域论文列表)。
2. 倾听领域大牛的意见:诸如Andrew Ng,Ian Goodfellow和Yann LeCunn等业界大牛都会定期地接受采访,并给出关于人工智能及相关领域主题的观点。我还建议你学习下这个youtube频道的内容:https://www.youtube.com/user/Maaaarth/videos,你可以对内容进行编译,以便查看,保证你受益良多。
3. 实时关注领域动态:Wired是任何对科技感兴趣的人都会关注的一个媒体平台,它每天会实时发布多个与机器学习、人工智能相关的文章,你可以在https://www.wired.com/tag/artificial-intelligence/上找到相关资源。此外,你也可以使用TechCrunch的FacebookMessenger bot看到与人工智能相关的文章,它会每日推送你感兴趣的话题。
4. 了解其含义:TED演讲是了解人工智能知识的最佳途径之一。主题演讲者都是这个领域优秀工作者,他们对于各自领域的知识及未来的发展趋势有着独到的见解,并能在演讲中分享他们在工作中的一些宝贵经验,你可以在 https://www.youtube.com/user/TEDtalksDirector/videos上找到大量视频资源。
5. AI哲学:人工智能的成功有它的支持者和反对者。然而,它背后的哲学是有趣的。我认为适合高中生的一些AI哲学书籍包括Ray Kurzweil的“'How to Createa Mind”和MaxTegmark的“'Life3.0”,你可以在这个链接()http://s3.amazonaws.com/arena-attachments/1446178 / cffa5ebc74cee2b1edf58fa9a5bbcb1c.pdf?1511265314找到这些资源,可以尝试阅读这些书籍,相信你会对人工智能有新的认识。
6. 贡献:如果你喜欢从别人的经验中学习,你可以查阅Facebook group推出的人工智能和深度学习专题。如果你更喜欢对话的形式,那么可以在https://www.reddit.com/r/artificial/上查看AI Reddit主题,你会找到你所需要的内容。
我希望这种学习方式对于未来想要从事这一行业的每个人都能有所帮助。我听到有太多人说机器学习和人工智能太复杂,一般认为是研究生的研究领域,对于高中生很难入门。因此,我总结这篇文章的目的是想为每个初学者铺平学习中的障碍,希望每个人都能入门这个新兴领域,特别是高中生。
如果还有内容要补充,建议,查询或反馈意见的话,请随时写信给我@ [email protected]。
作者:Karan Jaisingh
原文:https://github.com/kjaisingh/high-school-guide-to-machine-learning
新一年,AI科技大本营的目标更加明确,有更多的想法需要落地,不过目前对于营长来说是“现实跟不上灵魂的脚步”,因为缺人~~
所以,AI科技大本营要壮大队伍了,现招聘AI记者和资深编译,有意者请将简历投至:[email protected],期待你的加入!
如果你暂时不能加入营长的队伍,也欢迎与营长分享你的精彩文章,投稿邮箱:[email protected]
AI科技大本营读者群(计算机视觉、NLP、Python、芯片、AI+金融方向)正在招募中,后台回复:读者群,联系营长,添加营长请备注姓名,研究方向。
☟☟☟点击 | 阅读原文 | 查看更多精彩内容