Jadual Kandungan
1. Prinsip asas VAE
2. Langkah-langkah pelaksanaan VAE
2.2 Tentukan struktur model
Semasa proses latihan, kami menggunakan pengoptimum Adam dan hiperparameter beta=1 untuk mengemas kini parameter model. Selepas latihan selesai, kami menggunakan set ujian untuk mengira fungsi kehilangan model. Dalam contoh ini, kami menggunakan ralat pembinaan semula dan perbezaan KL untuk mengira fungsi kehilangan, jadi lebih kecil kerugian ujian, lebih baik perwakilan potensi yang dipelajari oleh model, dan lebih realistik sampel yang dihasilkan.
Rumah Peranti teknologi AI Autoencoders Variasi: Teori dan Pelaksanaan

Autoencoders Variasi: Teori dan Pelaksanaan

Jan 24, 2024 am 11:36 AM
pembelajaran mesin rangkaian saraf tiruan

如何实现变分自动编码器 变分自动编码器的原理和实现步骤

Variational Autoencoder (VAE) ialah model generatif berdasarkan rangkaian saraf. Matlamatnya adalah untuk mempelajari perwakilan pembolehubah pendam dimensi rendah bagi data dimensi tinggi dan menggunakan pembolehubah pendam ini untuk pembinaan semula dan penjanaan data. Berbanding dengan pengekod auto tradisional, VAE boleh menjana sampel yang lebih realistik dan pelbagai dengan mempelajari pengedaran ruang terpendam. Kaedah pelaksanaan VAE akan diperkenalkan secara terperinci di bawah.

1. Prinsip asas VAE

Idea asas VAE ialah untuk mencapai pengurangan dimensi dan pembinaan semula data dengan memetakan data berdimensi tinggi kepada ruang terpendam berdimensi rendah. Ia terdiri daripada dua bahagian: pengekod dan penyahkod. Pengekod memetakan data input x kepada min μ dan varians σ^2 ruang terpendam. Dengan cara ini, VAE boleh mengambil sampel data dalam ruang terpendam dan membina semula hasil sampel ke dalam data asal melalui penyahkod. Struktur penyahkod pengekod ini membolehkan VAE menjana sampel baharu dengan kesinambungan yang baik dalam ruang terpendam, menjadikan sampel serupa lebih dekat dalam ruang terpendam. Oleh itu, VAE bukan sahaja boleh digunakan untuk pengurangan dimensi dan

\begin{aligned}
\mu &=f_{\mu}(x)\
\sigma^2 &=f_{\sigma}(x)
\end{aligned}
Salin selepas log masuk

di mana, f_{mu} dan f_{sigma} boleh menjadi mana-mana model rangkaian saraf. Biasanya, kami menggunakan Multilayer Perceptron (MLP) untuk melaksanakan pengekod.

Penyahkod memetakan pembolehubah terpendam z kembali ke ruang data asal, iaitu:

x'=g(z)
Salin selepas log masuk

di mana, g juga boleh menjadi mana-mana model rangkaian saraf. Begitu juga, kami biasanya menggunakan MLP untuk melaksanakan penyahkod.

Dalam VAE, pembolehubah pendam $z$ diambil sampel daripada pengedaran terdahulu (biasanya pengedaran Gaussian), iaitu:

z\sim\mathcal{N}(0,I)
Salin selepas log masuk

Dengan cara ini, kita boleh meminimumkan ralat pembinaan semula dan pembolehubah pendam KL divergence digunakan untuk melatih VAE untuk mencapai pengurangan dimensi dan penjanaan data. Secara khusus, fungsi kehilangan VAE boleh dinyatakan sebagai:

\mathcal{L}=\mathbb{E}_{z\sim q(z|x)}[\log p(x|z)]-\beta\mathrm{KL}[q(z|x)||p(z)]
Salin selepas log masuk

di mana, q(z|x) ialah taburan posterior, iaitu taburan bersyarat bagi pembolehubah pendam z apabila input x diberi; z) ialah taburan penjanaan , iaitu, taburan data yang sepadan apabila pembolehubah pendam $z$ diberi p(z) ialah taburan terdahulu, iaitu taburan marginal pembolehubah terpendam z ialah hiperparameter yang digunakan untuk mengimbangi ralat pembinaan semula dan perbezaan KL.

Dengan meminimumkan fungsi kehilangan di atas, kita boleh mempelajari fungsi transformasi f(x), yang boleh memetakan data input x kepada taburan q(z|x) ruang pendam, dan boleh mencuba pembolehubah pendam daripada ia z, dengan itu mencapai pengurangan dimensi dan penjanaan data.

2. Langkah-langkah pelaksanaan VAE

Di bawah kami akan memperkenalkan cara melaksanakan model asas VAE, termasuk definisi pengekod, penyahkod dan fungsi kehilangan. Kami mengambil set data digit tulisan tangan MNIST sebagai contoh Set data ini mengandungi 60,000 sampel latihan dan 10,000 sampel ujian, setiap sampel ialah imej skala kelabu 28x28. . Kodnya adalah seperti berikut:

# python

import torch

import torchvision.transforms as transforms

from torchvision.datasets import MNIST

# 定义数据预处理

transform = transforms.Compose([
    transforms.ToTensor(),  # 将图像转换成Tensor格式
    transforms.Normalize(mean=(0.
Salin selepas log masuk

2.2 Tentukan struktur model

Seterusnya, kita perlu mentakrifkan struktur model VAE, termasuk pengekod, penyahkod dan fungsi pensampelan pembolehubah pendam. Dalam contoh ini, kami menggunakan MLP dua lapisan sebagai pengekod dan penyahkod, dengan bilangan unit tersembunyi dalam setiap lapisan masing-masing ialah 256 dan 128. Dimensi pembolehubah pendam ialah 20. Kodnya adalah seperti berikut:

import torch.nn as nn

class VAE(nn.Module):
    def __init__(self, input_dim=784, hidden_dim=256, latent_dim=20):
        super(VAE, self).__init__()

        # 定义编码器的结构
        self.encoder = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, hidden_dim//2),
            nn.ReLU(),
            nn.Linear(hidden_dim//2, latent_dim*2)  # 输出均值和方差
        )

        # 定义解码器的结构
        self.decoder = nn.Sequential(
            nn.Linear(latent_dim, hidden_dim//2),
            nn.ReLU(),
            nn.Linear(hidden_dim//2, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, input_dim),
            nn.Sigmoid()  # 输出范围在[0, 1]之间的概率
        )

    # 潜在变量的采样函数
    def sample_z(self, mu, logvar):
        std = torch.exp(0.5*logvar)
        eps = torch.randn_like(std)
        return mu + eps*std

    # 前向传播函数
    def forward(self, x):
        # 编码器
        h = self.encoder(x)
        mu, logvar = h[:, :latent_dim], h[:, latent_dim:]
        z = self.sample_z(mu, logvar)

        # 解码器
        x_hat = self.decoder(z)
        return x_hat, mu, logvar
Salin selepas log masuk

Dalam kod di atas, kami menggunakan MLP dua lapisan sebagai pengekod dan penyahkod. Pengekod memetakan data input kepada min dan varians ruang terpendam, di mana dimensi min ialah 20 dan dimensi varians juga 20, yang memastikan bahawa dimensi pembolehubah pendam ialah 20. Penyahkod memetakan pembolehubah terpendam kembali ke ruang data asal, di mana lapisan terakhir menggunakan fungsi Sigmoid untuk mengehadkan julat output kepada [0, 1].

Apabila melaksanakan model VAE, kita juga perlu menentukan fungsi kehilangan. Dalam contoh ini, kami menggunakan ralat pembinaan semula dan perbezaan KL untuk menentukan fungsi kehilangan, di mana ralat pembinaan semula menggunakan fungsi kehilangan entropi silang dan perbezaan KL menggunakan taburan normal piawai sebagai taburan terdahulu. Kodnya adalah seperti berikut:

# 定义损失函数
def vae_loss(x_hat, x, mu, logvar, beta=1):
    # 重构误差
    recon_loss = nn.functional.binary_cross_entropy(x_hat, x, reduction='sum')

    # KL散度
    kl_loss = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())

    return recon_loss + beta*kl_loss
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi kehilangan entropi silang untuk mengira ralat pembinaan semula dan perbezaan KL untuk mengira perbezaan antara taburan pembolehubah pendam dan taburan terdahulu. Antaranya, beta ialah hiperparameter yang digunakan untuk mengimbangi ralat pembinaan semula dan perbezaan KL.

2.3 Model latihan

Akhir sekali, kita perlu mentakrifkan fungsi latihan dan melatih model VAE pada set data MNIST. Semasa proses latihan, mula-mula kita perlu mengira fungsi kehilangan model, dan kemudian menggunakan algoritma perambatan belakang untuk mengemas kini parameter model. Kodnya adalah seperti berikut:

# python
# 定义训练函数

def train(model, dataloader, optimizer, device, beta):
    model.train()
    train_loss = 0

for x, _ in dataloader:
    x = x.view(-1, input_dim).to(device)
    optimizer.zero_grad()
    x_hat, mu, logvar = model(x)
    loss = vae_loss(x_hat, x, mu, logvar, beta)
        loss.backward()
        train_loss += loss.item()
        optimizer.step()

return train_loss / len(dataloader.dataset)
Salin selepas log masuk

Kini, kita boleh menggunakan fungsi latihan di atas untuk melatih model VAE pada dataset MNIST. Kodnya adalah seperti berikut:

# 定义模型和优化器
model = VAE().to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

# 训练模型
num_epochs = 50
for epoch in range(num_epochs):
    train_loss = train(model, trainloader, optimizer, device, beta=1)
    print(f'Epoch {epoch+1}/{num_epochs}, Train Loss: {train_loss:.4f}')

# 测试模型
model.eval()
with torch.no_grad():
    test_loss = 0
    for x, _ in testloader:
        x = x.view(-1, input_dim).to(device)
        x_hat, mu, logvar = model(x)
        test_loss += vae_loss(x_hat, x, mu, logvar, beta=1).item()
    test_loss /= len(testloader.dataset)
    print(f'Test Loss: {test_loss:.4f}')
Salin selepas log masuk

Semasa proses latihan, kami menggunakan pengoptimum Adam dan hiperparameter beta=1 untuk mengemas kini parameter model. Selepas latihan selesai, kami menggunakan set ujian untuk mengira fungsi kehilangan model. Dalam contoh ini, kami menggunakan ralat pembinaan semula dan perbezaan KL untuk mengira fungsi kehilangan, jadi lebih kecil kerugian ujian, lebih baik perwakilan potensi yang dipelajari oleh model, dan lebih realistik sampel yang dihasilkan.

2.4 Hasilkan sampel

最后,我们可以使用VAE模型生成新的手写数字样本。生成样本的过程非常简单,只需要在潜在空间中随机采样,然后将采样结果输入到解码器中生成新的样本。代码如下:

# 生成新样本
n_samples = 10
with torch.no_grad():
    # 在潜在空间中随机采样
    z = torch.randn(n_samples, latent_dim).to(device)
    # 解码生成样本
    samples = model.decode(z).cpu()
    # 将样本重新变成图像的形状
    samples = samples.view(n_samples, 1, 28, 28)
    # 可视化生成的样本
    fig, axes = plt.subplots(1, n_samples, figsize=(20, 2))
    for i, ax in enumerate(axes):
        ax.imshow(samples[i][0], cmap='gray')
        ax.axis('off')
    plt.show()
Salin selepas log masuk

在上述代码中,我们在潜在空间中随机采样10个点,然后将这些点输入到解码器中生成新的样本。最后,我们将生成的样本可视化展示出来,可以看到,生成的样本与MNIST数据集中的数字非常相似。

综上,我们介绍了VAE模型的原理、实现和应用,可以看到,VAE模型是一种非常强大的生成模型,可以学习到高维数据的潜在表示,并用潜在表示生成新的样本。

Atas ialah kandungan terperinci Autoencoders Variasi: Teori dan Pelaksanaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

15 alat anotasi imej percuma sumber terbuka disyorkan 15 alat anotasi imej percuma sumber terbuka disyorkan Mar 28, 2024 pm 01:21 PM

Anotasi imej ialah proses mengaitkan label atau maklumat deskriptif dengan imej untuk memberi makna dan penjelasan yang lebih mendalam kepada kandungan imej. Proses ini penting untuk pembelajaran mesin, yang membantu melatih model penglihatan untuk mengenal pasti elemen individu dalam imej dengan lebih tepat. Dengan menambahkan anotasi pada imej, komputer boleh memahami semantik dan konteks di sebalik imej, dengan itu meningkatkan keupayaan untuk memahami dan menganalisis kandungan imej. Anotasi imej mempunyai pelbagai aplikasi, meliputi banyak bidang, seperti penglihatan komputer, pemprosesan bahasa semula jadi dan model penglihatan graf Ia mempunyai pelbagai aplikasi, seperti membantu kenderaan dalam mengenal pasti halangan di jalan raya, dan membantu dalam proses. pengesanan dan diagnosis penyakit melalui pengecaman imej perubatan. Artikel ini terutamanya mengesyorkan beberapa alat anotasi imej sumber terbuka dan percuma yang lebih baik. 1.Makesen

Artikel ini akan membawa anda memahami SHAP: penjelasan model untuk pembelajaran mesin Artikel ini akan membawa anda memahami SHAP: penjelasan model untuk pembelajaran mesin Jun 01, 2024 am 10:58 AM

Dalam bidang pembelajaran mesin dan sains data, kebolehtafsiran model sentiasa menjadi tumpuan penyelidik dan pengamal. Dengan aplikasi meluas model yang kompleks seperti kaedah pembelajaran mendalam dan ensemble, memahami proses membuat keputusan model menjadi sangat penting. AI|XAI yang boleh dijelaskan membantu membina kepercayaan dan keyakinan dalam model pembelajaran mesin dengan meningkatkan ketelusan model. Meningkatkan ketelusan model boleh dicapai melalui kaedah seperti penggunaan meluas pelbagai model yang kompleks, serta proses membuat keputusan yang digunakan untuk menerangkan model. Kaedah ini termasuk analisis kepentingan ciri, anggaran selang ramalan model, algoritma kebolehtafsiran tempatan, dsb. Analisis kepentingan ciri boleh menerangkan proses membuat keputusan model dengan menilai tahap pengaruh model ke atas ciri input. Anggaran selang ramalan model

Kenal pasti overfitting dan underfitting melalui lengkung pembelajaran Kenal pasti overfitting dan underfitting melalui lengkung pembelajaran Apr 29, 2024 pm 06:50 PM

Artikel ini akan memperkenalkan cara mengenal pasti pemasangan lampau dan kekurangan dalam model pembelajaran mesin secara berkesan melalui keluk pembelajaran. Underfitting dan overfitting 1. Overfitting Jika model terlampau latihan pada data sehingga ia mempelajari bunyi daripadanya, maka model tersebut dikatakan overfitting. Model yang dipasang terlebih dahulu mempelajari setiap contoh dengan sempurna sehingga ia akan salah mengklasifikasikan contoh yang tidak kelihatan/baharu. Untuk model terlampau, kami akan mendapat skor set latihan yang sempurna/hampir sempurna dan set pengesahan/skor ujian yang teruk. Diubah suai sedikit: "Punca overfitting: Gunakan model yang kompleks untuk menyelesaikan masalah mudah dan mengekstrak bunyi daripada data. Kerana set data kecil sebagai set latihan mungkin tidak mewakili perwakilan yang betul bagi semua data. 2. Underfitting Heru

Telus! Analisis mendalam tentang prinsip model pembelajaran mesin utama! Telus! Analisis mendalam tentang prinsip model pembelajaran mesin utama! Apr 12, 2024 pm 05:55 PM

Dalam istilah orang awam, model pembelajaran mesin ialah fungsi matematik yang memetakan data input kepada output yang diramalkan. Secara lebih khusus, model pembelajaran mesin ialah fungsi matematik yang melaraskan parameter model dengan belajar daripada data latihan untuk meminimumkan ralat antara output yang diramalkan dan label sebenar. Terdapat banyak model dalam pembelajaran mesin, seperti model regresi logistik, model pepohon keputusan, model mesin vektor sokongan, dll. Setiap model mempunyai jenis data dan jenis masalah yang berkenaan. Pada masa yang sama, terdapat banyak persamaan antara model yang berbeza, atau terdapat laluan tersembunyi untuk evolusi model. Mengambil perceptron penyambung sebagai contoh, dengan meningkatkan bilangan lapisan tersembunyi perceptron, kita boleh mengubahnya menjadi rangkaian neural yang mendalam. Jika fungsi kernel ditambah pada perceptron, ia boleh ditukar menjadi SVM. yang ini

Evolusi kecerdasan buatan dalam penerokaan angkasa lepas dan kejuruteraan penempatan manusia Evolusi kecerdasan buatan dalam penerokaan angkasa lepas dan kejuruteraan penempatan manusia Apr 29, 2024 pm 03:25 PM

Pada tahun 1950-an, kecerdasan buatan (AI) dilahirkan. Ketika itulah penyelidik mendapati bahawa mesin boleh melakukan tugas seperti manusia, seperti berfikir. Kemudian, pada tahun 1960-an, Jabatan Pertahanan A.S. membiayai kecerdasan buatan dan menubuhkan makmal untuk pembangunan selanjutnya. Penyelidik sedang mencari aplikasi untuk kecerdasan buatan dalam banyak bidang, seperti penerokaan angkasa lepas dan kelangsungan hidup dalam persekitaran yang melampau. Penerokaan angkasa lepas ialah kajian tentang alam semesta, yang meliputi seluruh alam semesta di luar bumi. Angkasa lepas diklasifikasikan sebagai persekitaran yang melampau kerana keadaannya berbeza daripada di Bumi. Untuk terus hidup di angkasa, banyak faktor mesti dipertimbangkan dan langkah berjaga-jaga mesti diambil. Para saintis dan penyelidik percaya bahawa meneroka ruang dan memahami keadaan semasa segala-galanya boleh membantu memahami cara alam semesta berfungsi dan bersedia untuk menghadapi kemungkinan krisis alam sekitar

Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Jun 03, 2024 pm 01:25 PM

Cabaran biasa yang dihadapi oleh algoritma pembelajaran mesin dalam C++ termasuk pengurusan memori, multi-threading, pengoptimuman prestasi dan kebolehselenggaraan. Penyelesaian termasuk menggunakan penunjuk pintar, perpustakaan benang moden, arahan SIMD dan perpustakaan pihak ketiga, serta mengikuti garis panduan gaya pengekodan dan menggunakan alat automasi. Kes praktikal menunjukkan cara menggunakan perpustakaan Eigen untuk melaksanakan algoritma regresi linear, mengurus memori dengan berkesan dan menggunakan operasi matriks berprestasi tinggi.

AI yang boleh dijelaskan: Menerangkan model AI/ML yang kompleks AI yang boleh dijelaskan: Menerangkan model AI/ML yang kompleks Jun 03, 2024 pm 10:08 PM

Penterjemah |. Disemak oleh Li Rui |. Chonglou Model kecerdasan buatan (AI) dan pembelajaran mesin (ML) semakin kompleks hari ini, dan output yang dihasilkan oleh model ini adalah kotak hitam – tidak dapat dijelaskan kepada pihak berkepentingan. AI Boleh Dijelaskan (XAI) bertujuan untuk menyelesaikan masalah ini dengan membolehkan pihak berkepentingan memahami cara model ini berfungsi, memastikan mereka memahami cara model ini sebenarnya membuat keputusan, dan memastikan ketelusan dalam sistem AI, Amanah dan akauntabiliti untuk menyelesaikan masalah ini. Artikel ini meneroka pelbagai teknik kecerdasan buatan (XAI) yang boleh dijelaskan untuk menggambarkan prinsip asasnya. Beberapa sebab mengapa AI boleh dijelaskan adalah penting Kepercayaan dan ketelusan: Untuk sistem AI diterima secara meluas dan dipercayai, pengguna perlu memahami cara keputusan dibuat

Lima sekolah pembelajaran mesin yang anda tidak tahu Lima sekolah pembelajaran mesin yang anda tidak tahu Jun 05, 2024 pm 08:51 PM

Pembelajaran mesin ialah cabang penting kecerdasan buatan yang memberikan komputer keupayaan untuk belajar daripada data dan meningkatkan keupayaan mereka tanpa diprogramkan secara eksplisit. Pembelajaran mesin mempunyai pelbagai aplikasi dalam pelbagai bidang, daripada pengecaman imej dan pemprosesan bahasa semula jadi kepada sistem pengesyoran dan pengesanan penipuan, dan ia mengubah cara hidup kita. Terdapat banyak kaedah dan teori yang berbeza dalam bidang pembelajaran mesin, antaranya lima kaedah yang paling berpengaruh dipanggil "Lima Sekolah Pembelajaran Mesin". Lima sekolah utama ialah sekolah simbolik, sekolah sambungan, sekolah evolusi, sekolah Bayesian dan sekolah analogi. 1. Simbolisme, juga dikenali sebagai simbolisme, menekankan penggunaan simbol untuk penaakulan logik dan ekspresi pengetahuan. Aliran pemikiran ini percaya bahawa pembelajaran adalah proses penolakan terbalik, melalui sedia ada

See all articles