04.C1W3.Vector Space Models

往期文章請點這里

目錄

  • Vector Space Models
  • Word by Word and Word by Doc
    • Word by Document Design
    • Word by Document Design
    • Vector Space
  • Euclidean Distance
    • Euclidean distance for n-dimensional vectors
  • Euclidean distance in Python
  • Cosine Similarity: Intuition
  • Cosine Similarity
    • Previous definitions
    • Cosine Similarity
  • Manipulating Words in Vector Spaces
  • Visualization and PCA
    • Visualization of word vectors
  • Principal Component Analysis
  • PCA Algorithm

往期文章請點 這里

Vector Space Models

在實際生活中,經常會出現以下兩種場景:
相同文字不同含義:
在這里插入圖片描述
不同文字相同含義:
在這里插入圖片描述
這些是之前的語言模型無法處理的問題,而向量空間模型不但可以區分以上場景,還能捕獲單詞之間的依賴關系。
You eat cereal from a bowl
麥片和碗是強相關
You buy something and someone else sells it
這里的買依賴于賣
這個優點使得向量空間模型可以用于下面任務:
在這里插入圖片描述

著名語言學學者(Firth, J. R. 1957:11)說過:
“You shall know a word by the company it keeps”
指出了上下文對當前詞的表達有很大影響。

Word by Word and Word by Doc

構建共現矩陣(W/W and W/D 兩種),并為語料庫的單詞提取向量表示。

Word by Document Design

兩個不同單詞的共現是它們在語料庫中在一個特定的詞距內一起出現的次數。
Number of times they occur together within a certain distance k k k
例如,假設語料庫有以下兩個句子。
在這里插入圖片描述
假設 k = 2 k=2 k=2,則單詞data的共現次數如下:
在這里插入圖片描述
這里n取值在1到詞表大小之間。data和simple在第一句話距離是1,第二句話距離是2:
在這里插入圖片描述

Word by Document Design

計算來自詞匯表的單詞在屬于特定類別的文檔中出現的次數。
Number of times a word occurs within a certain category
例如下圖中,語料庫包含三類文檔,然后可以計算某個單詞分別在三類文檔中出現的次數。
在這里插入圖片描述

Vector Space

完成多組文檔或單詞的表示后,接下來可以構建向量空間。
以上面的矩陣為例
在這里插入圖片描述
可以用行來表示單詞,列表示文檔,若以data和film構建坐標系,則可以根據矩陣中的數值得到向量表示:
在這里插入圖片描述
從向量空間表示中可以看到,economy的ML的文檔相似度要更大一些
當然這個相似度可以用計算Angle Distance來數字化度量。

Euclidean Distance

Euclidean Distance允許我們確定兩個點或兩個向量彼此之間的距離。
書接上回,假設有兩個語料的向量表示為:
在這里插入圖片描述

放到二維空間中:
在這里插入圖片描述
用點表示他們后,可以用歐氏距離很衡量二者的相似度:
在這里插入圖片描述
具體公式:
d ( B , A ) = ( B 1 ? A 1 ) 2 + ( B 2 ? A 2 ) 2 d(B,A)=\sqrt{(B_1-A_1)^2+(B_2-A_2)^2} d(B,A)=(B1??A1?)2+(B2??A2?)2 ?
B 1 ? A 1 B_1-A_1 B1??A1? B 2 ? A 2 B_2-A_2 B2??A2?分別對應上圖中水平和垂直距離。
本例中帶入數字:
d ( B , A ) = ( ? 8820 ) 2 + ( 6000 ) 2 ≈ 10667 d(B,A)=\sqrt{(-8820)^2+(6000)^2}\approx10667 d(B,A)=(?8820)2+(6000)2 ?10667

Euclidean distance for n-dimensional vectors

