高斯核函數參數確定_高斯過程

之前看過高斯過程(GP),不過當時也沒太看懂,最近花時間認真研究了一下,感覺總算是明白咋回事了,本文基于回歸問題解釋GP模型的思想和方法。文中的想法是自己思考總結得來,并不一定準確,也可能存在錯誤性。

為什么要用GP?

回顧一下我們之前在解決回歸問題時,就拿線性回歸舉例,我們為了學習映射函數,總是把函數參數化,例如假設

equation?tex=f%28%5Cmathbf+x%29+%3D+%5Cmathbf+w%5E%7B%5Crm+T%7D%5Cmathbf+x ,然后計算參數
equation?tex=%5Cmathbf+w 的后驗分布,把參數估計出來之后,就得到了我們想要學習的函數,接著就可以用這個函數去做預測了。

但是有時候我們并不知道數據到底用什么形式的函數去擬合比較好(是1次的,2次的還是10次的?)。這個時候高斯過程(GP)就閃亮登場了,GP說:“我不需要用參數去刻畫函數,你就告訴我訓練數據是什么,你想要預測哪些數據,我就能給你預測出結果。“這樣一來,我們就省去了去選擇刻畫函數參數的這樣一個過程。

GP是怎么來的?

那么GP是怎么做到的呢?我們先來看這樣一件有趣的事情:

假設我們的函數定義域和值域都是

equation?tex=%5Cmathbf+R ,那么如果你的訓練集是包含了所有定義域的,那么這個函數
equation?tex=%5Cmathbf+f%5E%2A 我們就得到了,你給任何一個點,我都能通過查表的方式告訴你結果是多少。第二種情況我們的訓練集中缺少了
equation?tex=%5C%7B1%2C2%2C3%2C4%5C%7D 這四個點,并且這四個點就是我們需要進行預測的點,如果我們可以通過某種方式建立一個4維的概率分布
equation?tex=p%28%5Cmathbf%7Bf1%2Cf2%2Cf3%2Cf4%7D%29 ,其中
equation?tex=%28%5Cmathbf+%7Bf1%2Cf2%2Cf3%2Cf4%7D%29 分別代表
equation?tex=%5C%7B1%2C2%2C3%2C4%5C%7D 的預測值,那么我們是不是就可以就可以利用這個概率分布,找到對應的概率最高的點把最終的結果給估計出來。

然而,事實上雖然很多實際問題(比如房價的預測),它的定義域和值域都是

equation?tex=%5Cmathbf+R (或者是某個連續的區間),但是我們的訓練數據是有限的,而基于這些訓練數據,我們要對整個實數域進行預測,如果我們繼續利用上面的思想的話,我們需要建立一個無窮維度的概率分布(因為我們需要進行預測的數據點事無窮個的),這顯然不可能,不過慶幸的是,在每一次我們需要進行預測的時候,我們所需要進行預測的數據是有限的。假設有N個訓練數據
equation?tex=%28%5Cmathbf+X%2C%5Cmathbf+Y%29 ,有N*個需要進行預測的數據
equation?tex=%5Cmathbf+X%5E%2A ,
equation?tex=%5Cmathbf+X_0 表示
equation?tex=%28%5Cmathbf+X%2C%5Cmathbf+X%5E%2A%29 ,那么我們最終其實就是希望得到
equation?tex=p%28%5Cmathbf+f%5E%2A%29(
equation?tex=%5Cmathbf+f%5E%2A 代表了
equation?tex=%5Cmathbf+X%5E%2A 所有預測值的變量的集合)。

高斯過程(GP)

下面我們就開始正式的介紹高斯過程(GP),它是怎么得到這個

equation?tex=p%28%5Cmathbf+f%5E%2A%29,然后去做預測的。在GP中,首先基于訓練數據和測試數據,定義了基于定義域
equation?tex=%5Cmathbf+X_0的函數的概率分布

equation?tex=+++p%28%5Cmathbf+f_0%7C%7B%5Cmathbf+X%7D_0%29+%3D+%5Cmathcal+N%28%5Cmathbf+f_0%7C%5Cboldsymbol%5Cmu_0%2C%5Cmathbf+K_0%29%29

其中

equation?tex=+++%5Cboldsymbol%5Cmu_0+%3D+m%28%5Cmathbf+X_0%29%2C%5B%5Cmathbf+K_0%5D_%7Bi%2Cj%7D+%3D+%5Ckappa%28%5B%5Cmathbf+X_0%5D_i%2C%5B%5Cmathbf+X_0%5D_j%29
equation?tex=%5Ckappa 是正定的核函數。
equation?tex=%5Cmathbf+f_0 代表了
equation?tex=%5Cmathbf+X_0 所有預測值的變量的集合。這里有一個關鍵的思想,如果核函數認為兩個輸入是非常相似的,那么函數給出的輸出值也會非常的相似。(在這樣的刻畫中,我們發現
equation?tex=%5Cboldsymbol%5Cmu_0 其實好像并沒有太大的作用,事實上,我們通常令
equation?tex=m%28%5Cmathbf+x%29+%3D+0 )。這個定義總體給出了三個信息:
  1. 在本次訓練中,我們的定義域是
    equation?tex=%5Cmathbf+X_0
  2. 在這個定義域中,如果
    equation?tex=%5Cmathbf+x_i%2C%5Cmathbf+x_j 基于核函數是非常接近的,那么你們的輸出值也會非常接近。
  3. 我們是用高斯分布去進行刻畫(用高斯的好處,至少有一點條件概率密度函數很好算)。

我們把上面的概率分布展開:

equation?tex=%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7D+%7B%5Cmathbf%7Bf%7D%7D+%5C%5C+%7B%5Cmathbf%7Bf%7D_%7B%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29+%5Csim+%5Cmathcal%7BN%7D%5Cleft%28%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7D+%7B%5Cboldsymbol%7B%5Cmu%7D%7D+%5C%5C+%7B%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29%2C%5Cleft%28%5Cbegin%7Barray%7D%7Bll%7D+%7B%5Cmathbf%7BK%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%7D+%5C%5C+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A+%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29%5Cright%29

其中

equation?tex=%5Cmathbf%7BK%7D%3D%5Ckappa%28%5Cmathbf%7BX%7D%2C+%5Cmathbf%7BX%7D%29+%5Ctext+%7B+is+%7D+N+%5Ctimes+N%2C+%5Cmathbf%7BK%7D_%7B%2A%7D%3D%5Ckappa%5Cleft%28%5Cmathbf%7BX%7D%2C+%5Cmathbf%7BX%7D_%7B%2A%7D%5Cright%29+%5Ctext+%7B+is+%7D+N+%5Ctimes+N_%7B%2A%7D%2C+%5Ctext+%7B+and+%7D+%5Cmathbf%7BK%7D_%7B%2A+%2A%7D%3D%5Ckappa%5Cleft%28%5Cmathbf%7BX%7D_%7B%2A%7D%2C+%5Cmathbf%7BX%7D_%7B%2A%7D%5Cright%29+%5Ctext+%7B+is+%7D+N_%7B%2A%7D+%5Ctimes+N_%7B%2A%7D

利用高斯分布的性質(通過聯合分布計算條件分布),我們可以得到

equation?tex=%5Cbegin%7Baligned%7D+p%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cmathbf%7BX%7D_%7B%2A%7D%2C+%5Cmathbf%7BX%7D%2C+%5Cmathbf%7Bf%7D%5Cright%29+%26%3D%5Cmathcal%7BN%7D%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D%2C+%5Cmathbf%7B%5CSigma%7D_%7B%2A%7D%5Cright%29+%5C%5C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D+%26%3D%5Cboldsymbol%7B%5Cmu%7D%5Cleft%28%5Cmathbf%7BX%7D_%7B%2A%7D%5Cright%29%2B%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D%5E%7B-1%7D%28%5Cmathbf%7Bf%7D-%5Cboldsymbol%7B%5Cmu%7D%28%5Cmathbf%7BX%7D%29%29+%5C%5C+%5Cboldsymbol%7B%5CSigma%7D_%7B%2A%7D+%26%3D%5Cmathbf%7BK%7D_%7B%2A+%2A%7D-%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D%5E%7B-1%7D+%5Cmathbf%7BK%7D_%7B%2A%7D+%5Cend%7Baligned%7D

這樣我們計算出了我們希望得到的

