Autopenyandi

**Autopenyandi** adalah jenis jaringan saraf tiruan yang digunakan untuk mempelajari penyandian data tidak berlabel yang efisien ( pembelajaran tak terarah ).   Autopenyandi mempelajari dua fungsi: fungsi penyandian yang mengubah data masukan, dan fungsi pengawasandian yang membuat ulang data masukan dari representasi yang disandikan. Autopenyandi mempelajari representasi (penyandian) yang efisien untuk sekumpulan data, biasanya untuk pengurangan dimensi.

Ada varian yang bertujuan untuk memaksa representasi yang dipelajari untuk mengambil properti yang berguna.  Contohnya adalah autopenyandi yang diatur ( *Sparse*, *Denoising*, dan *Contractive* ), yang efektif dalam mempelajari representasi untuk tugas klasifikasi selanjutnya,  dan autopenyandi variabel, dengan aplikasi sebagai model generatif.  Autopenyandi diterapkan pada banyak masalah, termasuk pengenalan wajah,  deteksi fitur,  deteksi anomali, dan perolehan makna kata.   Autopenyandi juga merupakan model generatif yang dapat menghasilkan data baru secara acak yang serupa dengan data masukan (data pelatihan). 

## Prinsip matematika

### Definisi
Auto penyandi ditentukan oleh komponen berikut:

Dua set: ruang pesan yang diawasandikan \mathcal X ; ruang pesan yang disandikan \mathcal Z. Hampir selalu, keduanya \mathcal X Dan \mathcal Z adalah ruang Euclidean, yaitu, \mathcal X = \R^m, \mathcal Z = \R^n untuk beberapa m, n.

Dua kelompok fungsi yang diparametrikan: keluarga penyandi E_\phi:\mathcal{X} \rightarrow \mathcal{Z}, diparametrikan oleh \phi ; keluarga pengawasandi D_\theta:\mathcal{Z} \rightarrow \mathcal{X}, diparametrikan oleh \theta.

Untuk apa pun x\in \mathcal X, kami biasanya menulis z = E_\phi(x), dan menyebutnya sebagai sandi, variabel laten, representasi laten, vektor laten, dll. Sebaliknya, untuk setiap z\in \mathcal Z, kami biasanya menulis x' = D_\theta(z), dan menyebutnya sebagai pesan (yang diterjemahkan).

Biasanya, penyandi dan pengawasandi didefinisikan sebagai perseptron mutilapis. Misalnya,penyandi  MLP satu lapis E_\phi adalah:

: E_\phi(\mathbf x) = \sigma(Wx+b)

Di mana \sigma adalah fungsi aktivasi berdasarkan elemen seperti fungsi sigmoid atau unit linier yang disearahkan, W adalah matriks yang disebut "bobot", dan b adalah vektor yang disebut "bias".

### Melatih autopenyandi
Autopenyandi, dengan sendirinya, hanyalah kumpulan dari dua fungsi. Untuk menilai *kualitasnya*, kita memerlukan *tugas*. Sebuah tugas ditentukan oleh penyebaran peluang rujukan \mu_{ref} lebih \mathcal X, dan fungsi "kualitas rekonstruksi". d: \mathcal X \times \mathcal X \to [0, \infty], seperti yang d(x, x') mengukur berapa banyak x' berbeda dari x.

Dengan itu, kita dapat mendefinisikan fungsi kerugian untuk autopenyandi sebagaiL(\theta, \phi) := \mathbb \mathbb E_{x\sim \mu_{ref}}[d(x, D_\theta(E_\phi(x)))]Autopenyandi *optimal* untuk tugas yang diberikan (\mu_{ref}, d) adalah kemudian \arg\min_{\theta, \phi}L(\theta, \phi). Pencarian autopenyandi yang optimal dapat dilakukan dengan teknik optimasi matematis apa pun, tetapi biasanya dengan penurunan gradien. Proses pencarian ini disebut sebagai "melatih autopenyandi". Dalam kebanyakan situasi, persebaran rujukan hanyalah persebaran empiris yang diberikan oleh kumpulan data \{x_1, ..., x_N\} \subset \mathcal X, sehingga\mu_{ref} = \frac{1}{N}\sum_{i=1}^N \delta_{x_i}dimana dan \delta_{x_i} adalah ukuran Dirac, dan fungsi kualitas hanyalah kerugian L2: d(x, x') = \|x - x'\|_2^2, \|\cdot\|_2 adalah norma Euclidean. Maka masalah pencarian autopenyandi yang optimal hanyalah optimasi kuadrat terkecil :\min_{\theta, \phi} L(\theta, \phi), \text{where } L(\theta, \phi) = \frac{1}{N}\sum_{i=1}^N \|x_i - D_\theta(E_\phi(x_i))\|_2^2

### Penafsiran

Autopenyandi memiliki dua bagian utama: penyandi yang memetakan pesan ke sandi, dan pengawasandi yang merekonstruksi pesan dari sandi. Autopenyandi yang optimal akan melakukan rekonstruksi sedekat mungkin dengan sempurna, dengan "mendekati sempurna" ditentukan oleh fungsi kualitas rekonstruksi d.

Cara termudah untuk melakukan tugas penyalinan dengan sempurna adalah dengan menduplikasi sinyal. Untuk menekan perilaku ini, ruang kode \mathcal Z biasanya memiliki dimensi yang lebih kecil dibandingkan ruang pesan \mathcal{X}.

Autopenyandi seperti ini disebut *undercomplete*. Hal ini dapat diartikan sebagai mengempa pesan, atau mengurangi dimensinya.  

Pada batas autopenyandi ideal yang kurang lengkap, setiap sandi yang mungkin z di ruang sandi digunakan untuk menyandikan pesan x yang benar-benar muncul dalam distribusi \mu_{ref}, dan pengawasandinya juga sempurna: D_\theta(E_\phi(x)) = x. Autopenyandi ideal ini kemudian dapat digunakan untuk menghasilkan pesan yang tidak dapat dibedakan dari pesan sebenarnya, dengan memasukkan sandi arbitrer pengawasandinya z dan memperoleh D_\theta(z), yaitu pesan yang benar-benar muncul dalam pendistribusian \mu_{ref}.

Jika ruang kode \mathcal Z memiliki dimensi lebih besar dari ( *overcomplete* ), atau sama dengan, ruang pesan \mathcal{X}, atau unit tersembunyi diberi kapasitas yang cukup, autopenyandi dapat mempelajari fungsi identitas dan menjadi tidak berguna. Namun, hasil eksperimen menemukan bahwa autopenyandi yang terlalu lengkap mungkin masih mempelajari fitur-fitur yang berguna. 

Dalam kondisi ideal, dimensi sandi dan dayatampung model dapat diatur berdasarkan kerumitan persebaran data yang akan dimodelkan. Cara baku untuk melakukannya adalah dengan menambahkan modifikasi pada autopenyandi dasar, yang akan dirinci di bawah. 

## Sejarah
Autopenyandi pertama kali diusulkan sebagai generalisasi nonlinier dari analisis komponen utama (PCA) oleh Kramer.  Autopenyandi juga disebut autopenghimpun,  atau jaringan Diabolo.   Penerapan pertamanya dimulai pada awal tahun 1990an.    Penerapannya yang paling tradisional adalah reduksi dimensi atau pembelajaran fitur, tetapi konsep ini digunakan secara luas untuk mempelajari model data generatif.   Beberapa AI paling kuat di tahun 2010-an melibatkan autopenyandi yang ditumpuk di dalam jaringan saraf dalam. 

## Referensi