對于高維向量,歐氏距離仍然適用,例如:
在這里插入圖片描述
想要計算ice-cream和boba的歐氏距離,則可以使用以下公式:
d ( v ? , w ? ) = ∑ i = 1 n ( v i ? w i ) 2 等價于求范數Norm?of ( v ? , w ? ) d(\vec{v},\vec{w})=\sqrt{\sum_{i=1}^n(v_i-w_i)^2}等價于求范數\text{Norm of}(\vec{v},\vec{w}) d(v ,w )=i=1n?(vi??wi?)2 ?等價于求范數Norm?of(v ,w )
ice-cream和boba的歐氏距離可以寫為:
( 1 ? 0 ) 2 + ( 6 ? 4 ) 2 + ( 8 ? 6 ) 2 = 1 + 4 + 4 = 3 \sqrt{(1-0)^2+(6-4)^2+(8-6)^2}=\sqrt{1+4+4}=3 (1?0)2+(6?4)2+(8?6)2 ?=1+4+4 ?=3

Euclidean distance in Python

在這里插入代碼片
# Create numpy vectors v and w
v np. array([1, 6, 8])
w np. array([0, 4, 6])
# Calculate the Euclidean distance d
d = np.linalg.norm(v-w)
# Print the result
print (("The Euclidean distance between v and w is: ", d)

Cosine Similarity: Intuition

先給結論:當語料庫中文章包含單詞數量差異較大時,使用Cosine Similarity
余弦相似度使用文檔之間的角度,因此不依賴于語料庫的大小。

假設我們有eggs和disease兩個單詞在三個語料庫中圖像如下:
在這里插入圖片描述
語料庫中各個類型的文章單詞數量不相同,這里的Agriculture和History文章單詞數量基本相同,而Food文章單詞較少。Agriculture與其他兩類文章的歐式距離分別寫為: d 1 d_1 d1? d 2 d_2 d2?
在這里插入圖片描述
從圖中可以看到 d 2 < d 1 d_2<d_1 d2?<d1?,表示Agriculture和History文章相似度更高。
余弦相似度是指The cosine of the angle between the vectors. 當角度接近90度時,余弦接近于0。
在這里插入圖片描述
從余弦相似度上看, β > α \beta>\alpha β>α,表示Agriculture和Food文章相似度更高。

Cosine Similarity

Previous definitions

先回顧兩個定義:
Vector norm,向量的模(范數)可以表示為:
∣ ∣ v ? ∣ ∣ = ∑ i = 1 n v i 2 ||\vec{v}||=\sqrt{\sum_{i=1}^nv_i^2} ∣∣v ∣∣=i=1n?vi2? ?
Dot product點乘可以表示為:
v ? ? w ? = ∑ i = 1 n v i ? w i \vec{v}\cdot \vec{w}=\sum_{i=1}^nv_i\cdot w_i v ?w =i=1n?vi??wi?

下面是點乘推導:

設有兩個向量 a \mathbf{a} a b \mathbf{b} b,在 n n n維空間中的坐標分別為 ( a 1 , a 2 , … , a n ) (a_1, a_2, \ldots, a_n) (a1?,a2?,,an?) ( b 1 , b 2 , … , b n ) (b_1, b_2, \ldots, b_n) (b1?,b2?,,bn?)。這兩個向量的點積定義為:
a ? b = a 1 b 1 + a 2 b 2 + … + a n b n \mathbf{a} \cdot \mathbf{b} = a_1b_1 + a_2b_2 + \ldots + a_nb_n a?b=a1?b1?+a2?b2?++an?bn?

向量 a \mathbf{a} a b \mathbf{b} b 的范數(長度)分別是:
∥ a ∥ = a 1 2 + a 2 2 + … + a n 2 \|\mathbf{a}\| = \sqrt{a_1^2 + a_2^2 + \ldots + a_n^2} a=a12?+a22?++an2? ?
∥ b ∥ = b 1 2 + b 2 2 + … + b n 2 \|\mathbf{b}\| = \sqrt{b_1^2 + b_2^2 + \ldots + b_n^2} b=b12?+b22?++bn2? ?

兩個向量之間的夾角 θ \theta θ 的余弦值可以通過點積和范數來表示:
cos ? ( θ ) = a ? b ∥ a ∥ ∥ b ∥ \cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|} cos(θ)=a∥∥ba?b?

將點積的公式代入上述表達式,我們得到:
cos ? ( θ ) = a 1 b 1 + a 2 b 2 + … + a n b n a 1 2 + a 2 2 + … + a n 2 b 1 2 + b 2 2 + … + b n 2 \cos(\theta) = \frac{a_1b_1 + a_2b_2 + \ldots + a_nb_n}{\sqrt{a_1^2 + a_2^2 + \ldots + a_n^2} \sqrt{b_1^2 + b_2^2 + \ldots + b_n^2}} cos(θ)=a12?+a22?++an2? ?b12?+b22?++bn2? ?a1?b1?+a2?b2?++an?bn??

如果我們將 cos ? ( θ ) \cos(\theta) cos(θ) 乘以 a \mathbf{a} a b \mathbf{b} b,我們可以得到點積的另一種形式:
∥ a ∥ ∥ b ∥ cos ? ( θ ) = a 1 b 1 + a 2 b 2 + … + a n b n = a ? b \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta) = a_1b_1 + a_2b_2 + \ldots + a_nb_n=\mathbf{a} \cdot \mathbf{b} a∥∥bcos(θ)=a1?b1?+a2?b2?++an?bn?=a?b

Cosine Similarity

下圖是單詞eggs和disease在語料Agriculture和History出現頻率的可視化表達。
在這里插入圖片描述
根據上面推導的公式:
v ^ ? w ^ = ∣ ∣ v ^ ∣ ∣ ∣ ∣ w ^ ∣ ∣ cos ? ( β ) cos ? ( β ) = v ^ ? w ^ ∣ ∣ v ^ ∣ ∣ ∣ ∣ w ^ ∣ ∣ = ( 20 × 30 ) + 40 × 20 2 0 2 + 4 0 2 × 3 0 2 + 2 0 2 = 0.87 \hat v\cdot\hat w =||\hat v||||\hat w||\cos(\beta)\\ \cos(\beta)=\cfrac{\hat v\cdot\hat w}{||\hat v||||\hat w||}\\ =\cfrac{(20\times30)+40\times20}{\sqrt{20^2+40^2}\times\sqrt{30^2+20^2}}=0.87 v^?w^=∣∣v^∣∣∣∣w^∣∣cos(β)cos(β)=∣∣v^∣∣∣∣w^∣∣v^?w^?=202+402 ?×302+202 ?(20×30)+40×20?=0.87
下面是余弦相似度的兩個特殊情形:
在這里插入圖片描述
在這里插入圖片描述
注意:
Cosine Similarity gives values between 0 and 1.

Manipulating Words in Vector Spaces

擴展閱讀:[Mikolov et al, 2013, Distributed Representations of Words and Phrases and their Compositionality]
這里的Manipulating Words,是指對詞向量的加減(平移向量),使得我們可以計算對應關系,例如:已有國家和首都的詞向量空間,已知漂亮國首都是DC(漫威表示不服),求大毛的首都是什么。
在這里插入圖片描述
在本例子中,我們有一個假想的二維向量空間,里面包含了不同國家和首都的不同向量表示:
在這里插入圖片描述
這里我們可以計算USA到Washington的向量差異(也相當于求USA到Washington之間的關系,也就是求連接二者的向量)
在這里插入圖片描述
Washington-USA = [5 -1]
通過這個我們就可以知道要找到一個國家的首都需要移動多少距離,對于大毛就有:
Russia + [5 -1]=[10 4]
在這里插入圖片描述
雖然[10 4]沒有匹配到具體的城市,我們可以進一步比較每個城市的歐氏距離或者余弦相似性找到最鄰近的城市。
在這里插入圖片描述
答案是:Moscow

Visualization and PCA

可視化可以讓我們很直觀的看到單詞的相似性,當單詞的向量表示通常是高維的,需要我們將其降維到2D空間便于繪圖,這里先學其中一種降維寫方式:PCA

Visualization of word vectors

在這里插入圖片描述
假設詞向量維度遠大于2,已知oil和gas,city和town相似度較高,如何可視化他們之間的關系?答案就是降維:
在這里插入圖片描述
然后再進行可視化,則可得到類似下圖的結果:
在這里插入圖片描述

Principal Component Analysis

以二維空間為例來看:
在這里插入圖片描述
降維就是將Uncorrelated Features映射到另外一個維度空間,并盡量保留更多信息,二維的映射方式一眼就可以看出來,就是垂直映射:
在這里插入圖片描述

PCA Algorithm

在線代中有兩個概念:Eigenvector(特征向量)和Eigenvalue(特征值)
特征值(Eigenvalue):
特征值是與線性變換相關聯的一個標量,它描述了在該變換下,一個向量被縮放的比例。
對于一個給定的線性變換(由矩陣表示),如果存在一個非零向量 v v v,使得變換后的向量與原向量成比例,即 A v = λ v Av=\lambda v Av=λv,其中 A A A 是矩陣, λ \lambda λ 是一個標量,那么 λ \lambda λ 就是 A A A 的一個特征值,而 v v v 就是對應的特征向量。
特征向量(Eigenvector):
特征向量是線性變換下保持方向不變的向量,或者更準確地說,是方向被縮放的向量。
在上述方程 A v = λ v Av=\lambda v Av=λv 中,如果 λ ≠ 0 \lambda\neq 0 λ=0,那么 v v v 就是 A A A 的一個特征向量,它與特征值 λ \lambda λ 配對出現。
不需要知道如何計算這兩個東西
算法第一步是為這一步獲取一組無關的特征,需要對數據進行歸一化,然后計算方差矩陣。
Mean?Normalize?Data? x i = x i ? μ x i σ x i \text{Mean Normalize Data }x_i=\cfrac{x_i-\mu_{x_i}}{\sigma_{x_i}} Mean?Normalize?Data?xi?=σxi??xi??μxi???
第二步計算方差矩陣(Get Covariance Matrix): Σ \Sigma Σ
第三步奇異值分解(Perform SVD)得到一組三個矩陣: S V D ( Σ ) SVD(\Sigma) SVD(Σ)
在這里插入圖片描述
SVD可以直接調用函數解決不用搓輪子。
然后進行投影,將Eigenvector(特征向量)和Eigenvalue(特征值)分別記為 U U U S S S
在這里插入圖片描述
然后通過X點積U的前面兩列來投影數據,這里我們只保留兩列以形成二維可視化空間:
在這里插入圖片描述
Percentage of Retained Variance: 這表示保留的方差百分比。在PCA中,我們通常選擇前幾個主成分來近似原始數據,這些主成分加起來解釋了原始數據的一定比例的方差。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41538.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32-SPI和W25Q64

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. SPI&#xff08;串行外設接口&#xff09;通信1.1 SPI通信簡介1.2 硬件電路1.3 移位示意圖1.4 SPI時序基本單元1.5 SPI時序1.5.1 發送指令1.5.2 指定地址寫1.5.3 指定地址讀 2. W25Q642.1 W25Q64簡介2.2 硬件電路2…

嵌入式C語言面試相關知識——內存管理(不定期更新)

嵌入式C語言面試相關知識——內存管理&#xff08;不定期更新&#xff09; 一、博客聲明二、自問題目1、嵌入式系統的內存布局是怎么樣的&#xff1f;2、動態內存分配在嵌入式系統中的使用有什么注意事項&#xff1f;3、什么是內存碎片&#xff0c;如何減少內存碎片&#xff1f…

