1. 程式人生 > >DarkScope從這裡開始

DarkScope從這裡開始

引子

最近開始拾起來看一些NLP相關的東西,特別是深度學習在NLP上的應用,發現取樣方法在很多模型中應用得很多,因為訓練的時候如果預測目標是一個詞,直接的softmax計算量會根據單詞數量的增長而增長。恰好想到最開始深度學習在DBN的時候取樣也發揮了關鍵的作用,而自己對取樣相關的方法瞭解不算太多,所以去學習記錄一下,經典的統計的方法確實巧妙,看起來非常有收穫。

本篇文章先主要介紹一下經典的取樣方法如Inverse Sampling、Rejective Sampling以及Importance Sampling和它在NLP上的應用,後面還會有一篇來嘗試介紹MCMC這一組狂炫酷拽的演算法。才疏學淺,行文若有誤望指正。

Why Sampling

取樣是生活和機器學習演算法中都會經常用到的技術,一般來說取樣的目的是評估一個函式在某個分佈上的期望值,也就是

E[f(x)],xp,pisadistribution.
比如我們都學過的拋硬幣,期望它的結果是符合一個伯努利分佈的,定義正面的概率為p,反面概率為1p。最簡單地使f(x)=x,在現實中我們就會通過不斷地進行拋硬幣這個動作,來評估這個概率p。
E[f(x)]1mi=1mf(xi).xip
這個方法也叫做蒙特卡洛法(Monte Carlo Method),常用於計算一些非常複雜無法直接求解的函式期望。
對於拋硬幣這個例子來說:
E
[f(x)]=p1mi=1mxi=cntum

其期望就是拋到正面的計數cntu除以總次數m
而我們拋硬幣的這個過程其實就是取樣,如果要用程式模擬上面這個過程也很簡單,因為伯努利分佈的樣本很容易生成:
yiUniform(0,1)soxi=I(y<p)
而在計算機中的隨機函式一般就是生成0到1的均勻分佈隨機數。

Sampling Method

可以看到蒙特卡洛法其實就是按一定的概率分佈中獲取大量樣本,用於計算函式在樣本的概率分佈上的期望。其中最關鍵的一個步驟就是如何按照指定的概率分佈p進行樣本取樣,拋硬幣這個case裡伯努利分佈是一個離散的概率分佈,它的概率分佈一般用概率質量函式(pmf)表示,相對來說比較簡單,而對於連續概率分佈我們需要考慮它的概率密度函式(pdf):
【圖pmf->pdf】


比如上圖示例分別是標準正態分佈概率密度函式,它們的面積都是1(這是概率的定義),如果我們可以按照相應概率分佈生成很多樣本,那這些樣本繪製出來的直方圖應該跟概率密度函式是一致的。
而在實際的問題中,p的概率密度函式可能會比較複雜,我們由淺入深,看看如何取樣方法如何獲得服從指定概率分佈的樣本。

Inverse Sampling

對於一些特殊的概率分佈函式,比如指數分佈:

pexp(x)={λexp(λx)0,x0,x<0
我們可以定義它的概率累積函式(Cumulative distribution function),也就是(ps.這個’F’和前面的’f’函式並沒有關係)
F(x)=xp(x)dx
從影象上看就是概率密度函式小於x部分的面積。這個函式在x0的部分是一個單調遞增的函式(在定義域上單調非減),定義域和值域是[0,+)[0,1),畫出來大概是這樣子的一個函式,在p(x)大的地方它增長快(梯度大),反之亦然:

【exp dist的cdf】
因為它是唯一對映的(在>0的部分,接下來我們只考慮這一部分),所以它的反函式可以表示為F1(a)a[0,1),[0,+)

因為F單調遞增,所以F1也是單調遞增的:

xyabF(x)F(y)F1(a)F1(b)
利用反函式的定義,我們有:
F1(a)<x,iffa<F(x)
我們定義一下[0,1]均勻分佈的CDF,這個很好理解:
P(ax)=H(x)=1x0,x1,0x1,x<0
所以
P(F1(a)x)=P(aF(x))=H(F(x))F(x)[0,1)

相關推薦

DarkScope這裡開始(a learner,like Machine Learning.)

機器學習從原理到實踐 本專欄依託對一個toy機器學習庫:https://github.com/justdark/dml的實現來介紹一些常見的機器學習演算法演算法,是基於scipy和numpy的Python實現

DarkScope這裡開始

引子 最近開始拾起來看一些NLP相關的東西,特別是深度學習在NLP上的應用,發現取樣方法在很多模型中應用得很多,因為訓練的時候如果預測目標是一個詞,直接的softmax計算量會根據單詞數量的增長而增長。恰好想到最開始深度學習在DBN的時候取樣也發揮了關鍵的作用

菊菊的Python第一課這裡開始

Python語言基礎第一課: ###一、 變數 ## 變數賦值格式: 變數名 = 值 name = "cheng" print(name) print("My name is",name) ## 變數定義的規則: # 1 變數名只能是字母、數字、下劃線的任意組合

適應新工作,這裡開始

進入新的工作環境,接手新的工作,我們需要做好以下幾點: 一、找準自己的位置。 二、明確自己的工作職責,具體包含哪些工作,各個工作的具體流程。 三、明確各個工作的工作重點,各階段應該出哪些工作成果,

關於Mongodb的全面總結,學習mongodb的人,可以這裡開始

原文地址:http://blog.csdn.net/jakenson/article/details/7060431  MongoDB的內部構造《MongoDB The Definitive Guide》 MongoDB的官方文件基本是how to do的介紹,而

大資料入門-Hive學習這裡開始

Hive是基於Hadoop HDFS分散式檔案系統的分散式資料倉庫架構。它為資料倉庫的管理提供了許多功能:資料ETL(抽取、轉換和載入)工具,資料儲存管理和大型資料集的查詢和分析能力。同時Hive還定義了類SQL的語言(HiveQL)。允許使用者進行和SQL相似的操作,它可以

Java IO基礎這裡開始(上)

  我計劃寫三篇比較長的部落格,來詳細梳理一下java中的IO操作,大致內容是:第一篇介紹相關的類,第二篇整理相關的面試題,第三篇計劃使用這些類和方法完成一個小專案。   每篇文章都不是以往的風格,不在單純的將其作為自己的筆記瞎寫,而是認真的對自己的學習情況整

Linux那些事兒 之 戲說USB(12)這裡開始

任小強們說房價高漲從現在開始,股評家們說牛市從5000點開始。他們的開始需要我們的錢袋,我的開始只需要一臺電腦,最好再有一杯茶,伴著幾支小曲兒,不盯著錢總是會比較愜意的。生容易,活容易,生活不容易,因為

要看STL原始碼,這裡開始

你有沒這樣的經歷,想去看STL原始碼,瀏覽了幾頁後,發現犯困,便又放到了一邊。我也這樣過,但一個偶然的機會,我學習了記憶體池,突然發現STL也有這樣的東西,便再拿起塵封已久的STL原始碼,發現能看懂了。所有,讓我帶你突破STL原始碼的大門吧! 為什麼要使用空間配置器呢?如果

瞭解【Docker】這裡開始

一、環境配置的難題 軟體開發最大的難題之一就是環境配置的問題。現在使用者環境紛亂複雜,並且由於開源社群的進一步推廣和許多開源專案不停地迭代更新,專案可能會有越來越多的依賴以及越來越難管理的依賴版本,如何保證編寫的程式能不只是在“我的電腦上能執行”(It works on my machine)成了一個複

一個線上音樂軟體的故事(二、其實故事這裡開始

其實故事從這裡才開始 如果你看到了這裡,那你應該看出來,我是在講軟體開發的故事,如果你和我一樣喜歡Linux,喜歡用Python那我希望你也喜歡這個故事。這個故事並不是講如何使用Python的,所以關於如何使用Python推薦你看《Python cookbook 第三版》

開始——基於角色的權限管理01(補充)

itl jsp mage logs log sonar class htm -1 此博文較為詳細的介紹從零開始——基於角色的權限管理01文中的兩個部分的流程(解釋代碼)。 1)  index.jsp中提交跳轉action      action的login,獲取jsp頁面傳

開始學習html(五)與瀏覽者交互,表單標簽——下

定位 開始 系統 isp ctr 程序 顯示 text 輸入 六、使用下拉列表框進行多選 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-T

開始——電子商務平臺01

ges 任務 框架 alt 圖片 ima .cn bsp 驗證 一、任務   後臺——登錄   包含的內容:1)bootstrap驗證--登錄         2)MD5加密(加鹽)--對密碼         3)三框架頁面--主頁面 二、整體圖 三、分享   源碼、數

開始構建一個的asp.net Core 項目(二)

mage .... cfi web execute 運行 figure 今天 deb 接著上一篇博客繼續進行。上一篇博客只是顯示了簡單的MVC視圖頁,這篇博客接著進行,連接上數據庫,進行簡單的CRUD。 首先我在Controllers文件夾點擊右鍵,添加->控制器 彈

IC卡解密開始學2 版本更新! 解密工具PN532-mfoc-mfcuk-GUI V2.1 By:lookyour

由於 文件夾 7月 thread 2種 金融 系統 dos 同時 程序更新 更新內容最下面2017/5/3 V2.1======================================最簡要介紹下M1卡數據結構目前能看到的有2種M1卡,分別為S50 S70,其實就是

IC卡解密開始學1 (也許會有2) 解密工具V2 V3大放送 By:lookyour

中國 tac ... 需要 編輯框 回復 mile gui for 前段時間發了一個破解的PN532工具,詳見 ===========================IC卡解密工具 PN532工具XP 爆破版http://www.52pojie.cn/thread-5978

搶!搶 僅剩5個名額丨一線工程師帶你如何開始自學使用前端

自學前端 互聯網移動前端工程師 零基礎學習前端 一起學前端 資訊酷一直以來都是以分享推薦的形式在周圍影響著,把最好的東西分享給酷友們,希望大家喜歡,同時也非常感謝大家一直以來的關註。在此資訊酷得到了作者文章的授權,公眾號首發。為感謝各位觀眾和粉絲的支持,資訊酷從作者渠道爭取到了5個名額價值39

開始學習iOS開發1:認識xcode

連接 啟動圖標 主動 認識 tor 音樂 滴滴打車 啟動 and 在開始之前還是不得不提一下iPhone應用開發的工具,我當然之前是沒接觸過iPhone開發,也沒使用過apple的不論什麽一種設備。所以我的概念中僅僅知道xcode是最專業的iOS開發工具。如今它是免費

開始學習html(十)CSS格式化排版——下

而是 復習 nbsp 1.5 如果 spl 排版 居住 blog 六、文字排版--刪除線 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-T