Skip to content

Commit 51964ff

Browse files
committed
chore(i18n): sync translations with latest source changes (chunk 6/8, 21 changes)
1 parent b0d8fb9 commit 51964ff

File tree

21 files changed

+20981
-0
lines changed

21 files changed

+20981
-0
lines changed

translations/zh-MO/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb

Lines changed: 13889 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# 神經網路框架
2+
3+
正如我們已經學到的,要能有效地訓練神經網路,我們需要做到以下兩件事:
4+
5+
* 操作張量,例如進行乘法、加法,並計算一些函數如 sigmoid 或 softmax
6+
* 計算所有表達式的梯度,以便執行梯度下降優化
7+
8+
## [課前測驗](https://ff-quizzes.netlify.app/en/ai/quiz/9)
9+
10+
雖然 `numpy` 庫可以完成第一部分,但我們需要某種機制來計算梯度。在[我們的框架](../04-OwnFramework/OwnFramework.ipynb)中,我們在上一節中開發的框架需要手動在 `backward` 方法中編寫所有導數函數,該方法負責反向傳播。理想情況下,一個框架應該能讓我們計算*任何表達式*的梯度。
11+
12+
另一個重要的事情是能夠在 GPU 或其他專用計算單元(例如 [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit))上執行計算。深度神經網路的訓練需要*大量*的計算,能夠在 GPU 上並行化這些計算非常重要。
13+
14+
> ✅ 「並行化」這個術語指的是將計算分配到多個設備上。
15+
16+
目前,最流行的兩個神經網路框架是:[TensorFlow](http://TensorFlow.org)[PyTorch](https://pytorch.org/)。這兩者都提供了低階 API,用於在 CPU 和 GPU 上操作張量。在低階 API 之上,還有高階 API,分別是 [Keras](https://keras.io/)[PyTorch Lightning](https://pytorchlightning.ai/)
17+
18+
低階 API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/)
19+
---------|-------------------------------------|--------------------------------
20+
高階 API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/)
21+
22+
**低階 API** 在這兩個框架中允許你構建所謂的**計算圖**。這個圖定義了如何使用給定的輸入參數計算輸出(通常是損失函數),並且可以在 GPU 上執行計算(如果可用)。框架提供了函數來對這個計算圖進行微分並計算梯度,這些梯度可以用於優化模型參數。
23+
24+
**高階 API** 則將神經網路視為**層的序列**,使得構建大多數神經網路變得更加容易。訓練模型通常需要準備數據,然後調用 `fit` 函數來完成工作。
25+
26+
高階 API 允許你快速構建典型的神經網路,而不需要擔心太多細節。同時,低階 API 提供了對訓練過程的更多控制,因此在研究新型神經網路架構時經常使用低階 API。
27+
28+
需要理解的一點是,你可以同時使用這兩種 API。例如,你可以使用低階 API 開發自己的網路層架構,然後將其用於由高階 API 構建和訓練的更大網路中。或者,你可以使用高階 API 定義一個由層組成的網路,然後使用自己的低階訓練迴圈進行優化。這兩種 API 使用相同的基本概念,並且設計上能很好地協同工作。
29+
30+
## 學習
31+
32+
在本課程中,我們提供了大部分內容,既適用於 PyTorch,也適用於 TensorFlow。你可以選擇自己偏好的框架,僅學習相應的筆記本。如果你不確定選擇哪個框架,可以在網上閱讀一些關於 **PyTorch vs. TensorFlow** 的討論。你也可以查看這兩個框架以加深理解。
33+
34+
在可能的情況下,我們會使用高階 API 以簡化操作。然而,我們認為理解神經網路的基礎運作非常重要,因此在開始時,我們會從低階 API 和張量開始學習。然而,如果你希望快速入門,不想花太多時間學習這些細節,你可以跳過這些部分,直接進入高階 API 的筆記本。
35+
36+
## ✍️ 練習:框架
37+
38+
繼續學習以下筆記本:
39+
40+
低階 API | [TensorFlow+Keras 筆記本](IntroKerasTF.ipynb) | [PyTorch](IntroPyTorch.ipynb)
41+
---------|-------------------------------------|--------------------------------
42+
高階 API | [Keras](IntroKeras.ipynb) | *PyTorch Lightning*
43+
44+
掌握框架後,讓我們回顧一下過擬合的概念。
45+
46+
# 過擬合
47+
48+
過擬合是機器學習中一個非常重要的概念,理解它至關重要!
49+
50+
考慮以下近似 5 個點(圖中的 `x`)的問題:
51+
52+
![線性模型](../../../../../translated_images/zh-MO/overfit1.f24b71c6f652e59e.webp) | ![過擬合模型](../../../../../translated_images/zh-MO/overfit2.131f5800ae10ca5e.webp)
53+
-------------------------|--------------------------
54+
**線性模型,2 個參數** | **非線性模型,7 個參數**
55+
訓練誤差 = 5.3 | 訓練誤差 = 0
56+
驗證誤差 = 5.1 | 驗證誤差 = 20
57+
58+
* 左邊的圖是一個良好的直線近似。由於參數數量適中,模型正確地捕捉了點的分佈。
59+
* 右邊的模型過於強大。由於我們只有 5 個點,而模型有 7 個參數,它可以調整到通過所有點,使得訓練誤差為 0。然而,這阻止了模型理解數據背後的正確模式,因此驗證誤差非常高。
60+
61+
在模型的複雜度(參數數量)和訓練樣本數量之間找到正確的平衡非常重要。
62+
63+
## 為什麼會發生過擬合
64+
65+
* 訓練數據不足
66+
* 模型過於強大
67+
* 輸入數據中噪音過多
68+
69+
## 如何檢測過擬合
70+
71+
如上圖所示,過擬合可以通過非常低的訓練誤差和非常高的驗證誤差來檢測。通常在訓練過程中,我們會看到訓練誤差和驗證誤差都開始下降,然後在某個時候驗證誤差可能停止下降並開始上升。這將是過擬合的跡象,也是我們應該停止訓練的指示(或者至少保存模型的快照)。
72+
73+
![過擬合](../../../../../translated_images/zh-MO/Overfitting.408ad91cd90b4371.webp)
74+
75+
## 如何防止過擬合
76+
77+
如果你發現過擬合發生,可以採取以下措施:
78+
79+
* 增加訓練數據量
80+
* 降低模型的複雜度
81+
* 使用一些[正則化技術](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md),例如 [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout),我們稍後會討論。
82+
83+
## 過擬合與偏差-方差權衡
84+
85+
過擬合實際上是統計學中一個更通用的問題,稱為[偏差-方差權衡](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff)。如果我們考慮模型中的可能誤差來源,可以看到兩種類型的誤差:
86+
87+
* **偏差誤差**是由於我們的算法無法正確捕捉訓練數據之間的關係而引起的。這可能是因為模型不夠強大(**欠擬合**)。
88+
* **方差誤差**是由於模型近似輸入數據中的噪音而不是有意義的關係(**過擬合**)。
89+
90+
在訓練過程中,偏差誤差會減少(因為模型學會了近似數據),而方差誤差會增加。重要的是要停止訓練——可以手動停止(當我們檢測到過擬合時)或自動停止(通過引入正則化)——以防止過擬合。
91+
92+
## 結論
93+
94+
在本課中,你學到了兩個最流行的 AI 框架 TensorFlow 和 PyTorch 的不同 API 之間的差異。此外,你還學到了非常重要的主題——過擬合。
95+
96+
## 🚀 挑戰
97+
98+
在配套的筆記本中,你會在底部找到「任務」;請完成筆記本中的任務。
99+
100+
## [課後測驗](https://ff-quizzes.netlify.app/en/ai/quiz/10)
101+
102+
## 回顧與自學
103+
104+
研究以下主題:
105+
106+
- TensorFlow
107+
- PyTorch
108+
- 過擬合
109+
110+
問自己以下問題:
111+
112+
- TensorFlow 和 PyTorch 有什麼區別?
113+
- 過擬合和欠擬合有什麼區別?
114+
115+
## [作業](lab/README.md)
116+
117+
在本次實驗中,你需要使用 PyTorch 或 TensorFlow 解決兩個分類問題,分別使用單層和多層全連接網路。
118+
119+
* [說明](lab/README.md)
120+
* [筆記本](lab/LabFrameworks.ipynb)
121+
122+
---
123+