win11自動刪除文件的問題,安全中心提示

win11自動刪除文件的問題&#xff0c;解決方法&#xff1a; 1.點擊任務欄上的開始圖標&#xff0c;在顯示的應用中&#xff0c;點擊打開設置。 或者點擊電腦右下角的開始也可以 2.點擊設置。也可以按Wini打開設置窗口。 3.左側點擊隱私和安全性&#xff0c;右側點擊Windows安全…

我國網絡安全領域有哪些法律法規?主要內容是什么?

1. 背景介紹 網絡信息安全方面的法規在全球范圍內都有相應的立法&#xff0c;我們主要的立法有《網絡安全法》、《密碼法》、《數據安全法》以及《個人信息保護法》。當前也有一些相關的條例和管理辦法&#xff0c;接下來就為大家一一介紹。 2. 法規介紹 在中國&#xff0c;…

多線程(進階)

前言&#x1f440;~ 上一章我們介紹了線程池的一些基本概念&#xff0c;今天接著分享多線程的相關知識&#xff0c;這些屬于是面試比較常見的&#xff0c;大部分都是文本內容 常見的鎖策略 樂觀鎖 悲觀鎖 輕量鎖 重量級鎖 自旋鎖 掛起等待鎖 可重入鎖和不可重入鎖 互斥…

Leetcode 3207. Maximum Points After Enemy Battles

Leetcode 3207. Maximum Points After Enemy Battles 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3207. Maximum Points After Enemy Battles 1. 解題思路 這一題的話其實關鍵在于說是想明白最優策略&#xff0c;事實上這道題的最優策略就是撿著最弱的enemy薅&#xff0c;…

接口測試分析、設計以及實現

接口相關理論 ui功能測試和接口測試哪個先執行&#xff1f;–為什么 結論&#xff1a;接口測試先執行 原因&#xff1a;ui功能測試需要等待前端頁面開發完成、后臺接口開發完后且前端與后端聯調完成。ui功能測試與接口測試的區別&#xff1f; ui功能&#xff1a;功能調用&am…

學習筆記——交通安全分析14

目錄 前言 當天學習筆記整理 5城市主干道交通安全分析 結束語 前言 #隨著上一輪SPSS學習完成之后&#xff0c;本人又開始了新教材《交通安全分析》的學習 #整理過程不易&#xff0c;喜歡UP就點個免費的關注趴 #本期內容接上一期13筆記 當天學習筆記整理 5城市主干道交…

Avalonia中的Property

文章目錄 前言附加屬性樣式屬性直接屬性總結前言 在WPF中, 是可以定義依賴屬性和附加屬性的 依賴屬性: 當您需要單獨創建控件時, 并且希望控件的某個部分能夠支持數據綁定時, 你則可以使用到依賴屬性。 通過DependencyProperty.Register注冊依賴屬性 附加屬性: 這種情況很多,…

【原理+使用】DeepCache: Accelerating Diffusion Models for Free

論文&#xff1a;arxiv.org/pdf/2312.00858 代碼&#xff1a;horseee/DeepCache: [CVPR 2024] DeepCache: Accelerating Diffusion Models for Free (github.com) 介紹 DeepCache是一種新穎的無訓練且幾乎無損的范式&#xff0c;從模型架構的角度加速了擴散模型。DeepCache利…

【因果推斷】優惠券政策對不同店鋪的影響

這次依然是用之前rossmann店鋪競賽的數據集。 之前的數據集探索處理在這里已經做過了&#xff0c;此處就不再贅述了CSDN鏈接 數據集地址&#xff1a;競賽鏈接 這里探討數據集中Promo2對于每家店鋪銷售額的影響。其中&#xff0c;Promo2是一個基于優惠券的郵寄活動&#xff0c;發…

SQL Server 2022 中的 Tempdb 性能改進非常顯著

