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

This commit is contained in:
localizeflow[bot] 2026-04-06 20:21:17 +00:00
parent e2c201135e
commit 7a16e4d00e
8 changed files with 5808 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,34 @@
# ការវិភាគចំណាត់ថ្នាក់សត្វចិញ្ចឹម Oxford ដោយប្រើការរៀនផ្ទេរ
ការចំណាយពេលក្នុងមុខវិជ្ជាពី [មូលដ្ឋានសិក្សា 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/) ដើម ដែលមានចំណាត់ថ្នាក់ចំនួន ៣៥ ប្រភេទនៃឆ្កែ និងពីសចិញ្ចឹម។
ដើម្បីទាញយកទិន្នន័យនេះ សូមប្រើកូដខាងក្រោម៖
```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](OxfordPets.ipynb)
## ចំណាំក្រោយ
ការរៀនផ្ទេរ និងបណ្តាញដែលបានបណ្តុះបណ្តាលមុនអនុញ្ញាតឲ្យយើងដោះស្រាយបញ្ហាចំណាត់ថ្នាក់រូបភាពពិភពពិតបានយ៉ាងងាយស្រួល។ ទោះជាយ៉ាងណា បណ្តាញដែលបានបណ្តុះបណ្តាលមុនដំណើរការល្អលើរូបភាពដែលមានប្រភេទជាងគ្នា ហើយបើយើងចាប់ផ្តើមចំណាត់ថ្នាក់រូបភាពខុសគ្នាខ្លាំង (ឧ. រូបភាពវេជ្ជសាស្ត្រ) យើងប្រហែលជាធ្វើបានល្អតិចជាង។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបញ្ជាក់**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែកម្មវិធី AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំព្យាយាមឲ្យមានភាពត្រឹមត្រូវ សូមកត់សម្គាល់ថាការបកប្រែកម្មវិធីអាចមានកំហុស ឬការខុសច្រឡំ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានគិតថាជាឈើនាទីពិតប្រាកដ។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងផ្តល់អនុសាសន៍ឲ្យប្រើការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនិងការបកប្រែដូច្នេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

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,104 @@
# Autoencoders
នៅពេលបណ្ដុះបណ្ដាល CNNs មួយក្នុងចំណោមបញ្ហាគឺថា យើងត្រូវការទិន្នន័យមានស្លាកច្រើន។ ក្នុងករណីចាត់ថ្នាក់រូបភាព យើងត្រូវបំបែករូបភាពទៅជាចំណាត់ថ្នាក់ផ្សេងៗ ដែលជាការខិតខំដាក់ទៅដៃ។
## [ប្រឡងមុនវគ្គបង្រៀន](https://ff-quizzes.netlify.app/en/ai/quiz/17)
ទោះយ៉ាងណា យើងអាចចង់ប្រើទិន្នន័យដើម (គ្មានស្លាក) សម្រាប់បណ្ដុះបណ្ដាលម៉ូដែល CNN ដល់ការដកស្រង់លក្ខណ: ដែលហៅថា **ការសិក្សាដោយខ្លួនឯង**។ ជំនួសស្លាក យើងនឹងប្រើរូបភាពបណ្ដុះបណ្ដាលទាំងជាការបញ្ចូលនិងចេញនៃបណ្តាញ។ គំនិតសំខាន់នៃ **autoencoder** គឺយើងនឹងមាន **បណ្តាញ encoder** ដែលបម្លែងរូបភាពបញ្ចូលទៅជាផ្លូវចំណុចកំណត់មួយ (latant space) (ធម្មតាជាវ៉ិកទ័រមានទំហំតូចជាង) បន្ទាប់មកជាបណ្តាញ **decoder** ដែលមានគោលបំណងបង្កើតឡើងវិញរូបភាពដើម។
> ✅ [autoencoder](https://wikipedia.org/wiki/Autoencoder) គឺជាប្រភេទបណ្តាញប្រព័ន្ធប្រសាទសិប្បនិម្មិត នាដែលប្រើដើម្បីសិក្សាកូដ៖ទិន្នន័យគ្មានស្លាកយ៉ាងមានប្រសិទ្ធភាព។
ដោយសារ​យើងបណ្ដុះបណ្ដាល autoencoder ដើម្បីចាប់យកព័ត៌មានពីរូបភាពដើមជា​ច្រើនមួយសម្រាប់ការបង្កើតឡើងវិញបានត្រឹមត្រូវបំផុត ដូច្នេះបណ្តាញព្យាយាមស្វែងរក **embedding** ល្អបំផុត សម្រាប់ចាប់យកន័យរបស់រូបភាព។
![AutoEncoder Diagram](../../../../../translated_images/km/autoencoder_schema.5e6fc9ad98a5eb61.webp)
> រូបភាពពី [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html)
## សេណារីយ៉ូសម្រាប់ការប្រើ Autoencoders
ក្នុងពេលបង្កើតឡើងវិញរូបភាពដើមមើលទៅមិនមានប្រយោជន៍ដោយខ្លួនវាទេ មានសេណារីយ៉ូខ្លះៗដែល autoencoders មានប្រយោជន៍ខ្លាំង:
* **បន្ថយវិមាត្ររូបភាពសម្រាប់ការមើលមុខងារ****បណ្តុះបណ្តាល embedding រូបភាព**។ ជាទូទៅ autoencoders ផ្តល់លទ្ធផលល្អជាង PCA ពីព្រោះវាគិតគ្រោងដល់លក្ខណៈលំហរប្រសាទ និងលក្ខណៈមានជាលំដាប់ជាន់។
* **ការដកសំឡេងរំខាន (Denoising)** គឺជាការដកសំឡេងរំខានចេញពីរូបភាព។ ពីព្រោះសំឡេងរំខានពេញនិយមផ្ទុកព័ត៌មានមិនទាន់ប្រយោជន៍ជាច្រើន autoencoder មិនអាចដាក់វាទាំងអស់នាពេលចំណុច latant តូចបានទេ ដូច្នេះវាចាប់យកតែផ្នែកសំខាន់ៗនៃរូបភាពតែប៉ុណ្ណោះ។ ពេលបណ្ដុះបណ្ដាល denoiser យើងចាប់ផ្ដើមពីរូបភាពដើម ហើយប្រើរូបភាពដែលបន្ថែមសំឡេងរំខានវិជ្ជមានជាការបញ្ចូលសម្រាប់ autoencoder។
* **Super-resolution** ការបង្កើនមាត្រូបភាព។ យើងចាប់ផ្ដើមពីរូបភាពមាន resolution ខ្ពស់ ហើយប្រើរូបភាពមាន resolution ទាបជាការបញ្ចូល។
* **ម៉ូដែលបង្កើតថ្មីបន្ទាន់ (Generative models)** កាលណាយើងបានបណ្ដុះបណ្ដាល autoencoder រួច បណ្តាញ decoder អាចប្រើសម្រាប់បង្កើតវត្ថុថ្មីពីវ៉ិកទ័រលាតង់បែបចៃដន្យ។
## Variational Autoencoders (VAE)
autoencoders ប្រពៃណីបន្ថយវិមាត្រទិន្នន័យបញ្ចូលមួយវិធីណាមួយ ដើម្បីស្វែងរកលក្ខណ:សំខាន់ៗនៃរូបភាពបញ្ចូល។ ប៉ុន្តែវ៉ិកទ័រលាតង់ភាគច្រើនមិនមានអត្ថន័យច្បាស់ទេ។ ក្នុងពាក្យផ្សេង ការយក dataset MNIST ជាគំរូ ការស្វែងរកឥណទានថាតើលេខណាដែលតំណាងឲ្យវ៉ិកទ័រលាតង់នេះគ្មានភាពងាយស្រួលទេ ពីព្រោះវ៉ិកទ័រលាតង់ជិតគ្នាមិនចាំបាច់តំណាងឲ្យលេខដូចគ្នា។
ផ្សេងពីនេះ ដើម្បីបណ្ដុះម៉ូដែល *បង្កើត* វាល្អជាងក្នុងការមានចំនេះដឹងពីលាតង់ស្ពេស។ គំនិតនេះនាំយើងទៅកាន់ **variational auto-encoder** (VAE)។
VAE គឺជា autoencoder ដែលរៀនព្យាករណ៍ *ចែកចាយស្ថិតិ* នៃប៉ារ៉ាម៉ែត្រលាតង់ ឬហៅថា **បម្រែបម្រួលលាតង់**។ ឧទាហរណ៍ យើងចង់ឲ្យវ៉ិកទ័រលាតង់ចែកចាយធម្មតាជាមួយមធ្យម z<sub>mean</sub> និងស្ដង់ដារបំបែក z<sub>sigma</sub> (ទាំងមធ្យម និងស្ដង់ដារបំបែកជាវ៉ិកទ័រមានវិមាត្រមួយ d)។ Encoder នៅក្នុង VAE រៀនព្យាករណ៍ប៉ារ៉ាម៉ែត្រទាំងនេះ ហើយ decoder ទទួលតម្លៃវ៉ិកទ័រចៃដន្យពីចែកចាយនេះដើម្បីបង្កើតឡើងវិញវត្ថុ។
សង្ខេប:
* ពីវ៉ិកទ័របញ្ចូល យើងព្យាករណ៍ `z_mean` និង `z_log_sigma` (ជំនួសការព្យាករណ៍ស្ដង់ដារបំបែកដោយផ្ទាល់ យើងព្យាករណ៍លោករីធម៌វា)
* យើងគំនូរវ៉ិកទ័រ `sample` មួយពីចែកចាយ N(z<sub>mean</sub>,exp(z<sub>log_sigma</sub>))
* decoder ព្យាយាមដកស្រង់រូបភាពដើមជាមួយ `sample` ជាវ៉ិកទ័របញ្ចូល
<img src="../../../../../translated_images/km/vae.464c465a5b6a9e25.webp" width="50%">
> រូបភាពពី [this blog post](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ដោយ Isaak Dykeman
Variational auto-encoders ប្រើមុខងារខាតខាតស្មុគស្មាញមានពីរផ្នែក៖
* **Reconstruction loss** ខាតខាតបង្ហាញពីភាពជិតស្និទ្ធរវាងរូបភាពដែលបានបង្កើតឡើងវិញនិងគោលដៅ (អាចជា Mean Squared Error ឬ MSE)។ វាគឺជាផ្នែកខាតដដែលនឹងក្នុង autoencoders ប្រពៃណី។
* **KL loss** ដែលធានាថាចែកចាយអថេរលាតង់នៅជិតចែកចាយធម្មតា។ វា dựa trên khái niệm [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - មាត្រយក្សប៉ាន់ស្មានភាពដូចគ្នារវាងចែកចាយស្ថិតិពីរដែលខុសគ្នា។
អត្ថប្រយោជន៍សំខាន់នៃ VAEs គឺវាអនុញ្ញាតឲ្យយើងបង្កើតរូបភាពថ្មីៗបានរសាយថាគោល ដោយសារយើងដឹងថាចែកចាយណាដែលយើងគួរតែគំនូរវ៉ិកទ័រលាតង់ពីវា។ ឧទាហរណ៍ ប្រសិនបើយើងបណ្ដុះបណ្ដាល VAE ជាមួយវ៉ិកទ័រលាតង់ 2D លើ MNIST គេអាចប្ដូរប្រភេទសមាសធាតុរបស់វ៉ិកទ័រលាតង់ ដើម្បីទទួលបានលេខខុសៗគ្នា៖
<img alt="vaemnist" src="../../../../../translated_images/km/vaemnist.cab9e602dc08dc50.webp" width="50%"/>
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
មើលពីរបៀបរូបភាពរួមបញ្ចូលគ្នា ខណៈពេលយើងចាប់ផ្ដើមទទួលបានវ៉ិកទ័រលាតង់ពីផ្នែកខុសៗគ្នានៃលាតង់ស្ពេស។ យើងក៏អាចមើលមុខងារនេះក្នុង 2D ផងដែរ៖
<img alt="vaemnist cluster" src="../../../../../translated_images/km/vaemnist-diag.694315f775d5d666.webp" width="50%"/>
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
## ✍️ លំហាត់៖ Autoencoders
ស្វែងយល់បន្ថែមអំពី autoencoders នៅក្នុង notebook ដូចតទៅ៖
* [Autoencoders នៅក្នុង TensorFlow](AutoencodersTF.ipynb)
* [Autoencoders នៅក្នុង PyTorch](AutoEncodersPyTorch.ipynb)
## លក្ខណៈសម្បត្តិរបស់ Autoencoders
* **ទិន្នន័យជាក់លាក់** - វាដំណើរការល្អតែជាមួយប្រភេទរូបភាពដែលវាបានបណ្ដុះបណ្ដាល។ ឧទាហរណ៍ ប្រសិនបើយើងបណ្ដុះបណ្ដាលបណ្តាញ super-resolution លើ ផ្កា វានឹងមិនល្អសម្រាប់ រូបភាពថតបុរសនារីទេ ព្រោះបណ្តាញអាចផលិតរូបភាពមាន resolution ខ្ពស់ដោយយកព័ត៌មានលម្អិតពីលក្ខណៈដែលបានរៀនពីទិន្នន័យបណ្ដុះបណ្ដាល។
* **បាត់បង់** - រូបភាពដែលបានបង្កើតឡើងវិញមិនដូចនឹងរូបភាពដើមទេ។ សេចក្តីធម្មជាតិនៃការបាត់បង់ត្រូវបានកំណត់ដោយ *មុខងារខាតខាត* ដែលបានប្រើក្នុងពេលបណ្ដុះបណ្ដាល។
* ដំណើរការជាមួយ **ទិន្នន័យគ្មានស្លាក**
## [ប្រឡងបន្ទាប់វគ្គបង្រៀន](https://ff-quizzes.netlify.app/en/ai/quiz/18)
## សេចក្តីសន្និដ្ឋាន
ក្នុងមេរៀននេះ អ្នកបានរៀនអំពីប្រភេទ autoencoders ដែលមានស្រាប់សម្រាប់វិទ្យាសាស្ត្រអោយ ។ អ្នកបានរៀនរបៀបបង្កើតវា និងរបៀបប្រើវា ដើម្បីបង្កើតឡើងវិញរូបភាព។ អ្នកក៏បានរៀនអំពី VAE និងរបៀបប្រើវា ដើម្បីបង្កើតរូបភាពថ្មី។
## 🚀 thách thức
ក្នុងមេរៀននេះ អ្នកបានរៀនអំពីការប្រើ autoencoders សម្រាប់រូបភាព។ តែក៏អាចប្រើសម្រាប់តន្ត្រីបានដែរ! សូមពិនិត្យមើលគម្រោង MusicVAE របស់ Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae) ដែលប្រើ autoencoders ដើម្បីរៀនបង្កើតឡើងវិញតន្ត្រី។ សូមធ្វើ [ការប្រឡង](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)
## ការពិនិត្យឡើងវិញ និង សិក្សាឯករាជ្យ
សម្រាប់យោង អានបន្ថែមអំពី autoencoders នៅក្នុងធនធានទាំងនេះ៖
* [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html)
* [Blog post on NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)
* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/)
* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
## ការចាត់តួនាទី
នៅចុង [notebook នេះប្រើ TensorFlow](AutoencodersTF.ipynb) អ្នកនឹងឃើញ 'task' - ប្រើវាជាការចាត់តួនាទីរបស់អ្នក។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬគ្មានភាពត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានយកជាអក្សរ​ដើម​ដោយផ្លូវការជាចម្បង។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់បកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

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,105 @@
# បណ្តាញរូបស្ទុះផ្សងប្រកួត
នៅក្នុងផ្នែកមុន យើងបានរៀនអំពី **ម៉ូដែលរូប**: ម៉ូដែលដែលអាចបង្កើតរូបភាពថ្មីៗដែលស្រដៀងនឹងរូបភាពនៅក្នុងឈុតទិន្នន័យបណ្ដុះបណ្ដាល។ VAE គឺជាឧទាហរណ៍ល្អមួយនៃម៉ូដែលរូប។
## [សំណួរមុនវគ្គ](https://ff-quizzes.netlify.app/en/ai/quiz/19)
យ៉ាងណាក៏ដោយ ប្រសិនបើយើងព្យាយាមបង្កើតអ្វីឡើយមានអត្ថន័យជាក់លាក់ ដូចជាផ្សឹកនៅកម្រិតផ្ដល់ម៉ូដែលសមស្រួល ពី VAE យើងនឹងឃើញថា ការបណ្ដុះបណ្ដាលមិនត្រូវបានបញ្ចប់បានល្អទេ។ សម្រាប់ករណីនេះ យើងត្រូវរៀនអំពីស្ថាបัตិកម្មមួយផ្សេងទៀតដែលមានគោលបំណងច្បាស់លាស់សម្រាប់ម៉ូដែលរូប - **បណ្តាញរូបស្ទុះផ្សងប្រកួត** ឬ GAN។
គំនិតសំខាន់នៃ GAN គឺ មានបណ្តាញសរសៃសួរពីរដែលនឹងត្រូវបានបណ្ដុះប្រឆាំងគ្នា៖
<img src="../../../../../translated_images/km/gan_architecture.8f3a5ab62b8d5d69.webp" width="70%"/>
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
> ✅ វប្បធម៌តិចតួច៖
> * **ម៉ូឌឺរេត** គឺជាបណ្តាញ ដែលទទួលវ៉ិចទ័របែបចៃដន្យ មួយចំនួន ហើយបង្កើតរូបភាពជា​លទ្ធផល
> * **អ្នកបំបែក** គឺជាបណ្តាញដែលទទួលរូបភាពមួយហើយវាគួរតែប្រាប់ថាតើវាជារូបភាពពិត (ពីឈុតទិន្នន័យបណ្ដុះបណ្ដាល) ឬវាត្រូវបានបង្កើតដោយម៉ូឌឺរេត។ វាមានន័យមួយជាស្ដែងថាជាអ្នកចាត់ថ្នាក់រូបភាពមួយ។
### អ្នកបំបែក
ស្ថាបាតិកម្មរបស់អ្នកបំបែក មិនខុសពីបណ្តាញចាត់ថ្នាក់រូបភាពធម្មតាទេ។ ក្នុងករណីសាមញ្ញ វាអាចជាអ្នកចាត់ថ្នាក់ Fully-connected ប៉ុន្តែភាគច្រើនវានឹងជាបណ្តាញ [Convolutional](../07-ConvNets/README.md)។
> ✅ GAN ដែលផ្អែកលើបណ្តាញ convolutional ហៅថា [DCGAN](https://arxiv.org/pdf/1511.06434.pdf)
CNN Discriminator រួមមានស្រទាប់ដូចតទៅ៖ ខ្សែបង្វិលជាច្រើន និង អង្គុយស្លាប (poolings) ដោយមានទំហំដែនលក្ខណៈកាត់បន្ថយ ហើយមានពីរឬច្រើនស្រទាប់ fully-connected ដើម្បីទទួលបាន "វ៉ិចទ័រឡักษณะ", ហើយចុងក្រោយជាអ្នកចាត់ថ្នាក់ឌីហ្សាញប៊ីណារីមួយ។
> ✅ ការអង្គុយស្លាប (pooling) ក្នុងសារៈបច្ចេកទេសនេះគឺជាបច្ចេកទេសកាត់បន្ថយទំហំរូបភាព។ "ស្រទាប់ pooling កាត់បន្ថយវិមាត្រទិន្នន័យ ដោយបញ្ចូលលទ្ធផលនៃក្រុមណឺរ៉ូននៅស្រទាប់មួយ ទៅជា នឺរ៉ូនតែមួយនៅស្រទាប់បន្ទាប់។" - [ប្រភព](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers)
### ម៉ូឌឺរេត
ម៉ូឌឺរេតមានភាពលំបាកបន្តិច។ អ្នកអាចយល់ថាវាអាចមានរៀបរាប់ជាម៉ូឌឺរេតមុខងារក្រឡាផ្ទួន។ ចាប់ផ្តើមពីវ៉ិចទ័រលាក់ (latent vector) (ជំនួសវ៉ិចទ័រឡក្ខណៈ) វាមានស្រទាប់ fully-connected មួយដើម្បីបម្លែងវាទៅទំហំ/រាងត្រូវការ បន្ទាប់មកជាគ្រឿងបន្ថែម deconvolutions និងកំណត់ទំហំឡើងវិញ។ វាស្រដៀងនឹងផ្នែក *decoder* របស់ [autoencoder](../09-Autoencoders/README.md)។
> ✅ ព្រោះស្រទាប់ convolution ត្រូវបានអនុវត្តជាគ្រឿងត្រង់បន្ទាត់មួយក្នុងការស្ទួចរូបភាព ការបន្សល់ត្រូវស្រដៀងនឹង convolution ហើយអាចអនុវត្តបានដោយប្រើលទ្ធផលស្រទាប់ដូចគ្នា។
<img src="../../../../../translated_images/km/gan_arch_detail.46b95fd366f8e543.webp" width="70%"/>
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
### ការបណ្ដុះបណ្ដាល GAN
GAN ត្រូវបានហៅថា **ប្រឆាំងគ្នា** ព្រោះមានការប្រកួតប្រជែងជាបន្តរវាងម៉ូឌឺរេត និងអ្នកបំបែក។ ក្នុងការប្រកួតនេះ ទាំងម៉ូឌឺរេត និងអ្នកបំបែក ធ្វើការកែលម្អខ្លួន ដូច្នេះបណ្តាញរៀនបង្កើតរូបភាពល្អប្រសើរឡើងបន្តិចៗ។
ការបណ្ដុះបណ្ដាលប្រព្រឹត្តទៅក្នុងពីរដំណាក់កាល៖
* **បណ្ដុះបណ្ដាលអ្នកបំបែក**។ បេសកកម្មនេះគឺច្បាស់លាស់៖ យើងបង្កើតកុងតែម្យ៉ាងនៃរូបភាពដោយម៉ូឌឺរេត ប្រើស្លាកលេខ 0 សម្រាប់រូបភាពក្លែងបន្លំ ហើយយកកុងតែកមួយនៃរូបភាពពីឈុតទិន្នន័យបញ្ចូល (មានស្លាក 1 រូបភាពពិត)។ យើងទទួលបាន *ការបាត់បង់អ្នកបំបែក* មួយ ហើយអនុវត្តការផ្ទុះត្រឡប់ក្រោយ។
* **បណ្ដុះបណ្ដាលម៉ូឌឺរេត**។ វាត្រូវការលំបាកបន្តិច ព្រោះយើងមិនដឹងលទ្ធផលដែលចាំបាច់សម្រាប់ម៉ូឌឺរេតដោយផ្ទាល់ទេ។ យើងយកបណ្តាញ GAN ទាំងមូល ដែលរួមមានម៉ូឌឺរេត និងអ្នកបំបែក បញ្ចូលវ៉ិចទ័រចៃដន្យមួយចំនួន ហើយរំពឹងលទ្ធផលជា 1 (តំណាងឲ្យរូបភាពពិត)។ បន្ទាប់មក យើងប៊ិចបន្តិចបង្ហាប់ប៉ារ៉ាម៉ែត្រ của អ្នកបំបែក (មិនចង់ឲ្យវាបណ្ដុះនៅជំហាននេះ) ហើយអនុវត្តការផ្ទុះត្រឡប់ក្រោយ។
រយៈពេលនេះ ការបាត់បង់របស់ទាំងម៉ូឌឺរេត និងអ្នកបំបែកមិនចុះចាញ់យ៉ាងមានន័យសំខាន់ទេ។ នៅក្នុងលក្ខខណ្ឌអ идеល ពួកវាគួរតែបង្វិលមកវិញ ការសម្របសម្រួលនៃទាំងពីរបណ្តាញប្រសើរឡើង។
## ✍️ លំហាត់៖ GANs
* [កំណត់ត្រារបស់ GAN ក្នុង TensorFlow/Keras](GANTF.ipynb)
* [កំណត់ត្រារបស់ GAN ក្នុង PyTorch](GANPyTorch.ipynb)
### បញ្ហាក្នុងការបណ្ដុះ GAN
GAN ត្រូវបានគេចាត់ទុកថាលំបាកពិសេសក្នុងការបណ្ដុះ។ មានបញ្ហាខ្លះៗ៖
* **ការធ្លាក់បាត់មូដ** (Mode Collapse)។ ពាក្យនេះមានន័យថា ម៉ូឌឺរេតរៀនបង្កើតរូបភាពជោគជ័យមួយដែលបញ្ឆោតអ្នកបំបែកបាន តែមិនបង្កើតជារូបភាពច្រើនផ្សេងៗគ្នា។
* **ការពឹងផ្អែកលើប៉ារ៉ាម៉ែត្រលេខកំណត់**។ ជាញឹកញាប់ អ្នកអាចឃើញ GAN មិនបញ្ចប់ទេ ហើយបន្ទាប់មកអត្រា រៀនធ្លាក់ធំទូលៃរហូតដល់បញ្ចប់។
* គ្រប់គ្រង **សមតុល្យ** រវាងម៉ូឌឺរេត និងអ្នកបំបែក។ ជាលក្ខណៈភាគច្រើន ការបាត់បង់អ្នកបំបែកអាចធ្លាក់ចុះទៅសូន្យយ៉ាងលឿន ដែលធ្វើឲ្យម៉ូឌឺរេតមិនអាចបណ្ដុះបណ្ដាលបន្ថែមបានទៀត។ ដើម្បីដោះស្រាយនេះ យើងអាចព្យាយាមកំណត់អត្រាររៀនខុសគ្នា សម្រាប់ម៉ូឌឺរេត និងអ្នកបំបែក ឬលាតត្រដាងការបណ្ដុះអ្នកបំបែក ប្រសិនបើការបាត់បង់ចុះខ្លាំងរួចហើយ។
* ការបណ្ដុះសម្រាប់ **កម្រិតផ្ដល់ខ្ពស់**។ វា phản ánh បញ្ហាដូចគ្នាជាមួយ autoencoders ដែលបញ្ហានេះកើតឡើង ព្រោះការស្តារបណ្តាស្រទាប់សាច់ញាតិ convolutional network ច្រើនពេក បង្កើតអត្ថិភាពមិនល្អ។ បញ្ហានេះតែងតែដោះស្រាយជាមួយ **ការលូតលាស់ដំបូងពីតិចទៅច្រើន** (progressive growing), ដែលជារៀបចំស្រទាប់ជាច្រើននៅតិចកម្រិត នៅពេលដំបូង ហើយបន្ទាប់មក "ដោះបិទ" ឬ បន្ថែមស្រទាប់សរសើរ។ ផ្លូវដោះស្រាយមួយផ្សេងទៀតគឺបន្ថែមការតភ្ជាប់បន្ថែមរវាងស្រទាប់ និងបណ្ដុះនៅកម្រិតជាច្រើនពេលមួយ - មើល [Multi-Scale Gradient GANs paper](https://arxiv.org/abs/1903.06048) សម្រាប់ព័ត៌មានលម្អិត។
## ការបម្លែងរចនាបថ (Style Transfer)
GANs ជាវិធីដ៏ល្អសម្រាប់បង្កើតរូបភាពសិល្បៈមួយ។ បច្ចេកទេសមួយទៀតគឺហៅថា **ការ​បម្លែងរចនាបថ** ដែលយករូបភាពមួយ **រូបភាពមាតិកា** ហើយគូរឡើងវិញក្នុងរចនាបថផ្សេងទៀតដោយប្រើតម្រង់ពី **រូបភាពរចនាបថ**
វិធីសាស្ត្រដែលវាធ្វើការនោះគឺដូចខាងក្រោម៖
* យើងចាប់ផ្តើមពីរូបភាពសំពាធសំឡេងចៃដន្យ (ឬរូបភាពមាតិកា ប៉ុន្តេល្មត់ដែលយល់មានងាយ សម្រាប់រៀនគឺចាប់ពីសំពាធសំឡេងចៃដន្យ)
* គោលដៅរបស់យើងគឺបង្កើតរូបភាពដែលនៅជិតរូបភាព​ពីរដូចជា រូបភាពមាតិកា និង រូបភាពរចនាបថ។ វាត្រូវបានវាយតម្លៃដោយមុខងារបាត់បង់ពីរដូចជា៖
- **ការបាត់បង់មាតិកា** គណនាពីលក្ខណៈដែលបានដកស្រង់ដោយ CNN នៅស្រទាប់មួយចំនួន ពីរូបភាពបច្ចុប្បន្ន និងរូបភាពមាតិកា
- **ការបាត់បង់រចនាបថ** គណនារវាងរូបភាពបច្ចុប្បន្ន និង រូបភាពរចនាបថ នៅលើវិធីឆ្លាតវៃ ដោយប្រើម៉ាទ្រីស Gram (ព័ត៌មានបន្ថែមនៅក្នុង [កំណត់ត្រាឧទាហរណ៍](StyleTransfer.ipynb))
* ដើម្បីធ្វើឲ្យរូបភាពរលោង និងយកសំឡេងចេញ យើងបញ្ចូលមុខងារ **Variation loss** ដែលគណនាដាច់ដោយឡែកមធ្យមភាពរវាងភិចសែលជិតៗគ្នា
* វដ្តកែតម្រូវសំខាន់កែប្រែរូបភាពបច្ចុប្បន្នដោយប្រើលំហ៍ព្រំ (gradient descent) ឬអាល់ករីធម៍បំបាត់បាត់ផ្សេងៗ ដើម្បីបន្ថយការបាត់បង់សរុប ដែលជាចំនួនបំណុលទម្រង់ទម្រង់ជាការសរុបនៃបីការបាត់បង់។
## ✍️ ឧទាហរណ៍៖ [ការបម្លែងរចនាបថ](StyleTransfer.ipynb)
## [សំណួរបន្ទាប់វគ្គ](https://ff-quizzes.netlify.app/en/ai/quiz/20)
## 결론
នៅក្នុងមេរៀននេះ អ្នកបានរៀនអំពី GAN និងរបៀបបណ្ដុះវា។ អ្នកក៏បានស្គាល់ពីបញ្ហាពិសេសដែលបណ្តាញសរសៃសួរប្រភេទនេះអាចប្រឈមមុខ និងយុទ្ធសាស្ត្រខ្លះៗដើម្បីដោះស្រាយវា។
## 🚀 챌린지
រត់តាម [កំណត់ត្រាបម្លែងរចនាបថ](StyleTransfer.ipynb) ដោយប្រើរូបភាពខ្លួនឯង។
## ការត្រួតពិនិត្យ & រៀនដោយខ្លួនឯង
សម្រាប់យោង សូមអានបន្ថែមអំពី GAN នៅក្នុងធនធានទាំងនេះ៖
* Marco Pasini, [10 មេរៀនដែលខ្ញុំបានរៀនពីការបណ្ដុះ GANs តួ​រៀលមួយឆ្នាំ](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)
* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), ស្ថាបតិកម្ម GAN *de facto* ដែលគួរតែជៀសជាត
* [បង្កើតសិល្បៈរូបដោយ GANs នៅលើ Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/)
## ការបំពេញការងារ
ចូលមកមើលកំណត់ត្រាតែមួយក្នុងពីរកំណត់ត្រាដែលទាក់ទងទៅមេរៀននេះ ហើយបណ្ដុះ GAN លើរូបភាពរបស់អ្នក។ អ្នកអាចបង្កើតអ្វីបាន?
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបញ្ជាក់**៖
ឯកសារនេះបានបំលែងជាភាសាខ្មែរ ដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំដល់ភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាបុរាណគួរត្រូវបានគេជាឯកសារដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ សូមណែនាំឲ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកបញ្ចេញមេនខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->