在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

生成式AI的定義和特征

CHANBAEK ? 來源:網絡整理 ? 2024-07-05 17:33 ? 次閱讀

引言

生成式人工智能(Generative Artificial Intelligence, GAI)是人工智能領域的一個重要分支,它利用機器學習算法,特別是深度學習技術,使計算機能夠模擬人類的創造性行為,生成全新的、具有實際意義的數據或內容。這種技術已經在自然語言處理、圖像生成、音頻合成等多個領域展現出巨大的潛力和應用價值。本文將詳細探討生成式AI的定義、特征類,并通過代碼示例展示其在實際應用中的實現。

生成式AI的定義

生成式AI是一種利用機器學習算法,特別是生成模型,從大量數據中學習并生成新數據或內容的技術。其核心在于讓計算機模型學會從數據中提取規律,并據此創造出與輸入數據相似但又不同的新數據。與傳統的判別式AI(Discriminative AI)不同,生成式AI不僅關注于數據的分類或預測,更側重于數據的生成和創造。

生成式AI的特征

生成式AI具有多種特征,這些特征共同構成了其強大的生成能力和廣泛的應用前景。以下是幾個主要的特征類:

  1. 多樣性 :生成式AI能夠生成多樣化的數據,包括但不限于圖像、文本、音頻等。這種多樣性使得它在多個領域都有廣泛的應用。
  2. 創新性 :生成式AI能夠創造出全新的、前所未有的內容,這在一定程度上模擬了人類的創造性過程。
  3. 可解釋性 :部分生成式AI模型(如變分自編碼器VAE)能夠解釋生成數據的概率分布,有助于理解數據的內在結構。
  4. 高效性 :隨著計算能力的提升和算法的優化,生成式AI能夠在短時間內生成大量高質量的數據。
  5. 自主學習 :生成式AI模型,如生成對抗網絡(GAN),能夠在訓練過程中自主學習并優化生成策略,無需人為設定生成數據的分布。

代碼示例

為了更直觀地展示生成式AI的實現,我們將通過兩個具體的例子——使用變分自編碼器(VAE)生成圖像和使用生成對抗網絡(GAN)生成手寫數字——來展示其代碼實現。

1. 使用變分自編碼器(VAE)生成圖像

VAE是一種基于概率生成模型的生成式算法,它將輸入數據映射到一個潛在空間,并從該空間中采樣生成新的數據。以下是一個簡化的VAE模型示例,用于生成手寫數字圖像(使用MNIST數據集):

import torch  
from torch import nn  
from torch.nn import functional as F  
from torchvision import datasets, transforms  
  
class VAE(nn.Module):  
    def __init__(self):  
        super(VAE, self).__init__()  
  
        # Encoder  
        self.fc1 = nn.Linear(784, 400)  
        self.fc21 = nn.Linear(400, 20)  # Mean layer  
        self.fc22 = nn.Linear(400, 20)  # Log variance layer  
  
        # Decoder  
        self.fc3 = nn.Linear(20, 400)  
        self.fc4 = nn.Linear(400, 784)  
  
    def encode(self, x):  
        h1 = F.relu(self.fc1(x))  
        return self.fc21(h1), self.fc22(h1)  
  
    def reparameterize(self, mu, logvar):  
        std = torch.exp(0.5*logvar)  
        eps = torch.randn_like(std)  
        return mu + eps*std  
  
    def decode(self, z):  
        h3 = F.relu(self.fc3(z))  
        return torch.sigmoid(self.fc4(h3))  
  
    def forward(self, x):  
        mu, logvar = self.encode(x.view(-1, 784))  
        z = self.reparameterize(mu, logvar)  
        return self.decode(z), mu, logvar  
  
# 數據加載和預處理  
transform = transforms.Compose([transforms.ToTensor(),  
                                transforms.Normalize((0.5,), (0.5,))])  
train_loader = datasets.MNIST(root='./data', train=True, download=True, transform=transform)  
  
# 實例化模型和優化器  
model = VAE()  
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)  
  
# 訓練過程(簡化)  
for epoch in range(num_epochs):  
    for data in train_loader:  
        img, _ = data  
        img = img.view(img.size(0), -1)  
        recon, mu, logvar = model(img)
# Reconstruction loss  
    BCE = F.binary_cross_entropy(recon, img.view(recon.size(0), -1), reduction='sum')  
      
    # KL divergence loss  
    KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())  
      
    # Total loss  
    loss = BCE + KLD  
      
    # Backward + Optimize  
    optimizer.zero_grad()  
    loss.backward()  
    optimizer.step()  

    # Logging  
    if (epoch+1) % 10 == 0:  
        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
2. 使用生成對抗網絡(GAN)生成手寫數字

GAN由兩部分組成:生成器(Generator)和判別器(Discriminator)。生成器負責生成盡可能逼真的數據,而判別器則負責區分生成的數據和真實數據。以下是一個簡單的GAN模型,用于生成手寫數字:

import torch  
from torch import nn  
from torch.optim import Adam  
from torchvision import datasets, transforms  
  
class Generator(nn.Module):  
    def __init__(self):  
        super(Generator, self).__init__()  
        self.main = nn.Sequential(  
            nn.Linear(100, 256),  
            nn.LeakyReLU(0.2),  
            nn.Linear(256, 512),  
            nn.LeakyReLU(0.2),  
            nn.Linear(512, 1024),  
            nn.LeakyReLU(0.2),  
            nn.Linear(1024, 784),  
            nn.Tanh()  
        )  
  
    def forward(self, input):  
        return self.main(input)  
  
class Discriminator(nn.Module):  
    def __init__(self):  
        super(Discriminator, self).__init__()  
        self.main = nn.Sequential(  
            nn.Linear(784, 1024),  
            nn.LeakyReLU(0.2),  
            nn.Linear(1024, 512),  
            nn.LeakyReLU(0.2),  
            nn.Linear(512, 256),  
            nn.LeakyReLU(0.2),  
            nn.Linear(256, 1),  
            nn.Sigmoid()  
        )  
  
    def forward(self, input):  
        return self.main(input)  
  
# 數據加載和預處理  
transform = transforms.Compose([transforms.ToTensor(),  
                                transforms.Normalize((0.5,), (0.5,))])  
train_loader = datasets.MNIST(root='./data', train=True, download=True, transform=transform)  
  
# 實例化模型和優化器  
G = Generator()  
D = Discriminator()  
G_optimizer = Adam(G.parameters(), lr=0.0002)  
D_optimizer = Adam(D.parameters(), lr=0.0002)  
  
# 訓練過程(簡化)  
for epoch in range(num_epochs):  
    for data in train_loader:  
        real_images, _ = data  
        real_labels = torch.ones(batch_size, 1)  
        fake_labels = torch.zeros(batch_size, 1)  
  
        # Train Discriminator  
        D_optimizer.zero_grad()  
        outputs = D(real_images)  
        d_loss_real = F.binary_cross_entropy(outputs, real_labels)  
        z = torch.randn(batch_size, 100)  
        fake_images = G(z)  
        outputs = D(fake_images.detach())  
        d_loss_fake = F.binary_cross_entropy(outputs, fake_labels)  
        d_loss = d_loss_real + d_loss_fake  
        d_loss.backward()  
        D_optimizer.step()  
  
        # Train Generator  
        G_optimizer.zero_grad()  
        z = torch.randn(batch_size, 100)  
        fake_images = G(z)  
        outputs = D(fake_images)  
        g_loss = F.binary_cross_entropy(outputs, real_labels)  
        g_loss.backward()  
        G_optimizer optimizer.step()

可以在這里添加額外的代碼來監控訓練進度,比如保存模型、繪制損失圖等。

注意:上面的代碼是一個簡化的GAN訓練過程,實際中可能需要更復雜的設置,比如:

  1. 標簽平滑(Label Smoothing) :可以減少判別器的過度自信,有助于生成器生成更真實的數據。
  2. 特征匹配(Feature Matching) :通過匹配生成數據和真實數據在判別器中間層的特征,來訓練生成器。
  3. 學習率衰減(Learning Rate Decay) :隨著訓練的進行,逐漸降低學習率,有助于模型更細致地調整參數。
  4. Batch Normalization 和 Spectral Normalization :在GAN中,這些技術可以幫助穩定訓練過程,防止模式崩潰等問題。
  5. 保存和加載模型 :在訓練過程中定期保存模型,以便在訓練完成后或在后續研究中復用。
  6. 可視化結果 :將生成的圖像定期保存并可視化,以直觀地評估GAN的生成質量。
  7. 評估指標 :雖然GAN通常通過主觀的視覺評估來評價,但也可以使用一些客觀指標,如Inception Score和Fréchet Inception Distance(FID),來量化生成圖像的質量。
  8. 使用預訓練的模型 :在某些情況下,使用預訓練的判別器或生成器可以加速訓練過程或提高生成質量。

在實際應用中,GAN的設計和訓練是一個高度迭代和實驗性的過程,需要不斷地調整和優化才能達到最佳效果。

當然,我們可以繼續探討GAN訓練過程中的一些高級技巧和最佳實踐。

1. 平衡生成器和判別器的訓練

在GAN中,生成器和判別器是相互競爭的,因此它們的訓練需要保持平衡。如果判別器變得過強,它可能會拒絕所有來自生成器的樣本,導致生成器無法從錯誤中學習。相反,如果生成器變得過強,判別器可能會無法從真實數據和生成數據之間做出有效區分,這也會阻礙訓練。

為了平衡這兩個網絡,一種常見的方法是讓判別器在每個訓練迭代中更新多次(例如,每次生成器更新前讓判別器更新5次)。然而,這種方法需要仔細調整以避免判別器過擬合訓練數據。

2. 使用Wasserstein GAN (WGAN) 和其變體

傳統GAN使用JS散度或KL散度來衡量真實數據分布和生成數據分布之間的差異,但這些散度在不相交分布的情況下可能無法提供有意義的梯度。WGAN通過最小化Wasserstein距離(也稱為Earth-Mover距離)來改進這一點,它通常能提供更穩定的訓練過程和更好的生成質量。

WGAN的關鍵改進包括:

  • 使用絕對值裁剪或梯度懲罰來限制判別器的權重,以滿足1-Lipschitz約束。
  • 去掉判別器輸出層的Sigmoid激活函數,并最小化真實樣本和生成樣本評分之間的差異。

3. 損失函數的調整

除了上述的WGAN損失外,還可以嘗試其他類型的損失函數來改進GAN的性能。例如:

  • 最小二乘GAN(LSGAN)使用最小二乘損失而不是傳統的交叉熵損失,這有助于減少梯度消失問題并產生更高質量的圖像。
  • Hinge損失也被證明在某些情況下能夠改善GAN的訓練穩定性。

4. 架構選擇

生成器和判別器的架構對GAN的性能有很大影響。深度殘差網絡(ResNets)、卷積神經網絡(CNNs)和自注意力機制等現代網絡架構已被用于構建更強大的GAN。例如,ProgressiveGAN和StyleGAN就采用了復雜的生成器架構來生成高分辨率、高質量的圖像。

5. 早期停止和正則化

為了防止過擬合,可以使用早期停止技術來監控驗證集上的性能,并在性能開始下降時停止訓練。此外,還可以應用各種正則化技術,如L1/L2正則化、Dropout和批歸一化(Batch Normalization),來穩定訓練過程并提高泛化能力。

6. 數據增強

雖然GAN通常用于生成新數據,但數據增強技術也可以用于增強訓練數據集的多樣性,從而提高GAN的泛化能力。例如,可以對真實圖像應用旋轉、縮放、裁剪和顏色變換等操作來生成額外的訓練樣本。

7. 多階段訓練

在某些情況下,可以采用多階段訓練策略來逐步提高GAN的性能。例如,可以先在低分辨率下訓練GAN,然后逐漸增加分辨率,直到達到所需的圖像質量。這種方法有助于穩定訓練過程并減少計算資源的需求。

8. 實驗和調試

最后,GAN的訓練通常需要大量的實驗和調試。由于GAN的行為高度依賴于其架構、損失函數、優化器和超參數的選擇,因此需要進行廣泛的實驗來找到最佳配置。此外,監控訓練過程中的損失曲線、生成圖像的質量和多樣性等指標也是非常重要的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7536

    瀏覽量

    88641
  • 人工智能
    +關注

    關注

    1796

    文章

    47670

    瀏覽量

    240289
  • 生成式AI
    +關注

    關注

    0

    文章

    514

    瀏覽量

    547
