0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

神經(jīng)網(wǎng)絡(luò)中的損失函數(shù)層和Optimizers圖文解讀

lviY_AI_shequ ? 2017-11-30 16:09 ? 次閱讀

對(duì)于許多機(jī)器學(xué)習(xí)算法來(lái)說(shuō),最終要解決的問(wèn)題往往是最小化一個(gè)函數(shù),我們通常稱這個(gè)函數(shù)叫損失函數(shù)。在神經(jīng)網(wǎng)絡(luò)里面同樣如此,損失函數(shù)層(CostLayer)和Optimizers因而應(yīng)運(yùn)而生(……),其中:

CostLayer 用于得到損失

Optimizers 用于最小化這個(gè)損失

需要一提的是,在神經(jīng)網(wǎng)絡(luò)里面,可以這樣來(lái)理解損失:它是輸入 x 經(jīng)過(guò)前傳算法后得到的輸出和真實(shí)標(biāo)簽y 之間的差距。如何定義這個(gè)差距以及如何縮小這個(gè)差距會(huì)牽扯到相當(dāng)多的數(shù)學(xué)知識(shí),我們這里就只講實(shí)現(xiàn),數(shù)學(xué)層面的內(nèi)容(有時(shí)間的話)(也就是說(shuō)基本沒(méi)可能)(喂)會(huì)在數(shù)學(xué)系列里面說(shuō)明。感謝萬(wàn)能的 tensorflow,它貼心地幫我們定義好了損失函數(shù)和 Optimizers,所以我們只要封裝它們就好了

CostLayer

先定義一個(gè)基類:

相當(dāng)于我們把 Layer 的激活函數(shù)“偷換”成了損失函數(shù)。calculate 函數(shù)用于直接計(jì)算損失,它只在復(fù)雜模型中分析模型表現(xiàn)時(shí)用到,可以暫時(shí)不管

再定義實(shí)際應(yīng)用的 CostLayer,我們以應(yīng)用最廣泛的 CrossEntropy 為例:

這里面用的正是 tensorflow 的內(nèi)置函數(shù)

Optimizers

這一部分的封裝做得更加沒(méi)有營(yíng)養(yǎng),大部分代碼都僅僅是為了和我自己造的輪子的接口 一致。最關(guān)鍵的部分只有兩行:

其中 self._opt 是 tensorflow 幫我們定義好的 Optimizers 中的一個(gè),它的作用也很簡(jiǎn)單粗暴:更新 session 中的各個(gè)變量以使得損失 x 向最小值邁進(jìn)

以上,CostLayer 和 Optimizers 的定義、功能和實(shí)現(xiàn)就說(shuō)得差不多了;再加上前幾章,一個(gè)完整的、較樸素的神經(jīng)網(wǎng)絡(luò)就完全做好了,它支持如下功能:

自定義激活函數(shù)

任意堆疊 Layer

通過(guò)循環(huán)來(lái)堆疊重復(fù)的結(jié)構(gòu)

通過(guò)準(zhǔn)確率來(lái)評(píng)估模型的好壞

這不算是一個(gè)很好的模型、但已經(jīng)具有了基本的雛形,走到這一步可以算是告一段落。接下來(lái)如果要拓展的話,大致流程會(huì)如下:

在訓(xùn)練過(guò)程中記錄下當(dāng)前訓(xùn)練的結(jié)果、從而畫(huà)出類似這樣的曲線:

讓模型支持比較大規(guī)模數(shù)據(jù)的訓(xùn)練,它包括幾個(gè)需要改進(jìn)的地方:

我們目前沒(méi)有把數(shù)據(jù)分割成一個(gè)個(gè)小 batch 來(lái)訓(xùn)練我們的模型;但當(dāng)數(shù)據(jù)量大起來(lái)的時(shí)候、這種處理是不可或缺的

我們目前做預(yù)測(cè)時(shí)是將整個(gè)數(shù)據(jù)扔給模型讓它做前傳算法的。數(shù)據(jù)量比較大時(shí),這樣做會(huì)引發(fā)內(nèi)存不足的問(wèn)題,為此我們需要分批前傳并在最后做一個(gè)整合

我們目前沒(méi)有進(jìn)行交叉驗(yàn)證,這使我們的模型比較容易過(guò)擬合。雖然其實(shí)讓用戶自己去劃分?jǐn)?shù)據(jù)也可以,但留一個(gè)接口是好的習(xí)慣

最后也是最重要的,當(dāng)然就是把我們的模型擴(kuò)展成一個(gè)支持 CNN 模型了。這是一個(gè)巨坑、且容我慢慢來(lái)填……

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:從零開(kāi)始學(xué)人工智能(6)--Python · 神經(jīng)網(wǎng)絡(luò)(五)· Cost & Optimizer

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)

    MATLAB神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)說(shuō)明:本文檔中所列出的函數(shù)適用于MATLAB5.3以上版本,為了簡(jiǎn)明起見(jiàn),只列出了函數(shù)名,若需要進(jìn)一步的說(shuō)明,請(qǐng)參閱MATLAB的幫助文檔。1.
    發(fā)表于 09-22 16:10

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    超過(guò)閾值,輸出就一躍而起。但我們一般用S函數(shù)作為激活函數(shù)。如下圖:圖2 該函數(shù)相比階越函數(shù)更加接近現(xiàn)實(shí)。神經(jīng)網(wǎng)絡(luò)原理如圖所示是一個(gè)具有兩
    發(fā)表于 03-03 22:10

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    傳播的,不會(huì)回流),區(qū)別于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN。BP算法(Back Propagation):誤差反向傳播算法,用于更新網(wǎng)絡(luò)的權(quán)重。BP神經(jīng)網(wǎng)絡(luò)思想:表面上:1. 數(shù)據(jù)信息的前向傳播,
    發(fā)表于 07-21 04:00

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    的拓?fù)浣Y(jié)構(gòu),即將高位空間中相似的樣本點(diǎn)映射到網(wǎng)絡(luò)輸出的鄰近神經(jīng)元。SOM神經(jīng)網(wǎng)絡(luò)的輸出
    發(fā)表于 07-21 04:30

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測(cè)的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)包括:輸入:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的
    發(fā)表于 07-12 08:02

    matlab實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò) 精選資料分享

    習(xí)神經(jīng)神經(jīng)網(wǎng)絡(luò),對(duì)于神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)是如何一直沒(méi)有具體實(shí)現(xiàn)一下:現(xiàn)看到一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型用于訓(xùn)練的輸入數(shù)據(jù):對(duì)應(yīng)的輸出數(shù)據(jù):我們這里設(shè)置:1:節(jié)點(diǎn)個(gè)數(shù)設(shè)置:輸入
    發(fā)表于 08-18 07:25

    神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)常用的一些損失函數(shù)介紹

    神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)的優(yōu)化首先是對(duì)模型的當(dāng)前狀態(tài)進(jìn)行誤差估計(jì),然后為了減少下一次評(píng)估的誤差,需要使用一個(gè)能夠表示錯(cuò)誤函數(shù)對(duì)權(quán)重進(jìn)行更新,這個(gè)函數(shù)被稱為損失
    發(fā)表于 10-20 17:14

    圖文詳解:神經(jīng)網(wǎng)絡(luò)的激活函數(shù)

    什么是神經(jīng)網(wǎng)絡(luò)激活函數(shù)?激活函數(shù)有助于決定我們是否需要激活神經(jīng)元。如果我們需要發(fā)射一個(gè)神經(jīng)元那么信號(hào)的強(qiáng)度是多少。激活
    的頭像 發(fā)表于 07-05 11:21 ?3674次閱讀
    <b class='flag-5'>圖文</b>詳解:<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的激活<b class='flag-5'>函數(shù)</b>

    訓(xùn)練深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的常用5個(gè)損失函數(shù)

    被稱為損失函數(shù)損失函數(shù)的選擇與神經(jīng)網(wǎng)絡(luò)模型從示例中學(xué)習(xí)的特定預(yù)測(cè)建模問(wèn)題(例如分類或回歸)有關(guān)。在本文中我們將介紹常用的一些
    的頭像 發(fā)表于 10-19 11:17 ?740次閱讀
    訓(xùn)練深度學(xué)習(xí)<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的常用5個(gè)<b class='flag-5'>損失</b><b class='flag-5'>函數(shù)</b>

    卷積神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)的卷積講解

    卷積神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)的卷積講解 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種基于深度學(xué)習(xí)的
    的頭像 發(fā)表于 08-21 16:49 ?6837次閱讀

    神經(jīng)網(wǎng)絡(luò)的激活函數(shù)有哪些

    神經(jīng)網(wǎng)絡(luò),激活函數(shù)是一個(gè)至關(guān)重要的組成部分,它決定了神經(jīng)元對(duì)于輸入信號(hào)的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得
    的頭像 發(fā)表于 07-01 11:52 ?384次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)的作用

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)是深度學(xué)習(xí)中一種重要的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),廣泛應(yīng)用于圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理等領(lǐng)域。在卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 09:18 ?320次閱讀

    BP神經(jīng)網(wǎng)絡(luò)激活函數(shù)怎么選擇

    ,激活函數(shù)起著至關(guān)重要的作用,它決定了神經(jīng)元的輸出方式,進(jìn)而影響整個(gè)網(wǎng)絡(luò)的性能。 一、激活函數(shù)的作用 激活
    的頭像 發(fā)表于 07-03 10:02 ?315次閱讀

    bp神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)區(qū)別是什么

    結(jié)構(gòu)、原理、應(yīng)用場(chǎng)景等方面都存在一定的差異。以下是對(duì)這兩種神經(jīng)網(wǎng)絡(luò)的比較: 基本結(jié)構(gòu) BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),由輸入、隱藏
    的頭像 發(fā)表于 07-03 10:12 ?518次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別在哪

    結(jié)構(gòu)、原理、應(yīng)用場(chǎng)景等方面都存在一定的差異。以下是對(duì)這兩種神經(jīng)網(wǎng)絡(luò)的詳細(xì)比較: 基本結(jié)構(gòu) BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),由輸入、隱藏
    的頭像 發(fā)表于 07-04 09:49 ?8404次閱讀