半監督生成對抗網路 生成對抗網路

2021-10-18 21:14:08 字數 4474 閱讀 4814

一、生成對抗網路相關概念(一)生成模型在概率統計理論中,生成模型是指能夠在給定某些隱含引數的條件下,隨機生成觀測資料的模型,它給觀測值和標註資料序列指定乙個聯合概率分布。在機器學習中,生成模型可以用來直接對資料建模,也可以用來建立變數間的條件概率分布。通常可以分為兩個型別,一種是可以完全表示出資料確切的分布函式,一種是只能做到新資料的生成,而資料分布函式則是模糊的。其中,對抗生成網路屬於第二種型別。較為常見的生成模型有高斯混合模型、隱馬爾科夫模型等。(二)判別模型在機器學習領域判別模型是一種對未知資料y與已知資料x之間關係進行建模的方法,是一種基於概率理論的方法。已知輸入變數x,通過構建條件概率分布p(y|x)**y。較為常見的判別模型有支援向量機、決策樹、邏輯回歸、條件隨機場、人工神經網路等。

二、生成對抗網路基本原理

(一)基本思想生成對抗網路的基本思想是二人零和博弈思想,即參與博弈的雙方,在嚴格競爭下,一方的收益必然意味著另一方的損失,博弈各方的收益和損失相加總和永遠為「零」,雙方不存在合作的可能。在生成對抗模型中進行博弈

的是生成模型(g)和判別模型(d)。

其中生成模型g負責接收乙個隨機的雜訊,然後通過這個雜訊生成。判別模型d負責判別一張是不是「真實的」。它的輸入引數是一張,輸出引數為真實的概率,如果輸出概率為1,則代表一定是真實。如果輸出概率為0,則代表不可能是真實。

在訓練過程中,生成模型g的目標是盡量生成真實的去欺騙判別模型d。而判別模型d的目標是盡量把生成模型g生成的和真實的分別開來。這樣,兩個模型之間就構成了乙個動態的「博弈過程」。這場博弈最終要達到的結果是,在最理想的狀態下,生成模型g可以生成足以「以假亂真」的。此時,對於判別模型d來說,已經難以判定生成模型g生成的究竟是不是真實的,即輸出概率為0.5。這樣,我們就得到了乙個生成式的模型g,它可以用來生成。需要強調的是,由於該演算法具有收斂性,因此在模型收斂時,生成資料具有和真實資料相同的分布,這也保證了生成對抗模型的生成效果。(二)數學解析從數學原理角度分析,該過程實際上是乙個最大最小優化問題,其目標函式如公式1所示:

進行公式拆解可以看出,其本質是兩個優化問題。首先進行判別模型的優化,此時對應的公式為:

然後進行生成模型優化,對應公式為:

其中,x表示真實,z表示輸入g網路的雜訊,g(z)表示g網路生成的,d(x)表示d網路判斷真實是否真實的概率,d(g(z))是d網路判斷g生成的的是否真實的概率。由於g的目的是希望自己生成的「越接近真實越好」,當d(g(z))的值盡可能大時,v(d,g)會變小,因此目標函式中關於g求的是最小值。相應的,當d的能力越強,d(x)越大,d(g(x))越小時,v(d,g)會變大,因此目標函式中關於d求的是最大值。

三、生成對抗網路的應用場景

(一)影象處理(二)聲音處理生成對抗網路除了可以應用於影象處理,還可以應用於聲音處理,尤其是在合成和恢復語音素材的過程中。例如,用ai合成語音、從大量雜音中恢復某條聲軌,模仿乙個人的語速、語氣和語言心理等。(三)文字生成除此之外,生成對抗網路在文字生成、寫稿機械人等領域也有極大的應用空間。生成對抗網路之所以可以在ai領域被廣泛的應用,有很大一部分原因在於生成對抗網路賦予了機器創造力。例如,在ai創作文字過程中,最大的難點在於機器沒有思想和感情,無法製造出人類寫作的文字張力,而生成對抗網路剛好可以解決這一問題。(四)資訊破譯與資訊保安由於生成對抗網路的目的是使某物不斷趨近真實,因此可以通過其生產出真實的筆記、數字密碼、生物密碼等來破譯個體習慣、解鎖資訊、進行資訊保安防護等。在網路資訊繁雜的現代社會,生成對抗網路的應用將給資訊破譯與資訊保安防護帶來新的可能。(五)高精度的樣本**此外生成對抗網路還可以通過模糊資料和少量資訊,對某種可能性結果進行樣本**。資料越充分,演算法越高超,**就會越精準。例如,運用ai來通過人的側臉判斷正臉,就是用生成對抗網路技術來完成。這種**樣本的應用還有很多,因此,在未來生成對抗網路將擁有更充分的應用空間。

