理解機器學習中的潛在空間(Understanding Latent Space in Machine Learning)

在這里插入圖片描述

1、什么是潛在空間?

If I have to describe latent space in one sentence, it simply means a representation of compressed data.

如果我必須用一句話來描述潛在空間,它只是意味著壓縮數據的表示。

想象一個像上面所示的手寫數字(0-9)的大型數據庫。相同數字的手寫圖像(即3的圖像)與其他不同數字的圖像(即3s vs. 7s)相比,彼此之間最相似。但我們能訓練一個算法來識別這些相似性嗎?如何訓練?

如果你訓練了一個模型來對數字進行分類,那么你也訓練了這個模型來學習圖像之間的“結構相似性”。事實上,這就是模型如何首先能夠對數字進行分類——通過學習每個數字的特征。

如果這個過程看起來對你來說是“隱藏”的,那是因為它是。Latent,顧名思義就是“隱藏的”。

“潛在空間”的概念很重要,因為它的用途是“深度學習”的核心——學習數據的特征并簡化數據表示以尋找模式。

感興趣嗎?讓我們一點一點地分解潛在空間:

① 為什么我們在機器學習(ML)中壓縮數據?

數據壓縮(Data compression)被定義為使用比原始表示更少的比特對信息進行編碼的過程。這就像獲取一個19D數據點(需要19個值來定義唯一的點)并將所有信息壓縮到一個9D數據點中。

在這里插入圖片描述

通常情況下,數據在機器學習中被壓縮,以學習有關數據點的重要信息。讓我舉個例子來解釋。

假設我們想訓練一個模型來使用全卷積神經網絡(FCN)對圖像進行分類(即輸出給定數字圖像的數字)。當模型“學習”時,它只是學習每一層的特征(邊、角度等),并將特征組合歸因于特定的輸出。

但每次模型通過一個數據點進行學習時,圖像的維數首先會降低,然后才會最終增加(見下面的編碼器和瓶頸)。當維數降低時,我們認為這是一種有損壓縮。

在這里插入圖片描述

因為模型需要重建壓縮數據(參見解碼器),它必須學會存儲所有相關信息并忽略噪聲。這就是壓縮的價值——它允許我們去掉任何無關的信息,只關注最重要的特性。

這種“壓縮狀態”是我們數據的潛在空間表示。

② 空間(space)是什么意思?

你可能想知道為什么我們稱它為潛在空間。畢竟,壓縮的數據,乍一看,可能不會引起任何形式的“空間”。

但這里有個相似之處。

在這個相當簡單的例子中,假設我們的原始數據集是尺寸為5×5×1的圖像。我們將我們的潛在空間維度設置為3×1,這意味著我們壓縮的數據點是一個具有3維的向量。

在這里插入圖片描述

現在,每個壓縮數據點僅由3個數字唯一定義。這意味著我們可以在三維平面上繪制這些數據(一個數字是x,另一個是y,另一個是z)。

在這里插入圖片描述

這就是我們所指的“空間”。

Whenever we graph points or think of points in latent space, we can imagine them as coordinates in space in which points that are “similar” are closer together on the graph.

每當我們繪制點或考慮潛在空間中的點時,我們可以將它們想象為空間中的坐標,其中“相似”的點在圖上靠的更近。

一個自然出現的問題是,我們如何想象4D點或n維點的空間,甚至是非向量的空間(因為潛在空間表示不需要2或3維向量,而且通常不需要,因為太多的信息回丟失)。

令人不滿意的答案是,我們不能。我們是三維生物,無法理解n維空間(例如n>3)。然而,有一些工具,如t-SNE,可以將我們的高維潛在空間表征轉化為我們可以可視化的表征(2D或3D)。(參見下面可視化潛在空間部分。)

但是你可能會想,什么是“相似”的圖像,為什么降低數據的維數會使相似的圖像在空間上“更接近”?

③ 相似(similar)是什么意思?

如果我們看三張圖片,兩張椅子和一張桌子,我們會很容易地說出這兩張椅子的圖像是最相似的,而桌子和椅子的圖像是最不同的。

在這里插入圖片描述

但是,是什么讓這兩張椅子的圖像“更相似”呢?椅子具有可區分的特征(即靠背,沒有抽屜,腿之間的連接)。這些都可以被我們的模型通過學習邊、角度等模式來“理解”。

如前所述,這些特征被封裝在數據的潛在空間表示中。

因此,隨著維數的降低,與每張圖像不同的“無關”信息(例如椅子的顏色)從我們的潛在空間表示中“刪除”,因為每張圖像只有最重要的特征存儲在潛在空間表示中。

因此,當我們降低維度時,兩把椅子的表現變得不那么明顯,而更相似。如果我們想象它們在太空中,它們會“更接近”。

請注意,我在整篇文章中提到的“接近度”(“closeness”)度量是一個模棱兩可的術語,而不是確定的歐幾里得距離,因為空間中的距離有多種定義。

?

2、為什么潛在空間很重要?

潛在空間的概念絕對是有趣的。但它是如何使用的呢?我們什么時候用它?最重要的是,為什么?

我們會發現,潛在空間“隱藏”在許多我們最喜歡的圖像處理網絡、生成模型等中。

雖然潛在空間對大多數人來說是隱藏的,但在某些任務中,了解潛在空間不僅是有幫助的,而且是必要的。

① 表示學習(Representation Learning)

數據的潛在空間表示包含了表示原始數據點所需的所有重要信息。

這種表示(representation)必須表示原始數據的特征(features)。

換句話說,模型學習數據特征并簡化其表示以使其更易于分析

這是表示學習概念的核心,它被定義為一組技術,允許系統從原始數據中發現特征檢測或分類所需的表征(representations)。

在這個用例中,我們的潛在空間表示用于將更復雜形式的原始數據(如圖像、視頻)轉換為更簡單的表示,從而“更便于處理”和分析。

下面列出了表示學習的具體實例——Manifolds

潛在空間是流形學習(manifold learning)中的一個重要概念,是表示學習的一個分支。

數據科學中的流形(manifolds)可以理解為在某種程度上“相似”的數據組或子集。

這些在高維空間中通常難以察覺或模糊的相似性,一旦我們的數據在潛在空間中被表示出來,就可以被發現。

以下面的“swiss roll”為例。

在這里插入圖片描述

在3D中,我們知道存在相似數據點的組,但是用高維數據來描繪這樣的組要困難得多。

通過將數據的維度降低到2D,在這種情況下可以被認為是“潛在空間”表示,我們能夠更容易地區分數據集中的流形(相似數據組)。

要了解更多關于流形和流形學習的知識,我推薦以下文章:

  • Manifolds in Data Science — A Brief Overview:https://towardsdatascience.com/manifolds-in-data-science-a-brief-overview-2e9dde9437e5
  • 2.2. Manifold learning:https://scikit-learn.org/stable/modules/manifold.html?source=post_page-----de5a7c687d8d--------------------------------
② 自動編碼器和生成模型(Autoencoders and Generative Models)

一種常見的深度學習模型是自動編碼器,它可以操縱潛在空間中數據的“接近度”(“closeness”)——一種作為恒等函數(identity function)的神經網絡。換句話說,自動編碼器學會輸出輸入的任何內容。

在這里插入圖片描述

現在,如果你是這個領域的新手,你可能會想,為什么我們需要一個這樣的模型呢?如果它輸出的只是它自己,那么它似乎毫無用處……

雖然這個推理是有效的,但我們不太關心模型的輸出。我們更關心模型在這個過程中學到了什么。

當我們強迫一個模型成為恒等函數時,我們是在強迫它將所有數據的相關特征存儲在壓縮表示中,以便在壓縮形式中有足夠的信息,這樣模型就可以“準確”地重建它。聽起來是不是很熟悉?應該是這樣,因為這個壓縮表示是我們的潛在空間表示(上圖中的紅色塊)。

我們已經看到了如何在潛在空間中更容易發現模式,因為相似的數據點往往會聚集在一起,但我們還沒有看到如何從這個潛在空間中采樣點來生成“新”數據。

在這里插入圖片描述

在上面的例子中,我們可以通過對潛在空間進行插值來生成不同的面部結構,并使用我們的模型解碼器將潛在空間表示重建為與原始輸入具有相同尺寸的2D圖像。

什么是潛在空間插值?

假設我已經將前一節的椅子圖像壓縮為以下2D向量,[0.4, 0.5]和[0.45, 0.45]。假設桌子被壓縮到[0.6,0.75]。如果我要對潛在空間進行插值,我會對“椅子”簇和“桌子”簇之間的潛在空間中的點進行采樣。

我們可以將這些采樣的2D向量輸入到模型的解碼器中。瞧!我們得到的“新”圖像看起來像是椅子和桌子之間的變形。“新”加了引號,因為這些生成的圖像在技術上并不獨立于原始數據樣本。

下面是潛在空間中兩種椅子之間線性插值的例子。

在這里插入圖片描述