無論是在我的會話中還是在我寫的博客中&#xff0c;Tempdb 始終是我的話題。然而&#xff0c;當談到 SQL Server 2022 中引入的重大性能變化時&#xff0c;我從未如此興奮過。他們解決了我們最大的性能瓶頸之一&#xff0c;即系統頁面閂鎖并發。 在 SQL Server 2019 中&#x…

三級_網絡技術_06_IP地址規劃技術

1.下列對IPv6地址表示中&#xff0c;錯誤的是()。 AE1A:0:0:0:0:A2:F3:FE08:5 E3E0::1A90:FE:0:4CA2:9C5C E2C1::0:0:81/48 :E140:1A5C:0:05D9 2.下列對IPv6地址表示中&#xff0c;錯誤的是()。 1F1A:0:0:0:0:A2:F3:FE08:3 E360::2A90:FE:0:4CA2:9C5A B2C1::0:0:81/48 …

Go語言如何入門,有哪些書推薦?

Go 語言之所以如此受歡迎&#xff0c;其編譯器功不可沒。Go 語言的發展也得益于其編譯速度夠快。 對開發者來說&#xff0c;更快的編譯速度意味著更短的反饋周期。大型的 Go 應用程序總是能在幾秒鐘之 內完成編譯。而當使用 go run編譯和執行小型的 Go 應用程序時&#xff0c;其…

如何利用Github Action實現自動Merge PR

我是螞蟻背大象(Apache EventMesh PMC&Committer)&#xff0c;文章對你有幫助給項目rocketmq-rust star,關注我GitHub:mxsm&#xff0c;文章有不正確的地方請您斧正,創建ISSUE提交PR~謝謝! Emal:mxsmapache.com 1. 引言 GitHub Actions 是 GitHub 提供的一種強大而靈活的自…

(九)Docker 的網絡通信

文章目錄 1、常用模式2、概念了解2.1、Docker 內容器的通信2.2、宿主機和 Docker容器的通信 1、常用模式 直接使用 端口映射&#xff0c;宿主機:宿主機端口->容器 ip:容器端口端口映射宿主機 hosts 映射&#xff0c;首先在宿主機 /etc/hosts文件中增加 宿主機 ip:容器 host…

Mojo: 輕量級Perl框架的魔力

在Perl的豐富生態系統中&#xff0c;Mojolicious&#xff08;簡稱Mojo&#xff09;是一個輕量級的實時Web框架&#xff0c;以其極簡的API和強大的功能而受到開發者的喜愛。Mojo不僅適用于構建高性能的Web應用&#xff0c;還可以用來編寫簡單的腳本和命令行工具。本文將帶你探索…

SSM中小學生信息管理系統 -計算機畢業設計源碼02677

摘要 隨著社會的發展和教育的進步&#xff0c;中小學生信息管理系統成為學校管理的重要工具。本論文旨在基于SSM框架&#xff0c;采用Java編程語言和MySQL數據庫&#xff0c;設計和開發一套高效、可靠的中小學生信息管理系統。中小學生信息管理系統以學生為中心&#xff0c;通過…

赤壁之戰的烽火臺 - 觀察者模式

“當烽火連三月&#xff0c;家書抵萬金&#xff1b;設計模式得其法&#xff0c;千軍如一心。” 在波瀾壯闊的三國歷史長河中&#xff0c;赤壁之戰無疑是一場改變乾坤的重要戰役。而在這場戰役中&#xff0c;一個看似簡單卻至關重要的系統發揮了巨大作用——烽火臺。這個古老的…

UNION、UNION ALL、INTERSECT、MINUS

UNION、UNION ALL、INTERSECT、MINUS&#xff1f; 說明 UNION&#xff1a;對兩個結果集進行并集操作&#xff0c;不包括重復行&#xff0c;同時進行默認規則的排序&#xff1b;IUNION ALL&#xff1a;對兩個結果集進行并集操作&#xff0c;包括重復行&#xff0c;不進行排序&am…