為什麼要學習機器學習,近幾年來世界吹起了一股機器學習的旋風,甚至像Microsoft、Google等大公司也紛紛來台灣設立AI中心,甚至連鐵人賽都開了一個AI&Data的分類,撇開機器學習在世界的熱門程度,我認為最重要的是他非常的「好玩」,在學生時代時,我曾經使用一些超啟發式演算法來演算當時在玩的遊戲,那種開發程式、創造出一些什麼的心情,是我寫程式的原點。
談到機器學習,大概都會直接聯想到Python、R等相關的語言,尤其是Python裡有太多關於機器學習的工具、函式庫,像是Anaconda、Tensorflow、SciKit、Theano等耳熟能詳的函式庫,這些函式庫擁有強大的功能,可以很快速地透過API去使用各種機器學習的演算法,還能輸出漂亮的視覺化成果,十分方便、簡潔、有力,但也因為太方便了,使用上往往會造成「知其然而不知其所以」的狀況,對於演算法的細節不夠了解。
受益於近期人工智慧、機器學習技術的爆發,網路上充斥著大量機器學習的資源,因此,期望可以透過這次的鐵人競賽,由淺入深,挑選9-10種機器學習的演算法,首先了解演算法的概念、流程,接著以C++實作這些演算法,最後透過一些簡易的函式以及資料來驗證演算法的表現。
我在本系列文章僅使用C++語言,是希望透過C++靜態強型別的特性,雖然在程式上不像Python、JavaScript等高階語言方便,但型別的規定可以使程式碼更具有可讀性,也能對機器學習演算法提供較好的效能,並且在未來或許可以進階使用OpenMP、OpenCL等平行運算技術,加速演算法的執行效率。
最後,小弟我也是初入機器學習的領域,若有任何的指教和意見,歡迎在底下與我討論,另外比較可惜的事情是原先區公所預測大約11月會入伍當兵,前幾天接到電話要求10/4入伍,本系列文章只能在九月時盡量寫,在10月中時請朋友代po。若鐵人賽中斷、尚未寫完的部分會在當兵時或退伍後補完,這點深感抱歉。
參考資料:
Top 15 Python Libraries for Data Science in 2017