機器學習--要學點什麼

epictus發表於2023-01-01

前言

可以說掌握了機器學習,你就具備了與機器對話,充分利用機器為人類服務的能力。在人工智慧時代,這將成為一項必備技能,就好比十年前你是程式設計大牛,二十年前你英語超好一樣。因此,無論你是什麼專業的學生,學一點機器學習的知識絕對只有好處,沒有壞處.

但是由於目前學習機器學習是為了準備美賽,所以我並不打算死磕其中的原理,而是有的放矢的學習,目前階段的學習結果應該是能夠對一些可以使用機器學習的問題形成思路並且透過查閱可以用程式碼來實現

由於我的常用語言為java,python,目前正在學習R語言,所以在思考過後我選擇了python作為現階段機器學習的語言,一方面是指令碼語言能夠儘快撿起來,另一方面python的生態良好api充足,程式碼實現充分.

難點:

數學難。

傳統的機器學習是一門綜合學科,對線性代數、機率統計等多種數學知識都有一定的要求,一上來遍佈學術黑話怎能不讓人退避三舍。不可否認,作為一個交叉學科,深度學習離不開很多的前置預備知識,比如微積分、線性代數、統計學、電腦科學等等。由於我只是大一的新生只開了高等代數一門課,所以掌握少且必要的知識.

程式設計難。

我們得承認機器學習是門十分強調動手實戰的學科。對很多程式設計基礎不好,或者壓根沒學過程式設計的而言,機器學習貌似就是個天方夜譚。但其實程式設計也不過是門語言,不需要那麼專業的情況下,只要教得合適,聽懂看懂能夠簡單上手沒有那麼難。更何況如今python語言的發展已經到了傻瓜階段,隨便一個人只要會點兒ABC基本上都能學會。

演算法難。

曾經神秘的不得了的演算法,如今已經被工業化製造,打包成成熟的API函式,可以方便地呼叫。好比汽車,你根本不需要知道內部的構造,買回來能開就成。如果還停留在只看學術論文或者傳統教材的階段,演算法的確很難。多數都不是普通人的人話能夠理解的。但是再難的演算法,其實也是人設計的,反映的是人的思想,也是能用大白話講明白的。這也十分適合我這種只是為了使用而學習的人

機器學習的前世今生

前世

image

在機器學習之前,機率統計,控制論,圖論是電腦科學中的數學基礎,也是實現計算的基礎。

深度學習,強化學習和知識圖譜這三派是主流的機器學習方向,分別被稱為"聯結主義","行為主義"和"符號主義"而我們主要選取深度學習來研究.這也是諸多最佳化演算法等的來源.也權當複習.

今生

機率統計這一門被稱為上帝的學問的學科經過這麼多年的發展,分支眾多,包括最近鄰(kNN)、決策樹、隨機森林、條件隨機場、Boosting、SVM、隱馬爾科夫模型(HMM)、Bayes方法、神經網路。而神經網路起步晚,發展也緩慢,但是到深度學習概念的產生才得到了重視。

那麼經過不斷的發展深度學習這一派可是執天下機器學習之牛耳啊。
image

當然如今的機器學習世界,除了深度學習一派人丁興旺,強化學習、知識圖譜,還有七七八八不怎麼知名的“門派”也沒有閒著,互相借鑑其他“門派”的思想來豐富自己的根基

筆者,(非專業的CS學生),認為的機器學習大致等同於深度學習中的神經網路訓練。或許在日後的學習中更加的細緻的瞭解了兩者的不同之後會在本文中標註。

所以後續以機器學習為標籤的內容暫且涵蓋或者等同於深度學習。但雖然筆者研究的模型屬於深度學習,但是其中的演算法思想卻不受限於此,其他的機器學習的內容同樣適用。

美賽O獎論文閱後有感

一些經典的演算法經過適合的idea修改之後的競爭力並不弱於所謂的複雜和熱門演算法

機率統計衍生出來的經典演算法,雖然看似有些過時,不如神經網路實力強大,但是RNN本質上來說就是HMM模型的高維擴充套件版,GNN與條件隨機場、隨機森林在某些方面也有異曲同工之妙,AutoEncoder與SVM的核心都是降維。不僅如此,還有一種趨勢就是新的網路越來越多的借鑑老演算法的思想,比如Bayes方法+NN衍生出來的BNN。

後續打算

美賽前學完機器深度學習。
無監督學習的思想和內容比較深,需要多看最近的論文,在自己有理解之後開始學習。
強化學習,知識圖譜內容比較獨立,如果後續沒有需要可能就此擱置。

路線

相關文章