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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀R語(yǔ)言快速深度學(xué)習(xí)進(jìn)行回歸預(yù)測(cè)
R語(yǔ)言快速深度學(xué)習(xí)進(jìn)行回歸預(yù)測(cè)
2017-02-15
收藏

R語(yǔ)言快速深度學(xué)習(xí)進(jìn)行回歸預(yù)測(cè)

深度學(xué)習(xí)在過(guò)去幾年,由于卷積神經(jīng)網(wǎng)絡(luò)特征提取能力讓這個(gè)算法又火了一下, 其實(shí) 在很多年以前早就有所出現(xiàn),但是由于深度學(xué)習(xí)的計(jì)算復(fù)雜度問(wèn)題,一直沒(méi)有被廣泛應(yīng)用。

一般的,卷積層的計(jì)算形式為:

其中、x分別表示當(dāng)前卷積層中第 j 個(gè)特征、前一層的第 i 個(gè)特征;k表示當(dāng)前層的第 j 個(gè)特征與前一層的第 i 個(gè)特征之間的卷積核;M表示需要卷積的前一層的特征的集合,b表示當(dāng)前卷積層中第 j 個(gè)卷積核對(duì)應(yīng)的偏置。 f 為激活函數(shù)。

卷積層中的權(quán)值與閾值通過(guò)隨機(jī)梯度下降法得到:

式中,a為學(xué)習(xí)率。

損失函數(shù)對(duì)卷積層參數(shù)的梯度可通過(guò)鏈?zhǔn)角髮?dǎo)來(lái)得到,如下:


式中,表示前一層的梯度。          

卷積神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)有多種形式:

式中 a 為固定的參數(shù)。

式中,每個(gè)batch訓(xùn)練樣本中的都隨機(jī)采樣自均值分布,在測(cè)試中取。

從上述卷積神經(jīng)網(wǎng)絡(luò)看出,學(xué)習(xí)過(guò)程中需要進(jìn)行 梯度 迭代,真正在實(shí)現(xiàn)工業(yè)檢測(cè)等實(shí)際應(yīng)用時(shí)時(shí)間復(fù)雜度極高, 因此學(xué)術(shù)界進(jìn)行了優(yōu)化,優(yōu)化后的一種單層神經(jīng)網(wǎng)絡(luò)極限學(xué)習(xí)機(jī)解決了此問(wèn)題,在過(guò)去應(yīng)用十分廣泛。數(shù)據(jù)分析培訓(xùn)

為解決上述問(wèn)題,出現(xiàn)了極限學(xué)習(xí)機(jī)。

最小二乘法解決的一種特殊結(jié)果為,等價(jià)為一種矩陣求逆的形式

為的Moore-Penrose廣義逆。

1)由于極限學(xué)習(xí)機(jī)求取權(quán)值的時(shí)候只是計(jì)算一個(gè)廣義逆,因此訓(xùn)練速度比基于梯度的學(xué)習(xí)算法快很多;

2)基于梯度的學(xué)習(xí)算法存在很多問(wèn)題,比如學(xué)習(xí)速率難以確定、局部網(wǎng)絡(luò)最小化等, 極限學(xué)習(xí)機(jī) 有效的改善了此類(lèi)問(wèn)題,在分類(lèi)過(guò)程中取得了更好的效果;

3)與其他神經(jīng)網(wǎng)絡(luò)算法不同, 極限學(xué)習(xí)機(jī) 在訓(xùn)練過(guò)程中,選擇激活函數(shù)過(guò)程中可以選擇不可微函數(shù)。;

4) 極限學(xué)習(xí)機(jī) 算法訓(xùn)練過(guò)程并不復(fù)雜。 極限學(xué)習(xí)機(jī) 只需要三步就可以完成整個(gè)的學(xué)習(xí)過(guò)程。

以下用R代碼講解一下極限學(xué)習(xí)機(jī)

###訓(xùn)練過(guò)程如下:

訓(xùn)練過(guò)程4步即可。

