close

點擊上圖,查看教學大綱

作者 | 蘇宓
出品 | CSDN(ID:CSDNnews)

你是從什麼時候開始編程的?

據 CSDN 調研數萬名開發者的數據顯示,近六成的開發者表示自己寫下第一行代碼的年齡是在 16-20 歲間。其次有 31.68% 的受訪者是在 21-25 間首次接觸了編程。

不得不承認,編程的主力軍越來越趨於年輕化。不過也有不少網友表示,「這純屬是別人家的孩子,我的高中可能還是在玩泥巴」。

又屬有些拉「嫉妒」系列,近日國外再次有一位別人家的孩子榮登熱搜。起因於其在Reddit 發布了一篇主題為《一個 16 歲的高中生從零開始構建 C++ 機器學習庫》的帖子,引來數百個用戶的點讚與評論。

靈感萌生

據悉,這位網名為@u/novak-99 的高中生開發了一個 13000+ 行代碼的 C++ 機器學習庫——MLPP(GitHub 地址:https://github.com/novak-99/MLPP)。值得注意的是,該庫覆蓋了統計學、線性代數、數值分析、機器學習、深度學習等多主題技術。

之所以開發這個庫,作者解釋主要有兩層因素。

一是不少工程師容易忽視 ML 算法背後的具體實現與細節。

「時下其實想要實現 ML 算法並不難,但是很多工程師經常忽略其背後的實現原理和運用的技術細節」,@u/novak-99 無奈地說道。

所謂學習編程思維往往比實現某一功能的開發來得更為實在,@u/novak-99 表示,如果不了解算法背後的數學技術細節,就無法在實現某些特定用例時反過來優化 ML 算法。

確實如此,「重複造技術輪子,缺乏創新」是當前技術圈中存在的痛點之一,而在學習編程的同時,了解工具背後的實現原理,也有助於進一步提升編程思維與創新。

當提及第二個原因時,@u/novak-99 表示,「C++在 ML 領域缺乏支持,使用 C++ 開發的機器學習前端庫更是少之又少。」

在 @u/novak-99 看來,在 TensorFlow、PyTorch、Numpy 等主流的機器學習框架中,不乏有很多庫採用了 C/C++或某種 C/C++衍生工具進行優化和提高運行速度。不過,@u/novak-99 特別指出,這裡的機器學習領域並非是後端開發,而是前端。

@u/novak-99 表示,其上手的第一門編程語言就是 C++,這門語言高效且有利於快速執行。因此他在 15 歲開始學習了解各種機器學習算法實現時,發現大多數都是用 Python、MatLab、R、Octave 來實現的。

」尤其是與 Python 的數量相比,C++ 機器學習中的框架數量相形見絀。此外,即使在 PyTorch 或 TensorFlow 等流行的框架中,C++ 的實現也沒有 Python 的那麼完整:缺乏文檔參考、並非所有的主要功能都能應用上、沒有多少人願意貢獻等等。

此外,C++ 不支持 Python 的 ML 套件的各種關鍵庫;Pandas 缺乏對 C++ 的支持,Matplotlib 也是如此。這增加了 ML 算法的實現時間,因為數據可視化和數據分析的元素更難獲得。「

由此,這也讓他萌生了使用 C++ 開發一個機器學習庫的想法:

C++ 在 ML 領域缺乏使用的主要原因是由於缺乏用戶支持和 C++ 的複雜語法。Python 有數千個用於數學、線性代數、機器學習和深度學習的庫和包,而 C++ 沒有這種用戶支持。現在,你可以期待一下使用 C++ 開發的最強大的機器學習庫。

不過,針對這一點,有不少人反駁道:

實際上,大多數(/所有相關的)ML 框架都是用 C++ 實現的。

Pytorch、Tensorflow 等只是提供廣泛的 Python 綁定,以便開發者能夠更快地進行實驗和開發。所有繁重的工作量都在極其優化的 C++/C/CUDA 代碼中處理。

在大多數情況下,Python 性能和開銷是可以忽略的。例如,在 1 小時的過程中節省 10 秒並不是什麼大問題,尤其是當您仍處於實驗階段時。

如果你想不惜一切代價避免使用 Python,你可以使用 Pytorch 的 C++ API。

不過,無論@u/novak-99 對 C++在 ML 領域的應用情況判斷是否有誤,其初心僅是想要進一步讓 C++ 在 ML 領域得以應用,同時也想呼籲更多的開發者多關注算法背後的實現。

具體實現

@u/novak-99表示,其計劃開源所有的實現文檔,並詳細地解釋庫中每個機器學習算法背後的所有數學實現,藉此,希望能夠對其他工程師們有所幫助。

以下是統計部分的摘錄:

在具體的項目中,@u/novak-99 所開發的 ML++ 覆蓋回歸、Prebuilt神經網絡、自然語言處理、計算機視覺等19 大技術主題,53+ 技術細節,以此想要將其成為普通開發者和機器學習工程師之間的橋樑:

與此同時,ML++ 也在緊隨技術實時更新,除了以上,ML++ 還聚焦:

卷積神經網絡

支持向量機的內核

支持向量回歸

寫在最後

別人的 16 歲,或許對於技術的趨勢判斷有誤,或許開發的算法暫時並不能在實踐中應用,或許還存在許多的不足,但是作為一個高中生,他的編程思想、實踐操作仍值得我們為其喝彩與學習!

參考資料:

https://www.reddit.com/r/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/

掃碼優惠購書

【專家著作】

需要樣書的老師,可以在「書圈」公眾號「教師專區」申請,僅限教師。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()