大資料文摘作品
編譯:馮琛、龍牧雪
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