99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代CNN、RNN、GAN都是什么?終于有人講明白了
CNN、RNN、GAN都是什么?終于有人講明白了
2020-07-23
收藏

導(dǎo)讀:深度學(xué)習(xí)已經(jīng)存在了幾十年,不同的結(jié)構(gòu)和架構(gòu)針對不同的用例而進行演變。其中一些是基于我們對大腦的想法,另一些是基于大腦的實際工作。本文將簡單介紹幾個業(yè)界目前使用的先進的架構(gòu)。

作者:謝林·托馬斯(Sherin Thomas)、蘇丹舒·帕西(Sudhanshu Passi)

來源:大數(shù)據(jù)DT(ID:hzdashuju)

內(nèi)容摘編自《PyTorch深度學(xué)習(xí)實戰(zhàn)》

01 全連接網(wǎng)絡(luò)

全連接、密集和線性網(wǎng)絡(luò)是最基本但功能強大的架構(gòu)。這是機器學(xué)習(xí)的直接擴展,將神經(jīng)網(wǎng)絡(luò)與單個隱藏層結(jié)合使用。全連接層充當(dāng)所有架構(gòu)的最后一部分,用于獲得使用下方深度網(wǎng)絡(luò)所得分數(shù)的概率分布。

如其名稱所示,全連接網(wǎng)絡(luò)將其上一層和下一層中的所有神經(jīng)元相互連接。網(wǎng)絡(luò)可能最終通過設(shè)置權(quán)重來關(guān)閉一些神經(jīng)元,但在理想情況下,最初所有神經(jīng)元都參與訓(xùn)練。

02 編碼器和解碼器

編碼器和解碼器可能是深度學(xué)習(xí)另一個最基本的架構(gòu)之一。所有網(wǎng)絡(luò)都有一個或多個編碼器–解碼器層。你可以將全連接層中的隱藏層視為來自編碼器的編碼形式,將輸出層視為解碼器,它將隱藏層解碼并作為輸出。通常,編碼器將輸入編碼到中間狀態(tài),其中輸入為向量,然后解碼器網(wǎng)絡(luò)將該中間狀態(tài)解碼為我們想要的輸出形式。

編碼器–解碼器網(wǎng)絡(luò)的一個規(guī)范示例是序列到序列 (seq2seq)網(wǎng)絡(luò)(圖1.11),可用于機器翻譯。一個句子將被編碼為中間向量表示形式,其中整個句子以一些浮點數(shù)字的形式表示,解碼器根據(jù)中間向量解碼以生成目標語言的句子作為輸出。

▲圖1.11 seq2seq 網(wǎng)絡(luò)

自動編碼器(圖1.12)是一種特殊的編碼器–解碼器網(wǎng)絡(luò),屬于無監(jiān)督學(xué)習(xí)范疇。自動編碼器嘗試從未標記的數(shù)據(jù)中進行學(xué)習(xí),將目標值設(shè)置為輸入值。

例如,如果輸入一個大小為100×100的圖像,則輸入向量的維度為10 000。因此,輸出的大小也將為 10 000,但隱藏層的大小可能為 500。簡而言之,你正在嘗試將輸入轉(zhuǎn)換為較小的隱藏狀態(tài)表示形式,從隱藏狀態(tài)重新生成相同的輸入。

▲圖1.12 自動編碼器的結(jié)構(gòu)

你如果能夠訓(xùn)練一個可以做到這一點的神經(jīng)網(wǎng)絡(luò),就會找到一個好的壓縮算法,其可以將高維輸入變?yōu)榈途S向量,這具有數(shù)量級收益。

如今,自動編碼器正被廣泛應(yīng)用于不同的情景和行業(yè)。

03 循環(huán)神經(jīng)網(wǎng)絡(luò)

循環(huán)神經(jīng)網(wǎng)絡(luò)RNN)是最常見的深度學(xué)習(xí)算法之一,它席卷了整個世界。我們現(xiàn)在在自然語言處理或理解方面幾乎所有最先進的性能都歸功于RNN的變體。在循環(huán)網(wǎng)絡(luò)中,你嘗試識別數(shù)據(jù)中的最小單元,并使數(shù)據(jù)成為一組這樣的單元。

在自然語言的示例中,最常見的方法是將一個單詞作為一個單元,并在處理句子時將句子視為一組單詞。你在整個句子上展開RNN,一次處理一個單詞(圖1.13)。RNN 具有適用于不同數(shù)據(jù)集的變體,有時我們會根據(jù)效率選擇變體。長短期記憶 (LSTM)和門控循環(huán)單元(GRU)是最常見的 RNN 單元。

▲圖1.13 循環(huán)網(wǎng)絡(luò)中單詞的向量表示形式

04 遞歸神經(jīng)網(wǎng)絡(luò)

顧名思義,遞歸神經(jīng)網(wǎng)絡(luò)是一種樹狀網(wǎng)絡(luò),用于理解序列數(shù)據(jù)的分層結(jié)構(gòu)。遞歸網(wǎng)絡(luò)被研究者(尤其是 Salesforce 的首席科學(xué)家理查德·索徹和他的團隊)廣泛用于自然語言處理。

字向量能夠有效地將一個單詞的含義映射到一個向量空間,但當(dāng)涉及整個句子的含義時,卻沒有像word2vec這樣針對單詞的首選解決方案。遞歸神經(jīng)網(wǎng)絡(luò)是此類應(yīng)用最常用的算法之一。

遞歸網(wǎng)絡(luò)可以創(chuàng)建解析樹和組合向量,并映射其他分層關(guān)系(圖1.14),這反過來又幫助我們找到組合單詞和形成句子的規(guī)則。斯坦福自然語言推理小組開發(fā)了一種著名的、使用良好的算法,稱為SNLI,這是應(yīng)用遞歸網(wǎng)絡(luò)的一個好例子。

