PAC learning
文章目錄
- 區(qū)間學習(Learning Intervals)
- 分布和假設(Distributions and Hypothese)
- 概念集(Concept Class)
- PAC學習(probably Approximately Correct Learning)
- 番外:對區(qū)間學習是PAC可學習性的證明
本文是對Leslie Valiant博文PAC的翻譯,對原文內容有所取舍
區(qū)間學習(Learning Intervals)
從一個游戲開始:
玩家1:心里想一個范圍[a,b],每次想一個數(shù)字并告訴玩家2這個數(shù)字在不在范圍[a,b]中
玩家2:從玩家1處得到信息后猜測這個范圍[a,b],隨著玩家1每次給出新的數(shù)字,玩家2會更新自己的預測
顯而易見,玩家2是不可能完全猜對的,但他可以盡可能接近準確答案。
假設玩家2在若干次更新后給出了自己的最終預測,玩家1開始源源不斷地給出數(shù)字,如果大多數(shù)情況下這些數(shù)字都落在玩家2所給的答案范圍里,我們就認為玩家2贏得了游戲,并稱這個問題是PAC可學習(PAC-learnable)的。
你可能會想,我把范圍保持為和玩家1給出的在范圍內數(shù)字的最大最小值一致不久可以了嗎?我們之后會證明這種方法確實可以贏得游戲。
分布和假設(Distributions and Hypothese)
把剛才猜數(shù)字的游戲放到一邊,玩家1不再需要每次給出數(shù)字了,他仍然需要想一個范圍XXX,確切地說,一個集合XXX,可以有限,可以無限,隨心所欲。接下來,他需要在這個集合范圍內想一種取出其中元素的規(guī)則,或者說,一個分布DDD。他的任務就是根據DDD從XXX中不斷給出元素,注意,這些元素一定是獨立給出的,也即這些元素獨立同分布(independently and identically distributed),而玩家2則需要盡可能猜出這個分布。
如果一個算法AAA對于XXX上的所有分布DDD都能以大概率在有限步內贏得游戲,我們就說這個問題是PAC可學習的。
問題來了?什么叫贏得游戲呢?或許說是犯錯的概率很小比較好。
玩家1列舉的集合中元素是有對應取值的,而這個取值根據特定函數(shù)ccc給出,我們把這個函數(shù)叫做概念(concept)或者目標,玩家2最終的目標,就是猜出這個概念。假設通過一些步驟,玩家2給出了他對概念的假設hhh,而正確的概念是ccc,如果h(x)h(x)h(x)和c(x)c(x)c(x)不相等,自然就是hhh對于元素xxx判斷出錯了,也就產生了誤差(error):
errorc,Dh=PD(h(x)≠c(x))error_{c,D}h = P_D(h(x) \ne c(x))errorc,D?h=PD?(h(x)?=c(x))
于是我們說:
如果一個算法AAA對于XXX上的所有分布DDD和所有概念ccc,都能以在有限步內給出一個假設,并且大概率該假設誤差很小,我們就說這個問題是PAC可學習的。
概念集(Concept Class)
概念集CCC是一系列X→{0,1}X \rightarrow \{0,1\}X→{0,1}函數(shù)的集合,over
這么說似乎太簡略了,并且這個CCC似乎太龐大了,因此,我們假設我們會知道關于CCC的一些知識,于是我們說:
如果一個算法AAA對于XXX上的所有分布DDD和所有概念c∈Cc \in Cc∈C,都能以在有限步內給出一個假設,并且大概率該假設誤差很小,我們就說CCC是PAC可學習的。
PAC學習(probably Approximately Correct Learning)
把游戲拋到一邊吧,來嚴肅地聊點東西。
我們所真正關心的其實是是否存在一個算法可以對于任意數(shù)據都給出一個好的假設。我們也可以想見,對數(shù)據的認知越多,我們給的假設一定就會越好,但對數(shù)據認知越多,我們所需的時間也就越多,因此我們需要在誤差和學習數(shù)據數(shù)量上做一個平衡。
我們現(xiàn)在可以對前文所說的很小,大概率下定義了。
誤差很小:我們定義參數(shù)0<?<1/20 < \epsilon <1/20<?<1/2表示誤差,我們期望大概率errorc,D(h)≤?error_{c,D}(h) \le \epsilonerrorc,D?(h)≤?,對誤差有一定要求,我們自然也會允許學習數(shù)據數(shù)量多一點點,我們希望算法運行時間是關于1?\frac{1}{\epsilon}?1?的多項式函數(shù)
大概率:我們定義參數(shù)0<δ<1/20 < \delta < 1/20<δ<1/2表示我們運行算法誤差較大的概率,也就是說,有1?δ1-\delta1?δ的概率算法誤差都小于?\epsilon?,即我們希望:
PD(errc,D(h)<?)>1?δP_D(err_{c,D}(h) < \epsilon) > 1 - \deltaPD?(errc,D?(h)<?)>1?δ
我們對算法運行時間也會再放寬一點,我們希望算法運行時間是關于1?\frac{1}{\epsilon}?1?和1δ\frac{1}{\delta}δ1?的多項式函數(shù)
我們終于可以給PAC可學習下一個精準的定義了:
定義:XXX是一個集合,CCC是XXX上的概念集,如果有運行時間為O(poly(1?,1δ))O(poly(\frac{1}{\epsilon},\frac{1}{\delta}))O(poly(?1?,δ1?))的算法A(?,δ)A(\epsilon,\delta)A(?,δ),有一個先知會告訴它數(shù)據對應的取值(即不考慮此處時間復雜度),對于任意c∈Cc \in Cc∈C,XXX上的分布DDD,以及0<?<1/2,0<δ<1/20 < \epsilon <1/2,0 < \delta < 1/20<?<1/2,0<δ<1/2,都有:
PD(errc,D(h)≤?)≥1?δP_D(err_{c,D}(h) \le \epsilon) \ge1 - \deltaPD?(errc,D?(h)≤?)≥1?δ
那么CCC是PAC可學習的
完美!
番外:對區(qū)間學習是PAC可學習性的證明
在經過一番努力后,玩家2給出了自己預測的區(qū)間III,而正確區(qū)間是JJJ,根據區(qū)間預測的方法我們自然有I?JI \subset JI?J,并且有:
errorJ,D≤Px~D(x∈A)+Px~D(x∈B)error_{J,D} \le P_{x \sim D}(x \in A) + P_{x \sim D}(x \in B)errorJ,D?≤Px~D?(x∈A)+Px~D?(x∈B),如圖所示
我們的目標是errorJ,D≤?error_{J,D} \le \epsilonerrorJ,D?≤?,如果A,BA,BA,B區(qū)間占區(qū)間總長度(出錯概率)均不超過?/2\epsilon/2?/2,那么誤差就自然有保證了,事情并不往往遂人愿,我們假設A′A'A′占區(qū)間總長度?/2\epsilon/2?/2,如下圖所示:
某一個數(shù)據不在A′A'A′范圍內概率為1??/21-\epsilon/21??/2,如果我們查詢了mmm個數(shù)據,這mmm個數(shù)據均不在A′A'A′內概率為
PD(A′?A)≤(1??/2)mP_D(A' \subset A ) \le (1-\epsilon/2)^mPD?(A′?A)≤(1??/2)m,
mmm個數(shù)據均不在A′A'A′或對應右端的B′B'B′端的概率為
PD(errorJ,D>?)≤2?(1??/2)mP_D(error_{J,D} \gt \epsilon) \le 2*(1-\epsilon/2)^mPD?(errorJ,D?>?)≤2?(1??/2)m
為了達到我們的目標,我們需要滿足
2?(1??/2)m<δ2*(1-\epsilon/2)^m \lt \delta2?(1??/2)m<δ
根據(1?x)≤e?x(1-x) \le e^{-x}(1?x)≤e?x,我們需要求解
2e??m/2≤δ2e^{-\epsilon m/2 } \le \delta2e??m/2≤δ
得到m≥(2/?log(2/δ))m \ge (2/\epsilon log(2/\delta))m≥(2/?log(2/δ))
也就是只要我們得到(2/?log(2/δ))(2/\epsilon log(2/\delta))(2/?log(2/δ))以上,就可以滿足對錯誤率和出錯概率的要求,換言之,這個問題是PAC可學習的
總結
以上是生活随笔為你收集整理的PAC learning的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PageRank算法实现
- 下一篇: pagerank简单实现