普通程序員如何正確學習人工智能方向的知識?
“阿里是講‘讓天下沒有難做的生意’,做人工智能的是講‘讓天下沒有難吹的牛’。”這是中國科學院深圳先進技術研究院副院長湯曉鷗于2017年10月12日在杭州的云棲大會上發表演講時說過的一句話。
(學術界的段子手,湯曉鷗)
人工智能(Artificial Intelligence)是這幾年科技圈最火的名詞之一,以深度學習為代表的機器學習在近幾年取得了很多令人震驚的成果,并且普遍應用到了諸如圖像識別、增強、風格轉換、生成,語音識別、翻譯,文章生成以及無人駕駛等諸多領域,在互聯網、科技和資本圈內備受重視。
廣義的說,人工智能包含諸多不同的方法,其主旨是讓程序像一個智能體一樣解決問題。機器學習是實現人工智能的一種方法,它不完全依靠預先設計,而是從數據中進行總結,達到模擬記憶、推理的作用。包括諸如支持向量機(SVM)、各類基于決策樹的算法(包括Boosting、Bagging、Random Forest等),各類基于人工神經網絡的算法(例如簡單網絡及深度網絡等),以及多方法的集成等。
隨著硬件設備功能的日漸強大,以及互聯網大數據帶來豐富的數據來源,無疑讓通過多種、多層、多方法集成的機器學習有著更深更廣的發展空間。盡管目前大部分人工智能實例使用的并不是基于機器學習的方法,但其中有不少領域在向機器學習遷移。可以預見的是,人工智能將在機器學習等諸多方法的推進下,在更廣泛的領域中輔助人類解決問題,在許多工作中,使用幾乎能夠無限擴展的計算力來替代部分人力。
人工智能的飛速崛起,使得該領域出現了巨大的人才缺口,據說在帝都,一個機器學習算法的崗位拿到100K的薪水也并不是一件很困難的事情,這刺激了普通程序員學習人工智能,迫切希望在人工智能大熱時實現轉行。可是許多程序員不知道該如何快速有效地學習人工智能。
其實,既然已經具備了普通程序員的功底,再轉人工智能方向并非難事,接下來我們就具體分析一下,普通程序員該如何正確學習人工智能方向的知識。
1. 熟練掌握基礎理論知識
要成為人工智能領域,尤其是機器學習方向的程序員必須有一定的數學和算法基礎,盡管各類框架使得現在的機器學習編程變得越來越簡單,表面上可以不用在意太多的數學和算法細節,但實際上,即使是針對工程應用,一定程度的數學和算法理解以及對應的思維方式,能夠在解決問題以及選擇模型套用時提供許多的幫助。相關的知識理論基礎包括:高等數學基礎、統計學基礎、線性代數、數值計算方法、運籌學。
當然,如果不打算進行特別深入的研究和擴展,以上內容并不需要都精通,但至少需要保持在知曉且能夠形象化理解的范圍內,只有在掌握這些基礎的前提下,理解人工智能和機器學習相關的知識才能更加輕松順利。
2. 相關基礎工具的學習和應用
熟練掌握基礎理論的同時,還要掌握相應的編程語言。目前機器學習最為普遍的語言是Python,大多數主流機器學習框架已經提供了Python接口。Python語法簡單,上手較為容易,同時有較強的語言表達能力,又很容易與其他語言的項目進行交互,這些特點使之成為了在機器學習領域必學的編程工具之一。關于如何學好Python,可以參考https://www.imooc.com/course/list?c=python 。另外還必須掌握像Jupyter notebook這些常用的開發輔助工具。
在Python中有大量的機器學習相關框架、數學工具和數據處理工具,在這里針對性地推薦一些入門級的關鍵工具。
① numpy、scipy、matplotlib(Python進行科學計算時常用的一些基本工具)
numpy中包含對矩陣(含高階矩陣)等內容的計算和變換;幾乎所有Python上的數據及機器學習處理框架均提供了numpy的ndarray形式的數據交換接口;
scipy中包含更復雜一點的計算模型,諸如傅里葉變換、濾波器等;
matplotlib則是與之配合緊密的繪圖庫,能夠提供較好的可視化功能。
② pandas
pandas是一個以數據表形式組織和操作數據,并能夠方便地結合numpy、matplotlib進行統計、運算和可視化的工具包。
來源:慕課網本文原創發布于慕課網 ,轉載請注明出處,謝謝合作