深蓝学院的深度学习理论与实践课程:第二章
1、知識引入(重點介紹極大似然估計)
極大似然估計就是我們來求解模型參數的這樣一個過程或者是一種方法。
?
已經知道模型的概率分布那就是p,這就符合前邊我們假設的第2點,這個分布是已知的。O代表是我們觀測的一個結果,M代表是我們的模型(我們知道模型M,因為這個M我們已經假設概率分布是p,所以通過M得出我們的觀測,O相當于之前的x,M相當于之前的θ;)。使用獨立同分布的性質可以拆成連乘。雖然不知道是哪一次是白球,但是我們知道有70次,所以是p的70次方。再乘以剩下的30次。 p的取值可以是0.1也可以是0.2等等得到不同的P(O|M)的值,所以我們要找到P(O|M)最大的值,就是將整個的似然函數估計最大。
對p進行求導,因為我們要求他的極大值。因為我們前邊說明了白球和黑球都存在,所以這里如果p=0或者p=1的話,就說明他要么全是白球,要么全是黑球,這就不符合了,所以最后算出來p是0.7。整個P(O|M)是一個似然函數,這里他是p的這樣一個函數,p代表的是模型的一個參數,那我們使得整個函數的這樣一個極大值,則樣本結果這個O呢出現的可能性最大。所以這里就是極大似然估計叫法的一個由來。極大似然估計呢,他就是利用似然函數,求似然函數最大值的這樣的一種方法來求整個模型的這樣的一個參數。實際上我們能知道P(O|M)我們這樣的一個數據集O,也就是我們的觀測值,但是我們不知道我們的這樣的一個模型的參數M,那我們利用極大似然估計這樣的方法來求我們的這樣的一個M。
? ? ? ? ? 所以無論是在機器學習還是我們稍后要講的深度學習當中,神經網絡他的求法呢都是利用這種極大似然估計他的這種想法來去求。
-------------------------------------------------------------------------極大似然估計擴展理解-------------------------
極大似然估計的理解:為什么要取似然函數的極大值/最大值,θ就最有可能?似然函數的意義是什么?
極大似然估計的形式:
1.離散型統計模型
??表示觀測值。
2.連續型統計模型
上述疑問:問什么要取似然函數最大值來估算參數θ?
個人理解1:似然函數的形式是理論上各事件(這個事件表示一次采樣一個樣本,每個樣本有不同的分類)的發生概率。現在發生了的某個事件,似然函數就變成了這個樣本的理論概率,而現在的采樣結果代表某個事件已經確定發生了,那這個事發生的理論概率應該盡量大(在這個事件發生的理論概率中最大的那種情況),才會導致這個事件發生概率最大,所以要用極大似然函數估計。
個人理解2:最大似然估計:現在已經拿到了很多個樣本(你的數據集中所有因變量),這些樣本值已經實現,最大似然估計就是去找到那個(組)參數估計值,使得前面已經實現的樣本值發生概率最大。因為你手頭上的樣本已經實現了,其發生概率最大才符合邏輯。這時是求樣本所有觀測的聯合概率最大化,是個連乘積,只要取對數,就變成了線性加總。此時通過對參數求導數,并令一階導數為零,就可以通過解方程(組),得到最大似然估計值。
或者這么理解:似然函數的形式是理論上各事件的發生概率。現在發生了某一事件,可以認為,這個事件是理論上概率最大的那個事件。所以使似然函數最大,也就是讓現在發生的這個事件成為概率最大的事件。
一些其他的理解:極大似然估計,就是基于一個基本常識的假設:現實發生的樣本最有可能是整個樣本空間中概率最大的。所以就假設為最大概率來進行參數估計。
學過統計物理就很直觀了,n次獨立實驗的概率就是乘法原理。而我們會傾向于認為,現實發生的事件應該就對應于理論上概率最大的那一個事件。歷史上玻爾茲曼分布就是這么算出來的。
--------------------------------------------------End-----------------------------------------
所以無論是在機器學習還是我們稍后要講的深度學習當中,神經網絡他的求法呢都是利用這種極大似然估計他的這種想法來去求。
經典的分類方法:邏輯回歸(雖然名字中帶有回歸二字,但是他是一個分類方法);
邏輯回歸的理解參見博客:https://blog.csdn.net/weixin_39445556/article/details/83930186
MP模型:1943年,心理學家W.S.McCulloch和數理邏輯學家W.Pitts建立了神經網絡和數學模型,稱為MP模型。他們通過MP模型提出了神經元的形式化數學描述和網絡結構方法,證明了單個神經元能執行邏輯功能,從而開創了人工神經網絡研究的時代。
階躍函數:階躍函數是一種特殊的連續時間函數,是一個從0跳變到1的過程,屬于奇異函數。
Logistics:Logistic函數或Logistic曲線是一種常見的S形函數,它是皮埃爾·弗朗索瓦·韋呂勒在1844或1845年在研究它與人口增長的關系時命名的。廣義Logistic曲線可以模仿一些情況人口增長(P)的S形曲線。起初階段大致是指數增長;然后隨著開始變得飽和,增加變慢;最后,達到成熟時增加停止。
損失函數:
隨機梯度法:
上述第一節可以學到兩部分:第一部分就是極大似然估計;另一部分就是梯度下降法。
極大似然估計就是我們去求解這個P(O|M)的過程,我們只知道觀測值O,一般情況下我們去求解問題,都只知道一個觀測值,然后我們假設他有一個模型,他符合一個什么的分布,它的參數是什么樣的,然后我們去求解這個參數,所以說我們采用這種極大似然估計的方法。梯度下降方法呢,在我們求這個我們已經把這個P構造出來之后也就是P(O|M),我們利用這種梯度下降的方法去求這個P的極大值或者極小值的時候,我們無法直接去求他的一個解析的形式的時候,我們通過這種近似的方法還有就是迭代的方法來去求他的極大或者極小值。接下來第二節講機器學習當中的感知機策略。
2、感知機
詳細的感知機博客:https://blog.csdn.net/m0_37957160/article/details/113922919
?感知機的原理:感知機是二分類的線性模型,其輸入是實例的特征向量,輸出的是事例的類別,分別是+1和-1,屬于判別模型。
假設訓練數據集是線性可分的,感知機學習的目標是求得一個能夠將訓練數據集正實例點和負實例點完全正確分開的分離超平面。如果是非線性可分的數據,則最后無法獲得超平面。
思路1將誤分類樣本點的總數定義為損失函數;他的缺點我們實際上是去通過來去數他的誤分類點的個數,他的誤分類點的這樣一個總數是他無法通過梯度下降法,因為他的這樣的損失函數不是像我們講梯度下降法的時候是凹函數,而他的損失函數實際上是一個離散的這種形式,那他就沒有辦法采用梯度下降法去做。還有下邊的思路2;
平面中點到面的距離公式? 因為你的誤分類點的正負值和你的的正負值是相反的,所以我們可以直接乘上一個
sign示性函數。
此處有一個比較重要的點就是M,M不是所有的數據集D,而是我的數據集D的一個子集,M代表的是誤分類點的集合,也就是說他使用的不是所有的子集,而是說只使用了誤分類點這樣的一個集合。
第一步首先選擇初值。第二步:然后在訓練集中隨便選取一個數據;第三步:如果,那就說明當前數據是誤分類的點,他就屬于M當中的一個點,那么我們就進行參數的一個更新。然后我們繼續跳轉到第二步,此時w和b更新之后,我再選取一個數據,再次走到第3步,這里可能是小于0或者大于0,如果還是小于0,那說明這個點還是誤分類的,繼續更新參數;如果大于0了那我就再去找一些其他的沒測試的數據再去進行測試,直到我最后訓練集中沒有誤分類的點,也就說我所有的樣本點都已經進行了這種分開。感知機算法他有一個問題,我對于這種線性不可分的情形(就是沒法用一條直線分開的,不管你怎么畫這條直線他的數據集都是分不開的),感知機是否還有用?
sign函數:sign(x)將大于0的分為1,小于0的分為-1。
3、神經網絡(這里講的神經網絡主要是MLP、或者是全連接神經網絡或者叫他前饋神經網絡)
感知機模型利用了一種誤分類的數據驅動的梯度下降的方法來求得的最后的形式,感知機問題解決的是線性問題;
存在很多非線性問題。
每層神經元實際上可以用這樣一種統一的數學表達式來寫:其中是在未激勵之前求和的形式,相當于是他的一個激勵函數。
說明這里邊有個輸出層,輸出節點。這里邊的分量代表輸出層的第個輸出。我在輸出層每一個節點,從到,相當于每一個輸出層的每一個輸出點都去做了這樣一個交叉熵,然后我是有個這樣的一個樣本。我就相當于個樣本的每一個,對應上圖就是兩個輸出。
4、反向傳播(主要講BP)
表示第個樣本他的輸出第個分量的值。真實的訓練數據他的一個label。
如果最后一層有兩個輸出節點,那么 整個的第個樣本的他的一個輸出的誤差可以寫作:,因為他有兩個節點。
小表示除了輸入層以外,其他的層。
上標(3)表示有3層。對照之前的網絡結構再將第三層的兩個輸出節點進行展開。、表示節點經過激活函數,、表示未經過激活函數。再次的將、進行展開。此處的、就表示之前的第2層到第3層我經過了權重相乘之后這樣一個結果(其實中間省略了一步第一層到第二層的過程)。
輸出層的權重是,我們對這一層的權重來求偏導,因為第3層到第2層實際上是一個2x4的矩陣,實際上我們要對8個這樣的權重進行偏導數求解。
輸出層的第1個偏導數,實際上是E先對求,再對,才對求。因為你的到他實際上是有乘了這個。
我們把他進行進一步展開,對求,剩下的就是對進行求導。首先是先對,因為到實際上是經過了一個激活函數,所以先對激活函數進行求導,然后再對進行求導。
首先先對z進行,因為到a實際上經過了一個激活函數。
這個是對于輸出層的權重更新,表示第層的經過激活函數之后的那個輸出,只不過他是第j個點。這里多了一個轉置,因為從你的前向傳播的時候,和你反向傳播他的這個方向實際上是相反的。所以這里是有一個轉置的過程,因為你轉置之后(可以把具體的這個矩陣給他寫的清楚一點就能明白這個轉置)
隱藏層的誤差其實是來自于我的輸出層誤差的積累,只不過是輸出層的兩個節點他的誤差都對他有貢獻。的誤差其實是來自于兩部分、。
輸出層的誤差通過公式傳到了隱藏層,也就是層傳到了層。這就是誤差反向傳播,他也是一層一層傳過去的。
先算輸出層,大層的一個,然后通過反向傳播算出前邊每一層的就是小層的每一個,即。
就代表我整個這樣一個從層到層誤差反傳的時候是有一個權重矩陣的轉置。
5、手寫數字的識別
見博客:
?
總結
以上是生活随笔為你收集整理的深蓝学院的深度学习理论与实践课程:第二章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深蓝学院的深度学习理论与实践课程:第一章
- 下一篇: 回归分析中的“回归”