equation?tex=p%28%5Cmathbf+f%5E%2A%29。至此為止,整個GP就結束了。關于GP那么它有什么優點呢,我認為有兩點:
  1. 這一點也是我們上面就說過的,GP是無參的,對于任何一組數據,你不需要知道他的結構是什么,你也不需要去用參數刻畫它函數的樣子,GP就可以幫你做預測。
  2. GP它刻畫出了函數的概率分布。這個非常有用。回顧之前的線性回歸的方法,當你把參數
    equation?tex=%5Cmathbf+w 估計出來后,你的函數就確定了,接下來我拿出任何一個數,你都會“毫無感情的”給我一個預測值。但是GP不一樣,當我們知道我們預測函數的不確定度(不確定度很高,這個預測的結果就不可靠)之后,我們能探索最不可能實現高效訓練的數據區域。這也是貝葉斯優化背后的主要思想。下面這句話我覺得寫得非常貼切:如果你給我幾張貓和狗的圖片,要我對一張新的貓咪照片分類,我可以
    很有信心地給你一個判斷。但是,如果你給我一張鴕鳥照片,強迫我說出它是貓還是狗,我就只能信心全無地預測一下。——Yarin Gal。

有噪聲觀測的情況下

在有噪觀測的情況下,我們假設觀測模型是這樣的

equation?tex=y%3Df%28%5Cmathbf%7Bx%7D%29%2B%5Cepsilon,其中
equation?tex=%5Cepsilon+%5Csim+%5Cmathcal%7BN%7D%5Cleft%280%2C+%5Csigma_%7By%7D%5E%7B2%7D%5Cright%29 ,那么觀測的核函數則更新為
equation?tex=%5Cmathbf%7BK%7D%2B%5Csigma_%7By%7D%5E%7B2%7D+%5Cmathbf%7BI%7D_%7BN%7D+%5Ctriangleq+%5Cmathbf%7BK%7D_%7By%7D (假設不同觀測之間是獨立的),基于這樣的假設,聯合概率分布和條件概率分布分別是:

equation?tex=%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7D+%7B%5Cmathbf%7By%7D%7D+%5C%5C+%7B%5Cmathbf%7Bf%7D_%7B%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29+%5Csim+%5Cmathcal%7BN%7D%5Cleft%28%5Cmathbf%7B0%7D%2C%5Cleft%28%5Cbegin%7Barray%7D%7Bll%7D+%7B%5Cmathbf%7BK%7D_%7By%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%7D+%5C%5C+%7B%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D%7D+%26+%7B%5Cmathbf%7BK%7D_%7B%2A+%2A%7D%7D+%5Cend%7Barray%7D%5Cright%29%5Cright%29
equation?tex=%5Cbegin%7Baligned%7D+p%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cmathbf%7BX%7D_%7B%2A%7D%2C+%5Cmathbf%7BX%7D%2C+%5Cmathbf%7By%7D%5Cright%29+%26%3D%5Cmathcal%7BN%7D%5Cleft%28%5Cmathbf%7Bf%7D_%7B%2A%7D+%7C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D%2C+%5Cmathbf%7B%5CSigma%7D_%7B%2A%7D%5Cright%29+%5C%5C+%5Cboldsymbol%7B%5Cmu%7D_%7B%2A%7D+%26%3D%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D_%7By%7D%5E%7B-1%7D+%5Cmathbf%7By%7D+%5C%5C+%5Cboldsymbol%7B%5CSigma%7D_%7B%2A%7D+%26%3D%5Cmathbf%7BK%7D_%7B%2A+%2A%7D-%5Cmathbf%7BK%7D_%7B%2A%7D%5E%7BT%7D+%5Cmathbf%7BK%7D_%7By%7D%5E%7B-1%7D+%5Cmathbf%7BK%7D_%7B%2A%7D+%5Cend%7Baligned%7D

核函數參數的影響

那么核函數對GP有什么影響呢,假設我們選擇SE核函數:

equation?tex=%5Ckappa_%7By%7D%5Cleft%28x_%7Bp%7D%2C+x_%7Bq%7D%5Cright%29%3D%5Csigma_%7Bf%7D%5E%7B2%7D+%5Cexp+%5Cleft%28-%5Cfrac%7B1%7D%7B2+%5Cell%5E%7B2%7D%7D%5Cleft%28x_%7Bp%7D-x_%7Bq%7D%5Cright%29%5E%7B2%7D%5Cright%29%2B%5Csigma_%7By%7D%5E%7B2%7D+%5Cdelta_%7Bp+q%7D
equation?tex=%5Cdelta_%7Bpq%7D 表示p=q時取1,否則取0)

這個核函數有三個參數,分別是

