1. 程式人生 > >AI之旅(1):出發前的熱身運動

AI之旅(1):出發前的熱身運動

才會 固然 線性 很多 過程 如果 如何 知識點 strong

前置知識

??無

知識地圖

技術分享圖片

自學就像在海中遊泳

??當初為什麽會想要了解機器學習呢,應該只是純粹的好奇心吧。AI似乎無處不在,又無跡可循。為什麽一個程序能在圍棋的領域戰勝人類,程序真的有那麽聰明嗎?如果掌握機器學習,就能創造屬於自己的AI嗎?

??懷著這樣的好奇心,開始了在機器學習領域的探索。學習的第一步是從《吳恩達機器學習》公開課開始的,不可否認對於一個初學者而言,這始終是最好的入門課程。

??同樣的知識也有不同的學法,比如一個公式擺在面前,淺一點的學法是直接把它背下來便於應用。深一點的學法是探究公式的原理和推導過程。不同的人傾向不同的學法。

??當選擇了第二種學法後,“為什麽...”這個概念開始不停湧現。當想要掌握每一個知識點時,立刻感覺困難重重。如同在海面上遊泳試圖深潛,巨大的阻力撲面而來。

學習中遇到的第一個問題

??學習的過程總是磕磕碰碰的,一會兒這裏不懂,一會兒那裏不懂。等到補上了相關知識回頭看時,才會恍然大悟,啊,原來在這麽簡單的地方浪費了這麽多的時間。

??單位時間效率低,這是學習中遇到的第一個問題。為什麽會浪費這麽多的時間呢,一方面是花費時間在網絡上搜索信息,一方面是花費時間彌補缺失的前置知識。

??彌補缺失的知識應該不能算浪費時間,但是為了搜索信息而耗費大量的時間,就有些難以忍受了。除了鍛煉一下搜索信息的能力外似乎沒有什麽益處。

學習中遇到的第二個問題

??學習的過程就是不斷接觸和認識新事物的過程。具體在機器學習中,這些新事物就是一種種算法。一種算法了解完之後,總是處於似懂非懂的狀態,想要具體實現時不知從何下手。

??缺少直觀上的認識,這是學習中遇到的第二問題。為什麽會缺少直觀上的認識呢,一方面是因為無法看見算法之間的聯系,一方面是缺少一個簡單易懂的例子。

??以上種種都是學習中可能會遇到的困難,不斷克服困難固然會提升解決問題的能力,同時也消磨著學習的熱情。如果同時出現了太多的困難,很容易就有放棄的念頭。

??有沒有更加平滑的學習曲線?

換一種形式來學

??寫這些文章的目的,主要是為了把這磕磕碰碰的入門之旅記錄下來。同時也在思考一個問題,有沒有一種方式能夠幫助更多的人用更經濟的方法入門。

??設置前置知識:理解一個知識點需要的最低限度的前置知識,這裏僅對前置知識做簡要介紹。

??描繪知識地圖:在已掌握和未掌握的知識點間建立聯系,使得對於知識體系有個全局上的認識。

??構造最小模型:使用能夠呈現算法本質的最小規模的例子,能夠簡潔直觀地理解算法的本質。

從方程到矩陣

??下一篇要介紹的第一種算法是線性回歸,現在開始為理解線性回歸做一些準備工作。

??方程對於我們而言並不陌生,有幾個方程組就能解幾個未知數:

技術分享圖片

??仔細觀察方程組會發現每一列的未知數是相同的:

技術分享圖片

??如果把參數視為三維空間中的向量,方程可以表示為向量的線性組合:

技術分享圖片

??如果把未知數也視為一個向量,方程也可以表示為矩陣和向量的乘積:

技術分享圖片

??那麽下一個問題是,如果方程組的數量多於未知數的數量時該怎麽解方程呢?這種情況可以用線性回歸算法來處理。

??如果對向量和空間沒有直觀的認識,推薦觀看《麻省理工公開課:線性代數》,這裏面涉及的許多數學知識在後續中都會用得到。

Octave的使用

??動手實踐會加深理解,把代碼敲出來是很好的理解算法的途徑。Octave是一款適用於數值計算的開源軟件,相比於其他軟件,它的優點是代碼非常簡潔。本文中的代碼基於Octave實現。

??小任務:下載並安裝Octave。

??網絡上有很多介紹Octave如何使用的文章和視頻,這裏不再贅述,只講以下幾點,重點是要掌握通過幫助文檔來學習調用函數的能力。

??1,向量的表示

技術分享圖片

??2,矩陣的表示

技術分享圖片

??3,畫一幅圖

技術分享圖片

??4,實現一個for循環

技術分享圖片

??5,看到不會的命令時怎麽辦?

技術分享圖片

??6,英語不好怎麽辦?

https://ww2.mathworks.cn/help

技術分享圖片

結語

??至此我們已經具備了能夠實現線性回歸算法的技術水平了,是不是很驚訝?在下一篇中我們將使用類似的例子,對線性回歸的原理進行講解。讓我們開始探索之旅,走起!

AI之旅(1):出發前的熱身運動