收藏 人收藏

    評論

    相關推薦

    AI作畫大受追捧,生成AI技術的機會與挑戰!

    特征,不是簡單的重復。 生成AI的關鍵技術是生成對抗網絡(GANs, Generative
    的頭像 發表于 10-17 08:15 ?2641次閱讀

    NVIDIA AI Foundry 為全球企業打造自定義 Llama 3.1 生成 AI 模型

    Foundry 提供從數據策管、合成數據生成、微調、檢索、防護到評估的全方位生成 AI 模型服務,以便部署自定義 Llama 3.1 N
    發表于 07-24 09:39 ?742次閱讀
    NVIDIA <b class='flag-5'>AI</b> Foundry 為全球企業打造自<b class='flag-5'>定義</b> Llama 3.1 <b class='flag-5'>生成</b><b class='flag-5'>式</b> <b class='flag-5'>AI</b> 模型

    什么是生成AI?生成AI的四大優勢

    生成AI是一種特定類型的AI,專注于生成新內容,如文本、圖像和音樂。這些系統在大型數據集上進行訓練,并使用機器學習算法
    發表于 05-29 14:12 ?4598次閱讀

    虹軟圖像深度恢復技術與生成AI的創新 生成AI助力

    當前,生成人工智能(AI)技術的快速發展令人矚目。它能夠理解人類的描述,并在短時間內生成逼真的圖像和視頻。在生成
    發表于 06-21 09:06 ?480次閱讀

    利用 NVIDIA Jetson 實現生成 AI

    近日,NVIDIA 發布了 Jetson 生成 AI 實驗室(Jetson Generative AI Lab),使開發者能夠通過 NVIDIA Jetson 邊緣設備在現實世界中探
    的頭像 發表于 11-07 21:25 ?1099次閱讀
    利用 NVIDIA Jetson 實現<b class='flag-5'>生成</b><b class='flag-5'>式</b> <b class='flag-5'>AI</b>

    生成AI技術的應用前景

    生成 AI(人工智能)與我們熟知的 AI 有何不同?這篇文章將為我們一探究竟!
    的頭像 發表于 11-29 12:20 ?1433次閱讀

    生成AI手機出貨量或將飛速增長,市場份額提升顯著

    同時,反轉點還預期,至2027年,生成AI智慧型手機的市場保有量將超過10億部。按照其定義,生成
    的頭像 發表于 04-16 16:55 ?671次閱讀

    MediaTek攜手生態伙伴聯合發布《生成AI手機產業白皮書》,共同定義生成AI手機

    Lab、騰訊混元、vivo等生態伙伴*,聯合發布《生成AI手機產業白皮書》,共同定義了“生成
    發表于 05-07 10:25 ?219次閱讀

    聯發科聯合生態伙伴推出《生成AI手機產業白皮書》,生成AI手機發展路線明確了!

    深入探討,同時,聯發科展示了其天璣AI生態戰略以及終端生成AI應用開發的一站解決方案——“天璣AI
    的頭像 發表于 05-07 16:34 ?480次閱讀
    聯發科聯合生態伙伴推出《<b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>手機產業白皮書》,<b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>手機發展路線明確了!

    MediaTek攜手生態伙伴聯合發布《生成AI手機產業白皮書》

    、騰訊混元、vivo等生態伙伴*,聯合發布《生成AI手機產業白皮書》,共同定義了“生成
    的頭像 發表于 05-08 16:48 ?484次閱讀

    原來這才是【生成AI】??!

    隨著ChatGPT、文心一言等AI產品的火爆,生成AI已經成為了大家茶余飯后熱議的話題??墒?,為什么要在AI前面加上“
    的頭像 發表于 06-05 08:04 ?290次閱讀
    原來這才是【<b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>】??!

    生成AI與神經網絡模型的區別和聯系

    生成AI與神經網絡模型是現代人工智能領域的兩個核心概念,它們在推動技術進步和應用拓展方面發揮著至關重要的作用。本文將詳細探討生成
    的頭像 發表于 07-02 15:03 ?972次閱讀

    如何用C++創建簡單的生成AI模型

    生成AI(Generative AI)是一種人工智能技術,它通過機器學習模型和深度學習技術,從大量歷史數據中學習對象的特征和規律,從而能夠
    的頭像 發表于 07-05 17:53 ?1048次閱讀

    生成AI工具作用

    生成AI工具是指那些能夠自動生成文本、圖像、音頻、視頻等多種類型數據的人工智能技術。在此,petacloud.ai小編為您整理
    的頭像 發表于 10-28 11:19 ?318次閱讀

    生成AI工具好用嗎

    當下,生成AI工具正以其強大的內容生成能力,為用戶帶來了前所未有的便捷與創新。那么,生成
    的頭像 發表于 01-17 09:54 ?88次閱讀
    主站蜘蛛池模板: 夜夜操网站 | 日韩欧美一区二区三区视频 | 看免费一级片 | avhd101天天看新片 | 免费在线观看的视频 | 五月婷婷激情视频 | 国产美女久久久 | xxxx69日本| 女人张开腿让男人桶免费网站 | 黄色三级在线观看 | 992tv国产精品福利在线 | 狠狠色狠狠色综合日日32 | 全免费a级毛片免费看不卡 全日本爽视频在线 | 最新看片网址 | 91视频看看| 欧美高清milf在线播放 | 日本一区二区三区在线 视频观看免费 | 久久夜色精品国产噜噜小说 | 中文字幕在线观看一区二区三区 | 三级成人网 | 就要爱综合 | 天天摸天天碰色综合网 | 91成人在线播放 | 欧美精品网站 | 黄色xxxx| 五月网婷婷| 在线资源站 | 男女在线免费视频 | 奇米影视777四色米奇影院 | 成人伊人 | 性夜影院爽黄a爽免费视频 性瘾高h姚蕊全文免费阅读 | 天天干天天日天天射天天操毛片 | 久久精品免费视频观看 | 国产一级大片在线观看 | 欧美18xxoovideos | 扒开末成年粉嫩的小缝强文 | 国产综合第一页在线视频 | 国内亚州视频在线观看 | 日韩乱轮 | 婷婷丁香视频 | 国产日韩精品欧美一区色 |