瞭解自編碼器

原文鏈接:https://www.learnopencv.com/understanding-autoencoders-using-tensorflow-python/

附上一篇關於自偏碼器的論文:在Keras中構建自動編碼器

1.什麼是自編碼器?
自動編碼器是一種無監督的機器學習算法,該算法將圖像作爲輸入並使用較少的位數來重建它。這聽起來像是圖像壓縮,但是自動編碼器和通用圖像壓縮算法之間的最大區別在於,在自動編碼器的情況下,壓縮是通過學習訓練數據集來實現的。當圖像類似於所使用的訓練集時,雖然可以實現合理的壓縮,但是自動編碼器的通用圖像壓縮器不佳;JPEG壓縮會做得更好。

自動編碼器在本質上類似於降維技術(例如主成分分析)。它們創建了一個空間,在其中保留了數據的重要部分,而刪除了非必要(或嘈雜)部分。
自動編碼器分爲兩部分:

  • 編碼器:這是網絡中將輸入壓縮爲更少位數的部分。這些較少位數表示的空間稱爲“潛在空間”,而最大壓縮點稱爲瓶頸。這些代表原始輸入的壓縮位統稱爲輸入的“編碼”。
  • 解碼器:這是網絡中使用圖像編碼重建輸入圖像的部分.

一個例子,以更好地理解該概念:
在這裏插入圖片描述
在上面的圖片中,展示了一種香草自動編碼器-一種具有一個隱藏層的2層自動編碼器。輸入和輸出層具有相同數量的神經元。我們將五個實數值輸入到自動編碼器中,該編碼器在瓶頸(中間層)處將其壓縮爲三個實數值。解碼器使用這三個實數值,嘗試重構我們作爲網絡輸入提供的五個實數值。

實際上,在輸入和輸出之間存在大量隱藏層。

有多種自動編碼器,例如稀疏自動編碼器,變分自動編碼器和降噪自動編碼器。在這篇文章中,我們將學習去噪自動編碼器。

2.去噪自動編碼器
在這裏插入圖片描述
去噪自動編碼器背後的想法是學習對噪聲具有魯棒性的表示(潛在空間)。我們將噪聲添加到圖像中,然後將此嘈雜的圖像作爲輸入輸入到我們的網絡中。自動編碼器的編碼器部分將圖像轉換爲保留手寫數字但消除噪聲的不同空間。稍後我們將看到,原始圖像是28 x 28 x 1圖像,而轉換後的圖像是7 x 7 x32。可以將7 x 7 x 32圖像視爲具有32個顏色通道的7 x 7圖像。

使用Tensorflow(Python)瞭解自動編碼器
阿迪亞·夏瑪(Aditya Sharma)
2017年11月15日 9條留言
這篇文章是“面向初學者的深度學習”系列的一部分,該系列包含以下教程:

神經網絡:初學者的30,000英尺視圖
深度學習框架的安裝(具有CUDA支持的Tensorflow和Keras)
Keras簡介
瞭解前饋神經網絡
使用前饋神經網絡進行圖像分類
卷積神經網絡的圖像識別
瞭解激活功能
使用Tensorflow理解自動編碼器
使用Keras中的預訓練模型進行圖像分類
使用Keras中的預訓練模型進行轉移學習
在Keras中微調預訓練模型
還有更多。。。
在本文中,我們將學習深度學習中的自動編碼器。我們將以在MNIST手寫數字數據集上使用去噪自動編碼器爲例,展示一種實際的實現方式。此外,我們正在Tensorflow中共享該想法的實現。

1.什麼是自動編碼器?
自動編碼器是一種無監督的機器學習算法,該算法將圖像作爲輸入並使用較少的位數來重建它。這聽起來像是圖像壓縮,但是自動編碼器和通用圖像壓縮算法之間的最大區別在於,在自動編碼器的情況下,壓縮是通過學習訓練數據集來實現的。當圖像類似於所使用的訓練集時,雖然可以實現合理的壓縮,但是自動編碼器的通用圖像壓縮器不佳;JPEG壓縮會做得更好。

自動編碼器在本質上類似於降維技術(例如主成分分析)。它們創建了一個空間,在其中保留了數據的重要部分,而刪除了非必要(或嘈雜)部分。

自動編碼器分爲兩部分

編碼器:這是網絡中將輸入壓縮爲更少位數的部分。這些較少位數表示的空間稱爲“潛在空間”,而最大壓縮點稱爲瓶頸。這些代表原始輸入的壓縮位統稱爲輸入的“編碼”。
解碼器:這是網絡中使用圖像編碼重建輸入圖像的部分。
讓我們看一個例子,以更好地理解該概念。

自動編碼器
圖:2層自動編碼器
在上面的圖片中,我們展示了一種香草自動編碼器-一種具有一個隱藏層的2層自動編碼器。輸入和輸出層具有相同數量的神經元。我們將五個實數值輸入到自動編碼器中,該編碼器在瓶頸(中間層)處將其壓縮爲三個實數值。解碼器使用這三個實數值,嘗試重構我們作爲網絡輸入提供的五個實數值。

實際上,在輸入和輸出之間存在大量隱藏層。

有多種自動編碼器,例如稀疏自動編碼器,變分自動編碼器和降噪自動編碼器。

2.去噪自動編碼器
去噪自動編碼器:
在這裏插入圖片描述

去噪自動編碼器背後的想法是學習對噪聲具有魯棒性的表示(潛在空間)。我們將噪聲添加到圖像中,然後將此嘈雜的圖像作爲輸入輸入到我們的網絡中。自動編碼器的編碼器部分將圖像轉換爲保留手寫數字但消除噪聲的不同空間。稍後我們將看到,原始圖像是28 x 28 x 1圖像,而轉換後的圖像是7 x 7 x32。可以將7 x 7 x 32圖像視爲具有32個顏色通道的7 x 7圖像。
然後,網絡的解碼器部分會從此7 x 7 x 32圖像中重建原始圖像,瞧,噪聲消失了!這種魔術是如何發生的?
在訓練過程中,我們定義了一個損失(成本函數)以最小化重建圖像與原始無噪聲圖像之間的差異。換句話說,我們學習了7 x 7 x 32的無噪聲空間。

去噪自動編碼器的實現:

構建網絡:圖像是尺寸爲28 x 28 x的矩陣。我們將圖像重新塑形爲尺寸爲28 x 28 x 1,將尺寸調整後的圖像矩陣轉換爲數組,在0和1之間重新縮放,並將其作爲輸入饋送到網絡。編碼器將28 x 28 x 1圖像轉換爲7 x 7 x 32圖像。您可以將此7 x 7 x 32圖像視爲1568(因爲7 x 7 x 32 = 1568)維空間中的一個點。1568維空間稱爲瓶頸或潛在空間。該架構如下圖所示。
在這裏插入圖片描述
解碼器與編碼器完全相反。它將1568維矢量轉換回28 x 28 x 1圖像。我們稱此輸出圖像爲原始圖像的“重建”。解碼器的結構如下所示。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章