機器學習之小白入門

胖虎發表於2020-02-27

前言

從2019年開始,趨於整個行業的形式,一直在學習AI機器學習方面的知識,這期間買了很多書,也聽了很多課。一開始學習的感覺很神奇,再到迷茫,幾乎棄坑,最後到認清事實,中間花了一些時間來讀書、看書和思考,我在這裡分享1下自己粗淺的學習心得,是為了讓更多的朋友從"白話故事"的角度理解機器學習,僅此而已。

此貼的目的,是讓不懂機器學習的小白使用者入個門而已。

論壇裡面有很多帖子是關於35歲之後怎麼辦的話題,我今年也過了35了,AI人工智慧是整個網際網路的大趨勢,是擋不住的,要硬著頭皮學下去才是生存之道。
如果內容表述過程中出現了理解上的偏差和錯誤,還請各位指正。

我學習機器學習的目的

其實一開始學習的目的非常簡單,希望能學到網際網路業內神奇的"黑科技"知識,在測試工作中所運用和實踐,既學了知識,又能提高團隊的工作效率,還能在組織內show一下技術肌肉,實在是一舉三得。

隨著逐漸深入學習和接觸下來,越學習越感覺害怕,對於數學不是很擅長的我,也越來越吃力,最後到了近乎放棄的狀態。

停了一段時間後,自己還是重新調整了目標方向,把自己的目標定小一些,可不可以這樣:"如果不懂機器學習的人問你這是什麼,給別人解釋明白",看似初級的目標,就成了我的學習目的。

弄清楚幾個基本概念

最近幾年特別熱門的概念:人工智慧、機器學習、深度學習,到底他們啥區別。

人工智慧:

目的是為了讓機器有“智力”,為人所用。不是一個技術方法,只是一個廣泛的概念。

機器學習:

讓機器有“智力”這件事,怎麼落地呢?那就讓機器自己去學習與思考。人先定義好一些演算法、輸入資料(樣本)、人標記出來的特徵資料,並用這些資訊進行分析,得出結果後自己做出一些行為。

深度學習:

讓機器有“智力”後,深層次的挖掘資料中的關係。

在三國時代中,武將如雲,誰能稱得上是真正的"良將"?

一萬個讀者中,就有一萬個哈姆雷特,A說,我覺得是:呂布。B說,我覺得是:趙雲。C說,我覺得是:關羽......,總之很難得出一個正確的答案,那麼我們就以這個問題,藉助機器學習的知識來實踐一下,到底誰是三國時代中最厲害的武將,如果你是三國時代的一方郡主,招攬什麼樣的武將幫你打天下?

張飛很不服氣

張飛說,剛剛的讀者都沒有提到我,是因為我長得醜嗎?我不服。

那麼,我們來客觀分析1下,武將得具備哪兒些條件,參考了遊戲《三國志》中的主要資料:

- 指揮統率

領兵打仗的能力,下屬聽不聽你的。團隊管理能力,能不能讓1個P5的小兵在你的隊伍中發揮P6的水平?

- 智謀

就是智謀高低,是否聰明狡猾

- 武力

就是武功高低,是否身手了得

- 魅力

應該是顏值、人格等等這些資訊,是不是名士

如果用這些維度去衡量一個武將的話,指揮統率能力、智謀、武力、魅力就是特徵。拿張飛舉例,張飛是一個武將,那麼他就是一個資料樣本;他的武力如果是92,這個值就是特徵值;張飛{指揮統率:77,智謀:80,武力:92,魅力:10}這一組資料就是一個武將的特徵向量

換句話說,如果我們得到了三國時期一批武將的資料樣本,通過機器學習,這些資料樣本可以叫做訓練集,我們通過訓練就可以得出了誰是三國時期最厲害的武將了。

如:張飛{指揮統率:77,智謀:80,武力:92,魅力:10}
呂布{指揮統率:87,智謀:88,武力:99,魅力:85}等等......

資料是機器學習的先決條件

挑選良將英才

如果你是三國時期割據一方的領主,那你肯定希望網路那個時期的所有英才,輔佐你成就大業。

有的同學會問了,以張飛為例,下面這組資料中,如何讓機器學習的演算法去理解,"良將英才"跟這些特徵之間有什麼關係呢?
張飛{指揮統率:77,智謀:80,武力:92,魅力:10}

那麼,我們可以把張飛的特徵值,我們假設他的值為x,把x放入1個三維空間裡,空間裡會有1個點來代表“張飛”,這就是特徵向量。一個向量就是一個武將的各種特徵資料集合。

如果張飛的特徵值x是輸入資料,那麼這個武將是否是良將英才的結果就是輸出了。我們需要在輸入和輸出之間建立一個計算武將"英才能力"程度的演算法模型。

我們本來並不知道這個演算法模型的樣子,程式碼怎麼寫,不過我們可以通過收集N多個武將的資料來得到演算法,這個過程叫做迴歸。

現在我們來多輸入幾位武將,然後把幾位武將的點都模擬在座標軸中:

然後我們嘗試用一條直線把各個資料點連起來,為了擬合這些資料點,直線要進行移動和旋轉。

慢慢調整這條直線方程( y = f(x) )裡的引數,這就是在做微調。儘量消除偏差,讓直線與各個資料點精確吻合。

武將特徵的權重

前面我們對武將的每一個特徵進行了說明,分別是:指揮統率能力、智謀、武力、魅力,但是"良將"對於這4個特徵屬性的佔比權重肯定各不相同,請看下面:

指揮統率能力 × W + 智謀 × W + 武力 × W + 魅力 × W = 良將值

權重(Weight)通常是0到1的一個小數。究竟哪兒個特徵是重要的呢?其實我也不知道,我們需要不斷的"除錯引數",需要輸入大量大量的武將資料,讓自己的演算法模型進行匹配。

那麼問題來了,怎樣才能讓匹配結果的達到精準呢?

這時,要確定1個武將的"誤差函式":列出理想的輸出與實際輸出,分別做減法後,得到偏差,再把所有的偏差進行平方和的計算。

為了計算的更精準,我們通常把資料按照資料結構特徵進行分類,這稱作:聚類法。比如:可以讓同一類具有相似的武將值進行分類,也可以將具有相近重要性的武將分為一類。

為什麼要做分類呢?因為只看原始資料,我們是看不出什麼的,但是通過初步分類再看資料,會得到更多有用資料。

機器學習的目的就是對世界萬物建立模型,以達到認識世界和改造世界的目的。而這個過程需要不斷訓練資料樣本、不斷加入新資料樣本、交叉組合反覆訓練,最終利用演算法模型來對世界萬物進行相對準確的預測。

先說到這裡,後面的內容有空的時候慢慢更新吧。

相關文章