日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

AI应用开发基础傻瓜书系列3-损失函数

發(fā)布時(shí)間:2024/7/23 ChatGpt 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AI应用开发基础傻瓜书系列3-损失函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Copyright ? Microsoft Corporation. All rights reserved.
適用于License版權(quán)許可
更多微軟人工智能學(xué)習(xí)資源,請見微軟人工智能教育與學(xué)習(xí)共建社區(qū)

  • Content
  • 01.0-神經(jīng)網(wǎng)絡(luò)的基本工作原理
  • 01.1-基本數(shù)學(xué)導(dǎo)數(shù)公式
  • 01.2-Python-Numpy庫的點(diǎn)滴
  • 02.0-反向傳播與梯度下降
  • 02.1-線性反向傳播
  • 02.2-非線性反向傳播
  • 02.3-梯度下降
  • 03.0-損失函數(shù)
  • 03.1-均方差損失函數(shù)
  • 03.2-交叉熵?fù)p失函數(shù)
  • 04.0-單入單出單層-單變量線性回歸
  • 04.1-最小二乘法
  • 04.2-梯度下降法
  • 04.3-神經(jīng)網(wǎng)絡(luò)法
  • 04.4-梯度下降的三種形式
  • 04.5-實(shí)現(xiàn)邏輯非門
  • 05.0-多入單出單層-多變量線性回歸
  • 05.1-正規(guī)方程法
  • 05.2-神經(jīng)網(wǎng)絡(luò)法
  • 05.3-樣本特征數(shù)據(jù)的歸一化
  • 05.4-歸一化的后遺癥
  • 05.5-正確的推理方法
  • 05.6-歸一化標(biāo)簽值
  • 06.0-多入多出單層神經(jīng)網(wǎng)絡(luò)-多變量線性分類
  • 06.1-二分類原理
  • 06.2-線性二分類實(shí)現(xiàn)
  • 06.3-線性二分類結(jié)果可視化
  • 06.4-多分類原理
  • 06.5-線性多分類實(shí)現(xiàn)
  • 06.6-線性多分類結(jié)果可視化
  • 07.0-激活函數(shù)
  • 07.1-擠壓型激活函數(shù)
  • 07.2-半線性激活函數(shù)
  • 07.3-用雙曲正切函數(shù)分類
  • 07.4-實(shí)現(xiàn)邏輯與門和或門
  • 08.0-單入單出雙層-萬能近似定理
  • 08.1-雙層擬合網(wǎng)絡(luò)的原理
  • 08.2-雙層擬合網(wǎng)絡(luò)的實(shí)現(xiàn)
  • 09.0-多入多出雙層-雙變量非線性分類
  • 09.1-實(shí)現(xiàn)邏輯異或門
  • 09.2-理解二分類的工作原理
  • 09.3-非線性多分類
  • 09.4-理解多分類的工作原理
  • 10.0-調(diào)參與優(yōu)化
  • 10.1-權(quán)重矩陣初始化
  • 10.2-參數(shù)調(diào)優(yōu)
  • 10.3-搜索最優(yōu)學(xué)習(xí)率
  • 10.4-梯度下降優(yōu)化算法
  • 10.5-自適應(yīng)學(xué)習(xí)率算法
  • 11.0-深度學(xué)習(xí)基礎(chǔ)
  • 11.1-三層神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)
  • 11.2-驗(yàn)證與測試
  • 11.3-梯度檢查
  • 11.4-手工測試訓(xùn)練效果
  • 11.5-搭建深度神經(jīng)網(wǎng)絡(luò)框架
  • 12.0-卷積神經(jīng)網(wǎng)絡(luò)
  • 12.1-卷積
  • 12.2-池化
  • 14.1-神經(jīng)網(wǎng)絡(luò)模型概述
  • 14.2-Windows模型的部署
  • 14.3-Android模型的部署

第三篇:激活函數(shù)和損失函數(shù)(二)

損失函數(shù)

作用

在有監(jiān)督的學(xué)習(xí)中,需要衡量神經(jīng)網(wǎng)絡(luò)輸出和所預(yù)期的輸出之間的差異大小。這種誤差函數(shù)需要能夠反映出當(dāng)前網(wǎng)絡(luò)輸出和實(shí)際結(jié)果之間一種量化之后的不一致程度,也就是說函數(shù)值越大,反映出模型預(yù)測的結(jié)果越不準(zhǔn)確。

