M爲樣本個數,爲模型對樣本i的預測結果,
爲樣本i的真實標籤。算法
判別式:LR,SVM,神經網絡,CRF,Boosting緩存
詳情:支持向量機網絡
特徵維數高選擇線性核函數
樣本數量可觀、特徵少選擇高斯核(非線性核)性能
樣本數量很是多選擇線性核(避免形成龐大的計算量)學習
詳情:支持向量機優化
支持向量機是一種二分類模型,他的基本想法就是基於訓練集和樣本空間中找到一個最好的劃分超平面,將兩類樣本分割開來,首先你就要知道什麼樣的劃分發才能稱爲「最」好劃分設計
看上圖,二維平面上有兩類樣本,一類是用‘+’表示,另外一類用‘-’表示,那麼中間那幾條劃分線每條都能將兩類樣本分割開來,但咱們咱們一眼就注意到中間那條加粗的劃分超平面,彷佛他是最好的,由於兩類的樣本點都離他挺遠的,專業點說就是該劃分超平面對訓練樣本局部擾動的‘容忍’性最好。好,這還只是個二維平面,咱們能夠經過可視化大概尋找這樣一個超平面,但若是三維,四維,五維呢,咱們必須用咱們擅長的數學去描述它,推導它。code
在樣本空間中,劃分超平面可用表示,記爲(w,b),樣本點(xi,yi)到劃分超平面的函數間隔爲
,幾何間隔爲:
orm
若,可知函數間隔和幾何間隔相等,若超平面參數w,b成比例的改變(超平面沒有變),則函數間隔也是成比例的改變,而幾何間隔不變。
支持向量機的基本想法就是求解可以正確劃分訓練數據集而且幾何間隔最大的分離超平面,表達爲數學公式即爲:
其實函數間隔的取值並不影響最優化問題的解,假設將w和b成倍的改變爲aw,ab,那麼函數間隔也會相應變成a
,函數間隔的對上面最優化問題的不等式沒有影響,也對目標函數沒有影響,所以爲簡便,取
,並且咱們注意到最大化
等價於最小化
(爲啥取平方呢,由於後面好求導),即可獲得下面支持線性可分(線性不可分的狀況後面會提到)的支持向量機的最優化問題
這是一個凸二次優化的問題,能夠直接求解,可是爲了簡便呢,咱們要應用拉格朗日對偶性,求解他的對偶問題
其實求解對偶問題相比於原問題有一下幾點好處(1).對偶問題更容易求解,由於不用求w了 (2)咱們能夠天然引入核函數,這樣能夠推廣到線性不可分分類問題上
創建拉格朗日函數,引進拉格朗日乘子,定義拉格朗日函數:
根據原始問題的對偶性,原始問題的對偶性是極大極小問題,即
將其代入對偶問題,可得
解出alpha以後,那麼w,b也相應獲得啦
接下來,咱們看看頗有意思的上式不等式約束的kkt條件(不懂請百度)帶給咱們的信息
咦,對於任意訓練樣本,總有
或者
,也就是說最終與模型有關的的樣本點都位於最大間隔的邊界上,咱們稱之爲支持向量,其他的樣本點與模型無關
在前面的討論中,咱們都是聊的線性可分的狀況,那麼大多數狀況下都線性不可分怎麼辦,好比這樣(如左)
山人自有妙計,咱們能夠將樣本先映射到高維特徵空間,而後就能夠繼續分割了(如右)
前面咱們說到了對偶問題是
公式中涉及到計算,xi,xj是映射到特徵空間以後的內積,因爲特徵維數可能會很高,甚至是無窮多維,直接計算很困難,因此咱們引入了核函數:
這樣咱們就能夠不用麻煩的計算內積了
dqn的各類trick:
第一個Trick。DQN引入卷積層。模型經過Atari遊戲視頻圖像瞭解環境信息並學習策略。DQN須要理解接收圖像,具備圖像識別能力。卷積神經網絡,利用可提取空間結構信息卷積層抽取特徵。卷積層提取圖像中重要目標特徵傳給後層作分類、迴歸。DQN用卷積層作強化學習訓練,根據環境圖像輸出決策。
第二個Trick。Experience Replay。深度學習須要大量樣本,傳統Q-Learning online update方法(逐一對新樣本學習)不適合DQN。增大樣本,多個epoch訓練,圖像反覆利用。Experience Replay,儲存Agent Experience樣本,每次訓練隨機抽取部分樣本供網絡學習。穩定完成學習任務,避免短視只學習最新接觸樣本,綜合反覆利用過往大量樣本學習。建立儲存Experience緩存buffer,儲存必定量較新樣本。容量滿了,用新樣本替換最舊樣本,保證大部分樣本相近機率被抽到。不替換舊樣本,訓練過程被抽到機率永遠比新樣本高不少。每次須要訓練樣本,直接從buffer隨機抽取必定量給DQN訓練,保持樣本高利用率,讓模型學習到較新樣本。
第三個Trick。用第二個DQN網絡輔助訓練,target DQN,輔助計算目標Q值,提供學習目標公式裏的maxaQ(st+1,a)。兩個網絡,一個製造學習目標,一個實際訓練,讓Q-Learning訓練目標保持平穩。強化學習 Q-Learning學習目標每次變化,學習目標分部是模型自己輸出,每次更新模型參數會致使學習目標變化,更新頻繁幅度大,訓練過程會很是不穩定、失控,DQN訓練會陷入目標Q值與預測Q值反饋循環(陷入震盪發散,難收斂)。須要穩定target DQN輔助網絡計算目標Q值。target DQN,低頻率、緩慢學習,輸出目標Q值波動較小,減少訓練過程影響。
第四個Trick。Double DQN。傳統DQN高估Action Q值,高估不均勻,致使次優Action被高估超過最優Action。targetDQN 負責生成目標Q值,先產生Q(st+1,a),再經過maxa選擇最大Q值。Double DQN,在主DQN上經過最大Q值選擇Action,再獲取Action在target DQN Q值。主網選擇Action,targetDQN生成Action Q值。被選擇Q值,不必定老是最大,避免被高估次優Action老是超過最優Action,致使發現不了真正最好Action。學習目標公式:Target=rt+1+γ·Qtarget(st+1,argmaxa(Qmain(st+1,a)))。
第五個Trick。Dueling DQN。Dueling DQN,Q值函數Q(st,at)拆分,一部分靜態環境狀態具備價值V(st),Value;另外一部分動態選擇Action額外帶來價值A(at),Advantage。公式,Q(st,at)=V(st)+A(at)。網絡分別計算環境Value和選擇Action Advantage。Advantage,Action與其餘Action比較,零均值。網絡最後,再也不直接輸出Action數量Q值,輸出一個Value,及Action數量 Advantage值。V值分別加到每一個Advantage值上,得最後結果。讓DQN學習目標更明確,若是當前指望價值主要由環境狀態決定,Value值大,全部Advantage波動不大;若是指望價值主要由Action決定,Value值小,Advantage波動大。分解讓學習目標更穩定、精確,DQN對環境狀態估計能力更強。
1 核函數本質
核函數的本質能夠歸納爲以下三點:
1)實際應用中,經常遇到線性不可分的狀況。針對這種狀況,經常使用作法是把樣例特徵映射到高維空間中,轉化爲線性可分問題。
2)將樣例特徵映射到高維空間,可能會遇到維度太高的問題。
3)針對可能的維災難,能夠利用核函數。核函數也是將特徵從低維到高維的轉換,但避免了直接進行高維空間中的複雜計算,能夠在低維上進行計算,卻能在實質上將分類效果表如今高維上。
固然,SVM也能處理線性可分問題,這時使用的就是線性核了。
經常使用的核函數包括以下幾個:線性核函數,多項式核函數,RBF核函數(高斯核),Sigmoid核函數
2 線性核
2.1 線性核
SVM確定是能夠處理線性問題的,這個就是斯坦福課程裏講SVM時候,最開始講解的部分,以線性問題入手進行講解。
線性覈計算爲k(x1,x2)=,其實就是在原始空間中的內積。
2.2 線性SVM和邏輯迴歸
當SVM使用線性核時,在處理分類問題時,和邏輯迴歸比較有哪些異同,如何選擇?
1)線性核SVM和邏輯迴歸本質上沒有區別
2)n=特徵數,m=訓練樣本數目
若是n相對m比較大,使用邏輯迴歸或者線性SVM,例如n=10000,m=10-1000
若是n比較小,m數值適中,使用高斯核的SVM,例如n=1-1000,m=10-10000
若是n比較小,m很大,構建更多特徵,而後使用邏輯迴歸或者線性SVM
3 非線性核
經常使用的非線性核包括多項式核,RBF核(高斯核),sigmoid核。
RBF核一般是首選,實踐中每每能表現出良好的性能。計算方法以下:
其中,若是σ選得很大的話,高次特徵上的權重實際上衰減得很是快,因此實際上(數值上近似一下)至關於一個低維的子空間;反過來,若是σ選得很小,則能夠將任意的數據映射爲線性可分——固然,這並不必定是好事,由於隨之而來的多是很是嚴重的過擬合問題。不過,總的來講,經過調控參數,高斯覈實際上具備至關高的靈活性,也是使用最普遍的核函數之一。
多項式覈計算方法以下:
sigmoid核函數計算方法以下:
採用Sigmoid函數做爲核函數時,支持向量機實現的就是一種多層感知器神經網絡,應用SVM方法,隱含層節點數目(它肯定神經網絡的結構)、隱含層節點對輸入節點的權值都是在設計(訓練)的過程當中自動肯定的。並且支持向量機的理論基礎決定了它最終求得的是全局最優值而不是局部最小值,也保證了它對於未知樣本的良好泛化能力而不會出現過學習現象。
4 如何選擇
1)能夠利用專家先驗知識餘弦選定核函數,例如已經知道問題是線性可分的,就可使用線性核,沒必要選用非線性核
2)利用交叉驗證,試用不一樣的核函數,偏差最小的即爲效果最好的核函數
3)混合核函數方法,將不一樣的核函數結合起來
我以爲問題是線性可分和線性不可分其中之一,那在選擇核函數的時候,若是不清楚問題屬於哪一類,就兩類核都嘗試一下,因此能夠主要嘗試線性核以及RBF核。
1) Linear核:主要用於線性可分的情形。參數少,速度快,對於通常數據,分類效果已經很理想了。
2)RBF核:主要用於線性不可分的情形。參數多,分類結果很是依賴於參數。有不少人是經過訓練數據的交叉驗證來尋找合適的參數,不過這個過程比較耗時。
至於到底該採用哪一種核,要根據具體問題,有的數據是線性可分的,有的不可分,須要多嘗試不一樣核不一樣參數。若是特徵的提取的好,包含的信息量足夠大,不少問題都是線性可分的。固然,若是有足夠的時間去尋找RBF核參數,應該能達到更好的效果。
沒有一種黃金規則能夠肯定哪一種核函數將推導出最準確的SVM,在實踐中,核函數的選擇通常並不致使準確率的很大差異。SVM老是發現全局解,而不是局部解。
5 其餘
SVM的複雜度主要由支持向量數刻畫,而不是數據的維度,所以相比其餘方法,SVM不太容易過擬合。
SVM的損失函數:
一、Hinge損失函數
首先咱們來看什麼是合頁損失函數(hinge loss function):
hinge loss function
下標」+」表示如下取正值的函數,咱們用z表示中括號中的部分:
也就是說,數據點若是被正確分類,損失爲0,若是沒有被正確分類,損失爲z。合頁損失函數以下圖所示:
二、SVM損失函數
SVM的損失函數就是合頁損失函數加上正則化項:
二、SVM損失函數
SVM的損失函數就是合頁損失函數加上正則化項:
損失函數
決策樹和樸素貝葉斯是最經常使用的兩種分類算法,本篇文章介紹樸素貝葉斯算法。貝葉斯定理是以英國數學家貝葉斯命名,用來解決兩個條件機率之間的關係問題。簡單的說就是在已知P(A|B)時如何得到P(B|A)的機率。樸素貝葉斯(Naive Bayes)假設特徵P(A)在特定結果P(B)下是獨立的。
1.機率基礎:
在開始介紹貝葉斯以前,先簡單介紹下機率的基礎知識。機率是某一結果出現的可能性。例如,拋一枚勻質硬幣,正面向上的可能性多大?機率值是一個0-1之間的數字,用來衡量一個事件發生可能性的大小。機率值越接近1,事件發生的可能性越大,機率值越接近0,事件越不可能發生。咱們平常生活中聽到最多的是天氣預報中的降水機率。機率的表示方法叫維恩圖。下面咱們經過維恩圖來講明貝葉斯公式中常見的幾個機率。
在維恩圖中:
S:S是樣本空間,是全部可能事件的總和。
P(A):是樣本空間S中A事件發生的機率,維恩圖中綠色的部分。
P(B):是樣本空間S中B事件發生的機率,維恩圖中藍色的部分。
P(A∩B):是樣本空間S中A事件和B事件同時發生的機率,也就是A和B相交的區域。
P(A|B):是條件機率,是B事件已經發生時A事件發生的機率。
對於條件機率,還有一種更清晰的表示方式叫機率樹。下面的機率樹表示了條件機率P(A|B)。與維恩圖中的P(A∩B)相比,能夠發現二者明顯的區別。P(A∩B)是事件A和事件B同時發現的狀況,所以是二者相交區域的機率。而事件機率P(A|B)是事件B發生時事件A發生的機率。這裏有一個先決條件就是P(B)要首先發生。
由於條件機率P(A|B)是在事件B已經發生的狀況下,事件A發生的機率,所以P(A|B)能夠表示爲事件A與B的交集與事件B的比率。
該公式還能夠轉換爲如下形式,以便咱們下面進行貝葉斯公式計算時使用。
2.貝葉斯公式:
貝葉斯算法經過已知的P(A|B),P(A),和P(B)三個機率計算P(B|A)發生的機率。假設咱們如今已知P(A|B),P(A)和P(B)三個機率,如何計算P(B|A)呢?經過前面的機率樹及P(A|B)的機率可知,P(B|A)的機率是在事件A發生的前提下事件B發生的機率,所以P(B|A)能夠表示爲事件B與事件A的交集與事件A的比率。
該公式一樣能夠轉化爲如下形式:
經過計算能夠證實P(A|B)*P(B)和P(B|A)*P(A)最後求得的結果是機率表中的同一個區域的值,所以:
咱們經過P(A∩B)= P(B∩A)證實了在已知P(A|B),P(A),和P(B)三個機率的狀況下能夠計算出P(B|A)發生的機率。整個推導和計算過程能夠說得通。但從統計學的角度來看,P(A|B)和P(B|A)兩個條件機率之間存在怎樣的關係呢?咱們從貝葉斯推斷裏能夠找到答案。
3.貝葉斯推斷:
貝葉斯推斷能夠說明貝葉斯定理中兩個條件機率之間的關係。換句話說就是咱們爲何能夠經過P(A|B),P(A),和P(B)三個機率計算出P(B|A)發生的機率。
在貝葉斯推斷中,每一種機率都有一個特定的名字:
P(B)是」先驗機率」(Prior probability)。
P(A)是」先驗機率」(Prior probability),也做標準化常量(normalized constant)。
P(A|B)是已知B發生後A的條件機率,叫作似然函數(likelihood)。
P(B|A)是已知A發生後B的條件機率,是咱們要求的值,叫作後驗機率。
P(A|B)/P(A)是調整因子,也被稱做標準似然度(standardised likelihood)。
貝葉斯推斷中有幾個關鍵的概念須要說明下:
第一個是先驗機率,先驗機率是指咱們主觀經過事件發生次數對機率的判斷。
第二個是似然函數,似然函數是對某件事發生可能性的判斷,與條件機率正好相反。經過事件已經發生的機率推算事件可能性的機率。
維基百科中對似然函數與機率的解釋:
機率:是給定某一參數值,求某一結果的可能性。
例如,拋一枚勻質硬幣,拋10次,6次正面向上的可能性多大?
似然函數:給定某一結果,求某一參數值的可能性。
例如,拋一枚硬幣,拋10次,結果是6次正面向上,其是勻質的可能性多大?
第三個是調整因子:調整因子是似然函數與先驗機率的比值,這個比值至關於一個權重,用來調整後驗機率的值,使後驗機率更接近真實機率。調整因子有三種狀況,大於1,等於1和小於1。
調整因子P(A|B)/P(A)>1:說明事件可能發生的機率要大於事件已經發生次數的機率。
調整因子P(A|B)/P(A)=1:說明事件可能發生的機率與事件已經發生次數的機率相等。
調整因子P(A|B)/P(A)<1:說明事件可能發生的機率與事件小於已經發生次數的機率。
所以,貝葉斯推斷能夠理解爲經過先驗機率和調整因子來得到後驗機率。其中調整因子是根據事件已經發生的機率推斷事件可能發生的機率(經過硬幣正面出現的次數來推斷硬幣均勻的可能性),並與已經發生的先驗機率(硬幣正面出現的機率)的比值。經過這個比值調整先驗機率來得到後驗機率。
後驗機率=先驗機率x調整因子
sigmoid function 的導數以下:
邏輯迴歸用來分類0/1 問題,也就是預測結果屬於0 或者1 的二值分類問題。這裏假設了二值知足伯努利分佈,也就是
其也能夠寫成以下的形式:
對於訓練數據集,特徵數據x={x1, x2, … , xm}和對應的分類標籤y={y1, y2, … , ym},假設m個樣本是相互獨立的,那麼,極大似然函數爲:
log似然爲:
如何使其最大呢?與線性迴歸相似,咱們使用梯度上升的方法(求最小使用梯度降低),那麼。
若是隻用一個訓練樣例(x,y),採用隨機梯度上升規則,那麼隨機梯度上升更新規則爲:
大寫字母X表示隨機變量,小寫字母x表示隨機變量X的某個具體的取值;
P(X)表示隨機變量X的機率分佈,P(X,Y)表示隨機變量X、Y的聯合機率分佈,P(Y|X)表示已知隨機變量X的狀況下隨機變量Y的條件機率分佈;
p(X=x)表示隨機變量X取某個具體值的機率,簡記爲p(x);
p(X=x,Y=y) 表示聯合機率,簡記爲p(x,y),p(Y=y|X=x)表示條件機率,簡記爲p(y|x),且有:p(x,y)=p(x)*p(y|x)。
熵:若是一個隨機變量X的可能取值爲X={x1,x2,…,xk},其機率分佈爲P(X=xi)=pi(i= 1,2,...,n),則隨機變量X的熵定義爲:
把最前面的負號放到最後,便成了:
上面兩個熵的公式,不管用哪一個都行,並且二者等價,一個意思(這兩個公式在下文中都會用到)。
聯合熵:兩個隨機變量X,Y的聯合分佈,能夠造成聯合熵Joint Entropy,用H(X,Y)表示。
條件熵:在隨機變量X發生的前提下,隨機變量Y發生所新帶來的熵定義爲Y的條件熵,用H(Y|X)表示,用來衡量在已知隨機變量X的條件下隨機變量Y的不肯定性。
簡單解釋下上面的推導過程。整個式子共6行,其中
第二行推到第三行的依據是邊緣分佈p(x)等於聯合分佈p(x,y)的和;
第三行推到第四行的依據是把公因子logp(x)乘進去,而後把x,y寫在一塊兒;
第四行推到第五行的依據是:由於兩個sigma都有p(x,y),故提取公因子p(x,y)放到外邊,而後把裏邊的-logp(x,y)-logp(x))寫成-log(p(x,y)/p(x)) ;
第五行推到第六行的依據是:p(x,y)=p(x)*p(y|x),故p(x,y)/p(x)=p(y|x)。
相對熵:又稱互熵,交叉熵,鑑別信息,Kullback熵,Kullback-Leible散度等。設p(x)、q(x)是X中取值的兩個機率分佈,則p對q的相對熵是:
在必定程度上,相對熵能夠度量兩個隨機變量的「距離」,且有D(p||q) ≠D(q||p)。另外,值得一提的是,D(p||q)是必然大於等於0的。
互信息:兩個隨機變量X,Y的互信息定義爲X,Y的聯合分佈和各自獨立分佈乘積的相對熵,用I(X,Y)表示:
經過上面的計算過程,咱們發現居然有H(Y)-I(X,Y)=H(Y|X)。故經過條件熵的定義,有:H(Y|X)=H(X,Y)-H(X),而根據互信息定義展開獲得H(Y|X)=H(Y)-I(X,Y),把前者跟後者結合起來,便有I(X,Y)= H(X)+H(Y)-H(X,Y),此結論被多數文獻做爲互信息的定義。
則
sigmoid function 的導數以下:
邏輯迴歸用來分類0/1 問題,也就是預測結果屬於0 或者1 的二值分類問題。這裏假設了二值知足伯努利分佈,也就是
其也能夠寫成以下的形式:
log似然爲:
若是隻用一個訓練樣例(x,y),採用隨機梯度上升規則,那麼隨機梯度上升更新規則爲:
在必定程度上,相對熵能夠度量兩個隨機變量的「距離」,且有D(p||q) ≠D(q||p)。另外,值得一提的是,D(p||q)是必然大於等於0的。
且有I(X,Y)=D(P(X,Y)||P(X)P(Y))。下面,我們來計算下H(Y)-I(X,Y)的結果,以下: