神經(jīng)網(wǎng)絡(luò)的訓(xùn)練

數(shù)據(jù)驅(qū)動(dòng)

提取特征量

傳統(tǒng)算法/其他機(jī)器學(xué)習(xí)算法/神經(jīng)網(wǎng)絡(luò),灰色部分表示沒有人為介入

訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)

  • 使用訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),尋找最優(yōu)的參數(shù)
  • 使用測(cè)試數(shù)據(jù)評(píng)價(jià)模型的實(shí)際能力
  • 僅用一個(gè)數(shù)據(jù)集去學(xué)習(xí)和評(píng)價(jià)參數(shù),容易出現(xiàn)過擬合

損失函數(shù)

  • 神經(jīng)網(wǎng)絡(luò)中以某個(gè)指標(biāo)為線索尋找最優(yōu)權(quán)重參數(shù),所用的指標(biāo)為損失函數(shù)
  • 均方誤差:E=\frac{1}{2}\sum_k(y_k-t_k)^2,其中y_k 是表示神經(jīng)網(wǎng)絡(luò)的輸出,t_k 表示監(jiān)督數(shù)據(jù),k 表示數(shù)據(jù)的維數(shù)
  • 交叉熵誤差:E=-\sum_kt_klog\ y_k,其中y_k是神經(jīng)網(wǎng)絡(luò)輸出對(duì)應(yīng)分類的概率,t_k表示監(jiān)督數(shù)據(jù),k表示數(shù)據(jù)的維數(shù),log表示自然對(duì)數(shù)
  • 批數(shù)據(jù)的交叉熵誤差:E=-\frac{1}{N}\sum_n\sum_kt_{nk}log\ y_{nk}
  • mini-batch: 從訓(xùn)練數(shù)據(jù)中選出一批數(shù)據(jù)(稱為mini-batch),用這批數(shù)據(jù)進(jìn)行學(xué)習(xí),這種方式稱為mini-batch

梯度下降法

梯度(gradient): \nabla f = (\frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2},...,\frac{\partial f}{\partial x_n}),梯度是一個(gè)向量
梯度下降法:
x_0' = x_0-\eta\frac{\partial f}{\partial x_0} \\ x_1' = x_1-\eta\frac{\partial f}{\partial x_1} \\ 表示成向量形式:\vec {x'} = \vec{x} - \eta·\nabla f\qquad其中\(zhòng)eta稱為學(xué)習(xí)率 \\ 循環(huán)執(zhí)行這個(gè)步驟,當(dāng)|x'-x|<\epsilon時(shí),凸函數(shù)f找到誤差范圍內(nèi)的最小值

正向傳播的二層神經(jīng)網(wǎng)絡(luò)

步驟

  1. 確定概率預(yù)測(cè)函數(shù)
    predict : (Param,X) \rightarrow \{\\ W_1,W_2,b_1,b_2 = Param[W_1],Param[W_2],Param[b_1],Param[b_1] \\ A_1 = X·W_1^T + b_1 \\ Z_1 = sigmoid(A_1,axis=1) \\ A_2 = Z_1·W_2^T + b_2 \\ Z_2 = softmax(A_2,axis=1) \\ y = Z_2 \\ return\ y\}
  2. 確定T函數(shù)(預(yù)測(cè)正確為1,否則為0)
    t : (Param,X,y) \rightarrow \{ \\ p = predict(Param,X) \\ y_{predict} = argmax(p,axis=1)\\ return\ int(y_{predict} == p,axis=1)\}
  3. 確定交叉熵誤差作為神經(jīng)網(wǎng)絡(luò)損失函數(shù)
    loss :(X,Param,y)\rightarrow\{ \\ t_{val} = t(Param,X,y) \\ p = predict(Param,X) \\ return - t_{val}·log(p) \}
  4. Xt作為參數(shù),確定loss函數(shù)對(duì)變量ParamParam=Param_0處的梯度
    G_0 = \nabla loss(Param)|_{Param = Param_0,X=X_0,y=y_0}
  5. 使用mni_batch更新參數(shù)Param,\eta為學(xué)習(xí)率
    G_{itr} = \nabla loss(Param)|_{Param = Param_{itr},x=x_{batch},y=y_{batch}} \\ Param_{itr+1} = Param_{itr} -G_{itr} * \eta
  6. (可視化時(shí)可選)
    周期性地記錄train_acc和test_acc,最后用這兩組記錄繪制學(xué)習(xí)曲線
  7. 達(dá)到最大迭代次數(shù)后返回Param_{maxitr}

流程圖表示如下


正向傳播的二層神經(jīng)網(wǎng)絡(luò)

小結(jié)

  1. 機(jī)器學(xué)習(xí)中使用數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集
  2. 神經(jīng)網(wǎng)絡(luò)用訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),并用測(cè)試數(shù)據(jù)評(píng)價(jià)學(xué)習(xí)到的模型的泛化能力
  3. 神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)以損失函數(shù)為指標(biāo),更新權(quán)重參數(shù),以使損失函數(shù)的值減小
  4. 利用某個(gè)給定的微小值的差分求導(dǎo)數(shù)的過程(導(dǎo)數(shù)定義),稱為數(shù)值微分
  5. 利用數(shù)值微分,可以計(jì)算權(quán)重參數(shù)的梯度
  6. 數(shù)值微分雖然簡(jiǎn)單但是費(fèi)時(shí)間,另一種高速計(jì)算導(dǎo)數(shù)的方法叫做誤差的反向傳播法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容