還是拿練槍的Bob做例子,Bob預(yù)期的目標(biāo)是全部命中靶子的中心,但他現(xiàn)在的命中情況是這個(gè)樣子的:

最外圈是1分,之后越向靶子中心分?jǐn)?shù)是2,3,4分,正中靶心可以得5分。

那Bob每次射擊結(jié)果和目標(biāo)之間的差距是多少呢?在這個(gè)例子里面,用得分來衡量的話,就是說Bob得到的反饋結(jié)果從差4分,到差3分,到差2分,到差1分,到差0分,這就是用一種量化的結(jié)果來表示Bob的射擊結(jié)果和目標(biāo)之間差距的方式。也就是誤差函數(shù)的作用。因?yàn)槭且淮沃挥幸粋€(gè)樣本,所以這里采用的是誤差函數(shù)的稱呼。如果一次有多個(gè)樣本,那么就要稱呼這樣子衡量不一致程度的函數(shù)就要叫做損失函數(shù)了。

以做線性回歸的實(shí)際值和預(yù)測值為例,若自變量x是[-2, -1, 0, 1, 2]這樣5個(gè)值,對應(yīng)的期望值y是[-3, 0, 0, 3, 4]這樣的值,目前預(yù)測使用的參數(shù)是(w, b) = (2, 1), 那么預(yù)測得到的值y_ = [-3, -1, 1, 3, 5], 采用均方誤差計(jì)算這個(gè)預(yù)測和實(shí)際的損失就是∑I=04(y[i]?y_[i])2\sum_{I = 0}^{4}(y[i] - y_\_[i])^{2}I=04?(y[i]?y_?[i])2, 也就是3。那么如果采用的參量是(0, 0),預(yù)測出來的值是[0, 0, 0, 0, 0],這是一個(gè)顯然錯(cuò)誤的預(yù)測結(jié)果,此時(shí)的損失大小就是34,3&lt;343 &lt; 343<34, 那么(2, 1)是一組比(0, 0)要合適的參量。

那么常用的損失函數(shù)有哪些呢?

這里先給一些前提,比如神經(jīng)網(wǎng)絡(luò)中的一個(gè)神經(jīng)元:

圖中 z=∑iwi?xi+bi=θTxz = \sum\limits_{i}w_i*x_i+b_i=\theta^Txz=i?wi??xi?+bi?=θTxσ(z)\sigma(z)σ(z)是對應(yīng)的激活函數(shù),也就是說,在反向傳播時(shí)梯度的鏈?zhǔn)椒▌t中,

(1)?z?wi=xi\frac{\partial{z}}{\partial{w_i}}=x_i \tag{1}?wi??z?=xi?(1)

(2)?z?bi=1\frac{\partial{z}}{\partial{b_i}}=1 \tag{2}?bi??z?=1(2)

(3)?loss?wi=?loss?σ(z)?σ(z)?z?z?wi=?loss?σ(z)?σ(z)?zxi\frac{\partial{loss}}{\partial{w_i}}=\frac{\partial{loss}}{\partial{\sigma(z)}}\frac{\partial{\sigma(z)}}{\partial{z}}\frac{\partial{z}}{\partial{w_i}}=\frac{\partial{loss}}{\partial{\sigma(z)}}\frac{\partial{\sigma(z)}}{\partial{z}}x_i \tag{3}?wi??loss?=?σ(z)?loss??z?σ(z)??wi??z?=?σ(z)?loss??z?σ(z)?xi?(3)

(4)?loss?bi=?loss?σ(z)?σ(z)?z?z?bi=?loss?σ(z)?σ(z)?z\frac{\partial{loss}}{\partial{b_i}}=\frac{\partial{loss}}{\partial{\sigma(z)}}\frac{\partial{\sigma(z)}}{\partial{z}}\frac{\partial{z}}{\partial{b_i}}=\frac{\partial{loss}}{\partial{\sigma(z)}}\frac{\partial{\sigma(z)}}{\partial{z}} \tag{4}?bi??loss?=?σ(z)?loss??z?σ(z)??bi??z?=?σ(z)?loss??z?σ(z)?(4)

從公式(3),(4)(3),(4)(3),(4)可以看出,梯度計(jì)算中的公共項(xiàng)是?loss?σ(z)?σ(z)?z=?loss?z\frac{\partial{loss}}{\partial{\sigma(z)}}\frac{\partial{\sigma(z)}}{\partial{z}} = \frac{\partial{loss}}{\partial{z}}?σ(z)?loss??z?σ(z)?=?z?loss?