equation?tex=%5Cell
equation?tex=%5Csigma_%7Bf%7D%5E%7B2%7D
equation?tex=%5Csigma_%7By%7D%5E%7B2%7D ,分別控制著水平尺度,垂直尺度,以及噪聲的方差。通過三幅圖我們來看看這三個參數是怎么控制預測的結果的:

f732303ebedf4a2b58b032f6e36f3a15.png

三幅圖的超參數

equation?tex=%5Cleft%28%5Cell%2C+%5Csigma_%7Bf%7D%2C+%5Csigma_%7By%7D%5Cright%29 分別是:
equation?tex=%28a%29+%281%2C1%2C0.1%29%2C+%28b%29+%280.3%2C0.108%2C0.00005%29%2C+%28c%29+%283.0%2C1.16%2C0.89%29 。(只改變
equation?tex=%5Cell ,其他的參數是通過優化邊際似然函數得到的)

我們可以看到(a)圖整體看上去是估計的比較好的,(b)圖中,減小了

equation?tex=%5Cell ,我們發現圖變得彎彎曲曲的,而且一旦預測的數據點稍微遠離訓練的數據點,這個不確定度就大大的上升(因為只要輸入的距離稍微大一點點,核函數就認為它們已經非常不相似了)。(c)圖中,
equation?tex=%5Cell 為3,函數看上去更加的平滑了,但是擬合的效果就顯得很差。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/528998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/528998.shtml
英文地址,請注明出處:http://en.pswp.cn/news/528998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp光標自動定義到文本框_特檢自動化行吊靜力檢測方案

主要測量功能使用徠卡測量開發的Windows版數據傳輸軟件,通過藍牙連接徠卡DISTO,經過簡單的測量周期設置,即可實現自動化的距離檢測。測量數據還可以輸出Excel,甚至可以實時發送至PC運行的第三方軟件中,這么強大的軟件還…

安裝python時需要勾選_一體化污水處理設備安裝時需要注意事項

一體化污水處理設備用于處理生活污水和低濃度有機污水,它基本上采用機電完全封閉的結構,不需要專業人員進行管理。它方便且易于清潔,因此引起了很多關注。一體化污水處理設備的安裝方法通常為三種:地埋式,地上式和半地…

oracle驅動maven報錯_在Maven倉庫中添加Oracle JDBC驅動

由于Oracle授權問題,Maven3不提供Oracle JDBC driver,為了在Maven項目中應用Oracle JDBC driver,必須手動添加到本地倉庫。一.首先要得到Oracle JDBC Driver2.通過Oracle的安裝目錄獲得,位置在“{ORACLE_HOME}jdbclibojdbc14.jar”二.手動安裝…

python3.6程序_python3.6如何生成exe程序

PyInstaller的原理簡介PyInstaller其實就是把python解析器和你自己的腳本打包成一個可執行的文件,和編譯成真正的機器碼完全是兩回事,所以千萬不要指望成打包成一個可執行文件會提高運行效率,相反可能會降低運行效率,好處就是在運…

java切片_ java中一個極其強悍的新特性Stream詳解(非常實用)

java8中有兩個非常有名的改進,一個是Lambda表達式,一個是Stream。如果我們了解過函數式編程的話,都知道Stream真正把函數式編程的風格引入到了java中。這篇文章由簡入繁逐步介紹Stream。一、Stream是什么從名字來看,Stream就是一個…

java獲取網絡圖片_有了這50套Java畢設項目(源碼 案例),offer拿到手軟,無償分享...

簡介:又到了開學季,不少人都很是煩惱,手把手教你做Java畢設項目,有教程視頻源碼100套隨意選擇,試試手!!列舉其中2個系統大綱在線考試系統1.綜述網絡考試系統的項目背景及國內外發展現狀&#xf…

python字典的建立和輸出_字典的創建和使用

直接創建d {age: 23, name: Daniel, sex: 1}輸出結果:{age: 23, name: Daniel, sex: 1}dict函數# 通過序列對建立字典vaulues [(name, Daniel), (age, 23), (sex, 1)]print dict(values)# 通過關鍵字建立字典print dict(nameDaniel, age23, sex1)# 如果 dict 不傳…

python字符串出棧方法_1.Python實現字符串反轉的幾種方法