▲圖1.14 遞歸網(wǎng)絡(luò)中單詞的向量表示形式

05 卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)(CNN)(圖1.15)使我們能夠在計算機視覺中獲得超人的性能,它在2010年代早期達到了人類的精度,而且其精度仍在逐年提高。

卷積網(wǎng)絡(luò)是最容易理解的網(wǎng)絡(luò),因為它有可視化工具來顯示每一層正在做什么。

Facebook AI研究(FAIR)負責(zé)人Yann LeCun早在20世紀90年代就發(fā)明了CNN。人們當(dāng)時無法使用它,因為并沒有足夠的數(shù)據(jù)集和計算能力。CNN像滑動窗口一樣掃描輸入并生成中間表征,然后在它到達末端的全連接層之前對其進行逐層抽象。CNN也已成功應(yīng)用于非圖像數(shù)據(jù)集。

▲圖1.15 典型的 CNN

Facebook的研究小組發(fā)現(xiàn)了一個基于卷積神經(jīng)網(wǎng)絡(luò)的先進自然語言處理系統(tǒng),其卷積網(wǎng)絡(luò)優(yōu)于RNN,而后者被認為是任何序列數(shù)據(jù)集的首選架構(gòu)。雖然一些神經(jīng)科學(xué)家和人工智能研究人員不喜歡CNN(因為他們認為大腦不會像CNN那樣做),但基于CNN的網(wǎng)絡(luò)正在擊敗所有現(xiàn)有的網(wǎng)絡(luò)實現(xiàn)。

06 生成對抗網(wǎng)絡(luò)

生成對抗網(wǎng)絡(luò)(GAN)由 Ian Goodfellow 于 2014 年發(fā)明,自那時起,它顛覆了整個 AI 社群。它是最簡單、最明顯的實現(xiàn)之一,但其能力吸引了全世界的注意。GAN的配置如圖1.16所示。

▲圖1.16 GAN配置

在GAN中,兩個網(wǎng)絡(luò)相互競爭,最終達到一種平衡,即生成網(wǎng)絡(luò)可以生成數(shù)據(jù),而鑒別網(wǎng)絡(luò)很難將其與實際圖像區(qū)分開。

一個真實的例子就是警察和造假者之間的斗爭:假設(shè)一個造假者試圖制造假幣,而警察試圖識破它。最初,造假者沒有足夠的知識來制造看起來真實的假幣。隨著時間的流逝,造假者越來越善于制造看起來更像真實貨幣的假幣。這時,警察起初未能識別假幣,但最終他們會再次成功識別。

這種生成–對抗過程最終會形成一種平衡。GAN 具有極大的優(yōu)勢。

07 強化學(xué)習(xí)

通過互動進行學(xué)習(xí)是人類智力的基礎(chǔ),強化學(xué)習(xí)是領(lǐng)導(dǎo)我們朝這個方向前進的方法。過去強化學(xué)習(xí)是一個完全不同的領(lǐng)域,它認為人類通過試錯進行學(xué)習(xí)。然而,隨著深度學(xué)習(xí)的推進,另一個領(lǐng)域出現(xiàn)了“深度強化學(xué)習(xí)”,它結(jié)合了深度學(xué)習(xí)與強化學(xué)習(xí)。

現(xiàn)代強化學(xué)習(xí)使用深度網(wǎng)絡(luò)來進行學(xué)習(xí),而不是由人們顯式編碼這些規(guī)則。我們將研究Q學(xué)習(xí)和深度Q學(xué)習(xí),展示結(jié)合深度學(xué)習(xí)的強化學(xué)習(xí)與不結(jié)合深度學(xué)習(xí)的強化學(xué)習(xí)之間的區(qū)別。

強化學(xué)習(xí)被認為是通向一般智能的途徑之一,其中計算機或智能體通過與現(xiàn)實世界、物體或?qū)嶒灮踊蛘咄ㄟ^反饋來進行學(xué)習(xí)。訓(xùn)練強化學(xué)習(xí)智能體和訓(xùn)練狗很像,它們都是通過正、負激勵進行的。當(dāng)你因為狗撿到球而獎勵它一塊餅干或者因為狗沒撿到球而對它大喊大叫時,你就是在通過積極和消極的獎勵向狗的大腦中強化知識。

我們對AI智能體也做了同樣的操作,但正獎勵將是一個正數(shù),負獎勵將是一個負數(shù)。盡管我們不能將強化學(xué)習(xí)視為與 CNN/RNN 等類似的另一種架構(gòu),但這里將其作為使用深度神經(jīng)網(wǎng)絡(luò)來解決實際問題的另一種方法,其配置如圖1.17所示。

▲圖1.17 強化學(xué)習(xí)配置

關(guān)于作者:謝林·托馬斯(Sherin Thomas)的職業(yè)生涯始于信息安全專家,后來他將工作重心轉(zhuǎn)移到了基于深度學(xué)習(xí)的安全系統(tǒng)。他曾幫助全球多家公司建立AI流程,并曾就職于位于印度班加羅爾的一家快速成長的初創(chuàng)公司CoWrks。

蘇丹舒·帕西(Sudhanshu Passi)是CoWrks的技術(shù)專家。在CoWrks ,他一直是機器學(xué)習(xí)的一切相關(guān)事宜的驅(qū)動者。在簡化復(fù)雜概念方面的專業(yè)知識使他的著作成為初學(xué)者和專家的理想讀物。

本文摘編自《PyTorch深度學(xué)習(xí)實戰(zhàn)》,經(jīng)出版方授權(quán)發(fā)布。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }