深度學習必備數學知識之線性代數篇(附代碼實現)

      網友投稿 940 2022-05-30

      譯者 | 李眾望

      編輯 | Jane

      出品 | AI科技大本營

      【導讀】線性代數是一種連續的、非離散的數學形式,許多計算機科學家對此缺乏應用經驗,掌握線性代數對理解深度學習算法至關重要。今天AI科技大本營就為大家整理了學習過程中需要必備的線性代數知識,并附上代碼實現,幫助大家加深理解。

      為什么數學是必要的?

      線性代數、概率論和微積分都是機器學習的“語言”。學習這些科目將有助于深入了解底層的算法機制和開發新的算法。從較低的層級來看,深度學習背后的一切都是以數學為基礎的。因此,理解基礎的線性代數對于探索深度學習和上手與深度學習相關的編程來說是必要的。

      深度學習中的核心數據結構由標量、向量、矩陣和張量組成。從編程的角度來說,我們只需運用這些知識就能解決所有基本的線性代數問題。

      參考閱讀:

      https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.1-Scalars-Vectors-Matrices-and-Tensors/

      標量

      標量僅用于表達值的大小,也是零階張量的一個例子。符號 x ∈ ? 表示標量 x 屬于實數值數組“ ? ”。

      在深度學習中我們比較關注以下幾個數集,?、??和?。? 表示正整數集(1,2,3,...)。 ? 表示整數集,它包含了正值、負值和零值。 ? 表示可以由兩個整數所構成的分數進行表達的有理數數集。

      Python 中內置了少數幾種標量類型,如 int,float,complex,bytes,Unicode。而在 Python 庫 NumPy?中,有 24 種新的基本數據類型來描述不同類型的標量。

      參考閱讀:

      https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.scalars.html

      如何在Python中定義和運算標量?

      以下代碼片段解釋了基礎的標量(Scalars)運算。

      參考閱讀:

      https://gist.github.com/vihar/fbd3406bd9ba2402465fb1c8f3d8b3a6#file-scalars-py

      返回如下:

      以下代碼片段用于檢驗所給的變量類型是否為標量。

      參考閱讀:

      https://gist.github.com/vihar/b9ef648d47c1cb3db977f13fd3071dc6#file-is_scalar-py

      返回如下:

      向量

      向量是由多個單個數字組成的有序數組,也是一階張量的一個例子。向量是向量空間中的片段。向量空間則可以被認為是在特定長度(或維度)中所有可能存在的向量集合。我們通常說的現實世界中的三維空間,在數學里可以用向量空間表達為 ? ^ 3。

      為了清晰明確地標示向量中的必要成分,向量中的第 i 個標量元素被記做 x[i] 。

      在深度學習中,向量通常表示特征向量,它的原始成分則表示特定特征的相關程度。這些元素可以包括如二維圖像中一組像素的強度的相關重要性,或是金融工具的橫截面的歷史價格值。

      如何在 Python 中定義和運算向量?

      參考閱讀:

      https://gist.github.com/vihar/7ede36aa2f5ba5e7f70960225a2d351e#file-vectors-py

      返回如下:

      矩陣

      矩陣是由數字構成的矩形陣列,是二階張量的一個例子。若 m 和 n 為正整數( m,n ∈ N ),則 m × n?的矩陣中包含 m * n 個元素,由m 行和 n 列構成。

      完整的 m × n 矩陣可寫做:

      我們通常會將上面的矩陣縮寫為以下的表達式:

      在 Python 里,我們會使用 numpy 庫來幫助我們創建 n 維的數組,這基本上可以被認作為矩陣。我們將列表傳入名為 matrix 方法來定義一個矩陣。

      如何在 Python 中定義和運算矩陣?

      ▌矩陣加法

      矩陣可以與標量、向量或其他的矩陣進行相加。每一種加法都有一個精確的定義。這些技巧在機習和深度學習有著非常廣泛而頻繁的使用,所以它們值得你去熟悉。

      參考閱讀:

      https://gist.github.com/vihar/1bdc39d126b4772f5a8e9d0b5185625f#file-matrix_addition-py

      ▌矩陣與矩陣的加法

      C = A + B( A 和 B 的形狀應當一致)

      方法 shape 能夠返回矩陣的形狀,方法 add 會將傳入的兩個作為參數的矩陣相加,并返回相加的總和。若兩個作為參數的矩陣的形狀不一致,該方法則會提示存在“不能相加”的錯誤。

      參考閱讀:

      https://gist.github.com/vihar/b25716665d72d5e6b50c9149718df076#file-m_m_addition-py

      ▌矩陣與標量的加法

      將給定矩陣中的各個元素都與給定的標量進行相加

      參考閱讀:

      https://gist.github.com/vihar/ba689ec9a07b1c50f69269454373359a#file-matrix_s_addition-py

      ▌矩陣與標量的乘法

      將給定矩陣中的各個元素都與給定的標量進行相乘

      參考閱讀:

      https://gist.github.com/vihar/5dcc0beeb7e48f0f271a75108401d34c#file-m_s_multiplication-py

      ▌矩陣之間的乘法

      形狀為 m x n 的矩陣 A 與形狀為 n x p 的矩陣 B 相乘則會得到 形狀為 m x p 的矩陣 C

      參考閱讀:

      https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.2-Multiplying-Matrices-and-Vectors/

      參考閱讀:

      https://gist.github.com/vihar/1510e248a117f0af6a3843a4307de7b2#file-matrix_mul-py

      ▌矩陣的轉置

      矩陣的轉置可以使一個行向量變成一個列向量,或反方向操作亦成立作亦成立:

      A = [aij]m x n

      AT = [aji]n × m

      參考閱讀:

      https://gist.github.com/vihar/3f2091377b3a1f36c402a203f25ffe33#file-martix_transpose-py

      張量

      籠統的來講,張量包含了標量,向量,矩陣。有些時候,例如在物理及機器學習中,使用超過二階的張量是非常必要的。

      參考閱讀:

      https://refactored.ai/track/python-for-machine-learning/courses/linear-algebra.ipynb

      我們通常不會將矩陣進行嵌套來表示張量,而是會使用像 tensoTflow 或者 PyTorch 這樣的 Python 庫來對張量進行表示張量 PyTorche 中定義一個簡單的張量

      參考閱讀:

      https://gist.github.com/vihar/eb78a6171de9740b128cbff21fc0b6ea#file-tensors-py

      一些在 Python 中其他的張量的運算操作

      src:

      深度學習必備數學知識之線性代數篇(附代碼實現)

      https://gist.github.com/vihar/7b03ca54e4fe811e1053e09bdc1278b5#file-tensor_operations-py

      更多關于張量和 PyTorch 的文檔,請參閱

      https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html

      https://towardsdatascience.com/linear-algebra-for-deep-learning-506c19c0d6fa

      人工智能 AI

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:《Spark Streaming實時流式大數據處理實戰》 ——2.3 搭建開發環境
      下一篇:OpenCV與Open3D等開源視覺庫的詳細筆記
      相關文章
      久久久久亚洲AV无码网站| 亚洲日韩在线中文字幕综合 | 亚洲а∨精品天堂在线| 亚洲av永久无码精品三区在线4| 亚洲av激情无码专区在线播放 | 亚洲人6666成人观看| 亚洲成在人线电影天堂色| 亚洲黄色在线电影| 亚洲黄色三级网站| 激情内射亚洲一区二区三区| 亚洲一二成人精品区| 99人中文字幕亚洲区| 亚洲视频在线免费看| 亚洲成年人电影在线观看| 亚洲国产成人在线视频| 亚洲国产福利精品一区二区| 亚洲天堂福利视频| 亚洲一级高清在线中文字幕| 2020亚洲男人天堂精品| 亚洲中文无码mv| 亚洲av无码偷拍在线观看| 看亚洲a级一级毛片| 亚洲高清成人一区二区三区| 亚洲欧洲中文日韩av乱码| 国产日产亚洲系列最新| 国产亚洲成av人片在线观看| 亚洲人成网7777777国产| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲AV无码成人网站久久精品大| 亚洲国产综合精品中文第一区| 久久夜色精品国产噜噜亚洲AV| 亚洲日韩在线视频| 456亚洲人成在线播放网站| 亚洲国产精品无码久久98| 国产亚洲日韩在线a不卡| 国产成人高清亚洲| 久久久亚洲精品视频| 久久久亚洲欧洲日产国码是AV| 亚洲a级在线观看| 欧洲亚洲国产精华液| 4338×亚洲全国最大色成网站|