天天看點

數學菜鳥的AI學習攻略——數學符号輕松入門

[ 導讀 ] 自學AI的過程中,我們非常需要了解這些數學符号。它可以讓你用一種非常簡潔的方式來表達一個複雜的想法。

你是否跟我一樣,自幼恨透數學。

現在,我終于發現了我對數學絕緣的最主要原因:我的老師從來不去回答最重要的問題:我為什麼要學數學?學數學有什麼用?

他們隻是在黑闆上寫下一大堆方程,并讓我記下來。

現在,如果你對AI這個激動人心的領域感興趣,那麼它将是回答這個問題最好的答案!那就是,我想要寫一個更好的圖像識别程式,或者一個可以了解自然語言的互動界面!也許甚至想有一天寫出自己的算法?

如果你想從閱讀 arXiv(https://arxiv.org/list/cs.AI/recent) 上的幾篇論文開啟自學AI之路?那麼首先,你需要知道怎樣了解這些有意思的數學小符号。

也許,學習數學符号最重要的原因,就是它可以讓你用一種非常簡潔的方式來表達一個複雜的想法。

沒有它,解釋每個方程,都需要花上很多頁的篇幅。

而這篇文章要告訴你的是,學習這些符号不像你想象的那麼難。

讓很多人對數學失去資訊的第二個原因是,很多解釋寫得太可怕了。

事實上,大部分人并不擅長解釋東西。人們一般要定義一個數學術語,會使用更多的數學術語。這就造成了不了解的一個無限循環。好比定義“大象”這個詞,說,“大象就是大象一類的東西。”

這篇文章會将數學符号和現實世界關聯起來,并使用你已知的東西來類比。這樣你可以腳踏實地地學習。

數學菜鳥的AI學習攻略——數學符号輕松入門

但是,這篇文章無法覆寫到你讀一篇論文需要的所有數學符号。是以你會需要一本超級凝練的數學符号指南,Edward R. Scheinerman的MathematicalNotation: A Guide for Engineers and Scientists 。(它是我數學菜鳥的AI學習攻略 文章的一個後繼補充,但它是我使用最頻繁的一本書。它現在滿是高亮和折頁。随着數學知識的不斷擴充,我一遍又一遍地回頭翻閱這本書。)

讓我們開始吧。

首先,什麼是算法?

它真的隻是解決一個特定的問題的一系列步驟。無論你是否意識到,你都在使用算法。如果你需要給孩子們打包午飯,送他們上學,取走幹洗的衣服,然後去上班,你已經無意識地構造了一系列步驟,從廚房到辦公室。這就是一個算法。

如果你的老闆同時給你安排了六項工作,你需要找到在一天内完成它們的最好的方式。你需要選擇哪些事先做,哪些事後做,哪些事一起做等等。這就是一個算法。

這個概念為什麼很重要呢?因為一個方程也不過是解決問題的一系列步驟而已。

我們從一些簡單的符号開始,寫一些方程。數學就是對事物的翻譯。我們有一個輸入和一個輸出。我們将一些東西代入到我們方程的變量中,周遊所有的步驟,然後得到輸出。計算機也是同樣的道理。

目前,神經網絡背後的大部分黑魔法來自于數學的三個分支:

  • 線性代數
  • 集論
  • 微積分

集合是什麼?它就是一堆東西。一般使用花括号{ }或方括号括起來。(搞數學的家夥對所有東西都很難在最佳符号表達上達成一緻。)

數學菜鳥的AI學習攻略——數學符号輕松入門

一個集合

還記得我們在第4部分看到的張量?那就是一個集合。

數學菜鳥的AI學習攻略——數學符号輕松入門

一個集合通常由大寫字母表示,例如A、B、V或W。隻要你前後一緻,字母本身是什麼并不重要。

但是,一些特定的大寫字母和符号被保留下來,用來表示重要的、常用的數字集,例如:

∅ = 空集(集合裡什麼都沒有)。這個符号是一個希臘字母,“phi”。數學裡常常會用到希臘字母。此處可以查閱大小寫希臘字母的寫法(https://en.wikipedia.org/wiki/Greek_letters_used_in_mathematics,_science,_and_engineering)。

R =所有實數。(幾乎所有存在的數都是實數,包括整數、分數、超越數如Pi (π)(3.14159265…)。但是不包括虛數,一種為了求無解方程的解而構造的數,也不包括無窮)

Z =所有整數。(除了分數之外的數字,比如-1,-2, 0, 1, 2, 3)

大部分保留字母表可以在趣味數學(http://www.mathsisfun.com/sets/number-types.html)裡查到。

所有這些都是集合,其中一部分是子集,也就是他們被更大的一個集合完全包含,就像這樣:

數學菜鳥的AI學習攻略——數學符号輕松入門

去查檢視Q和N是什麼意思吧!

在這個例子中,我們可以說,Z(整數集)是R(實數集)的子集。

我們可以這麼寫:

A是B的子集(A包含于B):相反的,B是A的超集(B包含A)

數學菜鳥的AI學習攻略——數學符号輕松入門

我為什麼要在乎一個集合B是不是包含了A的全部内容呢?好問題。

假如有一個集合,包括了所有生活在美國的人,有他們的年齡、位址等等資訊。現在假設有另一個集合,包括了心髒病發病率更高的人。那麼這兩個集合重合的地方,可以告訴我們哪個地區的人更可能患有心髒病。

每個集合裡都有元素。元素是什麼?就是大集合的一部分。我們再看一下我們的張量。

數學菜鳥的AI學習攻略——數學符号輕松入門

我們将集合中的元素記作小寫斜體字母,例如x.我們用一個看起來很奇怪的E一樣的符号(其實不是E),來表示一個元素是集合的一部分。我們可以這麼寫:

數學菜鳥的AI學習攻略——數學符号輕松入門

這表示x是集合A中的一個元素。

我們也可以說x不是集合A中的一個元素:

數學菜鳥的AI學習攻略——數學符号輕松入門

你越能了解這些符号,你就越能在頭腦中通過這些字元串來溝通。當你看到上面這個,你可以說,“x不是集合A中的元素。”你越能明确地講出符号的含義,你就越能了解它們。

當然,寫出一個集合的所有元素是不現實的,我們可以使用一種特殊的方式來寫出一個元素的序列。假如我們有一個數字序列,以1為步長遞增。我們可以這樣寫:

x = {1,2,3,4…n}

這些點表示這個序列到n結束,n代表“序列的末尾”。是以如果n = 10,這個集合包括從1到10的數字範圍。如果n = 100,這個集合包括從1到100的數字範圍。

當我們将集合轉化為線性代數的時候,它們就十分有意思了。你已經認識了一些代數符号比如加号+,減号-。現在我們看兩個新的符号和一個方程。首先是符号:

瘋狂的方程

當我們将集合轉化為線性代數的時候,它們就十分有意思了。你已經認識了一些代數符号比如加号+,減号-。現在我們看兩個新的符号和一個方程。首先是符号:

Σ = 一系列數字的和

Π = 一系列數字的積

和是什麼?是序列中所有數字做加法。比如我們有一個向量集A(記住向量是一行或一列數字)包括:{1,2,3,4,5}.

序列的和為:

1 + 2 + 3 + 4 + 5 = 15

積是所有數字做乘法。是以對于同樣的集合A我們有:

1 x 2 x 3 x 4 x 5 =120

我們看一下下面這個序列的和精簡後的例子:

數學菜鳥的AI學習攻略——數學符号輕松入門

那麼我們怎樣了解它呢?簡單,看這個。

數學菜鳥的AI學習攻略——數學符号輕松入門

我們從底部的j開始,j是一個變量。然後将j代入到右邊的表達式中。最後,我們将序列的結束數字寫在頂部。看一個例子:

數學菜鳥的AI學習攻略——數學符号輕松入門

如果你是一個程式員,你會立刻認出這是一個循環!

我們給這個方程寫一個Python函數:

def sum_x_range(x):

    j= 1

   output = []   # 建立一個空list

   for k in range(0,5):  # 開始循環

        z = x**j      # 計算x的j次方

        j = j + 1     # j增加1,知道到達n,也就是5

        output.append[z]   # 将z添加到list中

   return sum(output)  # 傳回list中所有數字的和

print (sum_x_range(2))   # 令x=2,調用方程

原諒我糟糕的Python風格,但是我希望代碼清晰,而不是簡潔。

**符号表示x的j次幂。方程輸入參數x,我令它為2。從0到5循環,取x的1,2,3,4, 5次幂,然後将這些數字添加到一個清單中。它得出清單數字之和為:62。

走進矩陣

記住,2D張量也被稱為矩陣。它基本上是一個表格,有行和列。首先,你需要知道如何引用矩陣的不同部分。這張圖講得很清楚:

數學菜鳥的AI學習攻略——數學符号輕松入門

首先我們有矩陣A, 用大寫字母表示。

矩陣有m行和n列,是以我們叫它m X n 矩陣,用小寫斜體字母表示。

行是水準的,也就是從左到右。 (不要被圖中箭頭迷惑,箭頭指向的i和j不是行的方向,行是水準的!)

列是垂直的,也就是從上到下。

在這個例子中我們有一個4 x 5 矩陣,(也就是2D張量),因為我們有4行5列。

每個方格是矩陣中的一個元素。元素的位置使用小寫斜體a和行序号i和列序号j來表示。

是以第1行第2列的4,用a1,2表示。第2行第1列的3,用a2,1表示。

我們不會講解所有的矩陣數學運算,我們選擇其中一種來小試牛刀。

點乘在神經網絡中是一種非常常用的運算,是以一起看看它。

點,點,點

點乘是我們用一個矩陣乘以另一個矩陣的方法。

點乘的符号表示,你應該猜到了,是一個點。

a . b

這是兩個标量(也就是單獨的數)的點乘。标量也是我們的矩陣裡的獨立的元素。

我們将同樣大小和形狀的矩陣對應的元素相乘,再把所有的乘積作和。

那麼一個向量和另一個向量乘積的公式是什麼樣的呢?

數學菜鳥的AI學習攻略——數學符号輕松入門

深吸一口氣。你成功了!

我們現在認識了所有的符号。

這是兩個等長向量的乘積公式。記住在數學菜鳥的AI學習攻略第四部分-張量表示(有貓) 中講到,一個向量就是一行或者一列數字。我們的矩陣的每一行或者每一列都是一個向量。

首先我們用矩陣A的第一個元素乘以矩陣B的第一個元素。然後我們用元素A2 乘以元素B2。我們對于每一個元素做相同的操作,直到達到末尾,“n”。然後對它們作和。

讓我們看一下這個操作的圖示。

數學菜鳥的AI學習攻略——數學符号輕松入門

現在我們可以把這些數字代入我們的公式。

數學菜鳥的AI學習攻略——數學符号輕松入門

這裡是輸出矩陣下一個數字的例子

數學菜鳥的AI學習攻略——數學符号輕松入門

這是我們處理完所有運算得到的最終結果:

數學菜鳥的AI學習攻略——數學符号輕松入門

這些例子來自于神奇的趣味數學網站(Math isFun website)。這個網站裡有大量超贊的例子,完全無法超越。

我增加了一些公式,以助于你的了解。因為他們一般都會跳過這些,因為一般這些步驟并不會令人感到困惑。但是你現在再也不會困惑了。

勝在學習政策

我想用一些可以幫你快速學習的政策來結束這篇文章。

我是一個自學者,也就是我一般自己給自己講解。當我可以放慢腳步,可以自己探索時,我可以學得更好。我會犯一些錯誤。我上一篇文章就是一個很好的例子,我不得不修正一部分。但是錯誤也是一件好事!

錯誤是過程中的一部分。你沒有辦法避免錯誤,隻能擁抱它。你犯錯了,你會進步。沒有犯錯,就沒有進步。就是這麼簡單。

工程界有一個老段子。

如果你想知道正确答案,不用請人幫忙。隻要将錯誤答案發出來,你就可以看看多少工程師跳出來指正你!

工程師絕不允許錯誤答案存在!

這是一個老段子,但是常常很管用。

另一件重要的事情是,如果你沒有讀我在數學菜鳥的AI攻略的一部分推薦的文章的話,或者你沒有微積分、代數和幾何背景的話,你可能讀不了數學符号書(Mathematical Notation book) 。你需要懂得一個術語的背景知識。但是我建議你買一本,它可以在你讀其他書的時候,作為一個參考指南。

另外,建議放慢腳步。這又不是比賽!半途而廢等于沒有分。如果你跳過了一些你不懂的術語,你将來還是不得不回頭來看。

是以停下來,花一點時間搞明白所有你不懂的符号。這很緩慢,甚至令人沮喪。但是當你建立越來越多的知識體系,你會越來越快。你會發現你已經了解了一些術語,而此前你從未想象自己可以了解它。

另外,你可能需要從多個地方來查詢。需要面對的事實是,大部分人都不是好老師。他們可能了解了一篇材料,但是并不意味着他們可以給其他人講清楚。教學是一門藝術。這就是為什麼趣味數學網站比維基百科好。維基百科确實很“正确”,但是也很枯燥,有時候還令人費解。等你學到更多的時候,也許你可以将維基百科改得更好。

将這些忠告記在心裡,你的AI學習之旅就不會誤入歧途!

原文釋出時間為:2017-04-10 

本文來自雲栖社群合作夥伴“資料派THU”,了解相關資訊可以關注“資料派THU”微信公衆号