圖像生成仍然是一個活躍的研究領域,而潛在空間是一個必須理解的基本概念。請參閱以下文章,了解生成模型的更多用例,以及使用GAN(生成對抗網絡)的潛在空間差值的實際示例,GAN是另一個使用潛在空間表示的生成模型。

  • 18 Impressive Applications of Generative Adversarial Networks(GANs):https://machinelearningmastery.com/impressive-applications-of-generative-adversarial-networks/?source=post_page-----de5a7c687d8d--------------------------------
  • How to Explore the GAN Latent Space When Generating Faces:https://machinelearningmastery.com/how-to-interpolate-and-perform-vector-arithmetic-with-faces-using-a-generative-adversarial-network/?source=post_page-----de5a7c687d8d--------------------------------

?

3、潛在空間可視化

有關潛在空間可視化的更多信息,我推薦Hackernoon的文章,該文章提供了一個使用t-SNE算法在2D空間中可視化數字圖像之間相似性的實際示例。

  • Latent space visualization — Deep Learning bits #2:https://hackernoon.com/latent-space-visualization-deep-learning-bits-2-bd09a46920df?source=post_page-----de5a7c687d8d--------------------------------

?

4、主要收獲

潛在空間只是壓縮數據的一種表示,其中相似的數據點在空間中距離更近。

潛在空間對于學習數據特征和尋找用于分析的更簡單的數據表示非常有用。

我們可以通過分析潛在空間中的數據來理解數據點之間的模式或結構相似性,無論是通過流形還是聚類等。

我們可以在潛在空間中插入數據,并使用我們模型的解碼器來“生成”數據樣本。

我們可以使用t-SNE和LLE等算法來可視化潛在空間,這些算法將潛在空間轉換為2D或3D。

在了解潛在空間的過程中,我被這個“隱藏”但又必不可少的概念所吸引。我希望這篇文章能夠揭開潛在空間表示的神秘面紗,并提供我作為一個新手所渴望的對深度學習的“更深層次的理解”。

?

5、參考資料
  • Understanding Latent Space in Machine Learning:https://towardsdatascience.com/understanding-latent-space-in-machine-learning-de5a7c687d8d
  • 理解機器學習中的潛在空間:https://zhuanlan.zhihu.com/p/369946876
  • Manifolds in Data Science — A Brief Overview:https://towardsdatascience.com/manifolds-in-data-science-a-brief-overview-2e9dde9437e5
  • 2.2. Manifold learning:https://scikit-learn.org/stable/modules/manifold.html?source=post_page-----de5a7c687d8d--------------------------------
  • 18 Impressive Applications of Generative Adversarial Networks(GANs):https://machinelearningmastery.com/impressive-applications-of-generative-adversarial-networks/?source=post_page-----de5a7c687d8d--------------------------------
  • How to Explore the GAN Latent Space When Generating Faces:https://machinelearningmastery.com/how-to-interpolate-and-perform-vector-arithmetic-with-faces-using-a-generative-adversarial-network/?source=post_page-----de5a7c687d8d--------------------------------
  • Latent space visualization — Deep Learning bits #2:https://hackernoon.com/latent-space-visualization-deep-learning-bits-2-bd09a46920df?source=post_page-----de5a7c687d8d--------------------------------

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

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

相關文章

vue學習day01-vue的概念、創建Vue實例、插值表達式、響應式、安裝Vue開發者工具

1、vue的概念 Vue是一個用于構建用戶界面的漸進式 框架 (1)構建用戶界面:基于數據動態渲染頁面 (2)漸進式:循序漸進的學習 (3)框架:一條完整的項目解決方案&#xff…

GenAl如何改變 DevOps 中的軟件測試?

