日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

SimpleAI.

人工智能、機器學習、深度學習還是遙不可及?來這里看看吧~

Logistic Regression:最基礎的神經網絡

 

從基本的概念、原理、公式,到用生動形象的例子去理解,到動手做實驗去感知,到著名案例的學習,到用所學來實現自己的小而有趣的想法......我相信,一路看下來,我們可以感受到深度學習的無窮的樂趣,并有興趣和激情繼續鉆研學習。

正所謂 Learning by teaching,寫下一篇篇筆記的同時,我也收獲了更多深刻的體會,希望大家可以和我一同進步,共同享受AI無窮的樂趣。

Logistic回歸:最基礎的神經網絡

?

個人認為理解并掌握這個logistic regression是學習神經網絡和深度學習最重要的部分,也是最基礎的部分,學完這個再去看淺層神經網絡、深層神經網絡,會發現后者就是logistic重復了若干次(當然一些細節會有不同,但是原理上一模一樣)。

一、什么是logictic regression

下面的圖是Andrew Ng提供的一個用logistic regression來識別主子的圖片的算法結構示意圖:

Logistic Regression:最基礎的神經網絡

 

「左邊」「x0到x12287「是輸入(input),我們稱之為」特征(feather)」,常常用「列向量x(i)「來表示(這里的i代表第i個訓練樣本,下面在只討論一個樣本的時候,就暫時省略這個標記,免得看暈了-_-|||),在圖片識別中,特征通常是圖片的像素值,把所有的像素值排成一個序列就是輸入特征,每一個特征都有自己的一個」權重(weight)」,就是圖中連線上的「w0到w12287」,通常我們也把左右的權重組合成一個「列向量W」。

「中間的圓圈」,我們可以叫它一個神經元,它接收來自左邊的輸入并乘以相應的權重,再加上一個偏置項b(一個實數),所以最終接收的總輸入為:

但是這個并不是最后的輸出,就跟神經元一樣,會有一個「激活函數(activation function)「來對輸入進行處理,來決定是否輸出或者輸出多少。Logistic Regression的激活函數是」sigmoid函數」,介于0和1之間,中間的斜率比較大,兩邊的斜率很小并在遠處趨于零。長這樣(記住函數表達式):

Logistic Regression:最基礎的神經網絡

 

我們用來表示該神經元的輸出,σ()函數代表sigmoid,則可知:

這個可以看做是我們這個小模型根據輸入做出的一個預測,在最開始的圖對應的案例中,就是根據圖片的像素在預測圖片是不是貓。與對應的,每一個樣本x都有自己的一個真實標簽,代表圖片是貓,代表不是貓。我們希望模型輸出的可以盡可能的接近真實標簽,這樣,這個模型就可以用來預測一個新圖片是不是貓了。所以,我們的任務就是要找出一組W,b,使得我們的模型可以根據給定的,正確地預測。在此處,我們可以認為,只要算出的大于0.5,那么y'就更接近1,于是可以預測為“是貓”,反之則“不是貓”。

以上就是Logistic Regression的基本結構說明。

二、怎么學習W和b

前面其實提到過了,我們「需要學習到的W和b可以讓模型的預測值y'與真實標簽y盡可能地接近,也就是y'和y的差距盡量地縮小」。因此,我們可以定義一個「損失函數(Loss function)」,來衡量和y的差距:

實際上,這就是交叉熵損失函數,Cross-entropy loss。交叉熵衡量了兩個不同分布之間的差距,在這里,即衡量我們預測出來的分布和正式分布之間的差距。

如何說明這個式子適合當損失函數呢?且看:

  • 當y=1時,,要使L最小,則要最大,則=1;
  • 當y=0時,,要使L最小,則要最小,則=0.

如此,便知符合我們對損失函數的期望,因此適合作為損失函數。

我們知道,x代表一組輸入,相當于是一個樣本的特征。但是我們訓練一個模型會有很多很多的訓練樣本,也就是有很多很多的x,就是會有x(1),x(2),...,x(m) 共m個樣本(m個列向量),它們可以寫成一個X矩陣:

對應的我們也有m個標簽,:

通過我們的模型計算出的也會有m個:

前面我們寫的損失函數,只計算一個樣本的損失。但我們需要考慮所有訓練樣本的損失,則總損失可以這樣計算:

有了總體的損失函數,我們的學習任務就可以用一句話來表述:

“尋找w和b,使得損失函數最小化”

最小化。。。說起來簡單做起來難,好在我們有計算機,可以幫我們進行大量重復地運算,于是在神經網絡中,我們一般使用「梯度下降法(Gradient Decent)」

Logistic Regression:最基礎的神經網絡

 

這個方法通俗一點就是,先隨機在曲線上找一個點,然后求出該點的斜率,也稱為梯度,然后順著這個梯度的方向往下走一步,到達一個新的點之后,重復以上步驟,直到到達最低點(或達到我們滿足的某個條件)。如,對w進行梯度下降,則就是重復一下步驟(重復一次稱為一個「迭代」):

其中:=代表“用后面的值更新”,α代表「學習率(learning rate)」,dJ/dw就是J對w求偏導。

回到我們的Logistic Regression問題,就是要初始化(initializing)一組W和b,并給定一個學習率,指定要「迭代的次數」(就是你想讓點往下面走多少步),然后每次迭代中求出w和b的梯度,并更新w和b。最終的W和b就是我們學習到的W和b,把W和b放進我們的模型中,就是我們學習到的模型,就可以用來進行預測了!

需要注意的是,這里我們使用的損失是全體訓練樣本的損失。實際上,使用全部樣本的損失進行更新的話會太慢,但使用一個樣本進行更新,誤差就會很大。所以,我們更常用的是選擇「一定大小的批次」(batch),然后計算一個batch內的損失,再進行參數更新。

總結一下:

  • Logistic Regression模型:,記住使用的激活函數是sigmoid函數。
  • 損失函數:衡量預測值與真實值的差距,越小越好。
  • 我們一般對一個批次的樣本求總損失,然后使用梯度下降法進行更新。
  • 「訓練模型的步驟」
  • 初始化W和b
  • 指定learning rate和迭代次數
  • 每次迭代,根據當前W和b計算對應的梯度(J對W,b的偏導數),然后更新W和b
  • 迭代結束,學得W和b,帶入模型進行預測,分別測試在訓練集合測試集上的準確率,從而評價模型

就這么明明白白

分享到:
標簽:神經網絡
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定