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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀深度學(xué)習(xí)已成功應(yīng)用于這三大領(lǐng)域
深度學(xué)習(xí)已成功應(yīng)用于這三大領(lǐng)域
2017-11-20
收藏

深度學(xué)習(xí)已成功應(yīng)用于這三大領(lǐng)域

在本章中,我們將介紹如何使用深度學(xué)習(xí)來(lái)解決計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、自然語(yǔ)言處理以及其他商業(yè)領(lǐng)域中的應(yīng)用。首先我們將討論在許多最重要的AI 應(yīng)用中所需的大規(guī)模神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)。接著,我們將回顧深度學(xué)習(xí)已經(jīng)成功應(yīng)用的幾個(gè)特定領(lǐng)域。

\

  盡管深度學(xué)習(xí)的一個(gè)目標(biāo)是設(shè)計(jì)能夠處理各種任務(wù)的算法,然而截至目前深度學(xué)習(xí)的應(yīng)用仍然需要一定程度的特化。例如,計(jì)算機(jī)視覺(jué)中的任務(wù)對(duì)每一個(gè)樣本都需要處理大量的輸入特征(像素),自然語(yǔ)言處理任務(wù)的每一個(gè)輸入特征都需要對(duì)大量的可能值(詞匯表中的詞) 建模。
  大規(guī)模深度學(xué)習(xí)
  深度學(xué)習(xí)的基本思想基于聯(lián)結(jié)主義:盡管機(jī)器學(xué)習(xí)模型中單個(gè)生物性的神經(jīng)元或者說(shuō)是單個(gè)特征不是智能的,但是大量的神經(jīng)元或者特征作用在一起往往能夠表現(xiàn)出智能。我們必須著重強(qiáng)調(diào)神經(jīng)元數(shù)量必須很大這個(gè)事實(shí)。
  相比20世紀(jì)80年代,如今神經(jīng)網(wǎng)絡(luò)精度以及處理任務(wù)的復(fù)雜度都有一定提升,其中一個(gè)關(guān)鍵的因素就是網(wǎng)絡(luò)規(guī)模的巨大提升。在過(guò)去的30年內(nèi),網(wǎng)絡(luò)規(guī)模是以指數(shù)級(jí)的速度遞增的。然而如今的人工神經(jīng)網(wǎng)絡(luò)的規(guī)模也僅僅和昆蟲(chóng)的神經(jīng)系統(tǒng)差不多。由于規(guī)模的大小對(duì)于神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)至關(guān)重要,因此深度學(xué)習(xí)需要高性能的硬件設(shè)施和軟件實(shí)現(xiàn)。
  快速的CPU實(shí)現(xiàn)
  傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)是用單臺(tái)機(jī)器的CPU 來(lái)訓(xùn)練的。如今,這種做法通常被視為是不可取的?,F(xiàn)在,我們通常使用GPU 或者許多臺(tái)機(jī)器的CPU 連接在一起進(jìn)行計(jì)算。在使用這種昂貴配置之前,為論證CPU 無(wú)法承擔(dān)神經(jīng)網(wǎng)絡(luò)所需的巨大計(jì)算量,研究者們付出了巨大的努力。
  描述如何實(shí)現(xiàn)高效的數(shù)值CPU 代碼已經(jīng)超出了本書(shū)的討論范圍,但是我們?cè)谶@里還是要強(qiáng)調(diào)通過(guò)設(shè)計(jì)一些特定的CPU 上的操作可以大大提升效率。例如,在2011 年,最好的CPU 在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)使用定點(diǎn)運(yùn)算能夠比浮點(diǎn)運(yùn)算跑得更快。通過(guò)調(diào)整定點(diǎn)運(yùn)算的實(shí)現(xiàn)方式,Vanhoucke et al. (2011) 獲得了3 倍于一個(gè)強(qiáng)浮點(diǎn)運(yùn)算系統(tǒng)的速度。因?yàn)楦鱾€(gè)新型CPU都有各自不同的特性,所以有時(shí)候采用浮點(diǎn)運(yùn)算實(shí)現(xiàn)會(huì)更快。一條重要的準(zhǔn)則就是,通過(guò)特殊設(shè)計(jì)的數(shù)值運(yùn)算,我們可以獲得巨大的回報(bào)。除了選擇定點(diǎn)運(yùn)算或者浮點(diǎn)運(yùn)算以外,其他的策略還包括了如通過(guò)優(yōu)化數(shù)據(jù)結(jié)構(gòu)避免高速緩存缺失、使用向量指令等。機(jī)器學(xué)習(xí)的研究者們大多會(huì)忽略這些實(shí)現(xiàn)的細(xì)節(jié),但是如果某種實(shí)現(xiàn)限制了模型的規(guī)模,那該模型的精度就要受到影響。
  GPU實(shí)現(xiàn)
  許多現(xiàn)代神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)基于圖形處理器(Graphics Processing Unit, GPU)。圖形處理器最初是為圖形應(yīng)用而開(kāi)發(fā)的專用硬件組件。視頻游戲系統(tǒng)的消費(fèi)市場(chǎng)刺激了圖形處理硬件的發(fā)展。GPU為視頻游戲所設(shè)計(jì)的特性也可以使神經(jīng)網(wǎng)絡(luò)的計(jì)算受益。
  大規(guī)模的分布式實(shí)現(xiàn)
  在許多情況下,單個(gè)機(jī)器的計(jì)算資源是有限的。因此,我們希望把訓(xùn)練或者推斷的任務(wù)分?jǐn)偟蕉鄠€(gè)機(jī)器上進(jìn)行。
  分布式的推斷是容易實(shí)現(xiàn)的,因?yàn)槊恳粋€(gè)輸入的樣本都可以在單獨(dú)的機(jī)器上運(yùn)行。這也被稱為數(shù)據(jù)并行(data parallelism)。
  同樣地,模型并行(model parallelism) 也是可行的,其中多個(gè)機(jī)器共同運(yùn)行一個(gè)數(shù)據(jù)點(diǎn),每一個(gè)機(jī)器負(fù)責(zé)模型的一個(gè)部分。對(duì)于推斷和訓(xùn)練,這都是可行的。
  在訓(xùn)練過(guò)程中,數(shù)據(jù)并行從某種程度上來(lái)說(shuō)更加困難。對(duì)于隨機(jī)梯度下降的單步來(lái)說(shuō),我們可以增加小批量的大小,但是從優(yōu)化性能的角度來(lái)說(shuō),我們得到的回報(bào)通常并不會(huì)線性增長(zhǎng)。使用多個(gè)機(jī)器并行地計(jì)算多個(gè)梯度下降步驟是一個(gè)更好的選擇。不幸的是,梯度下降的標(biāo)準(zhǔn)定義完全是一個(gè)串行的過(guò)程:第t 步的梯度是第t ? 1 步所得參數(shù)的函數(shù)。
  這個(gè)問(wèn)題可以使用異步隨機(jī)梯度下降(Asynchoronous Stochasitc Gradient Descent)(Bengio et al., 2001b; Recht et al., 2011) 解決。在這個(gè)方法中,幾個(gè)處理器的核共用存有參數(shù)的內(nèi)存。每一個(gè)核在無(wú)鎖的情況下讀取這些參數(shù),并計(jì)算對(duì)應(yīng)的梯度,然后在無(wú)鎖狀態(tài)下更新這些參數(shù)。由于一些核把其他的核所更新的參數(shù)覆蓋了,因此這種方法減少了每一步梯度下降所獲得的平均提升。但因?yàn)楦虏綌?shù)的速率增加,總體上還是加快了學(xué)習(xí)過(guò)程。Deanet al. (2012) 率先提出了多機(jī)器無(wú)鎖的梯度下降方法,其中參數(shù)是由參數(shù)服務(wù)器(parameterserver) 管理而非存儲(chǔ)在共用的內(nèi)存中。分布式的異步梯度下降方法保留了訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的基本策略,并被工業(yè)界很多機(jī)器學(xué)習(xí)組所使用(Chilimbi et al., 2014; Wu et al., 2015)。學(xué)術(shù)界的深度學(xué)習(xí)研究者們通常無(wú)法負(fù)擔(dān)那么大規(guī)模的分布式學(xué)習(xí)系統(tǒng),但是一些研究仍關(guān)注于如何在校園環(huán)境中使用相對(duì)廉價(jià)的硬件系統(tǒng)構(gòu)造分布式網(wǎng)絡(luò)(Coates et al., 2013)。
  模型壓縮
  在許多商業(yè)應(yīng)用的機(jī)器學(xué)習(xí)模型中,一個(gè)時(shí)間和內(nèi)存開(kāi)銷較小的推斷算法比一個(gè)時(shí)間和內(nèi)存開(kāi)銷較小的訓(xùn)練算法要更為重要。對(duì)于那些不需要個(gè)性化設(shè)計(jì)的應(yīng)用來(lái)說(shuō),我們只需要一次性地訓(xùn)練模型,然后它就可以被成千上萬(wàn)的用戶使用。在許多情況下,相比開(kāi)發(fā)者,終端用戶的可用資源往往更有限。例如,開(kāi)發(fā)者們可以使用巨大的計(jì)算機(jī)集群訓(xùn)練一個(gè)語(yǔ)音識(shí)別的網(wǎng)絡(luò),然后將其部署到移動(dòng)手機(jī)上。
  減少推斷所需開(kāi)銷的一個(gè)關(guān)鍵策略是模型壓縮(model compression)(Bucilu·a et al., 2006)。模型壓縮的基本思想是用一個(gè)更小的模型取代替原始耗時(shí)的模型,從而使得用來(lái)存儲(chǔ)與評(píng)估所需的內(nèi)存與運(yùn)行時(shí)間更少。
  當(dāng)原始模型的規(guī)模很大,且我們需要防止過(guò)擬合時(shí),模型壓縮就可以起到作用。在許多情況下,擁有最小泛化誤差的模型往往是多個(gè)獨(dú)立訓(xùn)練而成的模型的集成。評(píng)估所有n 個(gè)集成成員的成本很高。有時(shí)候,當(dāng)單個(gè)模型很大(例如,如果它使用Dropout 正則化) 時(shí),其泛化能力也會(huì)很好。
  這些巨大的模型能夠?qū)W習(xí)到某個(gè)函數(shù)f(x),但選用的參數(shù)數(shù)量超過(guò)了任務(wù)所需的參數(shù)數(shù)量。只是因?yàn)橛?xùn)練樣本數(shù)是有限的,所以模型的規(guī)模才變得必要。只要我們擬合了這個(gè)函數(shù)f(x),我們就可以通過(guò)將f 作用于隨機(jī)采樣點(diǎn)x 來(lái)生成有無(wú)窮多訓(xùn)練樣本的訓(xùn)練集。然后,我們使用這些樣本訓(xùn)練一個(gè)新的更小的模型,使其能夠在這些點(diǎn)上擬合f(x)。為了更加充分地利用這個(gè)新的小模型的容量,最好從類似于真實(shí)測(cè)試數(shù)據(jù)(之后將提供給模型) 的分布中采樣x。這個(gè)過(guò)程可以通過(guò)損壞訓(xùn)練樣本或者從原始訓(xùn)練數(shù)據(jù)訓(xùn)練的生成模型中采樣完成。
  此外,我們還可以僅在原始訓(xùn)練數(shù)據(jù)上訓(xùn)練一個(gè)更小的模型,但只是為了復(fù)制模型的其他特征,比如在不正確的類上的后驗(yàn)分布(Hinton et al., 2014, 2015)。
  動(dòng)態(tài)結(jié)構(gòu)
  一般來(lái)說(shuō),加速數(shù)據(jù)處理系統(tǒng)的一種策略是構(gòu)造一個(gè)系統(tǒng),這個(gè)系統(tǒng)用動(dòng)態(tài)結(jié)構(gòu)(dynamicstructure) 描述圖中處理輸入所需的計(jì)算過(guò)程。在給定一個(gè)輸入的情況中,數(shù)據(jù)處理系統(tǒng)可以動(dòng)態(tài)地決定運(yùn)行神經(jīng)網(wǎng)絡(luò)系統(tǒng)的哪一部分。單個(gè)神經(jīng)網(wǎng)絡(luò)內(nèi)部同樣也存在動(dòng)態(tài)結(jié)構(gòu),給定輸入信息,決定特征(隱藏單元) 哪一部分用于計(jì)算。這種神經(jīng)網(wǎng)絡(luò)中的動(dòng)態(tài)結(jié)構(gòu)有時(shí)被稱為條件計(jì)算(conditional computation)(Bengio, 2013; Bengio et al., 2013b)。由于模型結(jié)構(gòu)許多部分可能只跟輸入的一小部分有關(guān),只計(jì)算那些需要的特征就可以起到加速的目的。
  動(dòng)態(tài)結(jié)構(gòu)計(jì)算是一種基礎(chǔ)的計(jì)算機(jī)科學(xué)方法,廣泛應(yīng)用于軟件工程項(xiàng)目。應(yīng)用于神經(jīng)網(wǎng)絡(luò)的最簡(jiǎn)單的動(dòng)態(tài)結(jié)構(gòu)基于決定神經(jīng)網(wǎng)絡(luò)(或者其他機(jī)器學(xué)習(xí)模型) 中的哪些子集需要應(yīng)用于特定的輸入。
  深度網(wǎng)絡(luò)的專用硬件實(shí)現(xiàn)
  自從早期的神經(jīng)網(wǎng)絡(luò)研究以來(lái),硬件設(shè)計(jì)者就已經(jīng)致力于可以加速神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練和/或推斷的專用硬件實(shí)現(xiàn)。讀者可以查看早期的和更近的專用硬件深度網(wǎng)絡(luò)的評(píng)論(Lindseyand Lindblad, 1994; Beiu et al., 2003; Misra and Saha, 2010)。
  不同形式的專用硬件(Graf and Jackel, 1989; Mead and Ismail, 2012; Kim et al., 2009; Phamet al., 2012; Chen et al., 2014b,a) 的研究已經(jīng)持續(xù)了好幾十年,比如專用集成電路(application—speci?c integrated circuit, ASIC) 的數(shù)字(基于數(shù)字的二進(jìn)制表示)、模擬(Graf and Jackel,1989; Mead and Ismail, 2012)(基于以電壓或電流表示連續(xù)值的物理實(shí)現(xiàn)) 和混合實(shí)現(xiàn)(組合數(shù)字和模擬組件)。近年來(lái)更靈活的現(xiàn)場(chǎng)可編程門陣列(?eld programmable gated array, FPGA)實(shí)現(xiàn)(其中電路的具體細(xì)節(jié)可以在制造完成后寫入芯片) 也得到了長(zhǎng)足發(fā)展。
  雖然CPU 和GPU 上的軟件實(shí)現(xiàn)通常使用32 位或64 位的精度來(lái)表示浮點(diǎn)數(shù),但是長(zhǎng)期以來(lái)使用較低的精度在更短的時(shí)間內(nèi)完成推斷也是可行的(Holt and Baker, 1991; Holi andHwang, 1993; Presley and Haggard,1994; Simard and Graf, 1994; Wawrzynek et al., 1996; Savichet al., 2007)。這已成為近年來(lái)更迫切的問(wèn)題,因?yàn)?a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)在工業(yè)產(chǎn)品中越來(lái)越受歡迎,并且由于更快的硬件產(chǎn)生的巨大影響已經(jīng)通過(guò)GPU 的使用得到了證明。激勵(lì)當(dāng)前對(duì)深度網(wǎng)絡(luò)專用硬件研究的另一個(gè)因素是單個(gè)CPU 或GPU 核心的進(jìn)展速度已經(jīng)減慢,并且最近計(jì)算速度的改進(jìn)來(lái)自核心的并行化(無(wú)論CPU 還是GPU)。這與20 世紀(jì)90 年代的情況(上一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí)代) 的不同之處在于,神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)(從開(kāi)始到芯片可用可能需要兩年) 跟不上快速進(jìn)展和價(jià)格低廉的通用CPU 的腳步。因此,在針對(duì)諸如手機(jī)等低功率設(shè)備開(kāi)發(fā)新的硬件設(shè)計(jì),并且想要用于深度學(xué)習(xí)的一般公眾應(yīng)用(例如,具有語(yǔ)音、計(jì)算機(jī)視覺(jué)或自然語(yǔ)言功能的設(shè)施) 時(shí),研究專用硬件能夠進(jìn)一步推動(dòng)其發(fā)展。
  最近對(duì)基于反向傳播神經(jīng)網(wǎng)絡(luò)的低精度實(shí)現(xiàn)的工作(Vanhoucke et al., 2011; Courbariauxet al., 2015; Gupta et al., 2015) 表明,8 位和16 位之間的精度足以滿足使用或訓(xùn)練基于反向傳播的深度神經(jīng)網(wǎng)絡(luò)的要求。顯而易見(jiàn)的是,在訓(xùn)練期間需要比在推斷時(shí)更高的精度,并且數(shù)字某些形式的動(dòng)態(tài)定點(diǎn)表示能夠減少每個(gè)數(shù)需要的存儲(chǔ)空間。傳統(tǒng)的定點(diǎn)數(shù)被限制在一個(gè)固定范圍之內(nèi)(其對(duì)應(yīng)于浮點(diǎn)表示中的給定指數(shù))。而動(dòng)態(tài)定點(diǎn)表示在一組數(shù)字(例如一個(gè)層中的所有權(quán)重) 之間共享該范圍。使用定點(diǎn)代替浮點(diǎn)表示并且每個(gè)數(shù)使用較少的比特能夠減少執(zhí)行乘法所需的硬件表面積、功率需求和計(jì)算時(shí)間。而乘法已經(jīng)是使用或訓(xùn)練反向傳播的現(xiàn)代深度網(wǎng)絡(luò)中要求最高的操作。
  長(zhǎng)久以來(lái),計(jì)算機(jī)視覺(jué)就是深度學(xué)習(xí)應(yīng)用中幾個(gè)最活躍的研究方向之一。因?yàn)橐曈X(jué)是一個(gè)對(duì)人類以及許多動(dòng)物毫不費(fèi)力,但對(duì)計(jì)算機(jī)卻充滿挑戰(zhàn)的任務(wù)(Ballard et al., 1983)。深度學(xué)習(xí)中許多流行的標(biāo)準(zhǔn)基準(zhǔn)任務(wù)包括對(duì)象識(shí)別和光學(xué)字符識(shí)別。
  計(jì)算機(jī)視覺(jué)是一個(gè)非常廣闊的發(fā)展領(lǐng)域,其中包括多種多樣的處理圖片的方式以及應(yīng)用方向。計(jì)算機(jī)視覺(jué)的應(yīng)用廣泛:從復(fù)現(xiàn)人類視覺(jué)能力(比如識(shí)別人臉) 到創(chuàng)造全新的視覺(jué)能力。舉個(gè)后者的例子,近期一個(gè)新的計(jì)算機(jī)視覺(jué)應(yīng)用是從視頻中可視物體的振動(dòng)識(shí)別相應(yīng)的聲波(Davis et al., 2014)。大多數(shù)計(jì)算機(jī)視覺(jué)領(lǐng)域的深度學(xué)習(xí)研究未曾關(guān)注過(guò)這樣一個(gè)奇異的應(yīng)用,它擴(kuò)展了圖像的范圍,而不是僅僅關(guān)注于人工智能中較小的核心目標(biāo)|| 復(fù)制人類的能力。無(wú)論是報(bào)告圖像中存在哪個(gè)物體,還是給圖像中每個(gè)對(duì)象周圍添加注釋性的邊框,或從圖像中轉(zhuǎn)錄符號(hào)序列,或給圖像中的每個(gè)像素標(biāo)記它所屬對(duì)象的標(biāo)識(shí),大多數(shù)計(jì)算機(jī)視覺(jué)中的深度學(xué)習(xí)往往用于對(duì)象識(shí)別或者某種形式的檢測(cè)。由于生成模型已經(jīng)是深度學(xué)習(xí)研究的指導(dǎo)原則,因此還有大量圖像合成工作使用了深度模型。盡管圖像合成(“無(wú)中生有”) 通常不包括在計(jì)算機(jī)視覺(jué)內(nèi),但是能夠進(jìn)行圖像合成的模型通常用于圖像恢復(fù),即修復(fù)圖像中的缺陷或從圖像中移除對(duì)象這樣的計(jì)算機(jī)視覺(jué)任務(wù)。
  預(yù)處理
  由于原始輸入往往以深度學(xué)習(xí)架構(gòu)難以表示的形式出現(xiàn),許多應(yīng)用領(lǐng)域需要復(fù)雜精細(xì)的預(yù)處理。計(jì)算機(jī)視覺(jué)通常只需要相對(duì)少的這種預(yù)處理。圖像應(yīng)該被標(biāo)準(zhǔn)化,從而使得它們的像素都在相同并且合理的范圍內(nèi),比如[0; 1] 或者[?1; 1]。將[0; 1] 中的圖像與[0; 255] 中的圖像混合,通常會(huì)導(dǎo)致失敗。將圖像格式化為具有相同的比例,嚴(yán)格上說(shuō)是唯一一種必要的預(yù)處理。許多計(jì)算機(jī)視覺(jué)架構(gòu)需要標(biāo)準(zhǔn)尺寸的圖像,因此必須裁剪或縮放圖像以適應(yīng)該尺寸。然而,嚴(yán)格地說(shuō)即使是這種重新調(diào)整比例的操作并不總是必要的。一些卷積模型接受可變大小的輸入,并動(dòng)態(tài)地調(diào)整它們的池化區(qū)域大小以保持輸出大小恒定(Waibel et al., 1989)。其他卷積模型具有可變大小的輸出,其尺寸隨輸入自動(dòng)縮放,例如對(duì)圖像中的每個(gè)像素進(jìn)行去噪或標(biāo)注的模型(Hadsell et al., 2007)。
  數(shù)據(jù)集增強(qiáng)可以被看作一種只對(duì)訓(xùn)練集做預(yù)處理的方式。數(shù)據(jù)集增強(qiáng)是減少大多數(shù)計(jì)算機(jī)視覺(jué)模型泛化誤差的一種極好方法。在測(cè)試時(shí)可用的一個(gè)相關(guān)想法是將同一輸入的許多不同版本傳給模型(例如,在稍微不同的位置處裁剪的相同圖像),并且在模型的不同實(shí)例上決定模型的輸出。后一個(gè)想法可以被理解為集成方法,并且有助于減少泛化誤差。
  其他種類的預(yù)處理需要同時(shí)應(yīng)用于訓(xùn)練集和測(cè)試集,其目的是將每個(gè)樣本置于更規(guī)范的形式,以便減少模型需要考慮的變化量。減少數(shù)據(jù)中的變化量既能夠減少泛化誤差,也能夠減小擬合訓(xùn)練集所需模型的大小。更簡(jiǎn)單的任務(wù)可以通過(guò)更小的模型來(lái)解決,而更簡(jiǎn)單的解決方案泛化能力一般更好。這種類型的預(yù)處理通常被設(shè)計(jì)為去除輸入數(shù)據(jù)中的某種可變性,這對(duì)于人工設(shè)計(jì)者來(lái)說(shuō)是容易描述的,并且人工設(shè)計(jì)者能夠保證不受到任務(wù)影響。當(dāng)使用大型數(shù)據(jù)集和大型模型訓(xùn)練時(shí),這種預(yù)處理通常是不必要的,并且最好只是讓模型學(xué)習(xí)哪些變化性應(yīng)該保留。例如,用于分類ImageNet 的AlexNet 系統(tǒng)僅具有一個(gè)預(yù)處理步驟:對(duì)每個(gè)像素減去訓(xùn)練樣本的平均值(Krizhevsky et al., 2012b)。
  數(shù)據(jù)集增強(qiáng)
  如第7.4 節(jié)中講到的一樣,我們很容易通過(guò)增加訓(xùn)練集的額外副本來(lái)增加訓(xùn)練集的大小,進(jìn)而改進(jìn)分類器的泛化能力。這些額外副本可以通過(guò)對(duì)原始圖像進(jìn)行一些變化來(lái)生成,但是并不改變其類別。對(duì)象識(shí)別這個(gè)分類任務(wù)特別適合于這種形式的數(shù)據(jù)集增強(qiáng),因?yàn)轭悇e信息對(duì)于許多變換是不變的,而我們可以簡(jiǎn)單地對(duì)輸入應(yīng)用諸多幾何變換。如前所述,分類器可以受益于隨機(jī)轉(zhuǎn)換或者旋轉(zhuǎn),某些情況下輸入的翻轉(zhuǎn)可以增強(qiáng)數(shù)據(jù)集。在專門的計(jì)算機(jī)視覺(jué)應(yīng)用中,存在很多更高級(jí)的用以增強(qiáng)數(shù)據(jù)集的變換。這些方案包括圖像中顏色的隨機(jī)擾動(dòng)(Krizhevskyet al., 2012b),以及對(duì)輸入的非線性幾何變形(LeCun et al., 1998c)。
  語(yǔ)音識(shí)別
  語(yǔ)音識(shí)別任務(wù)是將一段包括了自然語(yǔ)言發(fā)音的聲學(xué)信號(hào)投影到對(duì)應(yīng)說(shuō)話人的詞序列上。令X = (x(1), x(2), …, x(T)) 表示語(yǔ)音的輸入向量(傳統(tǒng)做法以20ms 為一幀分割信號(hào))。許多語(yǔ)音識(shí)別的系統(tǒng)通過(guò)特殊的手工設(shè)計(jì)方法預(yù)處理輸入信號(hào),從而提取特征,但是某些深度學(xué)習(xí)系統(tǒng)(Jaitly and Hinton, 2011) 直接從原始輸入中學(xué)習(xí)特征。令y = (y1; y2,…, yN) 表示目標(biāo)的輸出序列(通常是一個(gè)詞或者字符的序列)。自動(dòng)語(yǔ)音識(shí)別(automatic speech recognition,ASR) 任務(wù)指的是構(gòu)造一個(gè)函數(shù)f*ASR,使得它能夠在給定聲學(xué)序列X 的情況下計(jì)算最有可能的語(yǔ)言序列y:
