<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深度學(xué)習(xí)中的數(shù)學(xué)(二)——線性代數(shù)

          共 5399字,需瀏覽 11分鐘

           ·

          2021-12-15 19:11

          文章目錄

          一、理解線性

          1.1 線性方程組

          AX=B

          1.2線性代數(shù)的角度理解過擬合

          過擬合:參數(shù)量過多,數(shù)據(jù)過少(這里數(shù)據(jù)等價了) 解決:減傷參數(shù)量,增加數(shù)據(jù)量 正常情況: 欠擬合:參數(shù)量過少,數(shù)據(jù)過多(這里不等價) 解決:增加參數(shù)量

          1.3 線性可分與線性不可分

          線性可分的定義:線性可分就是說可以用一個線性函數(shù)把兩類樣本分開,比如二維空間中的直線、三維空間中的平面以及高維空間中的超平面。(所謂可分指可以沒有誤差地分開;線性不可分指有部分樣本用線性分類面劃分時會產(chǎn)生分類誤差的情況。)

          判斷是否線性可分:不同樣本集用凸包包起來,判斷不同凸包的邊是否有交叉。

          1.3.1 與(&)、或(|)、抑或(^)

          與問題:兩位同時為“1”,結(jié)果才為“1”,否則為0 或問題:只要a,b兩個條件有一個成立,則整個語句成立 抑或問題:如果a、b兩個值不相同,則異或結(jié)果為1。如果a、b兩個值相同,異或結(jié)果為0 解決線性不可分問題:①非線性的方法②核方法(是一類把低維空間的非線性可分問題,轉(zhuǎn)化為高維空間的線性可分問題的方法。核方法不僅僅用于SVM,還可以用于其他數(shù)據(jù)為非線性可分的算法。)

          1.4 張量

          標(biāo)量(0維) 向量(1維) 矩陣(2維) 張量(多維數(shù)組)

          from?PIL?import?Image
          import?numpy?as?np

          img?=?Image.open("1.jpg")
          img_data?=?np.array(img)
          print(img_data.shape)#?(H,W,C)


          1.5 范數(shù)

          它常常被用來度量某個向量空間(或矩陣)中的每個向量的長度或大小 零范數(shù):非零的個數(shù) 一范數(shù)(曼哈頓距離):絕對值相加 二范數(shù)(歐式距離):向量的模 無窮范數(shù)(切比雪夫距離):向量中取最大值 關(guān)于范數(shù),可以看這篇文章:

          1.6 Normalize

          適用于符合正態(tài)分布的數(shù)據(jù) 歸一化原因:①數(shù)據(jù)過大,梯度很平滑,不利于梯度下降;②數(shù)據(jù)過大,矩陣結(jié)果過大,計算機(jī)不能顯示(NaN);③進(jìn)行歸一化的原因是把各個特征的尺度控制在相同的范圍內(nèi),這樣可以便于找到最優(yōu)解,不進(jìn)行歸一化時如左圖,進(jìn)行歸一化后如右圖,可發(fā)行能提高收斂效率。(用身高體重財富來想,反向傳播時梯度不一樣,梯度下降會不平穩(wěn),模型不穩(wěn)定,精度收斂差,即錯過最優(yōu)解,訓(xùn)練不出來)

          1.7 行列式

          要求:必須是方陣,即行=列 行列式用來衡量矩陣的大小。 代碼計算行列式

          import?numpy?as?np
          import?torch

          a?=?np.array([[1,2],[3,4]])
          print(np.linalg.det(a))#?-2.0000000000000004

          b?=?torch.tensor([[1.,2.],[3.,4.]])
          print(b.det())#?tensor(-2.0000)

          1.8 奇異矩陣

          行列式等于0位奇異矩陣如np.array([[1,2],[1,2]]) 行列式不等于0位非奇異矩陣

          1.9 矩陣和張量的基本運(yùn)算

          加\減(對應(yīng)位置相加\減) 數(shù)加\數(shù)減(一個數(shù)與矩陣加減) 點(diǎn)乘(對應(yīng)位置相乘) 數(shù)乘(一個數(shù)與矩陣相乘) 叉乘(滿足mxn@nxp–>mxp;或者HXY@HYN–>HXN;或者ABCD@ABDN–>ABCN)(不滿足交換律轉(zhuǎn)置:換軸

          叉乘代碼舉例:

          import?torch

          a?=?torch.arange(12).reshape(2,3,2)
          b?=?torch.arange(12).reshape(2,2,3)
          print((torch.matmul(a,b)).shape)#?torch.Size([2,?3,?3])
          print((b@a).shape)#?torch.Size([2,?2,?2])

          轉(zhuǎn)置代碼舉例:

          #?torch
          a?=?torch.arange(12).reshape(2,3,2)
          print(a.permute(2,1,0))
          print(a.T)
          #?numpy
          c?=?np.arange(12).reshape((2,3,2))
          print(c.T)
          print(np.transpose(c))

          代碼實(shí)現(xiàn)矩陣:點(diǎn)乘(內(nèi)積)、叉乘(矩陣乘法)

          import?numpy?as?np
          import?torch
          #向量點(diǎn)乘(對應(yīng)位置相乘再相加)
          a?=?np.array([1,2,3])
          b?=?np.array([2,3,4])
          print(np.multiply(a,b))#?[?2??6?12]
          print(a*b)#?[?2??6?12]
          print(np.sum(a*b))?#?20

          #?矩陣乘法(叉乘)
          #?a的列數(shù)等于b的行數(shù)方可相乘
          a?=?torch.arange(6).reshape(2,3)
          b?=?torch.arange(6).reshape(3,2)
          print(a?@?b)
          #?tensor([[10,?13],
          #????????[28,?40]])
          print(torch.matmul(a,b))
          #?tensor([[10,?13],
          #????????[28,?40]])

          #?矩陣乘法
          #?a的列數(shù)等于b的行數(shù)方可相乘
          a?=?np.arange(6).reshape(2,3)
          b?=?np.arange(6).reshape(2,3)
          print([email protected])
          print(a.dot(b.T))
          print(np.matmul(a,b.T))
          #三個結(jié)果都是:
          #[[?5?14]
          #?[14?50]]

          1.10 逆和偽逆

          逆的運(yùn)算相當(dāng)于矩陣的除法運(yùn)算 只有非奇異方陣才有逆 偽逆是逆的推廣,去除了方陣的限制

          1.11 最小二乘法

          代碼實(shí)現(xiàn)最小二乘法,在數(shù)據(jù)量小的時候可以使用:

          import?numpy?as?np

          x?=?np.matrix(np.array([[3],[1],[6]]))
          y?=?4*x
          print(x)
          print(y)
          print((x.T@x)[email protected]@y)#?[[4.]]


          1.12 其他矩陣

          對角矩陣:是一個主對角線之外的元素皆為0的矩陣。對角線上的元素可以為0或其他值。單位矩陣:它是個方陣,從左上角到右下角的對角線(稱為主對角線)上的元素均為1。除此以外全都為0。零矩陣:零矩陣即所有元素皆為0的矩陣。一矩陣:一矩陣即所有元素皆為1的矩陣。對稱矩陣:是指以主對角線為對稱軸,各元素對應(yīng)相等的矩陣。稀疏矩陣:在矩陣中,若數(shù)值為0的元素數(shù)目遠(yuǎn)遠(yuǎn)多于非0元素的數(shù)目,并且非0元素分布沒有規(guī)律時,則稱該矩陣為稀疏矩陣;與之相反,若非0元素數(shù)目占大多數(shù)時,則稱該矩陣為稠密矩陣。下三角陣:主對角線及下面有值,上面沒值 正交陣:P的逆等于P的轉(zhuǎn)置或P的轉(zhuǎn)置乘以P等于單位陣I

          代碼實(shí)現(xiàn):

          import?numpy?as?np
          import?torch
          #?對角矩陣
          a?=?np.diag([1,2,3,4])
          print(a)
          b?=?torch.diag(torch.tensor([1,2,3,4]))
          print(b)

          #?單位矩陣
          c?=?np.eye(3,4)#?多余的用0替代
          print(c)
          d?=?torch.eye(4,3)
          print(d)

          #?下三角陣
          e?=?np.tri(3,3)
          print(e)
          f?=?torch.tril(torch.ones(3,3))
          print(f)

          #?零矩陣、一矩陣
          g?=?np.ones((3,3))
          print(g)
          h?=?np.zeros((3,3))
          print(h)

          out:
          """
          [[1?0?0?0]
          ?[0?2?0?0]
          ?[0?0?3?0]
          ?[0?0?0?4]]
          tensor([[1,?0,?0,?0],
          ????????[0,?2,?0,?0],
          ????????[0,?0,?3,?0],
          ????????[0,?0,?0,?4]])
          [[1.?0.?0.?0.]
          ?[0.?1.?0.?0.]
          ?[0.?0.?1.?0.]]
          tensor([[1.,?0.,?0.],
          ????????[0.,?1.,?0.],
          ????????[0.,?0.,?1.],
          ????????[0.,?0.,?0.]])
          [[1.?0.?0.]
          ?[1.?1.?0.]
          ?[1.?1.?1.]]
          tensor([[1.,?0.,?0.],
          ????????[1.,?1.,?0.],
          ????????[1.,?1.,?1.]])
          [[1.?1.?1.]
          ?[1.?1.?1.]
          ?[1.?1.?1.]]
          [[0.?0.?0.]
          ?[0.?0.?0.]
          ?[0.?0.?0.]]
          "
          ""

          二、內(nèi)積與投影

          2.1 內(nèi)積與投影

          代數(shù)定義: 幾何定義:

          2.2 余弦相似度

          正相關(guān)、負(fù)相關(guān)、不相關(guān)

          余弦相似度與歐式距離的關(guān)系: 當(dāng)向量做了二范數(shù)歸一化后的向量(即模為1),有這個等價關(guān)系(歐式距離越小,余弦相似度越大)

          2.3 相關(guān)性

          線性相關(guān)(正、負(fù)) 線性無關(guān) 基與標(biāo)準(zhǔn)正交基 完備正交基

          理解:兩個向量,有一個點(diǎn)投影到一個向量上,如果它移動了,會對另外一個向量產(chǎn)生影響,這兩個向量就是相關(guān)的。(建一個坐標(biāo)系,每個軸應(yīng)該不相關(guān)) 軸在線性代數(shù)里面稱為基。軸可以代表一個特征方向 如果兩個軸能構(gòu)成一個平面空間,則他們就是這個平面空間的完備基。(三維空間中兩個軸就不能構(gòu)成完備基) 垂直一定不相關(guān);不相關(guān)不一定垂直(傅里葉變換)。.

          機(jī)器學(xué)習(xí)的本質(zhì):將數(shù)據(jù)分解到特征方向上,在每個特征方向單獨(dú)判斷,結(jié)果統(tǒng)一起來得到一個結(jié)果。(做特征分解)

          矩陣由多個向量構(gòu)成,如果多個向量之間是兩兩不相關(guān)的,如果矩陣是方陣,則其為完備正交基,可以構(gòu)成一個空間,每個向量就是空間上的軸。(3x3可以構(gòu)成3維空間,4x4構(gòu)成4維空間)(4x3不能構(gòu)成基;3x4:4維空間有3根軸,基就不完備,相當(dāng)于4維空間到3維空間的投影)

          2.4 線性變換(特殊的仿射變換)

          定義:線性變換是線性空間V到自身的映射通常稱為V上的一個變換。本質(zhì):改變坐標(biāo)系這個空間,使點(diǎn)移動。 上圖:一個向量x要變換到Ax上去,就給它乘以一個矩陣,做線性變換。

          一個例子理解矩陣乘法:一個向量A與一個矩陣B向量乘法,這就是一個線性變換的過程。矩陣B是一個方陣,且每一列兩兩不相關(guān),則他們構(gòu)成一個完備空間,B稱為變換矩陣。得到一個新的向量,這個新的向量就是經(jīng)過線性變換后的向量。用圖像理解,一張圖片乘一個矩陣,就相當(dāng)于給它做平移旋轉(zhuǎn)的操作。

          2.5 仿射變換

          2.6 特征方程

          特征方程的理解:可以給等式兩邊同乘一個向量v,相當(dāng)于向量v乘以一個變換矩陣A,得到的新向量再乘一個向量x,相當(dāng)于在x方向上的投影 等價于 向量v做縮放,在向量x上的投影。(相當(dāng)于線性變換矩陣A與縮放系數(shù)λ是等價的) 其中λ為縮放系數(shù),也稱為特征向量x的特征值。

          代碼實(shí)現(xiàn)求矩陣的特征向量與特征值:

          import?torch

          a?=?torch.tensor([[1.,2.],[3.,4.]])
          print(torch.eig(a))#?特征值
          print(torch.eig(a,eigenvectors=True))#?特征向量

          2.7 相似變換

          一個軸求的是在x向量上的投影,如果多個軸就是矩陣P,P就是特征向量的集合。A和B就是相似矩陣。 如果P是正交陣(P的轉(zhuǎn)置乘P=單位陣),得到的B就是斜對角陣,主對角線上的值就是A的特征值。

          可以用此公式對角化一個矩陣

          2.8 奇異值分解(SVD)

          奇異值的優(yōu)點(diǎn)在于其不受限于原始矩陣A是否是方陣這個約束。但不是方陣可以用逆求得,不是方陣求出來的特征值叫做奇異值。 奇異值類似于下圖: 將矩陣分解為用戶對哪種類型的書和這本書更偏向于哪種特征和偏好的權(quán)重有多大,算到對一本新書的評價。

          import?numpy?as?np
          a?=?np.array([[1,2],[3,4],[5,6]])
          u,s,v?=?np.linalg.svd(a)
          print(u)
          print(s)#?特征值
          print(v)
          #?3x2?分解為?3x3?3x2?2x2?三個矩陣

          SVD分解的應(yīng)用降維(用前個非零奇異值對應(yīng)的奇異向量表示矩陣的主要特征)、 壓縮(要表示原來的大矩陣,我們只需要存三個較小的矩陣的即可)

          2.9 譜范數(shù)

          矩陣的特征值被稱為譜 最大的特征值被稱為矩陣的譜范數(shù) 用譜范數(shù)做歸一化被稱為譜范數(shù)歸一化




          Python“寶藏級”公眾號【Python之王】專注于Python領(lǐng)域,會爬蟲,數(shù)分,C++,tensorflow和Pytorch等等。

          近 2年共原創(chuàng) 100+ 篇技術(shù)文章。創(chuàng)作的精品文章系列有:

          日常收集整理了一批不錯的?Python?學(xué)習(xí)資料,有需要的小伙可以自行免費(fèi)領(lǐng)取。

          獲取方式如下:公眾號回復(fù)資料領(lǐng)取Python等系列筆記,項(xiàng)目,書籍,直接套上模板就可以用了。資料包含算法、python、算法小抄、力扣刷題手冊和 C++ 等學(xué)習(xí)資料!

          瀏覽 290
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费鸡巴视频网站 | 影音先锋成人无码在线观看 | 亚洲情色第一页 | 中文字幕一区免费 | 亚洲无码小说 |