下面我們來探討?loss?z\frac{\partial{loss}}{\partial{z}}?z?loss?的影響。由于梯度的計(jì)算和函數(shù)的形式是有關(guān)系的,所以我們會(huì)從常用損失函數(shù)入手來逐個(gè)說明。

常用損失函數(shù)

  • MSE (均方誤差函數(shù))

    該函數(shù)就是最直觀的一個(gè)損失函數(shù)了,計(jì)算預(yù)測值和真實(shí)值之間的歐式距離。預(yù)測值和真實(shí)值越接近,兩者的均方差就越小。

    • 想法來源

      在給定一些點(diǎn)去擬合直線的時(shí)候(比如上面的例子),常采用最小二乘法,使各個(gè)訓(xùn)練點(diǎn)到擬合直線的距離盡量小。這樣的距離最小在損失函數(shù)中的表現(xiàn)就是預(yù)測值和真實(shí)值的均方差的和。

    • 函數(shù)形式:

      loss=12∑i(y[i]?a[i])2loss = \frac{1}{2}\sum_{i}(y[i] - a[i]) ^ 2loss=21?i?(y[i]?a[i])2,

      其中, aaa是網(wǎng)絡(luò)預(yù)測所得到的結(jié)果,yyy代表期望得到的結(jié)果,也就是數(shù)據(jù)的標(biāo)簽,iii是樣本的序號。

    • 反向傳播:

    ?loss?z=∑i(y[i]?a[i])??a[i]?z\frac{\partial{loss}}{\partial{z}} = \sum_{i}(y[i] - a[i])*\frac{\partial{a[i]}}{\partial{z}}?z?loss?=i?(y[i]?a[i])??z?a[i]?

    • 缺點(diǎn):

      ?a[i]?z\frac{\partial{a[i]}}{\partial{z}}?z?a[i]?關(guān)系密切,可能會(huì)產(chǎn)生收斂速度緩慢的現(xiàn)象,以下圖為例(激活函數(shù)為sigmoid)

    在激活函數(shù)的兩端,梯度(黃色)都會(huì)趨向于0,采取MSE的方法衡量損失,在aaa趨向于1而yyy是0的情況下,損失loss是1,而梯度會(huì)趨近于0,在誤差很大時(shí)收斂速度也會(huì)非常慢。

    在這里我們可以參考activation中關(guān)于sigmoid函數(shù)求導(dǎo)的例子,假定x保持不變,只有一個(gè)輸入的一個(gè)神經(jīng)元,權(quán)重w=ln(9)w = ln(9)w=ln(9), 偏置b=0b = 0b=0,也就是這樣一個(gè)神經(jīng)元:

    保持參數(shù)統(tǒng)一不變,也就是學(xué)習(xí)率η=0.2\eta = 0.2η=0.2,目標(biāo)輸出y=0.5y = 0.5y=0.5, 此處輸入x固定不變?yōu)?span id="ozvdkddzhkzd" class="katex--inline">x=1x = 1x=1,采用MSE作為損失函數(shù)計(jì)算,一樣先做公式推導(dǎo),

    第一步,計(jì)算當(dāng)前誤差

    loss=12(a?y)2=12(0.9?0.5)2=0.08loss = \frac{1}{2}(a - y)^2 = \frac{1}{2}(0.9 - 0.5)^2 = 0.08loss=21?(a?y)2=21?(0.9?0.5)2=0.08

    第二步,求出當(dāng)前梯度

    grad=(a?y)×?a?z?z?w=(a?y)×a×(1?a)×x=(0.9?0.5)×0.9×(1?0.9)×1=0.036grad = (a - y) \times \frac{\partial{a}}{\partial{z}} \frac{\partial{z}}{\partial{w}} = (a - y) \times a \times (1 - a) \times x = (0.9 - 0.5) \times 0.9 \times (1-0.9) \times 1= 0.036grad=(a?y)×?z?a??w?z?=(a?y)×a×(1?a)×x=(0.9?0.5)×0.9×(1?0.9)×1=0.036

    第三步,根據(jù)梯度更新當(dāng)前輸入值

    w=w?η×grad=ln(9)?0.2×0.036=2.161w = w - \eta \times grad = ln(9) - 0.2 \times 0.036 = 2.161w=w?η×grad=ln(9)?0.2×0.036=2.161

    第四步,計(jì)算當(dāng)前誤差是否小于閾值(此處設(shè)為0.001)

    a=11+e?wx=0.8967a = \frac{1}{1 + e^{-wx}} = 0.8967a=1+e?wx1?=0.8967

    loss=12(a?y)2=0.07868loss =\frac{1}{2}(a - y)^2 = 0.07868loss=21?(a?y)2=0.07868

    第五步,重復(fù)步驟2-4直到誤差小于閾值

    作出函數(shù)圖像如圖所示:

    可以看到函數(shù)迭代了287次從才收斂到接近0.5的程度,這比單獨(dú)使用sigmoid函數(shù)還要慢了很多。

  • 交叉熵函數(shù)
  • 這個(gè)損失函數(shù)的目的是使得預(yù)測得到的概率分布和真實(shí)的概率分布盡量的接近。兩個(gè)分布越接近,那么這個(gè)損失函數(shù)得到的函數(shù)值就越小。怎么去衡量兩個(gè)分布的接近程度呢?這就要用到香農(nóng)信息論中的內(nèi)容了。兩個(gè)概率分布之間的距離,也叫做KL Divergence,他的定義是這個(gè)形式的,給定離散概率分布P(x), Q(x),這兩個(gè)分布之間的距離是

    DKL(P∣∣Q)=?∑iP(i)log(Q(i)P(i))D_{KL}(P || Q) = - \sum_{i}P(i)log(\frac{Q(i)}{P(i)})DKL?(PQ)=?i?P(i)log(P(i)Q(i)?)

    試想如果兩個(gè)分布完全相同,那么log(Q(i)P(i))=0log(\frac{Q(i)}{P(i)}) = 0log(P(i)Q(i)?)=0, 也就是兩個(gè)分布之間的距離是零,如果兩個(gè)分布差異很大,比如一個(gè)是P(0)=0.9,P(1)=0.1P(0)=0.9, P(1)=0.1P(0)=0.9,P(1)=0.1,另一個(gè)是Q(0)=0.1,Q(1)=0.9Q(0)=0.1,Q(1)=0.9Q(0)=0.1,Q(1)=0.9,那么這兩個(gè)分布之間的距離就是0.763,如果是Q(0)=0.5,Q(1)=0.5Q(0)=0.5,Q(1)=0.5Q(0)=0.5,Q(1)=0.5,那么距離就是0.160,直覺上來說兩個(gè)分布越接近那么他們之間的距離就是越小的,具體的理論證明參看《信息論基礎(chǔ)》,不過為什么要選用這個(gè)作為損失函數(shù)呢?

    • 從最大似然角度開始說

      關(guān)于最大似然,請參看 https://www.zhihu.com/question/20447622/answer/161722019

    將神經(jīng)網(wǎng)絡(luò)的參數(shù)作為θ\thetaθ,數(shù)據(jù)的真實(shí)分布是Pdata(y;x)P_{data}(y;x)Pdata?(y;x), 輸入數(shù)據(jù)為xxx,那么在θ\thetaθ固定情況下,神經(jīng)網(wǎng)絡(luò)輸出yyy的概率就是P(y;x,θ)P(y;x, \theta)P(y;x,θ),構(gòu)建似然函數(shù),

    L=∑ilog(P(yi;xi,θ))L =\sum_{i}log(P(y_i;x_i, \theta))L=i?log(P(yi?;xi?,θ))

    θ\thetaθ為參數(shù)最大化該似然函數(shù),即θ?=argmaxθL\theta^{*} ={argmax}_{\theta}Lθ?=argmaxθ?L

    真實(shí)分布P(xi)P(x_i)P(xi?)對于每一個(gè)(i,xi,yi)(i, x_i, y_i)(i,xi?,yi?)來說均是定值,在確定xix_ixi?情況下,輸出是yiy_iyi?的概率是確定的。在一般的情況下,對于每一個(gè)確定的輸入,輸出某個(gè)類別的概率是0或者1,所以可以將真實(shí)概率添加到上述式子中而不改變式子本身的意義:

    θ?=argmaxθ∑iPdata(yi;xi)log(P(yi;xi,θ))\theta^{*} ={argmax}_{\theta}\sum_{i}P_{data}(y_i;x_i)log(P(y_i;x_i, \theta)) θ?=argmaxθ?i?Pdata?(yi?;xi?)log(P(yi?;xi?,θ))

    DKLD_{KL}DKL?展開,得到,

    DKL(P∣∣Q)=?∑iP(i)log(Q(i)P(i))=∑iP(i)log(P(i))?∑iP(i)log(Q(i))D_{KL}(P || Q) =- \sum_{i}P(i)log(\frac{Q(i)}{P(i)}) = \sum_{i}P(i)log(P(i)) - \sum_{i}P(i)log(Q(i)) DKL?(PQ)=?i?P(i)log(P(i)Q(i)?)=i?P(i)log(P(i))?i?P(i)log(Q(i))

    P(i)P(i)P(i)代表Pdata(yi;xi)P_{data}(y_i;x_i)Pdata?(yi?;xi?)Q(i)Q(i)Q(i)代表P(yi;xi,θ)P(y_i;x_i,\theta)P(yi?;xi?,θ)

    上述右側(cè)式中第一項(xiàng)是和僅真實(shí)分布P(i)P(i)P(i)有關(guān)的,在最小化DKLD_{KL}DKL?過程中是一個(gè)定值,所以最小化DKLD_{KL}DKL?等價(jià)于最小化?∑iP(i)log(Q(i))-\sum_{i}P(i)log(Q(i))?i?P(i)log(Q(i)),也就是在最大化似然函數(shù)。

    • 函數(shù)形式(以二分類任務(wù)為例):

      loss=∑iy(xi)log(a(xi))+(1?y(xi))log(1?a(xi))loss = \sum_{i}y(x_i)log(a(x_i)) + (1 - y(x_i))log(1- a(x_i))loss=i?y(xi?)log(a(xi?))+(1?y(xi?))log(1?a(xi?))

      其中,y(xi)y(x_i)y(xi?)是真實(shí)分布,a(xi)a(x_i)a(xi?)是神經(jīng)網(wǎng)絡(luò)輸出的概率分布

    • 反向傳播:

    ?loss?z=(?y(z)a(z)+1?y(z)1?a(z))??a(z)?z=a(z)?y(z)a(z)(1?y(z))??a(z)?z\frac{\partial{loss}}{\partial{z}} = (-\frac{y(z)}{a(z)} + \frac{1 - y(z)}{1 - a(z)})*\frac{\partial{a(z)}}{\partial{z}} = \frac{a(z) - y(z)}{a(z)(1-y(z))}*\frac{\partial{a(z)}}{\partial{z}}?z?loss?=(?a(z)y(z)?+1?a(z)1?y(z)?)??z?a(z)?=a(z)(1?y(z))a(z)?y(z)???z?a(z)?

    在使用sigmoid作為激活函數(shù)情況下,?a(z)?z=a(z)(1?a(z))\frac{\partial{a(z)}}{\partial{z}} = a(z)(1-a(z))?z?a(z)?=a(z)(1?a(z)),也就是說,sigmoid本身的梯度和分母相互抵消,得到,

    ?loss?z=a(z)y(z)y(z)(1?a(z))??a(z)?z=a(z)?y(z)\frac{\partial{loss}}{\partial{z}} = \frac{a(z)y(z)}{y(z)(1-a(z))}*\frac{\partial{a(z)}}{\partial{z}} = a(z) - y(z)?z?loss?=y(z)(1?a(z))a(z)y(z)???z?a(z)?=a(z)?y(z)
    在上述反向傳播公式中不再涉及到sigmoid本身的梯度,故不會(huì)受到在誤差很大時(shí)候函數(shù)飽和導(dǎo)致的梯度消失的影響。
    總的說來,在使用sigmoid作為激活函數(shù)時(shí),使用交叉熵計(jì)算損失往往比使用均方誤差的結(jié)果要好上一些。但是,這個(gè)也并不是絕對的,需要具體問題具體分析,針對具體應(yīng)用,有時(shí)需要自行設(shè)計(jì)損失函數(shù)來達(dá)成目標(biāo)。

    參考資料:

    https://www.cnblogs.com/alexanderkun/p/8098781.html

    https://www.zhihu.com/question/20447622/answer/161722019

    《信息論基礎(chǔ)》

    點(diǎn)擊這里提交問題與建議
    聯(lián)系我們: msraeduhub@microsoft.com
    學(xué)習(xí)了這么多,還沒過癮怎么辦?歡迎加入“微軟 AI 應(yīng)用開發(fā)實(shí)戰(zhàn)交流群”,跟大家一起暢談AI,答疑解惑。掃描下方二維碼,回復(fù)“申請入群”,即刻邀請你入群。

    總結(jié)

    以上是生活随笔為你收集整理的AI应用开发基础傻瓜书系列3-损失函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。