\

  其中P*是給定輸入值X 時(shí)對(duì)應(yīng)目標(biāo)y 的真實(shí)條件分布。

從20 世紀(jì)80 年代直到2009?2012 年,最先進(jìn)的語(yǔ)音識(shí)別系統(tǒng)是隱馬爾可夫模型(hiddenmarkov model, HMM) 和高斯混合模型(gaussian mixture model, GMM) 的結(jié)合。GMM 對(duì)聲學(xué)特征和音素(phoneme) 之間的關(guān)系建模(Bahl et al., 1987),HMM 對(duì)音素序列建模。GMM-HMM 模型將語(yǔ)音信號(hào)視作由如下過(guò)程生成:首先,一個(gè)HMM 生成了一個(gè)音素的序列以及離散的子音素狀態(tài)(比如每一個(gè)音素的開(kāi)始、中間、結(jié)尾),然后GMM 把每一個(gè)離散的狀態(tài)轉(zhuǎn)化為一個(gè)簡(jiǎn)短的聲音信號(hào)。盡管直到最近GMM-HMM 一直在ASR 中占據(jù)主導(dǎo)地位,語(yǔ)音識(shí)別仍然是神經(jīng)網(wǎng)絡(luò)所成功應(yīng)用的第一個(gè)領(lǐng)域。從20 世紀(jì)80 年代末期到90 年代初期,大量語(yǔ)音識(shí)別系統(tǒng)使用了神經(jīng)網(wǎng)絡(luò)(Bourlard and Wellekens, 1989; Waibel et al., 1989; Robinsonand Fallside, 1991; Bengio et al., 1991, 1992; Konig et al., 1996)。當(dāng)時(shí),基于神經(jīng)網(wǎng)絡(luò)的ASR的表現(xiàn)和GMM-HMM 系統(tǒng)的表現(xiàn)差不多。比如說(shuō),Robinson and Fallside (1991) 在TIMIT數(shù)據(jù)集(Garofolo et al., 1993)(有39 個(gè)區(qū)分的音素) 上達(dá)到了26% 的音素錯(cuò)誤率,這個(gè)結(jié)果優(yōu)于或者說(shuō)是可以與基于HMM 的結(jié)果相比。從那時(shí)起,TIMIT 成為音素識(shí)別的一個(gè)基準(zhǔn)數(shù)據(jù)集,在語(yǔ)音識(shí)別中的作用就和MNIST 在對(duì)象識(shí)別中的作用差不多。然而,由于語(yǔ)音識(shí)別軟件系統(tǒng)中復(fù)雜的工程因素以及在基于GMM-HMM 的系統(tǒng)中已經(jīng)付出的巨大努力,工業(yè)界并沒(méi)有迫切轉(zhuǎn)向神經(jīng)網(wǎng)絡(luò)的需求。結(jié)果,直到21 世紀(jì)00 年代末期,學(xué)術(shù)界和工業(yè)界的研究者們更多的是用神經(jīng)網(wǎng)絡(luò)為GMM-HMM 系統(tǒng)學(xué)習(xí)一些額外的特征。
之后,隨著更大更深的模型以及更大的數(shù)據(jù)集的出現(xiàn),通過(guò)使用神經(jīng)網(wǎng)絡(luò)代替GMM 來(lái)實(shí)現(xiàn)將聲學(xué)特征轉(zhuǎn)化為音素(或者子音素狀態(tài)) 的過(guò)程可以大大地提高識(shí)別的精度。從2009年開(kāi)始,語(yǔ)音識(shí)別的研究者們將一種無(wú)監(jiān)督學(xué)習(xí)的深度學(xué)習(xí)方法應(yīng)用于語(yǔ)音識(shí)別。這種深度學(xué)習(xí)方法基于訓(xùn)練一個(gè)被稱作是受限玻爾茲曼機(jī)的無(wú)向概率模型,從而對(duì)輸入數(shù)據(jù)建模。受限玻爾茲曼機(jī)將會(huì)在第三部分中描述。為了完成語(yǔ)音識(shí)別任務(wù),無(wú)監(jiān)督的預(yù)訓(xùn)練被用來(lái)構(gòu)造一個(gè)深度前饋網(wǎng)絡(luò),這個(gè)神經(jīng)網(wǎng)絡(luò)每一層都是通過(guò)訓(xùn)練受限玻爾茲曼機(jī)來(lái)初始化的。這些網(wǎng)絡(luò)的輸入是從一個(gè)固定規(guī)格的輸入窗(以當(dāng)前幀為中心) 的譜聲學(xué)表示抽取,預(yù)測(cè)了當(dāng)前幀所對(duì)應(yīng)的HMM 狀態(tài)的條件概率。訓(xùn)練一個(gè)這樣的神經(jīng)網(wǎng)絡(luò)能夠可以顯著提高在TIMIT 數(shù)據(jù)集上的識(shí)別率(Mohamed et al., 2009,2012a),并將音素級(jí)別的錯(cuò)誤率從大約26% 降到了20:7%。關(guān)于這個(gè)模型成功原因的詳細(xì)分析可以參考Mohamed et al. (2012b)。對(duì)于基本的電話識(shí)別工作流程的一個(gè)擴(kuò)展工作是添加說(shuō)話人自適應(yīng)相關(guān)特征(Mohamed et al., 2011) 的方法,這可以進(jìn)一步地降低錯(cuò)誤率。緊接著的工作則將結(jié)構(gòu)從音素識(shí)別(TIMIT 所主要關(guān)注的)轉(zhuǎn)向了大規(guī)模詞匯語(yǔ)音識(shí)別(Dahl et al., 2012),這不僅包含了識(shí)別音素,還包括了識(shí)別大規(guī)模詞匯的序列。語(yǔ)音識(shí)別上的深度網(wǎng)絡(luò)從最初的使用受限玻爾茲曼機(jī)進(jìn)行預(yù)訓(xùn)練發(fā)展到了使用諸如整流線性單元和Dropout 這樣的技術(shù)(Zeiler et al., 2013; Dahl et al., 2013)。從那時(shí)開(kāi)始,工業(yè)界的幾個(gè)語(yǔ)音研究組開(kāi)始尋求與學(xué)術(shù)圈的研究者之間的合作。Hinton et al. (2012a)描述了這些合作所帶來(lái)的突破性進(jìn)展,這些技術(shù)現(xiàn)在被廣泛應(yīng)用在產(chǎn)品中,比如移動(dòng)手機(jī)端。
隨后,當(dāng)研究組使用了越來(lái)越大的帶標(biāo)簽的數(shù)據(jù)集,加入了各種初始化、訓(xùn)練方法以及調(diào)試深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)之后,他們發(fā)現(xiàn)這種無(wú)監(jiān)督的預(yù)訓(xùn)練方式是沒(méi)有必要的,或者說(shuō)不能帶來(lái)任何顯著的改進(jìn)。
用語(yǔ)音識(shí)別中詞錯(cuò)誤率來(lái)衡量,在語(yǔ)音識(shí)別性能上的這些突破是史無(wú)前例的(大約30%的提高)。在這之前的長(zhǎng)達(dá)十年左右的時(shí)間內(nèi),盡管數(shù)據(jù)集的規(guī)模是隨時(shí)間增長(zhǎng)的(見(jiàn)Deng and Yu (2014) 的圖2.4),但基于GMM-HMM 的系統(tǒng)的傳統(tǒng)技術(shù)已經(jīng)停滯不前了。這也導(dǎo)致了語(yǔ)音識(shí)別領(lǐng)域快速地轉(zhuǎn)向深度學(xué)習(xí)的研究。在大約兩年的時(shí)間內(nèi),工業(yè)界大多數(shù)的語(yǔ)音識(shí)別產(chǎn)品都包含了深度神經(jīng)網(wǎng)絡(luò),這種成功也激發(fā)了ASR 領(lǐng)域?qū)?a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)算法和結(jié)構(gòu)的新一波研究浪潮,并且影響至今。
其中的一個(gè)創(chuàng)新點(diǎn)是卷積網(wǎng)絡(luò)的應(yīng)用(Sainath et al., 2013)。卷積網(wǎng)絡(luò)在時(shí)域與頻域上復(fù)用了權(quán)重,改進(jìn)了之前的僅在時(shí)域上使用重復(fù)權(quán)值的時(shí)延神經(jīng)網(wǎng)絡(luò)。這種新的二維卷積模型并不是將輸入的頻譜當(dāng)作一個(gè)長(zhǎng)的向量,而是當(dāng)成一個(gè)圖像,其中一個(gè)軸對(duì)應(yīng)著時(shí)間,另一個(gè)軸對(duì)應(yīng)的是譜分量的頻率。
完全拋棄HMM 并轉(zhuǎn)向研究端到端的深度學(xué)習(xí)語(yǔ)音識(shí)別系統(tǒng)是至今仍然活躍的另一個(gè)重要推動(dòng)。這個(gè)領(lǐng)域第一個(gè)主要突破是Graves et al. (2013),他訓(xùn)練了一個(gè)深度的長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)(見(jiàn)第10.10 節(jié)),使用了幀-音素排列的MAP 推斷,就像LeCun et al. (1998c)以及CTC 框架(Graves et al., 2006; Graves, 2012) 中一樣。一個(gè)深度循環(huán)神經(jīng)網(wǎng)絡(luò)(Graves et al., 2013) 每個(gè)時(shí)間步的各層都有狀態(tài)變量,兩種展開(kāi)圖的方式導(dǎo)致兩種不同深度:一種是普通的根據(jù)層的堆疊衡量的深度,另一種是根據(jù)時(shí)間展開(kāi)衡量的深度。這個(gè)工作把TIMIT 數(shù)據(jù)集上音素的錯(cuò)誤率記錄降到了新低17:7%。關(guān)于應(yīng)用于其他領(lǐng)域的深度循環(huán)神經(jīng)網(wǎng)絡(luò)的變種可以參考Pascanu et al. (2014a); Chung et al. (2014)。
另一個(gè)端到端深度學(xué)習(xí)語(yǔ)音識(shí)別方向的最新方法是,讓系統(tǒng)學(xué)習(xí)如何利用語(yǔ)音(phonetic)層級(jí)的信息“排列”聲學(xué)(acoustic) 層級(jí)的信息(Chorowski et al., 2014; Lu et al., 2015)。
自然語(yǔ)言處理
自然語(yǔ)言處理(natural language processing,NLP) 是讓計(jì)算機(jī)能夠使用人類語(yǔ)言,例如英語(yǔ)或法語(yǔ)。為了讓簡(jiǎn)單的程序能夠高效明確地解析,計(jì)算機(jī)程序通常讀取和發(fā)出特殊化的語(yǔ)言。而自然語(yǔ)言通常是模糊的,并且可能不遵循形式的描述。自然語(yǔ)言處理中的應(yīng)用如機(jī)器翻譯,學(xué)習(xí)者需要讀取一種人類語(yǔ)言的句子,并用另一種人類語(yǔ)言發(fā)出等同的句子。許多NLP 應(yīng)用程序基于語(yǔ)言模型,語(yǔ)言模型定義了關(guān)于自然語(yǔ)言中的字、字符或字節(jié)序列的概率分布。
與本章討論的其他應(yīng)用一樣,非常通用的神經(jīng)網(wǎng)絡(luò)技術(shù)可以成功地應(yīng)用于自然語(yǔ)言處理。然而,為了實(shí)現(xiàn)卓越的性能并擴(kuò)展到大型應(yīng)用程序,一些領(lǐng)域特定的策略也很重要。為了構(gòu)建自然語(yǔ)言的有效模型,通常必須使用專門處理序列數(shù)據(jù)的技術(shù)。在很多情況下,我們將自然語(yǔ)言視為一系列詞,而不是單個(gè)字符或字節(jié)序列。因?yàn)榭赡艿脑~總數(shù)非常大,基于詞的語(yǔ)言模型必須在極高維度和稀疏的離散空間上操作。為了使這種空間上的模型在計(jì)算和統(tǒng)計(jì)意義上都高效,研究者已經(jīng)開(kāi)發(fā)了幾種策略。
n-gram
語(yǔ)言模型(language model) 定義了自然語(yǔ)言中標(biāo)記序列的概率分布。根據(jù)模型的設(shè)計(jì),標(biāo)記可以是詞、字符甚至是字節(jié)。標(biāo)記總是離散的實(shí)體。最早成功的語(yǔ)言模型基于固定長(zhǎng)度序列的標(biāo)記模型,稱為n-gram。一個(gè)n-gram 是一個(gè)包含n 個(gè)標(biāo)記的序列。
神經(jīng)語(yǔ)言模型
神經(jīng)語(yǔ)言模型(neural language model, NLM) 是一類用來(lái)克服維數(shù)災(zāi)難的語(yǔ)言模型,它使用詞的分布式表示對(duì)自然語(yǔ)言序列建模(Bengio et al., 2001b)。不同于基于類的n-gram 模型,神經(jīng)語(yǔ)言模型在能夠識(shí)別兩個(gè)相似的詞,并且不喪失將每個(gè)詞編碼為彼此不同的能力。神經(jīng)語(yǔ)言模型共享一個(gè)詞(及其上下文) 和其他類似詞(和上下文之間) 的統(tǒng)計(jì)強(qiáng)度。模型為每個(gè)詞學(xué)習(xí)的分布式表示,允許模型處理具有類似共同特征的詞來(lái)實(shí)現(xiàn)這種共享。例如,如果詞dog和詞cat映射到具有許多屬性的表示,則包含詞cat的句子可以告知模型對(duì)包含詞dog的句子做出預(yù)測(cè),反之亦然。因?yàn)檫@樣的屬性很多,所以存在許多泛化的方式,可以將信息從每個(gè)訓(xùn)練語(yǔ)句傳遞到指數(shù)數(shù)量的語(yǔ)義相關(guān)語(yǔ)句。維數(shù)災(zāi)難需要模型泛化到指數(shù)多的句子(指數(shù)相對(duì)句子長(zhǎng)度而言)。該模型通過(guò)將每個(gè)訓(xùn)練句子與指數(shù)數(shù)量的類似句子相關(guān)聯(lián)克服這個(gè)問(wèn)題。
高維輸出
在許多自然語(yǔ)言應(yīng)用中,通常希望我們的模型產(chǎn)生詞(而不是字符) 作為輸出的基本單位。對(duì)于大詞匯表,由于詞匯量很大,在詞的選擇上表示輸出分布的計(jì)算成本可能非常高。在許多應(yīng)用中,V 包含數(shù)十萬(wàn)詞。表示這種分布的樸素方法是應(yīng)用一個(gè)仿射變換,將隱藏表示轉(zhuǎn)換到輸出空間,然后應(yīng)用softmax 函數(shù)。假設(shè)我們的詞匯表V 大小為|V|。因?yàn)槠漭敵鼍S數(shù)為|V|,描述該仿射變換線性分量的權(quán)重矩陣非常大。這造成了表示該矩陣的高存儲(chǔ)成本,以及與之相乘的高計(jì)算成本。因?yàn)閟oftmax 要在所有|V| 輸出之間歸一化,所以在訓(xùn)練時(shí)以及測(cè)試時(shí)執(zhí)行全矩陣乘法是必要的|| 我們不能僅計(jì)算與正確輸出的權(quán)重向量的點(diǎn)積。因此,輸出層的高計(jì)算成本在訓(xùn)練期間(計(jì)算似然性及其梯度) 和測(cè)試期間(計(jì)算所有或所選詞的概率) 都有出現(xiàn)。對(duì)于專門的損失函數(shù),可以有效地計(jì)算梯度(Vincent et al., 2015),但是應(yīng)用于傳統(tǒng)softmax 輸出層的標(biāo)準(zhǔn)交叉熵?fù)p失時(shí)會(huì)出現(xiàn)許多困難。
結(jié)合n-gram 和神經(jīng)語(yǔ)言模型
n-gram 模型相對(duì)神經(jīng)網(wǎng)絡(luò)的主要優(yōu)點(diǎn)是n-gram 模型具有更高的模型容量(通過(guò)存儲(chǔ)非常多的元組的頻率),并且處理樣本只需非常少的計(jì)算量(通過(guò)查找只匹配當(dāng)前上下文的幾個(gè)元組)。如果我們使用哈希表或樹(shù)來(lái)訪問(wèn)計(jì)數(shù),那么用于n-gram 的計(jì)算量幾乎與容量無(wú)關(guān)。相比之下,將神經(jīng)網(wǎng)絡(luò)的參數(shù)數(shù)目加倍通常也大致加倍計(jì)算時(shí)間。當(dāng)然,避免每次計(jì)算時(shí)使用所有參數(shù)的模型是一個(gè)例外。嵌入層每次只索引單個(gè)嵌入,所以我們可以增加詞匯量,而不會(huì)增加每個(gè)樣本的計(jì)算時(shí)間。一些其他模型,例如平鋪卷積網(wǎng)絡(luò),可以在減少參數(shù)共享程度的同時(shí)添加參數(shù)以保持相同的計(jì)算量。然而,基于矩陣乘法的典型神經(jīng)網(wǎng)絡(luò)層需要與參數(shù)數(shù)量成比例的計(jì)算量。
因此,增加容量的一種簡(jiǎn)單方法是將兩種方法結(jié)合,由神經(jīng)語(yǔ)言模型和n-gram 語(yǔ)言模型組成集成(Bengio et al., 2001b, 2003)。
對(duì)于任何集成,如果集成成員產(chǎn)生獨(dú)立的錯(cuò)誤,這種技術(shù)可以減少測(cè)試誤差。集成學(xué)習(xí)領(lǐng)域提供了許多方法來(lái)組合集成成員的預(yù)測(cè),包括統(tǒng)一加權(quán)和在驗(yàn)證集上選擇權(quán)重。Mikolovet al. (2011a) 擴(kuò)展了集成,不是僅包括兩個(gè)模型,而是包括大量模型。我們也可以將神經(jīng)網(wǎng)絡(luò)與最大熵模型配對(duì)并聯(lián)合訓(xùn)練(Mikolov et al., 2011b)。該方法可以被視為訓(xùn)練具有一組額外輸入的神經(jīng)網(wǎng)絡(luò),額外輸入直接連接到輸出并且不連接到模型的任何其他部分。額外輸入是輸入上下文中特定n-gram 是否存在的指示器,因此這些變量是非常高維且非常稀疏的。
模型容量的增加是巨大的(架構(gòu)的新部分包含高達(dá)|sV |n 個(gè)參數(shù)),但是處理輸入所需的額外計(jì)算量是很小的(因?yàn)轭~外輸入非常稀疏)。
神經(jīng)機(jī)器翻譯
機(jī)器翻譯以一種自然語(yǔ)言讀取句子并產(chǎn)生等同含義的另一種語(yǔ)言的句子。機(jī)器翻譯系統(tǒng)通常涉及許多組件。在高層次,一個(gè)組件通常會(huì)提出許多候選翻譯。由于語(yǔ)言之間的差異,這些翻譯中的許多翻譯是不符合語(yǔ)法的。例如,許多語(yǔ)言在名詞后放置形容詞,因此直接翻譯成英語(yǔ)時(shí),它們會(huì)產(chǎn)生諸如“apple red”的短語(yǔ)。提議機(jī)制提出建議翻譯的許多變體,理想情況下應(yīng)包括“red apple”。翻譯系統(tǒng)的第二個(gè)組成部分(語(yǔ)言模型) 評(píng)估提議的翻譯,并可以評(píng)估“red apple”比“apple red”更好。
最早的機(jī)器翻譯神經(jīng)網(wǎng)絡(luò)探索中已經(jīng)納入了編碼器和解碼器的想法(Allen 1987; Chris-man 1991; Forcada and ~Neco 1997),而翻譯中神經(jīng)網(wǎng)絡(luò)的第一個(gè)大規(guī)模有競(jìng)爭(zhēng)力的用途是通過(guò)神經(jīng)語(yǔ)言模型升級(jí)翻譯系統(tǒng)的語(yǔ)言模型(Schwenk et al., 2006; Schwenk, 2010)。之前,大多數(shù)機(jī)器翻譯系統(tǒng)在該組件使用n-gram 模型。機(jī)器翻譯中基于n-gram 的模型不僅包括傳統(tǒng)的回退n-gram 模型(Jelinek and Mercer, 1980; Katz, 1987; Chen and Goodman, 1999),而且包括最大熵語(yǔ)言模型(maximum entropy language models)(Berger et al., 1996),其中給定上下文中常見(jiàn)的詞,a±ne-softmax 層預(yù)測(cè)下一個(gè)詞。

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

若不方便掃碼,搜微信號(hào):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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }