1. 程式人生 > >【ML學習筆記】5:機器學習中的數學基礎5(張量,哈達瑪積,生成子空間,超平面,範數)

【ML學習筆記】5:機器學習中的數學基礎5(張量,哈達瑪積,生成子空間,超平面,範數)

向量/矩陣/張量

向量

向量可以表示成一維陣列,每個分量可以理解為向量所表示的點在空間中座標的分量。

矩陣

矩陣可以表示成二維陣列,上節理解了矩陣可以理解為線性對映在特定基下的一種定量描述。

張量

張量可以表示成任意維的陣列,張量是向量概念向更高階次的推廣,向量是一維張量。
但不能把矩陣簡單的看成二維張量,張量是幾何的,矩陣是代數的。二階張量和矩陣概念不同,但可以建立聯絡,矩陣可以描述二階張量的一些特性(在確定座標系後,可以用矩陣來表示)。

向量的廣播

複製向量到很多位置的操作稱為向量的廣播,如把m維行向量加到n行m列的矩陣的每一行就是一種廣播操作。

向量內積

內積即點積,兩個相同維數向量對應分量相乘再相加,得到的是標量,向量x和向量y的內積可以記為:
這裡寫圖片描述
這是因為我們這裡說的”向量”可以視為就是在說”列向量”,所以可以看成列向量轉置後得到的行向量和另一個列向量的矩陣的標準乘積。
顯然向量點積滿足交換律。

矩陣的標準乘積

就是普通的矩陣乘法,要求前一個矩陣的列數和後一個矩陣的行數相同,結果矩陣中Cij=左邊矩陣的第i行向量和右邊矩陣的第j列向量的對應分量相乘再相加。

矩陣的Hadamard乘積

兩個規模相同的矩陣,如果對應位置的元素可乘,那麼就有Hadamard乘積,新矩陣的規模與原來矩陣的規模一致,每個位置的元素是原來兩個矩陣的那個位置元素的乘積。
這裡寫圖片描述

生成子空間

一組向量的生成(線性)子空間,是它們經過線性組合後所能抵達的點的集合。
這裡寫圖片描述
在這張圖中,這兩個紅色的向量經過線性組合,能達到的點構成了一個二維的平面。

超平面

超平面是指n維歐式空間中維度等於n-1的線性子空間,如在三維的歐式空間中就是一個平面,在二維的歐式空間中就是一個點,在更高維的空間中我們生活中找不到描述它的詞。
因為是子空間,所以超平面一定過原點。

線性相關和線性無關

如果一組向量中,每個向量都不能表示成其它向量的線性組合,則稱這組向量線性無關,否則就是線性相關的,比如下面這三個向量構成的向量組就是線性相關的,因為:
這裡寫圖片描述
這個向量可以被另外兩個向量的線性組合表示,畫到圖上就是:
這裡寫圖片描述


很顯然用A和B這兩個向量構成的向量組,其生成子空間就是這個整個二維平面了,而加入了這個向量C以後,因為C能被我們之前這個向量組中的向量線性表示,加入了它生成子空間也不會有絲毫的變大,從這個意義上來看,這個能被其它向量線性表示的向量在向量組中是冗餘的。

關於逆矩陣

其實只要記住有逆矩陣的一定是一個方陣,並且所有列向量都是線性無關的。但是在書上看到這一部分很有意思,還是做一下筆記。

考慮解一個線性方程組Ax=b,未知的是列向量x:
這裡寫圖片描述
如果矩陣A的逆存在的話,可以試圖用A的逆矩陣去求解它,那就要左乘A的逆。對於這個方程組而言,只可能無解/有1個解/有無限多個解,因為如果列向量x1和x2都是這個方程的解,那麼對於任意實數α:
這裡寫圖片描述顯然也是這個方程組的解,那麼還是有無窮多個解的情況。
前面學了,矩陣和向量的乘積,可以理解成矩陣的列向量的線性組合,而決定線性組合的權重值的正是這個向量x的每個分量。所以求方程的解,實際上也就是求有哪些種線性組合的方法——x中的第i個分量表示沿著矩陣i的第i列的列向量走多遠,能夠到達向量b。
所以方程Ax=b有沒有解,實際上就是在詢問向量b是否在矩陣A的列向量的生成子空間中,如果在的話,x的分量描述了到達這個向量b的途徑。這個特殊的生成子空間稱為矩陣A的列空間或者值域
這裡寫圖片描述
如果要對任意m維向量b都存在解,就要使矩陣A的列空間佈滿整個m維空間,所以A至少要有m列,否則其線性組合是不可能達到m維的,如一個3x2的矩陣(m=3而n=2):
這裡寫圖片描述
很顯然這兩個3維列向量不論怎麼組合,都只能在一個平面上跑,也就是說這個矩陣的列空間只能是一個平面,而不能包括m=3維度上的所有點。
回到那個問題,A至少有m列也就是n>=m。這只是一個必要條件,還不是充分條件,因為有些列可能是多餘的,如下面這個矩陣:
這裡寫圖片描述
很顯然不管有再多的列,因為列都是一樣的,不管列向量再怎麼組合,都只能在一條直線上跑,不能包括m=2維度上的所有點。這種多餘就是因為這些列向量線性相關了。
所以要使列向量線性組合後能包含整個m維空間上的所有點,就要求這個矩陣的列至少有一組m個線性無關的向量,用它們就能實現包括m維度上的所有點了,也就是m維線性空間中的一組

要用逆矩陣來求的話,左乘逆矩陣以後得到的x肯定是唯一的,所以要保證方程對於每一個b最多隻能有一個解,那麼矩陣就最多隻能有m個列向量。這是因為如果有多於m個列向量,又有了前面說了m個線性無關的向量,那麼剩下的那個向量肯定能被這m個向量線性表示,那麼它就能替代線性表示它的向量中的任意一個:
這裡寫圖片描述
上圖中紅色是一個m個向量的線性無關組,藍色是表示綠的向量的一組向量(權重不是0),綠色的這個向量可以去替代這個線性無關組中的藍色向量中的任意一個,而新的組仍然是m個向量的線性無關組。
那麼有了多種線性無關組m,就會有不止一種線性組合:
這裡寫圖片描述以及這裡寫圖片描述等等。
該方程也就有不止一個解x了,因此n<=m

綜上來看n=m,也就是矩陣A需要是個方陣,而且列向量線性無關,這樣才可逆,可逆矩陣也叫非奇異矩陣。此外,列向量線性相關的方陣被稱為奇異矩陣
根據前面說的線性相關和線性無關可以理解:如果A為奇異矩陣,則AX=0有無窮解(能被線性表示的列向量線性表示後,權重可以同乘任意實數),AX=b有無窮解或者無解(如果b不能被A的列向量線性表示就無解,否則有無窮多解,無窮的方式還是那一個解的1-α權重組合)。如果A為非奇異矩陣,則AX=0有且只有唯一零解(m維的0向量b自然也是有唯一解,這個解總是m=n維0向量因為列向量誰們也不能表示誰),AX=b有唯一解(正如前面所說)。

範數

範數(norm)可以衡量向量的大小,向量x的範數可以衡量從原點到x點的距離,顯然這個距離和我們平時生活中的距離不太一樣。

範數的性質

①正定性:如果向量x的範數為0,向量一定是0向量。
②三角不等式:兩向量和的範數不大於範數之和。
③正值齊次性:縮放α倍後的x的範數等於x的範數乘以α的絕對值。

Lp範數

這裡寫圖片描述
展開的分量的p次冪加和再開p次方,即:
這裡寫圖片描述
顯然L2範數表示的就是從原點到指定點的歐幾裡徳距離,這個距離也就是我們日常生活說的狹義的距離,L2範數也叫歐幾裡徳範數
L1範數是x的所有分量的單純加和,當機器學習問題中零和非零的元素差異很重要時通常使用L1範數(書上這樣說,但具體怎麼用還是不清楚)。

最大範數(L∞範數)

取向量中具有最大幅值的元素的絕對值:
這裡寫圖片描述

Frobenius範數

用來衡量矩陣的大小,矩陣中每個元素平方後全部加起來再開根號:
這裡寫圖片描述

用L2範數表示向量點積

高中學的”模乘模乘夾角餘弦”裡的”模”其實就是向量的L2範數:
這裡寫圖片描述

相關推薦

ML學習筆記5機器學習數學基礎5(,哈達,生成空間,平面,)

向量/矩陣/張量 向量 向量可以表示成一維陣列,每個分量可以理解為向量所表示的點在空間中座標的分量。 矩陣 矩陣可以表示成二維陣列,上節理解了矩陣可以理解為線性對映在特定基下的一種定量描述。 張量 張量可以表示成任意維的陣列,張量是向量概

ML學習筆記3機器學習數學基礎3(特徵值,特徵向量,認識SVD)

矩陣乘以向量的幾何意義 實際上也就是 所以,它還可以寫成 那麼把原來的矩陣按照列檢視來看,也就是 而[x]和[y]作為1x1的矩陣,在剛剛那個式子裡可以看成一個標量,也就變成了 所以矩陣乘以一個列向量,可以看成把這個列向量的每一個分

K8S學習筆記Part3同一Pod多個容器間使用共享卷進行通信

ash source net def exe tput stat policy container 本文將展示如何使用共享卷(Volume)來實現相同Pod中的兩個容器間通信。 註意:本文針對K8S的版本號為v1.9,其他版本可能會有少許不同。 0x00 準備工作 需要有一

python學習筆記41認識Pandas的資料變形

學習《Python3爬蟲、資料清洗與視覺化實戰》時自己的一些實踐。 Pandas資料變形 關於stack()和unstack()見這裡和這裡。 import pandas as pd import numpy as np # 讀取杭州天氣檔案 df = pd.read

Linux學習筆記27環境變數的語系變數

語系就是用的是什麼人類語言,本節專門學習環境變數中的語系變數。 [1]locale確定系統當前語系 [[email protected] ~]# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC

Java學習筆記66認識Java的Reflection(反射)機制,獲取類的屬性和方法

反射部分一直欠著,現在學框架和Servlet必須要學一下了。最近學習Struts2框架和Servlet時候,很多地方直接給出類名就可以去使用了,如在web.xml中配置Filter時: <filter> <filter-name&

Maven學習筆記4在IDEA使用Maven搭建SSM空專案

建立Maven webapp專案雛形 勾選上從原形構建: 同樣要提供groupId、artifactId、version這三個必備資訊: 指明Maven目錄、配置檔案的位置、倉庫目錄(可從配置檔案讀取): 專案名稱、專案根目錄位置: 點

ML學習筆記25PCA及繪製降維與恢復示意圖

主成分分析 簡述 主成分分析意在學習一個對映 U r

吳恩達機器學習筆記week31/2邏輯迴歸

第三週 六、邏輯迴歸(Logistic Regression) 這裡首先區分一下線性迴歸和邏輯迴歸,線性迴歸就是擬合,邏輯迴歸是分類。 6.2 假說表式(Hypothesis Representation) 下面一個部分主要講的是假設函式h(x)在分類問題中輸出只能是0/

ML學習筆記18原始的Perceptron(感知機)

感知機的決策面 感知機用來獲取樣本特徵空間中的一個超平面,以對樣本進行分類,屬於線性分類器。 這樣的分類問題比較經典,如某一個參加非誠入擾的女士(分類器)評判自己會不會給非誠勿擾的各個男嘉賓(樣本)留燈(1或者-1),男嘉賓作為樣本,有多個特徵,如身高、月收

ML學習筆記17多元正態分佈下極大似然估計最小錯誤率貝葉斯決策

簡述多元正態分佈下的最小錯誤率貝葉斯 如果特徵的值向量服從d元正態分佈,即其概率密度函式為: 即其分佈可以由均值向量和對稱的協方差矩陣 唯一確定。 如果認為樣本的特徵向量在類內服從多元正態分佈: 即對於每個類i,具有各自的類內的均值向量和協

ML學習筆記8PAC可能近似正確

簡述 PAC的意思 Probably Approximate Correct直譯過來就是”可能近似正確”,這裡面用了兩個描述”正確”的詞,可能和近似。 “近似”是在取值上,只要和真實值的偏差小於一個足夠小的值就認為”近似正確”;”可能”是在概率上,即只

JAVAEE學習筆記hibernate02實體規則、對象狀態、緩存、事務、批量查詢和實現客戶列表顯示

使用 ins tro trace ges create 綁定 criteria 命名 一、hibernate中的實體規則 實體類創建的註意事項  1.持久化類提供無參數構造  2.成員變量私有,提供共有get/set方法訪問.需提供屬性  3.持久化類中的屬性,應盡量使用包

JAVAEE學習筆記hibernate03多表操作,級聯練習:添加聯系人

row tac 默認值 rac user except pro intra com 一、一對多|多對一 1、關系表達  表中的表達      實體中的表達      orm元數據中表達     一對多 <!-- 集合,一對多關系,在配置文件中配置 -

JAVAEE學習筆記hibernate04查詢種類、HQL、Criteria、查詢優化和練習為客戶列表增加查詢條件

沒有 arrays getpara tex response 寫法 sum exceptio 提高 一、查詢種類 1.oid查詢-get 2.對象屬性導航查詢 3.HQL 4.Criteria 5.原生SQL 二、查詢-HQL語法 //學習HQL語法 public

學習筆記、作用域和內存問題

允許 幫助 範圍 訪問內存 常用 ie9 值傳遞 問題: eof 1.引用類型的值   引用類型的值是指保存在內存中的對象,JavaScript不允許直接訪問內存中的位置,因此在操作對象時,實際上是操作的引用而不是實際的對象。(嚴密的說法是:當復制保存著對象的某個變量時,

學習筆記 唐大仕—Java程序設計 第5講 深入理解Java語言之5.4 對象清除與垃圾回收

let 要求 什麽 jdk1 style 1.10 垃圾 ati 內存 /** * 對象清除與垃圾回收 * @author cnRicky * @date 2018.11.10 */ 對象清除與垃圾回收 對象清除 我們知道:new創建對象 那麽如何銷毀對象? Java

Python3 爬蟲學習筆記解析庫的使用 7 —— Beautiful Soup 5

CSS選擇器 Beautiful Soup還提供了另外一個選擇器,那就是CSS選擇器。 使用CSS選擇器時,只需要呼叫select()方法,傳入相應的CSS選擇器即可,示例如下: html = ''' <div class="panel"> <div class="

學習筆記引用型別

引用型別的值(物件)是引用型別的一個例項。ECMAScript提供了很多原生的引用型別(例如Object),以便開發人員用以實現常見的計算任務。 1.Object型別   1)建立Object例項的兩種方法:new Object()和物件字面量表示法。一般常用物件字面量標識法:一是因為程式碼量少,二是物件

python學習筆記37認識Scrapy爬蟲,爬取滬深A股資訊

學習《Python3爬蟲、資料清洗與視覺化實戰》時自己的一些實踐。 認識Scrapy爬蟲 安裝 書上說在pip安裝會有問題,直接在Anaconda裡安裝。 建立Scrapy專案 PyCharm裡沒有直接的建立入口,在命令列建立(從Anaconda安裝後似乎自動就