clcclear%% 構造真實訓練樣本 60000個樣本 1*784維(28*28展開)load mnist_uint8;train_x = double(train_x(1:60000,:)) / 255;%真實樣本認為為標籤 [1 0]; 生成樣本為[0 1];train_y = double(ones(size(train_x,1),1));% normalizetrain_x = mapminmax(train_x, 0, 1);rand('state',0)%% 構造模擬訓練樣本 60000個樣本 1*100維test_x = normrnd(0,1,[60000,100]); % 0-255的整數test_x = mapminmax(test_x, 0, 1);test_y = double(zeros(size(test_x,1),1));test_y_rel = double(ones(size(test_x,1),1));%%nn_g_t = nnsetup([100 784]);nn_g_t.activation_function = 'sigm';nn_g_t.output = 'sigm';nn_d = nnsetup([784 100 1]);nn_d.weightpenaltyl2 = 1e-4;  %  l2 weight decaynn_d.dropoutfraction = 0.5;   %  dropout fraction nn_d.learningrate = 0.01;                %  sigm require a lower learning ratenn_d.activation_function = 'sigm';nn_d.output = 'sigm';% nn_d.weightpenaltyl2 = 1e-4;  %  l2 weight decaynn_g = nnsetup([100 784 100 1]);nn_g.weightpenaltyl2 = 1e-4;  %  l2 weight decaynn_g.dropoutfraction = 0.5;   %  dropout fraction nn_g.learningrate = 0.01;                %  sigm require a lower learning ratenn_g.activation_function = 'sigm';nn_g.output = 'sigm';% nn_g.weightpenaltyl2 = 1e-4;  %  l2 weight decayopts.numepochs =  1;        %  number of full sweeps through dataopts.batchsize = 100;       %  take a mean gradient step over this many samples%%num = 1000;ticfor each = 1:1500    %----------計算g的輸出:假樣本-------------------     for i = 1:length(nn_g_t.w)   %共享網路引數        nn_g_t.w = nn_g.w;    end    g_output = nn_g_out(nn_g_t, test_x);    %-----------訓練d------------------------------    index = randperm(60000);    train_data_d = [train_x(index(1:num),:);g_output(index(1:num),:)];    train_y_d = [train_y(index(1:num),:);test_y(index(1:num),:)];    nn_d = nntrain(nn_d, train_data_d, train_y_d, opts);%訓練d    %-----------訓練g-------------------------------    for i = 1:length(nn_d.w)  %共享訓練的d的網路引數        nn_g.w = nn_d.w;    end    %訓練g:此時假樣本標籤為1,認為是真樣本    nn_g = nntrain(nn_g, test_x(index(1:num),:), test_y_rel(index(1:num),:), opts);endtocfor i = 1:length(nn_g_t.w)    nn_g_t.w = nn_g.w;endfin_output = nn_g_out(nn_g_t, test_x);%%函式nn_g_out為:function output = nn_g_out(nn, x)    nn.testing = 1;    nn = nnff(nn, x, zeros(size(x,1), nn.size(end)));    nn.testing = 0;    output = nn.a;end

生成對抗網路

我們提出乙個框架來通過對抗方式評估生成模型,我們同時訓練兩個模型 乙個生成模型g捕捉資料分布,乙個鑑別模型d估計乙個樣本來自於訓練資料而不是g的概率。g的訓練過程是最大化d犯錯的概率。這個框架與minmax兩個玩家的遊戲相對應。在任意函式g和d的空間存在乙個唯一解,g恢復訓練資料的分布,d等於1 2...

生成對抗網路

0.監督和無監督 本質 有無標籤資料 1.自動編碼器 只是重構原輸入 輸入 編碼 中間表示 潛在表示,code 解碼 重構 通常用於 1 忽略雜訊 2 壓縮維度 有聚類效果 可以達到pca和主成分分析效果 2.變分自動編碼器 vae variational autoencoders 可以生成新的樣本...

生成對抗網路 生成對抗網路的簡單介紹

近年來,在人工智慧領域深度學習取得了令人矚目的成就,在計算機視覺 自然語言處理等各種領域都取得了突破性的進展。深度學習現今主要是依靠神經網路模型來進行學習的,可大致分為三種基礎模型,首先的就是卷積神經網路 convolutional neural networks,cnns,1998 迴圈神經網路 ...