elmtrain.default <-function(x,y,nhid,actfun,...) {  require(MASS)    if(nhid < 1) stop("ERROR: number of hidden neurons must be >= 1")########1.選擇數(shù)據(jù),X與Y    T <- t(y)  P <- t(x)########2.隨機(jī)產(chǎn)生權(quán)值,目的在于將X值進(jìn)行變化      inpweight <- randomMatrix(nrow(P),nhid,-1,1)  tempH <- inpweight %*% P  biashid <- runif(nhid,min=-1,max=1)  biasMatrix <- matrix(rep(biashid, ncol(P)), nrow=nhid, ncol=ncol(P), byrow = F)     tempH = tempH + biasMatrix########3.將變化后的X值進(jìn)行高維映射,最常用是sig函數(shù)     if(actfun == "sig") H = 1 / (1 + exp(-1*tempH))  else {    if(actfun == "sin") H = sin(tempH)    else {      if(actfun == "radbas") H = exp(-1*(tempH^2))      else {        if(actfun == "hardlim") H = hardlim(tempH)        else {          if(actfun == "hardlims") H = hardlims(tempH)          else {            if(actfun == "satlins") H = satlins(tempH)            else {              if(actfun == "tansig") H = 2/(1+exp(-2*tempH))-1              else {                if(actfun == "tribas") H = tribas(tempH)                else {                  if(actfun == "poslin") H = poslin(tempH)                  else {                    if(actfun == "purelin") H = tempH                    else stop(paste("ERROR: ",actfun," is not a valid activation function.",sep=""))                  }                }              }            }          }        }      }    }  }  ########4.擬合出模型系數(shù),即Y=AX中的A     outweight <- ginv(t(H), tol = sqrt(.Machine$double.eps)) %*% t(T)  Y <- t(t(H) %*% outweight)  model = list(inpweight=inpweight,biashid=biashid,outweight=outweight,actfun=actfun,nhid=nhid,predictions=t(Y))  model$fitted.values <- t(Y)  model$residuals <- y - model$fitted.values  model$call <- match.call()  class(model) <- "elmNN"  model}
測(cè)試過(guò)程, 過(guò)程4步即可。
function (object, newdata = NULL, ...) {  if (is.null(newdata))     predictions <- fitted(object)  else {    if (!is.null(object$formula)) {      x <- model.matrix(object$formula, newdata)    }    else {      x <- newdata    }  ########1.獲取訓(xùn)練模型中的參數(shù)    inpweight <- object$inpweight    biashid <- object$biashid    outweight <- object$outweight    actfun <- object$actfun    nhid <- object$nhid    TV.P <- t(x)  ########2.通過(guò)參數(shù)將X值進(jìn)行變化       tmpHTest = inpweight %*% TV.P    biasMatrixTE <- matrix(rep(biashid, ncol(TV.P)), nrow = nhid,                            ncol = ncol(TV.P), byrow = F)    tmpHTest = tmpHTest + biasMatrixTE  ########3.高維度映射,通常選擇sig函數(shù)    if (actfun == "sig")       HTest = 1/(1 + exp(-1 * tmpHTest))    else {      if (actfun == "sin")         HTest = sin(tmpHTest)      else {        if (actfun == "radbas")           HTest = exp(-1 * (tmpHTest^2))        else {          if (actfun == "hardlim")             HTest = hardlim(tmpHTest)          else {            if (actfun == "hardlims")               HTest = hardlims(tmpHTest)            else {              if (actfun == "satlins")                 HTest = satlins(tmpHTest)              else {                if (actfun == "tansig")                   HTest = 2/(1 + exp(-2 * tmpHTest)) -                   1                else {                  if (actfun == "tribas")                     HTest = tribas(tmpHTest)                  else {                    if (actfun == "poslin")                       HTest = poslin(tmpHTest)                    else {                      if (actfun == "purelin")                         HTest = tmpHTest                      else stop(paste("ERROR: ", actfun,  " is not a valid activation function.",  sep = ""))                    }                  }                }              }            }          }        }      }    }########4.進(jìn)行預(yù)測(cè)的值計(jì)算,即Y(預(yù)測(cè))=AX    TY = t(t(HTest) %*% outweight)    predictions <- t(TY)  }  predictions}
通過(guò)R講述了極限學(xué)習(xí)機(jī)的內(nèi)部構(gòu)造,以下是R自帶的示例:通過(guò)極限學(xué)習(xí)機(jī)預(yù)測(cè)
library(elmNN)set.seed(1234)Var1 <- runif(50, 0, 100) sqrt.data <- data.frame(Var1, Sqrt=sqrt(Var1))model <- elmtrain.formula(Sqrt~Var1, data=sqrt.data, nhid=10, actfun="sig")new <- data.frame(Sqrt=0,Var1 = runif(50,0,100))p <- predict(model,newdata=new)

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

若不方便掃碼,搜微信號(hào):CDAshujufenxi

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

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } 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); }