chore(i18n): sync translations with latest source changes (chunk 7/8, 8 changes)

This commit is contained in:
localizeflow[bot] 2026-01-30 01:17:36 +00:00
parent 51964ff48a
commit 926e7f8dc3
8 changed files with 5812 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
# 使用遷移學習對牛津寵物進行分類
來自 [AI 初學者課程](https://github.com/microsoft/ai-for-beginners) 的實驗作業。
## 任務
假設你需要開發一個寵物托育應用程式,用來記錄所有的寵物。這樣的應用程式其中一個很棒的功能就是能夠透過照片自動辨識寵物的品種。在這次作業中,我們將使用遷移學習來對 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 寵物數據集中的真實寵物圖片進行分類。
## 數據集
我們將使用原始的 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 寵物數據集,該數據集包含 35 種不同品種的狗和貓。
要下載數據集,請使用以下程式碼片段:
```python
!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
!tar xfz images.tar.gz
!rm images.tar.gz
```
## 啟動筆記本
開始實驗,打開 [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb)
## 重點
遷移學習和預訓練網絡使我們能夠相對輕鬆地解決現實世界中的圖像分類問題。然而,預訓練網絡在處理相似類型的圖像時效果很好,但如果我們開始分類非常不同的圖像(例如醫學影像),結果可能會大幅下降。
**免責聲明**
本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,100 @@
# 自動編碼器
在訓練 CNN 時,其中一個問題是需要大量的標註數據。以圖像分類為例,我們需要將圖像分成不同的類別,這是一項需要手動完成的工作。
## [課前測驗](https://ff-quizzes.netlify.app/en/ai/quiz/17)
然而,我們可能希望使用原始(未標註)的數據來訓練 CNN 特徵提取器,這被稱為**自監督學習**。在這種情況下,我們使用訓練圖像作為網絡的輸入和輸出。**自動編碼器**的主要思想是,我們會有一個**編碼器網絡**,將輸入圖像轉換為某種**潛在空間**(通常是一個較小尺寸的向量),然後通過**解碼器網絡**來重建原始圖像。
> ✅ [自動編碼器](https://wikipedia.org/wiki/Autoencoder) 是“一種用於學習未標註數據的高效編碼的人工神經網絡。”
由於我們訓練自動編碼器的目的是捕捉原始圖像中的盡可能多的信息以進行準確的重建,網絡會嘗試找到最佳的**嵌入**方式來捕捉輸入圖像的含義。
![自動編碼器示意圖](../../../../../translated_images/zh-MO/autoencoder_schema.5e6fc9ad98a5eb61.webp)
> 圖片來源:[Keras 博客](https://blog.keras.io/building-autoencoders-in-keras.html)
## 自動編碼器的使用場景
雖然重建原始圖像本身似乎並不具有直接的用途,但在以下幾個場景中,自動編碼器非常有用:
* **降低圖像的維度以進行可視化**或**訓練圖像嵌入**。通常,自動編碼器比 PCA主成分分析效果更好因為它考慮了圖像的空間特性和層次特徵。
* **去噪**,即去除圖像中的噪點。由於噪點包含了大量無用的信息,自動編碼器無法將所有噪點都嵌入到相對較小的潛在空間中,因此它只捕捉圖像的重要部分。在訓練去噪器時,我們以原始圖像為目標,並使用人工添加噪點的圖像作為自動編碼器的輸入。
* **超分辨率**,即提高圖像的分辨率。我們以高分辨率圖像為目標,並使用低分辨率圖像作為自動編碼器的輸入。
* **生成模型**。一旦我們訓練了自動編碼器,解碼器部分可以用來從隨機潛在向量生成新物體。
## 變分自動編碼器 (VAE)
傳統的自動編碼器以某種方式降低輸入數據的維度,從而找出輸入圖像的重要特徵。然而,潛在向量通常沒有太多的意義。換句話說,以 MNIST 數據集為例,判斷哪些數字對應於不同的潛在向量並不容易,因為相近的潛在向量不一定對應於相同的數字。
另一方面,為了訓練*生成*模型,了解潛在空間的結構會更有幫助。這一想法引導我們走向**變分自動編碼器** (VAE)。
VAE 是一種自動編碼器,它學習預測潛在參數的*統計分佈*,即所謂的**潛在分佈**。例如,我們可能希望潛在向量呈正態分佈,具有某個均值 z<sub>mean</sub> 和標準差 z<sub>sigma</sub>(均值和標準差均為某個維度 d 的向量。VAE 的編碼器學習預測這些參數,然後解碼器從該分佈中取一個隨機向量來重建物體。
總結如下:
* 從輸入向量中,我們預測 `z_mean``z_log_sigma`(我們預測的是標準差的對數,而不是標準差本身)
* 從分佈 N(z<sub>mean</sub>,exp(z<sub>log_sigma</sub>)) 中抽樣一個向量 `sample`
* 解碼器嘗試使用 `sample` 作為輸入向量來解碼原始圖像
<img src="../../../../../translated_images/zh-MO/vae.464c465a5b6a9e25.webp" width="50%">
> 圖片來源:[這篇博客文章](https://ijdykeman.github.io/ml/2016/12/21/cvae.html),作者 Isaak Dykeman
變分自動編碼器使用一個由兩部分組成的複雜損失函數:
* **重建損失**是顯示重建圖像與目標圖像有多接近的損失函數可以是均方誤差MSE。這與普通自動編碼器的損失函數相同。
* **KL 損失**,確保潛在變量分佈接近正態分佈。它基於 [Kullback-Leibler 散度](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) 的概念——一種估算兩個統計分佈相似程度的度量。
VAE 的一個重要優勢是它使生成新圖像變得相對容易,因為我們知道從哪個分佈中抽樣潛在向量。例如,如果我們在 MNIST 上訓練了具有 2D 潛在向量的 VAE我們可以調整潛在向量的分量來生成不同的數字
<img alt="vaemnist" src="../../../../../translated_images/zh-MO/vaemnist.cab9e602dc08dc50.webp" width="50%"/>
> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com)
觀察圖像如何相互融合,當我們從潛在參數空間的不同部分獲取潛在向量時。我們還可以將該空間可視化為 2D
<img alt="vaemnist cluster" src="../../../../../translated_images/zh-MO/vaemnist-diag.694315f775d5d666.webp" width="50%"/>
> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com)
## ✍️ 練習:自動編碼器
在以下筆記本中學習更多關於自動編碼器的內容:
* [TensorFlow 中的自動編碼器](AutoencodersTF.ipynb)
* [PyTorch 中的自動編碼器](AutoEncodersPyTorch.ipynb)
## 自動編碼器的特性
* **數據特定** - 它們僅適用於訓練時使用的圖像類型。例如,如果我們在花卉上訓練超分辨率網絡,它在肖像上效果可能不佳。這是因為網絡可以通過從訓練數據集中學到的特徵中提取細節來生成高分辨率圖像。
* **有損** - 重建的圖像與原始圖像並不完全相同。損失的性質由訓練期間使用的*損失函數*定義。
* 適用於**未標註數據**
## [課後測驗](https://ff-quizzes.netlify.app/en/ai/quiz/18)
## 結論
在本課中,您學習了 AI 科學家可用的各種自動編碼器類型。您學習了如何構建它們,以及如何使用它們來重建圖像。您還學習了 VAE 以及如何使用它生成新圖像。
## 🚀 挑戰
在本課中,您學習了如何將自動編碼器應用於圖像。但它們也可以應用於音樂!查看 Magenta 項目的 [MusicVAE](https://magenta.tensorflow.org/music-vae) 項目,它使用自動編碼器來學習重建音樂。使用該庫進行一些[實驗](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb),看看您能創造出什麼。
## [課後測驗](https://ff-quizzes.netlify.app/en/ai/quiz/16)
## 回顧與自學
參考以下資源,了解更多關於自動編碼器的內容:
* [在 Keras 中構建自動編碼器](https://blog.keras.io/building-autoencoders-in-keras.html)
* [NeuroHive 博客文章](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)
* [變分自動編碼器解析](https://kvfrans.com/variational-autoencoders-explained/)
* [條件變分自動編碼器](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
## 作業
在 [使用 TensorFlow 的筆記本](AutoencodersTF.ipynb) 的末尾,您會找到一個“任務”——將其作為您的作業。
---

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,101 @@
# 生成對抗網絡
在上一節中,我們學習了**生成模型**能夠生成與訓練數據集中的圖像相似的新圖像的模型。VAE 是生成模型的一個很好的例子。
## [課前測驗](https://ff-quizzes.netlify.app/en/ai/quiz/19)
然而,如果我們嘗試生成一些真正有意義的東西,比如一幅合理分辨率的畫作,使用 VAE我們會發現訓練效果並不理想。針對這種情況我們需要了解另一種專門針對生成模型的架構——**生成對抗網絡**,簡稱 GAN。
GAN 的核心思想是使用兩個神經網絡相互對抗進行訓練:
<img src="../../../../../translated_images/zh-MO/gan_architecture.8f3a5ab62b8d5d69.webp" width="70%"/>
> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com)
> ✅ 一些術語:
> * **生成器**是一個網絡,它接收一些隨機向量,並生成圖像作為結果。
> * **判別器**是一個網絡,它接收一張圖像,並判斷該圖像是真實圖像(來自訓練數據集)還是由生成器生成的。它本質上是一個圖像分類器。
### 判別器
判別器的架構與普通的圖像分類網絡並無不同。最簡單的情況下,它可以是一個全連接分類器,但更常見的是使用[卷積網絡](../07-ConvNets/README.md)。
> ✅ 基於卷積網絡的 GAN 被稱為 [DCGAN](https://arxiv.org/pdf/1511.06434.pdf)
一個 CNN 判別器由以下層組成:幾個卷積+池化層(空間尺寸逐漸減小),以及一個或多個全連接層以獲得“特徵向量”,最後是一個二元分類器。
> ✅ 在這裡,“池化”是一種減少圖像尺寸的技術。“池化層通過將一層中神經元簇的輸出合併為下一層中的單個神經元來減少數據的維度。” - [來源](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers)
### 生成器
生成器稍微複雜一些。你可以將其視為一個反向的判別器。從一個潛在向量(代替特徵向量)開始,它有一個全連接層將其轉換為所需的尺寸/形狀,接著是反卷積+上採樣。這類似於[自編碼器](../09-Autoencoders/README.md)的*解碼器*部分。
> ✅ 由於卷積層是通過線性濾波器遍歷圖像來實現的,反卷積本質上與卷積相似,可以使用相同的層邏輯來實現。
<img src="../../../../../translated_images/zh-MO/gan_arch_detail.46b95fd366f8e543.webp" width="70%"/>
> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com)
### 訓練 GAN
GAN 被稱為**對抗性**,因為生成器和判別器之間存在持續的競爭。在這種競爭中,生成器和判別器都會改進,從而使網絡學習生成越來越好的圖像。
訓練分為兩個階段:
* **訓練判別器**。這個任務相對簡單:我們通過生成器生成一批圖像,標記為 0代表假圖像並從輸入數據集中取一批圖像標記為 1真實圖像。我們獲得一些*判別器損失*,並進行反向傳播。
* **訓練生成器**。這稍微複雜一些,因為我們無法直接知道生成器的期望輸出。我們將整個 GAN 網絡(由生成器和判別器組成)輸入一些隨機向量,期望結果為 1對應於真實圖像。然後我們凍結判別器的參數此步驟不希望判別器被訓練並進行反向傳播。
在此過程中,生成器和判別器的損失通常不會顯著下降。在理想情況下,它們應該呈現振盪,表明兩個網絡都在改進其性能。
## ✍️ 練習GANs
* [TensorFlow/Keras 的 GAN Notebook](GANTF.ipynb)
* [PyTorch 的 GAN Notebook](GANPyTorch.ipynb)
### GAN 訓練的問題
GAN 以訓練困難著稱。以下是一些常見問題:
* **模式崩塌**。這指的是生成器學會生成一個成功欺騙判別器的圖像,而不是生成多樣化的不同圖像。
* **對超參數的敏感性**。通常你會發現 GAN 根本無法收斂,然後突然通過降低學習率實現收斂。
* **保持生成器和判別器之間的平衡**。在許多情況下,判別器的損失可能會迅速降到零,導致生成器無法進一步訓練。為了解決這個問題,我們可以嘗試為生成器和判別器設置不同的學習率,或者在判別器損失已經很低時跳過判別器的訓練。
* **高分辨率訓練**。與自編碼器的問題類似,這個問題是由於重建太多層的卷積網絡導致的伪影。通常通過所謂的**漸進式增長**來解決,首先在低分辨率圖像上訓練幾層,然後“解鎖”或添加層。另一種解決方案是添加層之間的額外連接並同時訓練多個分辨率——詳情請參閱這篇[多尺度梯度 GANs 論文](https://arxiv.org/abs/1903.06048)。
## 風格遷移
GAN 是生成藝術圖像的一種絕佳方式。另一種有趣的技術是所謂的**風格遷移**,它將一張**內容圖像**重新繪製成不同的風格,應用來自**風格圖像**的濾鏡。
其工作原理如下:
* 我們從一張隨機噪聲圖像開始(或者從內容圖像開始,但為了便於理解,從隨機噪聲開始更容易)
* 我們的目標是創建一張圖像,使其同時接近內容圖像和風格圖像。這由兩個損失函數決定:
- **內容損失**基於 CNN 從當前圖像和內容圖像的某些層提取的特徵計算
- **風格損失**通過使用 Gram 矩陣在當前圖像和風格圖像之間進行巧妙計算(更多細節請參閱[示例 Notebook](StyleTransfer.ipynb)
* 為了使圖像更平滑並去除噪聲,我們還引入了**變異損失**,它計算相鄰像素之間的平均距離
* 主要的優化循環使用梯度下降(或其他優化算法)調整當前圖像以最小化總損失,總損失是所有三個損失的加權和。
## ✍️ 示例:[風格遷移](StyleTransfer.ipynb)
## [課後測驗](https://ff-quizzes.netlify.app/en/ai/quiz/20)
## 結論
在本課中,你學習了 GANs 及其訓練方法。你還了解了這類神經網絡可能面臨的特殊挑戰,以及一些解決這些挑戰的策略。
## 🚀 挑戰
使用你的圖像運行[風格遷移 Notebook](StyleTransfer.ipynb)。
## 回顧與自學
參考以下資源,了解更多關於 GANs 的信息:
* Marco Pasini[我一年訓練 GANs 的 10 個教訓](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)
* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN),一個值得考慮的 GAN 架構
* [在 Azure ML 上使用 GAN 創建生成藝術](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/)
## 作業
重新訪問本課程相關的兩個 Notebook 中的一個,並使用自己的圖像重新訓練 GAN。你能創造出什麼
---