深度學習從入門到放棄?一定是哪里出了問題。
這篇文章想來和你探討下:深度學習背后的線性代數問題。
先做個簡單的名詞解釋
深度學習:作為機器學習的一個子域,關注用于模仿大腦功能和結構的算法:人工神經網絡。
線性代數:連續的而不是離散的數學形式,許多計算機科學家不太了解它。對于理解和使
用許多機器學習算法,特別是深度學習算法,理解線性代數是非常重要的。
為什么需要數學?
線性代數,概率和微積分是機器學習用于表述的「語言」。學習這些主題將有助于深入理解底層算法機制,便于開發新算法。
當限定在更小的層次時,深度學習背后的基礎都是數學。所以在開始深度學習和編程之前,理解基本的線性代數是至關重要的。
深度學習背后的核心數據結構是標量,向量,矩陣和張量。讓我們以編程方式用這些解決所有基本的線性代數問題。
標量
標量是單個數字,是一個 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。
矩陣轉置
通過矩陣轉置,你可以將行向量轉換為列向量,反之亦然。
A=[aij]mxn
AT=[aji]n×m
張量
張量的更一般的實體封裝了標量、向量和矩陣。在物理學科和機器學習中有時需要用到高于二階的張量。
我們使用像 tensorflow 或 Pytorch 這樣的 Python 庫來聲明張量,而不是用嵌套矩陣。
在 Pytorch 中定義一個簡單的張量:
Python 中張量的幾點算術運算
-
神經網絡
+關注
關注
42文章
4783瀏覽量
101237 -
線性代數
+關注
關注
5文章
50瀏覽量
11131 -
深度學習
+關注
關注
73文章
5518瀏覽量
121608
原文標題:放棄深度學習?我承認是因為線性代數
文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論