版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、深度學(xué)習(xí)深度學(xué)習(xí)(1)稀疏自動編碼機(jī)(稀疏自動編碼機(jī)(SAE)網(wǎng)絡(luò))網(wǎng)絡(luò) 廣東工業(yè)大學(xué) 13級控制工程 傳統(tǒng)神經(jīng)網(wǎng)絡(luò) 1)比較容易過擬合,參數(shù)比較難調(diào)整; 2)訓(xùn)練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優(yōu);BP算法存在的問題:(1)梯度越來越稀疏:從頂層越往下,誤差校正信號越來越小;(2)收斂到局部最小值:尤其是從遠(yuǎn)離最優(yōu)區(qū)域開始的時候(隨機(jī)值初始化會導(dǎo)致這種情況的發(fā)生);(3)一般,我們只能用有標(biāo)簽的數(shù)據(jù)來訓(xùn)練:但大部分的數(shù)據(jù)是沒標(biāo)簽的,而大腦可以從沒有標(biāo)簽的的數(shù)據(jù)中學(xué)習(xí);一、針對過擬合現(xiàn)象的處理1.懲罰項(xiàng)(Penalty,正則化方法,正則化的一般形式是在整個目標(biāo)
2、函數(shù)后增加一個正則項(xiàng),以使經(jīng)驗(yàn)風(fēng)險最小化。把不重要的項(xiàng)的參數(shù)保留,但是令其系數(shù)為零)2.給輸入層a1加噪,以及對隱含層ai進(jìn)行Dropout (按比例隨機(jī)清零。)二、針對訓(xùn)練快慢與穩(wěn)定性的矛盾 應(yīng)用權(quán)值動量輔助調(diào)整權(quán)值三、針對以往一個bp網(wǎng)絡(luò)不能太多層 先逐個逐個隱含層進(jìn)行無監(jiān)督訓(xùn)練(實(shí)際還是用bp),即調(diào)用saesetup.m以及saetrain.m。 然后得到各個隱含層的參數(shù)才對完整的網(wǎng)絡(luò)進(jìn)行有監(jiān)督訓(xùn)練。test_example_SAE.m一、訓(xùn)練隱含層(例中為單個隱含層) 1.調(diào)用saesetup設(shè)置網(wǎng)絡(luò)參數(shù)( 結(jié)構(gòu)為784 100的兩層網(wǎng)絡(luò)) 2.在第1步基礎(chǔ)上修改網(wǎng)絡(luò)參數(shù)(這里是修改
3、第一組的 激活函數(shù)類型、學(xué)習(xí)率、輸入加噪率、訓(xùn)練迭代次數(shù)、batchsize) 3.調(diào)用saetrain,讓它對各個隱含層進(jìn)行逐層訓(xùn)練(例子中給的隱含層數(shù)為1層,100個節(jié)點(diǎn),輸入輸出同是train_x。每次進(jìn)行nntrain來訓(xùn)練隱含層都為三層網(wǎng)絡(luò),輸入層和輸出層一樣) 4.對第一組權(quán)值進(jìn)行可視化,看看學(xué)習(xí)結(jié)果。(由于例中的網(wǎng)絡(luò)只有一個100節(jié)點(diǎn)隱含層,故可視化為一張100個特征塊圖片。第一組權(quán)值W1用于編碼,第二組W2用于解碼)二、初始化網(wǎng)絡(luò)(為第三步初始化) 1.調(diào)用nnsetup,設(shè)置整個網(wǎng)絡(luò)(結(jié)構(gòu)是784 100 10) 2.設(shè)置網(wǎng)絡(luò)的激活函數(shù)和學(xué)習(xí)率 3.第一步中,把用于編碼的W(
4、實(shí)際包括閾值b和權(quán)值W)賦給此網(wǎng)絡(luò)。三、訓(xùn)練前向網(wǎng)絡(luò)1. 設(shè)置訓(xùn)練次數(shù)、batchsize。2.調(diào)用nntrain訓(xùn)練整個網(wǎng)絡(luò)(此時因期望輸出是train_y,為有監(jiān)督的訓(xùn)練)3.調(diào)用nntest測試整個網(wǎng)絡(luò)saesetup.m這里sae.setup中的輸入是784 100,令architecture=784 10 784 ,調(diào)用nnsetup進(jìn)行網(wǎng)絡(luò)參數(shù)設(shè)置。xhxW1b1W1b1saetrain.m逐個隱含層逐個隱含層進(jìn)行nntrain(sae.aei, x, x, opts)訓(xùn)練更新sae.aei參數(shù),其實(shí)就是更新sae.aei.W1、sae.aei.W2實(shí)驗(yàn)中,這里的i=1,因而就是得
5、到sae.ae1.W1、sae.ae1.W2,而最后只取用sae.ae1.W1784+1100+1784+1+1這里a1=train_xa2=sigm(nn.a1 * nn.W1),作為訓(xùn)練第二個隱含層的輸入,但是這里只有一個隱含層,所以a2在這里并沒用a1a2若是需要訓(xùn)練兩個隱含層,那么這里的a2則作為下個三層網(wǎng)絡(luò)的輸入以及輸出a1a2閾值Bnnsetup.mnn.size = architecture; %要設(shè)置的各層節(jié)點(diǎn)結(jié)構(gòu),如784 100 784 nn.n = numel(nn.size); %層數(shù),當(dāng)784 100 784,則為3 nn.activation_function =
6、tanh_opt; %激活函數(shù),或稱傳遞函數(shù)nn.learningRate = 2; %學(xué)習(xí)率,或稱步長,就是決定每次梯度下降的長度nn.momentum = 0.5; % 權(quán)值動量nn.scaling_learningRate = 1; %在nntrain中出現(xiàn),是每代間,學(xué)習(xí)率的關(guān)系倍數(shù)nn.weightPenaltyL2 = 0; %權(quán)值懲罰(L2正則化),在nnapplygrads中用到nn.nonSparsityPenalty = 0; %稀疏懲罰項(xiàng),在nnbp中用到。nn.sparsityTarget = 0.05; %稀疏目標(biāo),在nnbp中用到。nn.inputZeroMaske
7、dFraction = 0; %用于加噪nn.dropoutFraction = 0; %每一次mini-batch樣本輸入訓(xùn)練時,隨機(jī)扔掉0%的隱含層節(jié)點(diǎn)nn.testing = 0; %設(shè)置此時網(wǎng)絡(luò)有無測試nn.output = sigm; %輸出接什么函數(shù),還有softmax and linear以下i 為從第 2 到最后一層 nn.n nn.Wi - 1 隨機(jī)給出網(wǎng)絡(luò)權(quán)值初始值nn.vWi - 1 讓它初值=0 %用于更新參數(shù)時的臨時參數(shù)nn.pi 讓它初值=0 稀疏nntrain(這里無驗(yàn)證數(shù)據(jù)輸入)大循環(huán)逐numepochs(訓(xùn)練代數(shù))小循環(huán)逐numbatches(每代的樣本批次,
8、每批樣本100個,它們共同決定更新一次權(quán)值。不同代的同個批次中的樣本不會相同,因?yàn)楸浑S機(jī)打亂了。)1 故有numepochs* numbatches次執(zhí)行下列(這么多次更新權(quán)值)判斷inputZeroMaskedFraction,看看是否要加噪,是的話,按此比例隨機(jī)把輸入值清零。 nn = nnff(nn, batch_x, batch_y);%前向網(wǎng)絡(luò) nn = nnbp(nn); % 反向傳播網(wǎng)絡(luò)nn = nnapplygrads(nn); %梯度下降L(n)=nn.L;%保存每次訓(xùn)練的誤差,總共訓(xùn)練了10*600次,故有6000個誤差2 每代更新?lián)p失值和學(xué)習(xí)率loss = nneval(
9、nn, loss, train_x, train_y);%誤差值 nn.learningRate = nn.learningRate * nn.scaling_learningRate;%調(diào)整改變下一次訓(xùn)練的學(xué)習(xí)率nntrain.mxhyW2b2W1b1結(jié)果得到每層的激活值,一、輸入層a1=ones(m,1) x,這里m=size(x,1)=100二、隱含層(這里只考慮s函數(shù))從第2到第n-1層,ai = sigm(nn.ai - 1 * nn.Wi - 1);dropoutFraction用在訓(xùn)練隱含層中,隨機(jī)將激活值按比例清零(為了讓權(quán)值不起作用)dropoutFraction用在測試中,
10、將激活值nn.ai = nn.ai.*(1 - nn.dropoutFraction)if(nn.nonSparsityPenalty0)% 在nnbp中用到 nn.pi = 0.99 * nn.pi + 0.01 * mean(nn.ai, 1);三、輸出層1。當(dāng)輸出不接softmax時 nn.an = sigm(nn.an - 1 * nn.Wn - 1);2。當(dāng)輸出接分類器softmax時(此次實(shí)驗(yàn)沒用到它) 得到誤差值e=y-an當(dāng)輸出不接softmax時,平均誤差平方為L = sum(sum(1/2 * nn.e . 2) / m;nnff.m為了得到n-1組dW,用于調(diào)節(jié)n-1個W
11、。在求dW過程中用到了中間變量 di,d_act一、求di 1.輸出層的dn當(dāng) nn.output=sigm時,dn = - nn.e .* (nn.an .* (1 - nn.an); (即1/2 *nn.e2的復(fù)合函數(shù)求導(dǎo),其中變量是nn.an) 2.隱含層的diif(nn.nonSparsityPenalty0) pi = repmat(nn.pi, size(nn.ai, 1), 1); sparsityError = zeros(size(nn.ai,1),1) nn.nonSparsityPenalty * (-nn.sparsityTarget ./ pi + (1 - nn.s
12、parsityTarget) ./ (1 - pi);if i+1=n % 倒數(shù)第二層,即最后一個隱含層 di = (di + 1 * nn.Wi + sparsityError) .* d_act; % d_act = nn.ai .* (1 - nn.ai);else %此外 di = (di + 1(:,2:end) * nn.Wi + sparsityError) .* d_act; if(nn.dropoutFraction0)% nn.dropOutMaski在nnff中已求得,必須與它相同 di = di .* ones(size(di,1),1) nn.dropOutMaski
13、;(清零)二、求dWiif i+1=n nn.dWi = (di + 1 * nn.ai) / size(di + 1, 1); else nn.dWi = (di + 1(:,2:end) * nn.ai) / size(di + 1, 1); (以往的bp網(wǎng)絡(luò),W=-*de/dw,這里多了稀疏項(xiàng),以及Dropout 的處理,在下一步的nnapplygrads中還多了權(quán)值懲罰以及權(quán)值動量)nnbp.m nnapplygrads.m梯度下降法計(jì)算作為更新值的nn.W。當(dāng)當(dāng)設(shè)置nn.weightPenaltyL20,則 dW = nn.dWi + nn.weightPenaltyL2 * zer
14、os(size(nn.Wi,1),1) nn.Wi(:,2:end);當(dāng)當(dāng)設(shè)置nn.weightPenaltyL2=0,則dW = nn.dWi再再讓dW乘以學(xué)習(xí)率(或稱 步長)如果如果權(quán)值動量momentum0,則 nn.vWi = nn.momentum*nn.vWi + dW; dW = nn.vWi;最后最后nn.Wi = nn.Wi - dW;1。懲罰項(xiàng)方法是一種間接修剪網(wǎng)絡(luò)的辦法,其原理是在傳統(tǒng)的誤差函數(shù)中加入一衡量網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜程度的“復(fù)雜度項(xiàng)”。應(yīng)用到權(quán)值更新規(guī)則后,該項(xiàng)在訓(xùn)練過程中起到防止權(quán)值增長太大和驅(qū)使不重要權(quán)值逐漸減小到零的作用防止權(quán)值增長太大和驅(qū)使不重要權(quán)值逐漸減小到零的作用。盡管那些接近零的連接權(quán)沒有從網(wǎng)絡(luò)中被刪除。但它們對網(wǎng)絡(luò)輸出幾乎沒有影響,已相當(dāng)于從網(wǎng)絡(luò)中被刪除了。這樣一來,訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)實(shí)際上已是被修剪過的小網(wǎng)絡(luò)了。可見,懲罰項(xiàng)法在沒有破壞網(wǎng)絡(luò)結(jié)構(gòu)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物-山東省淄博市2024-2025學(xué)年第一學(xué)期高三期末摸底質(zhì)量檢測試題和答案
- 《湖心島產(chǎn)品分析》課件
- 《種成本比較分析》課件
- 八年級上冊道德與法治第二課少年與夢知識總結(jié)
- 小學(xué)一年級20以內(nèi)連加連減口算練習(xí)題1080道
- 《現(xiàn)代金融通論》課件
- 幼兒園周二食譜
- 高考新課標(biāo)語文模擬試卷系列之76
- 《電子資源綜述》課件
- 西安市銷售員工作總結(jié)
- 小學(xué)數(shù)學(xué)一年級上冊-期末測試卷(二)含答案-人教版
- 登金陵鳳凰臺
- 小學(xué)四年級數(shù)學(xué)上冊促銷問題
- 初中體育-50米跑教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 國內(nèi)外中學(xué)數(shù)學(xué)教學(xué)改革與發(fā)展
- 醫(yī)院藥品評價與遴選量化評分表
- 專業(yè)英語四級模擬試卷450(題后含答案及解析)
- 中等職業(yè)學(xué)校班主任能力比賽幼兒保育專業(yè)班級建設(shè)方案
- 50道《鄉(xiāng)土中國》期末專題訓(xùn)練習(xí)題(多題型含解析)
- 滕王閣序帶拼音全文譯文
- 帶式輸送機(jī)檢修維護(hù)通用安全技術(shù)措施實(shí)用版
評論
0/150
提交評論