translations/zh-MO/lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb

Lines changed: 433 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# 使用 PyTorch/TensorFlow 進行分類
2+
3+
來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。
4+
5+
## 任務
6+
7+
使用 PyTorch 或 TensorFlow 解決兩個分類問題,分別使用單層和多層全連接網路:
8+
9+
1. **[Iris 分類](https://en.wikipedia.org/wiki/Iris_flower_data_set)** 問題 - 這是一個以表格輸入數據為基礎的問題,可以用傳統機器學習方法處理。你的目標是根據 4 個數值參數將鳶尾花分類為 3 個類別。
10+
2. **MNIST** 手寫數字分類問題,我們之前已經見過。
11+
12+
嘗試不同的網路架構,以獲得最佳的準確率。
13+
14+
## 起始 Notebook
15+
16+
通過打開 [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) 開始實驗。
17+
18+
**免責聲明**
19+
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# 神經網絡簡介
2+
3+
![神經網絡簡介內容摘要的手繪圖](../../../../translated_images/zh-MO/ai-neuralnetworks.1c687ae40bc86e83.webp)
4+
5+
如我們在介紹中所討論的,實現智能的一種方法是訓練一個**計算機模型****人工大腦**。自20世紀中期以來,研究人員嘗試了不同的數學模型,直到最近這一方向取得了巨大成功。這些模仿大腦的數學模型被稱為**神經網絡**
6+
7+
> 有時神經網絡被稱為*人工神經網絡*(Artificial Neural Networks,ANNs),以表明我們討論的是模型,而不是實際的神經元網絡。
8+
9+
## 機器學習
10+
11+
神經網絡屬於一個更大的學科,稱為**機器學習**,其目標是利用數據訓練計算機模型以解決問題。機器學習是人工智能的重要組成部分,但我們在本課程中不涉及傳統的機器學習。
12+
13+
> 請訪問我們的獨立課程 **[機器學習入門](http://github.com/microsoft/ml-for-beginners)**,了解更多關於傳統機器學習的內容。
14+
15+
在機器學習中,我們假設有一些示例數據集 **X** 和相應的輸出值 **Y**。示例通常是由**特徵**組成的N維向量,而輸出被稱為**標籤**
16+
17+
我們將探討兩種最常見的機器學習問題:
18+
19+
* **分類**,即需要將輸入對象分類到兩個或多個類別中。
20+
* **回歸**,即需要為每個輸入樣本預測一個數值。
21+
22+
> 當以張量表示輸入和輸出時,輸入數據集是一個大小為 M×N 的矩陣,其中 M 是樣本數量,N 是特徵數量。輸出標籤 Y 是大小為 M 的向量。
23+
24+
在本課程中,我們將僅專注於神經網絡模型。
25+
26+
## 神經元的模型
27+
28+
從生物學中,我們知道大腦由神經細胞(神經元)組成,每個神經元都有多個“輸入”(樹突)和一個“輸出”(軸突)。樹突和軸突都可以傳導電信號,而它們之間的連接——稱為突觸——可以表現出不同程度的導電性,這些導電性由神經遞質調節。
29+
30+
![神經元模型](../../../../translated_images/zh-MO/synapse-wikipedia.ed20a9e4726ea1c6.webp) | ![神經元模型](../../../../translated_images/zh-MO/artneuron.1a5daa88d20ebe6f.webp)
31+
----|----
32+
真實神經元 *[圖片](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) 來自維基百科)* | 人工神經元 *(作者提供圖片)*
33+
34+
因此,神經元的最簡單數學模型包含幾個輸入 X<sub>1</sub>, ..., X<sub>N</sub> 和一個輸出 Y,以及一系列權重 W<sub>1</sub>, ..., W<sub>N</sub>。輸出計算公式為:
35+
36+
<img src="../../../../translated_images/zh-MO/netout.1eb15eb76fd76731.webp" alt="Y = f\left(\sum_{i=1}^N X_iW_i\right)" width="131" height="53" align="center"/>
37+
38+
其中 f 是某種非線性的**激活函數**
39+
40+
> 早期的神經元模型在1943年由 Warren McCullock 和 Walter Pitts 在經典論文 [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) 中描述。Donald Hebb 在他的書 "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" 中提出了這些網絡的訓練方法。
41+
42+
## 本章節內容
43+
44+
在本章節中,我們將學習以下內容:
45+
* [感知器](03-Perceptron/README.md),一種最早的用於二類分類的神經網絡模型
46+
* [多層網絡](04-OwnFramework/README.md),以及配套筆記本 [如何構建我們自己的框架](04-OwnFramework/OwnFramework.ipynb)
47+
* [神經網絡框架](05-Frameworks/README.md),包括以下筆記本:[PyTorch](05-Frameworks/IntroPyTorch.ipynb)[Keras/Tensorflow](05-Frameworks/IntroKerasTF.ipynb)
48+
* [過擬合](../../../../lessons/3-NeuralNetworks/05-Frameworks)
49+
50+
---
51+
52+
**免責聲明**
53+
本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。

translations/zh-MO/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb

Lines changed: 783 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)