1.Python實現字符串反轉的幾種方法題目: 在Python環境下用盡可能多的方法反轉字符串,例如將s "abcdef"反轉成 "fedcba"第一種:使用字符串切片result s[::-1]第二種:使用列表的reverse方法l list(s)l.reverse()result …

linux將日期和日歷信息追加到文件中_Linux常用指令

常用指令 1、幫助指令 man [指令或者配置文件] help 指令 2、文件目錄類指令 1、pwd 功能:顯示當前工作目錄的絕對路徑 2、ls [選項] [目錄或者文件] 功能:列出文件名和目錄使用:ls -l 以列表的形式顯示信息ls -a …

python播放音樂同步歌詞_使用Python下載歌詞并嵌入歌曲文件中的實現代碼

使用python掃描本地音樂并下載歌詞這次這個真的是干貨哦,昨晚弄了半晚上,,,,從8點吃完飯就開始寫,一直到了快12點才弄好,,,新手,傷不起呀。。。。先簡單的說下…

ajax mysql點贊_php+mysql結合Ajax實現點贊功能完整實例

phpmysql結合Ajax實現點贊功能完整實例131415161718192021222324252627282930313233343536//判斷是否已經存在了cookiefunction checkcookie(gindex){var thiscookie goodplus gindex;var mapcookie getCookie(thiscookie)if (mapcookie!null && mapcookie!"&q…

一個搜索框多個按鈕_網站搜索欄設計指南:要不要?怎么設計?

在網站的設計過程中,搜索欄是一個很容易被忽略的部分,但用戶卻依賴它來尋找特定的信息。由于搜索欄是網站中最常用的元素之一,所以搜索欄的設計對用戶體驗有著重要的影響。網站是否需要搜索欄?搜索欄使用背后的思維和心理是幫助用…

mysql的使用優化問題嗎_如何對 mysql 進行優化的問題

3641 天前mingszu-------------------------------------------------------------------------------------------------------------------------------------------------------------------| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Ca…

通過 xlsx 解析上傳excel的數據

一、前言 在前端開發中,特別是在后臺管理系統中,導入數據(上傳excel)到后端是是否常見的功能;而一般的實現方式都是通過接口將excel上傳到后端,再有后端進行數據解析并做后續操作。 今天,來記錄…

狀態機設計的一般步驟_淺談狀態機

來源:公眾號【ZYNQ】ID :FreeZynq整理 :李肖遙本文目錄前言狀態機簡介狀態機分類Mealy 型狀態機Moore 型狀態機狀態機描述一段式狀態機二段式狀態機三段式狀態機狀態機優缺點總結擴展-四段式狀態機01. 前言狀態機是FPGA設計中一種非常重要、…

java中default_Java 中關于default 訪問權限的討論

Java中關于成員變量訪問權限問題一般書中會給出如下表格:簡單地描述一下表中的內容:用private 修飾的成員變量只能在類內部訪問;用default修飾的成員變量可以再內部訪問,也可以被同個包(同一目錄)中的類訪問;default修…

python手機解釋器_python3

Python解釋器Linux/Unix的系統上,Python解釋器通常被安裝在 /usr/local/python3這樣的有效路徑(目錄)里。我們可以將路徑 /usr/local/python3/bin 添加到您的Linux/Unix操作系統的環境變量中(最好參照您python的安裝路徑進行添加),這樣您就可以通過 shel…

increment java_Java中的increment()有什么作用?

publicclassThisTest{privateinti0;//第一個構造器:有一個int型形參ThisTest(inti){this.ii1;//此時this表示引用成員變量i,而非函數參數iSystem.out.println("Intconstructori—...public class ThisTest {private int i0;//第一個構造器&#xff…

python保存模塊_Python使用Pickle模塊進行數據保存和讀取的講解

pickle 是一個 python 中, 壓縮/保存/提取 文件的模塊,字典和列表都是能被保存的.但必須注意的是python2以ASCII形式保存,而在python3中pickle是使用轉換二進制的數據壓縮方法保存數據所以,在保存或者讀取數據的時候,打開文件應該…

java 輸出當月日歷_java 實現打印當前月份的日歷

實現當前日歷的打印,當前日期用*來表示。關鍵得出這個月的第一天是星期幾。基姆拉爾森計算公式W (d2*m3*(m1)/5yy/4-y/100y/400) mod 7在公式中d表示日期中的日數1,m表示月份數。y表示年數。注意1:在公式中有個與其它公式不同的地方&#xff…