放棄深度學習?我承認是因爲線性代數

 2018-05-23 09:48:00.0

原標題 Linear Algebra for Deep Learning,作者爲 Vihar Kurama。

深度學習從入門到放棄?一定是哪裏出了問題。

這篇文章想來和你探討下:深度學習背後的線性代數問題。

放棄深度學習?我承認是因爲線性代數

先做個簡單的名詞解釋

深度學習:作爲機器學習的一個子域,關注用於模仿大腦功能和結構的算法:人工神經網絡。

線性代數:連續的而不是離散的數學形式,許多計算機科學家不太瞭解它。對於理解和使用許多機器學習算法,特別是深度學習算法,理解線性代數是非常重要的。

爲什麼需要數學?

線性代數,概率和微積分是機器學習用於表述的「語言」。學習這些主題將有助於深入理解底層算法機制,便於開發新算法。

當限定在更小的層次時,深度學習背後的基礎都是數學。所以在開始深度學習和編程之前,理解基本的線性代數是至關重要的。

放棄深度學習?我承認是因爲線性代數

src

深度學習背後的核心數據結構是標量,向量,矩陣和張量。讓我們以編程方式用這些解決所有基本的線性代數問題。

標量

標量是單個數字,是一個 0 階張量的例子。符號 x∈ℝ 表示 x 是一個標量,屬於一組實數值 ℝ。

深度學習有不同的有趣的數字集合。ℕ 表示正整數集合(1,2,3,...)。ℤ 表示實數,包括正值,負值和 0。ℚ 表示有理數的集合,有理數可以表示爲兩個整數組成的分數。

Python 中內置一些標量類型 int,float,complex,bytes 和 Unicode。在 NumPy 這個 python 庫中,有 24 種新的基本數據類型來描述不同類型的標量。有關數據類型的信息,請參閱此處的文檔(https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.scalars.html)。

在 Python 中定義標量和一些操作:

下面的代碼片段解釋了對標量的幾個算術運算。

放棄深度學習?我承認是因爲線性代數

放棄深度學習?我承認是因爲線性代數

以下代碼片段檢查給定變量是否是標量。

放棄深度學習?我承認是因爲線性代數

放棄深度學習?我承認是因爲線性代數

向量

向量是一維有序數組,是一階張量的例子。向量被稱爲向量空間的對象的片段。向量空間可以被認爲是特定長度(或維度)的所有可能向量的全部集合。三維實值向量空間(用 ℝ^3 表示)通常用於從數學角度表示我們對三維空間的現實世界概念。

放棄深度學習?我承認是因爲線性代數

爲了明確識別向量的必要成分,向量的第 i 個標量元素被寫爲 x [i]。

在深度學習中,向量通常表示特徵向量,其原始組成部分定義特定特徵的相關性。這些元素中可能包括二維圖像中像素集強度的相關重要性或者金融工具的橫截面的歷史價格值。

Python 中定義向量和一些操作:

放棄深度學習?我承認是因爲線性代數

放棄深度學習?我承認是因爲線性代數

矩陣

矩陣是由數字組成的矩形陣列,是二階張量的一個例子。如果 m 和 n 均爲正整數,即 m, n ∈ ℕ,則矩陣包含 m 行 n 列,共 m*n 個數字。

完整的矩陣可寫爲:

放棄深度學習?我承認是因爲線性代數

將所有矩陣的元素縮寫爲以下形式通常很有用。

放棄深度學習?我承認是因爲線性代數

在 Python 語言中,我們使用 numpy 庫來幫助我們創建 n 維數組。這些數組基本上都是矩陣,我們使用矩陣方法通過列表,來定義一個矩陣。

$python

放棄深度學習?我承認是因爲線性代數

在 Python 中定義矩陣的操作:

矩陣加法

矩陣可以與標量、向量和其他的矩陣相加。這些運算都有嚴格的定義。這些技巧在機器學習和深度學習中會經常用到,所以值得熟練運用這些技巧。

放棄深度學習?我承認是因爲線性代數

矩陣-矩陣加法

C=A+B(矩陣 A 和 B 應該有相同的形狀)

這類方法返回矩陣的形狀,並將兩個參數相加後返回這些矩陣的總和。如果這些矩陣的形狀不相同,則程序會報錯,無法相加。

放棄深度學習?我承認是因爲線性代數

矩陣-標量相加

將給定的標量加到給定矩陣的所有元素。

放棄深度學習?我承認是因爲線性代數

矩陣-標量相乘

用給定的標量乘以給定矩陣的所有元素。

放棄深度學習?我承認是因爲線性代數

矩陣乘法

矩陣 A 與矩陣 B 相乘得到矩陣 C。

放棄深度學習?我承認是因爲線性代數

src

放棄深度學習?我承認是因爲線性代數

矩陣轉置

通過矩陣轉置,你可以將行向量轉換爲列向量,反之亦然。

A=[aij]mxn

AT=[aji]n×m

放棄深度學習?我承認是因爲線性代數

放棄深度學習?我承認是因爲線性代數

張量

張量的更一般的實體封裝了標量、向量和矩陣。在物理學科和機器學習中有時需要用到高於二階的張量。

放棄深度學習?我承認是因爲線性代數

src

我們使用像 tensorflow 或 Pytorch 這樣的 Python 庫來聲明張量,而不是用嵌套矩陣。

在 Pytorch 中定義一個簡單的張量:

放棄深度學習?我承認是因爲線性代數

Python 中張量的幾點算術運算

放棄深度學習?我承認是因爲線性代數

有關張量和 Pytorch 的更多文檔請點擊此處(https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html)。

參考閱讀鏈接地址:

使用 Python 語言開始深度學習:https://towardsdatascience.com/deep-learning-with-python-703e26853820

深度學習入門介紹:https://towardsdatascience.com/introduction-to-machine-learning-db7c668822c4

博客原址 https://towardsdatascience.com/linear-algebra-for-deep-learning-506c19c0d6fa

文章來源:雷鋒網