TestComplete 是一款自動化UI測試工具,這款工具目前在全球范圍內被廣泛應用于進行桌面、移動和Web應用的自動化測試。 TestComplete 集成了一種精心設計的自動化引擎,可以自動記錄和回放用戶的操作,方便用戶進行UI(用戶界面&…

RTK_ROS_導航(2):衛星圖查看

目錄 1. 基于MapViz的衛星圖查看 1. 基于MapViz的衛星圖查看 安裝 # 源碼安裝 mkdir -p RTK_VISION/src cd RTK_VISION/src git clone https://github.com/swri-robotics/mapviz.git --branchmelodic-eol sudo apt-get install ros-$ROS_DISTRO-mapviz ros-$ROS_DISTRO-mapviz-…

IP-GUARD如何禁止電腦自帶攝像頭

IP-GUARD可以通過設備管理模塊禁止USB接口,所以USB外置攝像頭很容易就可以禁止了。 但是筆記本自帶攝像頭無法禁止,配置客戶端策略如下: device_control_unknown_mode1 device_control_unphysical_mode3

純電車的OBD接口

盡管傳統汽車的OBD接口主要用于監控和報告排放數據,但純電動車輛作為零排放的交通工具,其設計初衷與需求截然不同。因此,從法律條文和車管所的規定來看,純電動車輛是否仍需配置OBD接口這一問題,確實值得探討。理論上&a…

ABAP中ARFC_GET_TID函數詳細的使用方法

在ABAP中,ARFC_GET_TID 函數模塊用于以十六進制形式返回終端的IP地址。這個功能在需要獲取當前會話或終端的網絡地址信息時非常有用,比如在日志記錄、安全審計或網絡診斷等場景中。 詳細使用方法 調用函數模塊 ARFC_GET_TID 函數的調用通常很直接&…

記一次 Qt installer framework安裝程序過程中 安裝驅動依賴

在installscript.qs 文件中該函數添加exe 依賴程序放置位置

Spring @Value獲取數組、集合、map等不同結構方法

Spring 架構中,可以使用Value注解從配置文件或命令行參數中獲取集合數據。 各種示例 獲取基礎類型 當沒有配置時,可以設置默認值。無默認值時會拋出空值異常。 Value("${lizz.timeout:3000}")private int timeout;Value("${lizz.key:…

Python28-11 CatBoost梯度提升算法

CatBoost(Categorical Boosting)是由Yandex(一家俄羅斯互聯網企業,旗下的搜索引擎曾在俄國內擁有逾60%的市場占有率,同時也提供其他互聯網產品和服務)開發的一種基于梯度提升的機器學習算法。CatBoost特別擅長處理類別特征&#x…

什么是ThingsKit物聯網平臺?

在信息化時代的浪潮中,物聯網(IoT)作為新一代信息技術的核心,已經逐漸滲透到我們生活的方方面面。而在這個大背景下,Thingskit物聯網平臺以其獨特的技術優勢和應用場景,成為了物聯網領域的一顆璀璨明星。本…

AI和人工智能是啥關系?

AI(人工智能)與通用人工智能(AGI)是人工智能領域中的兩個重要概念,它們在定義、技術基礎以及應用領域等方面有所區別。人工智能(AI),是指使計算機和其他機器模擬人類智能的技術&…

3.flink架構

目錄 概述 概述 Flink是一個分布式的帶有狀態管理的計算框架,為了執行流應用程序,可以和 Hadoop YARN 、K8s 進行整合,當然也可以是一個 standalone 。 官方地址:速遞 k8s 是未來的一種趨勢,對資源管控能力強。

Windows 控制中心在哪里打開,七種方法教會你

在 Windows 操作系統中,控制中心的概念可能稍有些混淆,因為 Windows 通常使用“控制面板”這一術語來指代用于配置系統設置和更改硬件及軟件設置的中心區域。 不過,隨著 Windows 的更新,微軟也在逐步將一些設置遷移到“設置”應用…

關于Linux的操作作業!24道題

🏆本文收錄于「Bug調優」專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&&…

js如何要讓一個對象繼承另一個對象的原型屬性和方法

js如何要讓一個對象繼承另一個對象的原型屬性和方法 1、使用 Object.create() const parent {greet: function() {console.log("Hello from parent!");} };const child Object.create(parent); child.greet(); // 輸出: Hello from parent!2、使用 proto 屬性 …

【算法】貪婪算法介紹及實現方法

貪婪算法簡介 貪婪算法(Greedy Algorithm)是一種在每一步選擇中都采取當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是全局最好或最優的算法。貪婪算法通常用于解決優化問題,如最小化成本、最大…

Tomcat打破雙親委派模型的方式

文章目錄 1、前言2、標準的雙親委派模型3、Tomcat的類加載器架構4、Tomcat打破雙親委派模型的方式5、總結 1、前言 雙親委派模型是一種類加載機制,它確保了類加載器層次結構中的父加載器先于子加載器嘗試加載類。這種機制有助于防止類的重復加載和類之間的不兼容。…

MySQL數據庫基本操作-DDL和DML

1. DDL解釋 DDL(Data Definition Language),數據定義語言,該語言部分包括以下內容: 對數據庫的常用操作對表結構的常用操作修改表結構 2. 對數據庫的常用操作 功能SQL查看所有的數據庫show databases;查看有印象的數據庫show d…

16 - Python語言進階

Python語言進階 數據結構和算法 算法:解決問題的方法和步驟 評價算法的好壞:漸近時間復雜度和漸近空間復雜度。 漸近時間復雜度的大O標記: - 常量時間復雜度 - 布隆過濾器 / 哈希存儲 - 對數時間復雜度 - 折半查找(二分查找&am…

關于TCP的三次握手流程

三次握手流程 第一次握手:客戶端向服務端發起建立連接請求,客戶端會隨機生成一個起始序列號x,客戶端向服務端發送的字段包含標志位SYN1,序列號segx。第一次握手后客戶端的狀態為SYN-SENT。此時服務端的狀態為LISTEN 第二次握手&…