AutoEncoder和 Denoising AutoEncoder學習筆記

參考:
【1】 https://lilianweng.github.io/posts/2018-08-12-vae/

寫在前面:
只是直覺上的認識,并沒有數學推導。后面會寫一篇(抄)大一統文章(概率角度理解為什么AE要選擇MSE Loss)

TOC

  • 1 AutoEncoder
  • 2 Denoising AutoEncoder

1 AutoEncoder

在這里插入圖片描述
AE實際上是一個壓縮模型,它通過將輸入 x x x傳進encoder將圖像壓縮到隱式特征(latant representation),然后再通過decoder輸出 x ′ x' x,試圖重建出 x x x。既重建公式為該兩個變量的均方差損失:
L = ∣ ∣ x ? x ′ ∣ ∣ 2 = 1 N ∑ i = 1 N ( x i ? x ′ i ) 2 L=||x-x'||^2=\frac{1}{N}\sum_{i=1}^N(x^i -x'^i)^2 L=∣∣x?x2=N1?i=1N?(xi?xi)2

如果成功訓練好一個AE,那么encoder就可以說能正確提取出輸入 x x x的重要特征,而decoder也可以根據這些重要特征還原出與輸入 x x x相近的 x ′ x' x

但AE僅僅是在學習等式函數 x = x ′ x=x' x=x,所以很容易就過擬合了(神經網絡有強大的擬合函數的能力),過擬合之后那么其僅對訓練集數據表現很好,對未知數據的表現就一塌糊涂了。

2 Denoising AutoEncoder

在這里插入圖片描述
DAE相當于該模型上了強度,與其給你看完整的東西,不如我遮蓋一部分,讓你猜這部分是什么,然后將這個東西還原出來(人類視覺方面,如果遮蓋了某個東西的一部分,大概率我們還是能想象出來的)

輸入到encoder的數據就由 x x x,變為 x ~ i ~ M D ( x ~ i ∣ x i ) \tilde x^i \sim M_D(\tilde x^i|x^i) x~iMD?(x~ixi),其中 x ~ \tilde x x~表示被破壞的,或者被噪聲污染過后的 x x x M D M_D MD?表示噪聲的隨即映射分布,或者被隨機破壞(置0)的每個像素上的概率。總之就是這么一回事。

我們可以理解為,當一部分像素被破壞之后,對于圖像這種高維輸入且高度冗余的數據,模型就要根據其他的維度去預測損失的維度的數據,就不再是去過擬合一個維度,這就構建了一個很好的學習到魯棒隱式特征的基礎。
【一個不恰當的例子:比如看到1、2、3,AE就記住了1、2、3的特征,那么給數據1、3、4,那么它可能就還原不出4。但是看到1、2、_,GT為1、2、3,那么模型可能就會根據1、2去推理出3(比如1+2=3),那么給出數據1、3、4,對于4,模型也有能力根據1、3去推出,學習到了某些加法操作的特征】

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

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

相關文章

1907_Arm Cortex-M3的基本了解

1907_Arm Cortex-M3的基本了解 全部學習匯總: g_arm_cores: ARM內核的學習筆記 (gitee.com) 我發現Arm Coretex-M3有一個專門的DataSheet,看起來這個的確是被當做了一個設計的產品來對待的。正好,基于這個文件來看看M3具備哪些基本的特性&…

GO—變量

Go語言是靜態類型語言,因此變量(variable)是有明確類型的,編譯器也會檢查變量類型的正確性。 我們從計算機系統的角度來講,變量就是一段或者多段內存,用于存儲數據 1.1 標準格式 var 變量名 變量類型 1 …

vue 使用vue-scroller 列表滑動到底部加載更多數據

安裝插件 npm install vue-scroller -dmain.js import VueScroller from vue-scroller Vue.use(VueScroller)<template><div class"wrap"><div class"footer"><div class"btn" click"open true">新增</d…

多層控制上身姿態的方法

1選擇要施加的clip并調出層控制窗口 2點選motion層控制 3選擇并復制pose&#xff08;注意在哪個層中選中的情況下復制的是那個層中的pose&#xff09; 4在新建層中分別選擇頭幀粘貼pose和尾幀粘貼pose因是上半身&#xff0c;因此mask中把下半身去掉即變灰

提升工作能力的方法

1.接受工作&#xff0c;只問標準 2.請示工作&#xff0c;必帶方案&#xff1b; 3.匯報工作&#xff0c;突出成果&#xff1b; 4.分享工作&#xff0c;細說流程&#xff1b; 5.復盤工作&#xff0c;總結SOP 如果能這么做&#xff0c;那將是一個非常通透的高手&#xff0c;所以高…

如何使用 takeUntil RxJS 操作符來聲明性地管理訂閱

簡介 Angular 處理取消訂閱可觀察對象的操作&#xff0c;比如從 HTTP 服務返回的可觀察對象或者使用 async 管道時。然而&#xff0c;對于其他情況&#xff0c;管理所有訂閱并確保取消長期存在的訂閱可能會變得困難。而且&#xff0c;取消大部分訂閱的策略也會帶來自己的問題。…

2024年春招小紅書前端實習面試題分享

文章目錄 導文面試重點一、方便介紹一下&#xff0c;你之前實習都做了什么嘛&#xff1f;二、 可以講一下封裝組件相關邏輯嘛&#xff1f;1. 為什么要封裝組件&#xff1f;2. 封裝組件的步驟3. 封裝組件的原則4. 組件的復用和擴展5. 組件的維護和文檔 三、項目的性能優化你有什…

python數據結構學習系列

在Python編程中&#xff0c;數據結構是組織、管理和存儲數據的方式&#xff0c;以便能夠有效地執行特定的操作。數據結構的選擇對于算法的效率、代碼的清晰度和可維護性都至關重要。以下是對Python中常見數據結構的學習總結。 列表&#xff08;List&#xff09; 列表是Python中…

selenium測試工具用來模擬用戶瀏覽器的操作

執行JS的類庫&#xff1a;execjs&#xff0c;PyV8&#xff0c;selenium&#xff0c;node pip list pip install selenium pip install xlrd pip install xlwt pip install PyExecJS pip install xlutils selenium測試工具可以用來模擬用戶瀏覽器的操作&#xff0c;其支持的瀏覽…

能當老板的AI大模型多智體框架MetaGPT自動完成項目

能當老板的AI大模型多智體框架MetaGPT自動完成項目。 MetaGPT是一個創新的多智能體框架&#xff0c;它結合了大語言模型&#xff08;LLM&#xff09;和多智能體協作系統&#xff0c;旨在通過模擬人類工作流程來解決復雜問題。這個框架的核心在于將標準化操作程序&#xff08;SO…

Redis學習路徑(構建體系)

學習路徑 掌握數據類型&#xff08;分析底層數據結構&#xff09;和緩存的基本使用 (理論使用) 掌握 redis 實現高性能&#xff0c;高可靠、高可用技術 &#xff08;理論&#xff09;學習redis源代碼底層實現 (底層實現) 先來一個引言&#xff0c;比較宏觀的角度&#xf…

Linux常用操作命令

Linux作為一種廣泛應用的操作系統&#xff0c;其強大的命令行工具使得用戶能夠高效地管理文件、處理數據和監控系統。在本文中&#xff0c;我們將深入 探討一些常用的Linux操作命令及其用法。 ls&#xff1a;列出當前目錄下的文件和子目錄。 ls [選項] [文件或目錄]常用選項&am…

Python實現MACD工具判斷信號:股票技術分析的工具系列(1)

Python實現MACD工具判斷信號&#xff1a;股票技術分析的工具系列&#xff08;1&#xff09; 介紹代碼rolling函數介紹核心代碼計算指數移動平均值計算MACD指標 完整代碼 介紹 先看看官方介紹&#xff1a; MACD (平滑異同平均線&#xff09; 指標說明 DIF線&#xff1a;收盤價短…

#單片機(TB6600驅動42步進電機)

1.IDE:keil 2.設備:保密 3.實驗&#xff1a;使用單片機通過普通IO口控制TB6600驅動42步進電機 4.時序圖&#xff1a; TB6600 ENA、ENA-DIR-、DIRPUL-、PULB-、BA、A-VCC、GND使能電機&#xff08;直接懸空不接&#xff09;方向脈沖輸入&#xff08;普通IO口模擬即可&#xff…

Linux系統編程7--線程 寫個測試腳本

Linux系統編程7–線程_寫個測試腳本 參考博客&#xff1a; Linux多線程編程初探 - 峰子_仰望陽光 - 博客園 (cnblogs.com) 我的PC是8核*16進程&#xff0c;所以在固定的時間點&#xff0c;我可以同時運行8 * 16的進程&#xff0c;更多的線程&#xff08;任務管理器&#xff09;…

【學習筆記】Diffusion擴散模型

導讀 Diffusion models是現在人工智能領域最火的方向之一&#xff0c;并引爆了AIGC領域&#xff0c;一大批創業公司隨之誕生。 AIGC&#xff08;AI-Generated Content&#xff09;&#xff1a;人工智能創作內容的生產方式。 擴散模型Diffusion 擴散模型Duffison的訓練過程 …

等概率事件算法

1等概率的生成(0-8)范圍內的正整數 // Math.random 數據范圍[0,1) 且 是 等概率的產生隨機數 // 應用&#xff1a; // 1.生成等概率的整數&#xff08;等概率的生成(0-8)范圍內的正整數 int value (int) (Math.random() * 9); System.out.println("value "…

非阻塞實現高效鍵盤掃描功能(STM32F4XX)

目錄 概述 1 原理分析 1.1 技術背景 1.2 系統硬件 1.3 STM32 IO&#xff08;輸入模式&#xff09;寄存器分析 1.3.1 輸入IO的功能描述 1.3.2 輸入配置 1.3.3 GPIO 寄存器&#xff08;輸入模式相關&#xff09; 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

springboot,druid動態數據源切換

關鍵字&#xff1a;springboot&#xff0c;druid數據庫連接池&#xff0c;兩個數據源&#xff08;可以切換成多個&#xff09;&#xff0c;事務管理 關于druid簡介傳送門&#xff1a;https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具體分為四…

Doris【數據模型】

一、數據模型簡介 在 Doris 中&#xff0c;數據以表&#xff08;Table&#xff09;的形式進行邏輯上的描述。 一張表包括行&#xff08;Row&#xff09;和列&#xff08;Column&#xff09;。Row 即用戶的一行數據。Column 用于描述一行數據中不同的字段。 Column 可以分為兩…