⑴ 如何根據概率密度函數生成隨機數
如何根據概率密度函數生成隨機數
我這里並不是要講「偽隨機」、「真隨機」這樣的問題,而是關於如何生成服從某個概率分布的隨機數(或者說 sample)的問題。比如,你想要從一個服從正態分布的隨機變數得到 100 個樣本,那麼肯定抽到接近其均值的樣本的概率要大許多,從而導致抽到的樣本很多是集中在那附近的。當然,要解決這個問題,我們通常都假設我們已經有了一個 生成 0 到 1 之間均勻分布的隨機數的工具,就好像 random.org 給我們的結果那樣,事實上許多時候我們也並不太關心它們是真隨機數還是偽隨機數,看起來差不多就行了。 :p
現在再回到我們的問題,看起來似乎是很簡單的,按照概率分布的話,只要在概率密度大的地方多抽一些樣本不就行了嗎?可是具體要怎麼做呢?要真動起手 來,似乎有不是那麼直觀了。實際上,這個問題曾經也是困擾了我很久,最近又被人問起,那我們不妨在這里一起來總結一下。為了避免一下子就陷入抽象的公式推 導,那就還是從一個簡單的具體例子出發好了,假設我們要抽樣的概率分布其概率密度函數為 p(x) = \frac{1}{9}x^2 ,並且被限制在區間 [0, 3] 上,如右上圖所示。
好了,假設現在我們要抽 100 個服從這個分布的隨機數,直觀上來講,抽出來的接近 3 的數字肯定要比接近 0 的數字要多。那究竟要怎樣抽才能得到這樣的結果呢?由於我們實際上是不能控制最原始的隨機數生成過程的,我們只能得到一組均勻分布的隨機數,而這組隨機數 的生成過程對於我們完全是透明的,所以,我們能做的只有把這組均勻分布的隨機數做一些變換讓他符合我們的需求。找到下手的點了,可是究竟要怎樣變換呢?有 一個變換相信大家都是很熟悉的,假設我們有一組 [0,1] 之間的均勻分布的隨機數 X_0 ,那麼令 X_1=3X_0 的話,X_1 就是一組在 [0,3] 之間均勻分布的隨機數了,不難想像,X_1 等於某個數 x^* 的概率就是 X_0 等於 x^*/3 的概率(「等於某個數的概率」這種說法對於連續型隨機變數來說其實是不合適的,不過大概可以理解所表達的意思啦)。似乎有一種可以「逆轉回去」的感覺了。
於是讓我們來考慮更一般的變換。首先,我們知道 X_1 的概率密度函數是 f(x) = 1/3, x\in[0,3] ,假設現在我們令 Y = \phi (X_1) ,不妨先假定 \phi(\cdot) 是嚴格單調遞增的函數,這樣我們可以求其逆函數 \phi^{-1}(\cdot) (也是嚴格單調遞增的)。現在來看變換後的隨機變數 Y 會服從一個什麼樣的分布呢?
這里需要小心,因為這里都是連續型的隨機變數,並不像離散型隨機變數那樣可以說成「等於某個值的概率」,因此我們需要轉換為概率分布函數來處理,也就是求一個積分啦:
\displaystyle F(x) = P(X \leq x) = \int_{-\infty}^x f(t)dt
那麼 X_1 的概率分布函數為 F(x) = \frac{1}{3}x 。很顯然 Y 小於或等於某個特定的值 y^* 這件事情是等價於 X_1=\phi^{-1}(Y)\leq\phi^{-1}(y^*) 這件事情的。換句話說,P(Y\leq y^*) 等於 P(X_1 \leq \phi^{-1}(y^*)) 。於是,Y 的概率分布函數就可以得到了:
\displaystyle G(y) = P(Y \leq y) = P(X_1 \leq \phi^{-1}(y)) = F(\phi^{-1}(y))
再求導我們就能得到 Y 的概率密度函數:
\displaystyle g(y) = \frac{dG(y)}{dy} = f(\phi^{-1}(y))\frac{d}{dy}\phi^{-1}(y)
這樣一來,我們就得到了對於一個隨機變數進行一個映射 \phi(\cdot) 之後得到的隨即變數的分布,那麼,回到我們剛才的問題,我們想讓這個結果分布就是我們所求的,然後再反推得 \phi(\cdot) 即可:
\displaystyle \frac{1}{9}y^2 = g(y) = f(\phi^{-1}(y))\frac{d}{dy}\phi^{-1}(y) = \frac{1}{3}\frac{d}{dy}\phi^{-1}(y)
經過簡單的化簡就可以得到 \phi^{-1}(y) = \frac{1}{9} y^3 ,亦即 \phi(x) = (9x)^{1/3} 。也就是說,把得到的隨機數 X_1 帶入到到函數 \phi(\cdot) 中所得到的結果,就是符合我們預期要求的隨機數啦! :D 讓我們來驗證一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/python import numpy as np import matplotlib.pyplot as plot N = 10000 X0 = np.random.rand(N) X1 = 3*X0 Y = np.power(9*X1, 1.0/3) t = np.arange(0.0, 3.0, 0.01) y = t*t/9 plot.plot(t, y, 'r-', linewidth=1) plot.hist(Y, bins=50, normed=1, facecolor='green', alpha=0.75)plot.show()
這就沒錯啦,目的達成啦!讓我們來總結一下。問題是這樣的,我們有一個服從均勻分布的隨機變數 X ,它的概率密度函數為一個常數 f(x)=C ,如果是 [0,1] 上的分布,那麼常數 C 就直接等於 1 了。現在我們要得到一個隨機變數 Y 使其概率密度函數為 g(y) ,做法就是構造出一個函數 \phi(\cdot) 滿足(在這里加上了絕對值符號,這是因為 \phi(\cdot) 如果不是遞增而是遞減的話,推導的過程中有一處就需要反過來)
\displaystyle g(y) = f(\phi^{-1}(y))\left|\frac{d}{dy}\phi^{-1}(y)\right| = C\left|\frac{d}{dy}\phi^{-1}(y)\right|
反推過來就是,對目標 y 的概率密度函數求一個積分(其實就是得到它的概率分布函數 CDF ,如果一開始就拿到的是 CDF 當然更好),然後求其反函數就可以得到需要的變換 \phi(\cdot) 了。實際上,這種方法有一個聽起來稍微專業一點的名字:Inverse Transform Sampling Method 。不過,雖然看起來很簡單,但是實際操作起來卻比較困難,因為對於許多函數來說,求逆是比較困難的,求積分就更困難了,如果寫不出解析解,不得已只能用數 值方法來逼近的話,計算效率就很讓人擔心了。可事實上也是如此,就連我們最常見的一維標准正態分布,也很難用這樣的方法來抽樣,因為它的概率密度函數
\displaystyle g(y) = \frac{1}{\sqrt{2\pi}}e^{-\frac{1}{2}y^2}
的不定積分沒有一個解析形式。這可真是一點也不好玩,費了這么大勁,結果好像什麼都幹不了。看來這個看似簡單的問題似乎還是比較復雜的,不過也不要灰心,至少對於高斯分布來說,我們還有一個叫做 Box Muller 的方法可以專門來做這個事情。因為高斯分布比較奇怪,雖然一維的時候概率分布函數無法寫出解析式,但是二維的情況卻可以通過一些技巧得出一個解析式來。
首先我們來考慮一個二維的且兩個維度相互獨立的高斯分布,它的概率密度函數為
\displaystyle f(x,y) = \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}\cdot\frac{1}{\sqrt{2\pi}}e^{-\frac{y^2}{2}} = \frac{1}{2\pi}e^{-\frac{x^2+y^2}{2}}
這個分布是關於原點對稱的,如果考慮使用極坐標 (\theta,r) (其中 \theta\in[0,2\pi), r\in[0,\infty) )的話,我們有 x = r\cos\theta,y=r\sin\theta 這樣的變換。這樣,概率密度函數是寫成:
\displaystyle f(\theta,r) = \frac{1}{2\pi}e^{-\frac{r^2}{2}}
注意到在給定 r 的情況下其概率密度是不依賴於 \theta 的,也就是說對於 \theta 來說是一個均勻分布,這和我們所了解的標准正態分布也是符合的:在一個圓上的點的概率是相等的。確定了 \theta 的分布,讓我們再來看 r,用類似於前面的方法:
\displaystyle \begin{aligned} P(r<R) &= \int_0^{2\pi}\int_0^R\frac{1}{2\pi}e^{\frac{r^2}{2}}rdrd\theta \ &= \int_0^Re^{-\frac{r^2}{2}}rdr \ &= 1-e^{-\frac{R^2}{2}} \end{aligned}
根據前面得出的結論,我現在得到了 r 的概率分布函數,是不是只要求一下逆就可以得到一個 \phi(\cdot) 了?亦即 \phi(t) = \sqrt{-2\log (1-t)} 。
現在只要把這一些線索串起來,假設我們有兩個相互獨立的平均分布在 [0,1] 上的隨機變數 T_1 和 T_2 ,那麼 2\pi T_1 就可以得到 \theta 了,而 \phi(T_2) = \sqrt{-2\log(1-T_2)} 就得到 r 了(實際上,由於 T_2 和 1-T_2 實際上是相同的分布,所以通常直接寫為 \sqrt{-2\log T_2})。再把極坐標換回笛卡爾坐標:
\displaystyle \begin{aligned} x = r\cos\theta & = \sqrt{-2\log T_2}\cdot \cos(2\pi T_1) \ y = r\sin\theta &= \sqrt{-2\log T_2}\cdot \sin(2\pi T_1) \end{aligned}
這樣我們就能得到一個二維的正態分布的抽樣了。可以直觀地驗證一下,二維不太好畫,就畫成 heatmap 了,看著比較熱的區域就是概率比較大的,程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/python import numpy as np import matplotlib.pyplot as plot N = 50000 T1 = np.random.rand(N) T2 = np.random.rand(N) r = np.sqrt(-2*np.log(T2)) theta = 2*np.pi*T1 X = r*np.cos(theta) Y = r*np.sin(theta) heatmap, xedges, yedges = np.histogram2d(X, Y, bins=80) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] plot.imshow(heatmap, extent=extent) plot.show()
畫出來的圖像這個樣子:
不太好看,但是大概的形狀是可以看出來的。其實有了二維的高斯分布,再注意到兩個維度在我們這里是相互獨立的,那麼直接取其中任意一個維度,就是一個一維高斯分布了。如下:
如果 X\sim N(0,1) 即服從標准正態分布的話,則有 \sigma X+\mu \sim N(\mu, \sigma^2) ,也就是說,有了標准正態分布,其他所有的正態分布的抽樣也都可以完成了。這下總算有點心滿意足了。不過別急,還有最後一個問題:多元高斯分布。一般最常 用不就是二元嗎?二元不是我們一開始就推出來了嗎?推出來了確實沒錯,不過我們考慮的是最簡單的情形,當然同樣可以通過 \sigma X+\mu 這樣的方式來處理每一個維度,不過高維的情形還有一個需要考慮的就是各個維度之間的相關性——我們之前處理的都是兩個維度相互獨立的情況。對於一般的多維正態分布 X\sim N(\mathbf{\mu}, \Sigma) ,如果各個維度之間是相互獨立的,就對應於協方差矩陣 \Sigma 是一個對角陣,但是如果 \Sigma 在非對角線的地方存在非零元素的話,就說明對應的兩個維度之間存在相關性。
這個問題還是比較好解決的,高斯分布有這樣的性質:類似於一維的情況,對於多維正態分布 X\sim N(\mathbf{\mu}, \Sigma),那麼新的隨機變數 X_1=\mathbf{\mu}_1 + LX 將會滿足
\displaystyle X_1 \sim N(\mathbf{\mu}_1+L\mu, L\Sigma L^T)
所以,對於一個給定的高斯分布 N(\mathbf{\mu}, \Sigma) 來說,只要先生成一個對應維度的標准正態分布 X\sim N(0, I) ,然後令 X_1 = \mu+LX 即可,其中 L 是對 \Sigma 進行 Cholesky Decomposition 的結果,即 \Sigma = LL^T 。
結束之前讓我們來看看 matlab 畫個 3D 圖來改善一下心情:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
N = 50000; T1 = rand(1, N); T2 = rand(1, N); r = sqrt(-2*log(T2)); theta = 2*pi*T1; X =[r.*cos(theta); r.*sin(theta)]; mu = [1; 2]; Sigma = [5 2; 2 1]; L = chol(Sigma); X1 = repmat(mu,1, N) + L*X; nbin = 30; hist3(X1', [nbin nbin]); set(gcf, 'renderer', 'opengl'); set(get(gca,'child'), 'FaceColor', 'interp', 'CDataMode', 'auto'); [z c] = hist3(X1', [nbin nbin]); [x y] =meshgrid(c{1}, c{2}); figure; surfc(x,y,-z);
下面兩幅圖,哪幅好看一些(注意坐標比例不一樣,所以看不出形狀和旋轉了)?似乎都不太好看,不過感覺還是比前面的 heatmap 要好一點啦!
然後,到這里為止,我們算是把高斯分布弄清楚了,不過這只是給一個介紹性的東西,裡面的數學推導也並不嚴格,而 Box Muller 也並不是最高效的高斯采樣的演算法,不過,就算我們不打算再深入討論高斯采樣,采樣這個問題本身也還有許多不盡人意的地方,我們推導出來的結論可以說只能用 於一小部分簡單的分布,連高斯分布都要通過 trick 來解決,另一些本身連概率密度函數都寫不出來或者有各種奇怪數學特性的分布就更難處理了。所以本文的標題里也說了,這是上篇,如果什麼時候有機會抽出時間 來寫下篇的話,我將會介紹一些更加通用和強大的方法,諸如 Rejection Sampling 、Gibbs Sampling 以及 Markov Chain Monte Carlo (MCMC) 等方法。如果你比較感興趣,可以先自行 Google 一下解饞! :D
⑵ 威爾·惠頓的主要作品
參演影片:
生活大爆炸 The Big Bang Theory(2012) .....Himself (7 episodes, 2012-2013)
都市俠盜 leverage (2010)(2011).....Colin Mason,AKA 『Chaos』
製冷科學 The Science of Cool(2009) .....(rumored)
酷的科學
Cool ScienceThe Science of Cool
星際迷航 Star Trek(2009) .....Romulan (voice) (uncredited)
星艦迷航 / 星際旅行 / 星際旅行11 / 星際爭霸戰 / 星空奇遇記
Corporate Headquarters
Star Trek XI
美國化雪萊 Americanizing Shelley(2007) .....Director Alan Smithee
Von Bollywood nach Hollywood
Americanizing Shelley
生活大爆炸 The Big Bang Theory(2007) .....Himself (3 episodes, 2009-2010)
大爆炸理論 / 天才也性感 / 天才理論傳
The Guild(2007) .....Fawkes (15 episodes, 2009-2010)
The Guild
俠盜獵車:罪惡都市傳奇 Grand Theft Auto: Vice City Stories(2006) .....Richard Burns - Vice City for Lovers Caller (voice)
GTA: Vice City Stories
Grand Theft Auto: Vice City Stories
俠盜獵車手 Grand Theft Auto: San Andreas(2004) .....Richard Burns - Talk Radio (voice)
GTA 5
GTA: San Andreas
少年泰坦戰隊 Teen Titans(2003) .....Aqualad (6 episodes, 2003-2005)
少年泰坦
Jovens Titãs
Teen Titans
Jane White Is Sick & Twisted(2002) .....Dick Smith
星際旅行10:復仇女神 Star Trek: Nemesis(2002) .....Wesley Crusher
星際迷航記之復仇女神/ 星戰啟示錄
Star Trek X
Star Trek - Nemesis
地心崩裂 Deep Core(2000) .....Rodney Bedecker
Deep Core 2000
巨蟒 Python(2000) .....Tommy
Fag Hag(1998) .....Owner of Christian Books and Nails
林肯被刺日 The Day Lincoln Was Shot(1998) .....Robert Todd Lincoln
I dolofonia enos proedrou
O Assassinato do Presidente
Gun(1997) .....Bilchick (1 episode, 1997)
Gun - Kaliber 45
Gun
星艦笑傳 Trekkies(1997) .....Himself
烏龍博士 Flubber(1997) .....Bennett Hoenicker
飛天法寶 / 會飛的橡膠 / 弗拉伯 / 忙中出錯
Disney's Flubber: The Absent Minded Professor
The Absent Minded Professor
變態科學 Perversions of Science(1997) .....Bryan (1 episode, 1997)
Expériences interdites
Perversiones de la ciencia
Mr. Stitch(1996) .....Lazarus
Um Homem Sem Destino
十二月 December(1991) .....Kipp Gibbs
校園英雄隊 Toy Soldiers(1991) .....Joseph 'Joey' Trotta
A terror iskolája
Boy Soldiers
天下父母心 She's Having a Baby(1988) .....Himself (uncredited)
Amore rinnovato, Un
Ela Vai Ter um Bebê
詛咒 The Curse(1987) .....Zack (as Will Wheaton)
A Maldição - Raízes do Terror
El maleficio
星際旅行:下一代 Star Trek: The Next Generation(1987) .....Wesley Crusher (85 episodes, 1987-1994)
星艦迷航記:銀河飛龍
Star Trek: TNG
Raumschiff Enterprise - Das nächste Jahrhundert
A&E人物誌 Biography(1987) .....Narrator (2 episodes, 2002)
Biografía
Biografías
天降財神 The Man Who Fell to Earth(1987) .....Billy Milton
Der Mann, der auf die Erde fiel
Muukalainen
伴我同行 Stand by Me(1986) .....Gordie Lachance
站在我這邊 / 同仇敵愾
The Body
Compte sur moi
最後的星球鬥士 The Last Starfighter(1984) .....Louis' Friend (scenes deleted)
星球勇士
天涯芳草 The Buddy System(1984) .....Tim
鼠譚秘奇 The Secret of NIMH(1982) .....Martin (voice)
Mrs. Brisby and the Rats of NIMH
Mrs. Brisby and the Rats of NIMHThe Secret of NIMH
漫漫歸鄉路 A Long Way Home(1981) .....Donald Branch (8)
漫長回家路
Der Lange Weg nach Hause
Largo regreso a casa, El
Legion of Super Heroes.....Cosmic Boy (6 episodes, 2007-2008)
超級英雄軍團
I legeona ton yperiroon
Oi super iroes
Batman: The Brave and the Bold.....Silver Age Blue Beetle (2 episodes, 2009-2010)
蝙蝠俠:雙人夾擊 / 蝙蝠俠:英勇無畏
Batman: Oi nees peripeteies
Batman: The Brave and the Bold
Batman: The Brave and the Bold.....Silver Age Blue Beetle (2 episodes, 2009-2010)
Batman: Oi nees peripeteies
Batman: The Brave and the Bold
⑶ 除了JGibbLDA,還有沒有其他的LDA主題模型的開源實現
有很多啊,python裡面都有標準的庫了,其實有了JGibbsLDA也就夠了,想要其他語言的版本,自己改寫一個吧
⑷ 世界上有哪些水陸兩棲車的車系或型號
1 Rindspeed Splash
"RindspeedSplash"無疑是最棒的水陸車之一,他的動力源自由德國WEBER MOTOR提供的750ccm(0.75升)的天然氣雙缸渦輪增壓引擎,能夠輸出高達140hp的馬力。而所配備的兩個渦輪增壓的NGV引擎,更令Splash能夠擁有約200km/h的路面運行速度,並且擁有50km/h的水面運行速度。
Rinspeed Splash的動力引擎雖說只有0.75升,但由於採用了渦輪增壓,以及天然氣作為燃料,能夠在7000rpm的轉速的時候,輸出高達140匹的馬力,在路面上的由起步到100公里的加速時間僅僅為5.9秒,其極速可達到200公里/小時,最大的賣點就是進入水中那蛟龍游水般的激盪,可以高出水面60厘米,是真正的全能運動車。
2 Gator
這家來自好國境內的 WATERCAR車廠,推出一輛稱為Gator的水陸兩用新車,它有明顯吉普車外觀的兩棲SUV,動力系統來自斯巴魯翼豹的2.5升水平對置渦輪增壓發動機,這款水陸兩用新車除能夠正在水上像快艇一樣行駛,她的水上速度能達到每小時74公里,並且在陸地上的最高車速可以達到每小時200公里。另外,Gator擁有出色的陸地越野性能,並且售價對於一些高級玩家來講並不算高,起售價大約在10萬美元左右,隆重推薦這是一款速率最快的水陸兩用車!
3 佩森
美國加州一家公司通過將改裝,將雪佛蘭「克爾維特」、豪華快艇和水上摩托車,這三者結合得到了一款三位一體的傑作:水上汽車「佩森」(Python)。花費約17萬美元,您就可以擁有「佩森」的滾動底盤和一台通用汽車公司LS系列的不可思議的強大的發動機。
如果您足夠瘋狂,可以再花費30元至50萬美元選擇水上汽車的引擎和變速裝置。一切就緒後,「佩森」可以迅速變身為一條擁有在4.5秒內從0加速到60公里/時的遊船。
4 大眾Aqua
Aqua大眾概念車是一款極具未來感的靠氫燃料電池提供動力並由葉輪推動的氣墊車。這種氣墊車因其卓越的多功能行駛能力被大賽組委會選中,它能夠在陸地、冰面以及水上行駛,因此尤其適合中國分布范圍廣泛的濕地地形。
正如設計者所描述的,「Aqua概念車無切線的細節闡述了大眾的設計理念。」車門全部位於後方。兩個額外的後置螺旋槳強調了有別於傳統車輪的視覺效果。
5 Phibian
奧迪的概念車Calamaro絕對稱得上是奧迪史上最像飛機的三棲概念車(陸海空)。它的設計靈感來自於烏賊魚的骨骼。盤點十款經典的水陸兩棲車 不過,我們再看了這組示意圖後,仍然無法搞清楚,這輛造型獨特的概念車,將會如何驅動、行駛、停車、漂浮,還是完全可以騰雲駕霧呢?
⑸ 生物統計與生物信息的區別與聯系是什麼呢
嗯,我博士的院系為生物統計與計算生物學系,從開始進入生物信息這個領域,同時伴隨而來的名詞有:生物信息學,計算生物學,系統生物學,生物統計學~我沒有嚴格考證過這些名詞的由來,就我五年的博士生活中的學習過程,談一下這些學科的異同吧。
我上過生物系的生物信息學,計算機系的生物信息學,生物系的生物統計學,生物系的計算生物學,旁聽過醫學院的生物統計學和流行病學,旁聽過生物系的人類進化遺傳學,旁聽過數學系的系統生物學,自學過數學系的概率論~~在學習過程中,學到的是:
*生物學的生物信息學:首先是講進化,做序列比對,blast,構建進化樹;然後,講基因功能,基因功能富集分析等。側重的是,將進化中的生物學原理,參數如何設置,軟體如何使用,如何將這些軟體應用到生物學問題。
*計算機系的生物信息學:首先講的也是進化,但是,講的是演算法設計;然後講了很多馬爾科夫鏈,HMM模型,序列比對中的blosum62矩陣是怎麼來的,如何加快計算效率,如何降低空間存儲等等。側重的是,如何設計合理的演算法,給生物學的人使用。
*生物學的生物統計學:就是系統的講統計學,從描述數據,到假設檢驗,到參數估計,印象中,講假設檢驗的篇幅很多,每個檢驗,都會有生物學的案例,讓我們明確什麼是H0,什麼是Ha,然後p-value的解釋是什麼,參數估計講的很少。回過頭看看,覺得講的還是很淺顯的,但是它是生物學專業必修課,全院學生對我們實驗室助教出的題目,都是怨聲載道(還記得一個小插曲,為了防止抄襲,我們給每個人發的題目是一樣的,但是原始數據中部分不一樣,哈哈,釣上鉤的真不少。。。)另外,我們讓學生使用的工具是R,但是我第一次學的時候,教的是minitab 。。。我經常在生統課程幫導師上一節實踐課,主要講的是表達數據分析流程,找差異表達基因什麼的。
*生物系的計算生物學:這個是我覺得很有收獲的課程,記得剛開始講的也是蛋白質家族進化,後來是機器學習演算法,聚類和分類,再後來,由於老師本身是做miRNA靶序列預測的,所以講了很多HMM模型等。通過這個課程,我可以開始寫一些小的機器學習演算法程序,也可以做一些演算法設計。和計算機系的生物信息學課程不一樣的是,他還是以生物學問題出發,但是,開始有了一種設計「黑匣子」的感覺,比如,篩選一個gene group,做癌症分型,輸入的是這個gene group的基因表達量,輸出的是分型結果,詳細的演算法和模型在「黑匣子」裡面。這個還是很有成就感的。(後來,學數學的lg說,這不就是數學建模嘛。。。)
*旁聽過的醫學院的生物統計學和流行病學:在國外交流的時候旁聽的,本以為自己統計學很好,但是,蒙圈了,首先,他們用SAS,然後,他們研究的問題太難了,有些術語我到現在都沒搞清楚,什麼非線性縱向數據模型,復雜的參數估計等等~讓我明白的一點是,生物學的生統,就是給平時用用的基本檢驗而已,真正的生統,水好深。。。數學功底要強。
*自學過的數學系的概率論:於是,我開始自學數學系的概率論,但是,和我想像的又不一樣,概率論,很多都是生物學的生統內容的深層次數學基礎,可能我也只讀了一本最淺顯的吧,講各種分布的來源,數學期望,偏差估計等,另外,還有中心極限定理的證明,確實,很多都是以為淺顯易懂的道理的嚴格數學證明,雖然,對我一個生物背景的人沒啥用,但是,有一種非常舒服的恍然大悟的感覺。
*旁聽過生物系的人類進化遺傳學:院長的課程,面對生物系的學生,但是院長當年數學特別牛,所以,如果數學基礎不好,做群體遺傳學,略吃虧。具體內容很久遠了,不記得了,基本上是做祖源追溯,進化中的時間估計等。
*旁聽過數學系的系統生物學:數學系的暑期課程,厚著臉皮去了,但是,我竟然聽懂了大約60%吧,我印象很深刻的是,講了回歸中的penalty function,然後我學了LASSO回歸;後來學了SVM中的核函數;還有Gibbs samping,MCMC;還有時間序列中的Granger因果推斷等等。另外,系統生物學我讀過一本書,是做網路的,用ODE的方法構建有向網路。很有意思。
可能是我對生物信息學這個領域的概念很模糊,所以,各種課程都去了解了一下,來自於數學系、生物系、計算機系、醫學院等等,哎,學了這個多,各個方面的技術都是略懂些皮毛吧,但是到現在也沒想清楚自己真正想做什麼~~呵呵
⑹ Lotka-Volterra模型
種間競爭是指具有相似要求的物種,為了爭奪空間和資源,而產生的一種直接或間接抑制對方的現象。
Lotka-Volterrra的種間競爭模型:
K是環境容納量
N則是物種的種群數量
兩者穩定共存的基本條件就是dN1/dt=0和dN2/dt=0
若dN1/dt=0,則K1-N1-αN2=0——①
若dN2/dt=0,則K2-N2-βN1=0——②
當環境全被N1佔領則由②式得出N1=K2/β
當環境全被N2佔領則由①式得出N2=K1/α
四種情況如圖所示
⑺ LDA主題模型,有人用過JGibbLDA這個lda實現么
有很多啊,python裡面都有標準的庫了,其實有了JGibbsLDA也就夠了,想要其他語言的版本,自己改寫一個吧
⑻ 人工智慧一些術語總結
隨著智能時代慢慢的到來,有一些基本概念都不知道真的是要落伍了,作為正在積極學習向上的青年,我想總結一份筆記,此份筆記會記錄眾多AI領域的術語和概念,當然,學一部分記錄一部分,並且可能會夾雜著自己的一些理解,由於能力有限,有問題希望大家多多賜教。當然,由於內容太多,僅僅只是記錄了中英名對照,有的加上了簡單的解釋,沒加的後續大家有需求,我會慢慢完善~~。目錄暫定以首字母的字典序排序。可以當作目錄方便以後查閱~~建議收藏加點贊哈哈哈
------------------------------------------------這里是分割線--------------------------------------------------
A
准確率(accuracy)
分類模型預測准確的比例。
二分類問題中,准確率定義為:accuracy = (true positives +true negatives)/all samples
多分類問題中,准確率定義為:accuracy = correctpredictions/all samples
激活函數(activation function)
一種函數,將前一層所有神經元激活值的加權和 輸入到一個非線性函數中,然後作為下一層神經元的輸入,例如 ReLU 或 Sigmoid
AdaGrad
一種復雜的梯度下降演算法,重新調節每個參數的梯度,高效地給每個參數一個單獨的學習率。
AUC(曲線下面積)
一種考慮到所有可能的分類閾值的評估標准。ROC 曲線下面積代表分類器隨機預測真正類(Ture Positives)要比假正類(False Positives)概率大的確信度。
Adversarial example(對抗樣本)
Adversarial Networks(對抗網路)
Artificial General Intelligence/AGI(通用人工智慧)
Attention mechanism(注意力機制)
Autoencoder(自編碼器)
Automatic summarization(自動摘要)
Average gradient(平均梯度)
Average-Pooling(平均池化)
B
反向傳播(Backpropagation/BP)
神經網路中完成梯度下降的重要演算法。首先,在前向傳播的過程中計算每個節點的輸出值。然後,在反向傳播的過程中計算與每個參數對應的誤差的偏導數。
基線(Baseline)
被用為對比模型表現參考的簡單模型。
批量(Batch)
模型訓練中一個迭代(指一次梯度更新)使用的樣本集。
批量大小(Batch size)
一個批量中樣本的數量。例如,SGD 的批量大小為 1,而 mini-batch 的批量大小通常在 10-1000 之間。
偏置(Bias)
與原點的截距或偏移量。
二元分類器(Binary classification)
一類分類任務,輸出兩個互斥類別中的一個。比如垃圾郵件檢測。
詞袋(Bag of words/Bow)
基學習器(Base learner)
基學習演算法(Base learning algorithm)
貝葉斯網路(Bayesian network)
基準(Bechmark)
信念網路(Belief network)
二項分布(Binomial distribution)
玻爾茲曼機(Boltzmann machine)
自助采樣法/可重復采樣/有放回採樣(Bootstrap sampling)
廣播(Broadcasting)
C
類別(Class)
所有同類屬性的目標值作為一個標簽。
分類模型(classification)
機器學習模型的一種,將數據分離為兩個或多個離散類別。
收斂(convergence)
訓練過程達到的某種狀態,其中訓練損失和驗證損失在經過了確定的迭代次數後,在每一次迭代中,改變很小或完全不變。
凸函數(concex function)
一種形狀大致呈字母 U 形或碗形的函數。然而,在退化情形中,凸函數的形狀就像一條線。
成本(cost)
loss 的同義詞。深度學習模型一般都會定義自己的loss函數。
交叉熵(cross-entropy)
多類別分類問題中對 Log 損失函數的推廣。交叉熵量化兩個概率分布之間的區別。
條件熵(Conditional entropy)
條件隨機場(Conditional random field/CRF)
置信度(Confidence)
共軛方向(Conjugate directions)
共軛分布(Conjugate distribution)
共軛梯度(Conjugate gradient)
卷積神經網路(Convolutional neural network/CNN)
餘弦相似度(Cosine similarity)
成本函數(Cost Function)
曲線擬合(Curve-fitting)
D
數據集(data set)
樣本的集合
深度模型(deep model)
一種包含多個隱藏層的神經網路。深度模型依賴於其可訓練的非線性性質。和寬度模型對照(widemodel)。
dropout 正則化(dropoutregularization)
訓練神經網路時一種有用的正則化方法。dropout 正則化的過程是在單次梯度計算中刪去一層網路中隨機選取的固定數量的單元。刪去的單元越多,正則化越強。
數據挖掘(Data mining)
決策樹/判定樹(Decisiontree)
深度神經網路(Deep neural network/DNN)
狄利克雷分布(Dirichlet distribution)
判別模型(Discriminative model)
下采樣(Down sampling)
動態規劃(Dynamic programming)
E
早期停止法(early stopping)
一種正則化方法,在訓練損失完成下降之前停止模型訓練過程。當驗證數據集(validationdata set)的損失開始上升的時候,即泛化表現變差的時候,就該使用早期停止法了。
嵌入(embeddings)
一類表示為連續值特徵的明確的特徵。嵌入通常指將高維向量轉換到低維空間中。
經驗風險最小化(empirical risk minimization,ERM)
選擇能使得訓練數據的損失函數最小化的模型的過程。和結構風險最小化(structualrisk minimization)對照。
集成(ensemble)
多個模型預測的綜合考慮。可以通過以下一種或幾種方法創建一個集成方法:
設置不同的初始化;
設置不同的超參量;
設置不同的總體結構。
深度和廣度模型是一種集成。
樣本(example)
一個數據集的一行內容。一個樣本包含了一個或多個特徵,也可能是一個標簽。參見標注樣本(labeledexample)和無標注樣本(unlabeled example)。
F
假負類(false negative,FN)
被模型錯誤的預測為負類的樣本。例如,模型推斷一封郵件為非垃圾郵件(負類),但實際上這封郵件是垃圾郵件。
假正類(false positive,FP)
被模型錯誤的預測為正類的樣本。例如,模型推斷一封郵件為垃圾郵件(正類),但實際上這封郵件是非垃圾郵件。
假正類率(false positive rate,FP rate)
ROC 曲線(ROC curve)中的 x 軸。FP 率的定義是:假正率=假正類數/(假正類數+真負類數)
特徵工程(feature engineering)
在訓練模型的時候,挖掘對模型效果有利的特徵。
前饋神經網路(Feedforward Neural Networks/FNN )
G
泛化(generalization)
指模型利用新的沒見過的數據而不是用於訓練的數據作出正確的預測的能力。
廣義線性模型(generalized linear model)
最小二乘回歸模型的推廣/泛化,基於高斯雜訊,相對於其它類型的模型(基於其它類型的雜訊,比如泊松雜訊,或類別雜訊)。廣義線性模型的例子包括:
logistic 回歸
多分類回歸
最小二乘回歸
梯度(gradient)
所有變數的偏導數的向量。在機器學習中,梯度是模型函數的偏導數向量。梯度指向最陡峭的上升路線。
梯度截斷(gradient clipping)
在應用梯度之前先修飾數值,梯度截斷有助於確保數值穩定性,防止梯度爆炸出現。
梯度下降(gradient descent)
通過計算模型的相關參量和損失函數的梯度最小化損失函數,值取決於訓練數據。梯度下降迭代地調整參量,逐漸靠近權重和偏置的最佳組合,從而最小化損失函數。
圖(graph)
在 TensorFlow 中的一種計算過程展示。圖中的節點表示操作。節點的連線是有指向性的,表示傳遞一個操作(一個張量)的結果(作為一個操作數)給另一個操作。使用 TensorBoard 能可視化計算圖。
高斯核函數(Gaussian kernel function)
高斯混合模型(Gaussian Mixture Model)
高斯過程(Gaussian Process)
泛化誤差(Generalization error)
生成模型(Generative Model)
遺傳演算法(Genetic Algorithm/GA)
吉布斯采樣(Gibbs sampling)
基尼指數(Gini index)
梯度下降(Gradient Descent)
H
啟發式(heuristic)
一個問題的實際的和非最優的解,但能從學習經驗中獲得足夠多的進步。
隱藏層(hidden layer)
神經網路中位於輸入層(即特徵)和輸出層(即預測)之間的合成層。一個神經網路包含一個或多個隱藏層。
超參數(hyperparameter)
連續訓練模型的過程中可以擰動的「旋鈕」。例如,相對於模型自動更新的參數,學習率(learningrate)是一個超參數。和參量對照。
硬間隔(Hard margin)
隱馬爾可夫模型(Hidden Markov Model/HMM)
層次聚類(Hierarchical clustering)
假設檢驗(Hypothesis test)
I
獨立同分布(independently and identicallydistributed,i.i.d)
從不會改變的分布中獲取的數據,且獲取的每個值不依賴於之前獲取的值。i.i.d. 是機器學習的理想情況——一種有用但在現實世界中幾乎找不到的數學構建。
推斷(inference)
在機器學習中,通常指將訓練模型應用到無標注樣本來進行預測的過程。在統計學中,推斷指在觀察到的數據的基礎上擬合分布參數的過程。
輸入層(input layer)
神經網路的第一層(接收輸入數據)。
評分者間一致性(inter-rater agreement)
用來衡量一項任務中人類評分者意見一致的指標。如果意見不一致,則任務說明可能需要改進。有時也叫標注者間信度(inter-annotator agreement)或評分者間信度(inter-raterreliability)。
增量學習(Incremental learning)
獨立成分分析(Independent Component Analysis/ICA)
獨立子空間分析(Independent subspace analysis)
信息熵(Information entropy)
信息增益(Information gain)
J
JS 散度(Jensen-ShannonDivergence/JSD)
K
Kernel 支持向量機(KernelSupport Vector Machines/KSVM)
一種分類演算法,旨在通過將輸入數據向量映射到更高維度的空間使正類和負類之間的邊際最大化。例如,考慮一個輸入數據集包含一百個特徵的分類問題。為了使正類和負類之間的間隔最大化,KSVM 從內部將特徵映射到百萬維度的空間。KSVM 使用的損失函數叫作 hinge 損失。
核方法(Kernel method)
核技巧(Kernel trick)
k 折交叉驗證/k 倍交叉驗證(K-fold cross validation)
K - 均值聚類(K-MeansClustering)
K近鄰演算法(K-Nearest NeighboursAlgorithm/KNN)
知識圖譜(Knowledge graph)
知識庫(Knowledge base)
知識表徵(Knowledge Representation)
L
L1 損失函數(L1 loss)
損失函數基於模型對標簽的預測值和真實值的差的絕對值而定義。L1 損失函數比起 L2 損失函數對異常值的敏感度更小。
L1 正則化(L1regularization)
一種正則化,按照權重絕對值總和的比例進行懲罰。在依賴稀疏特徵的模型中,L1 正則化幫助促使(幾乎)不相關的特徵的權重趨近於 0,從而從模型中移除這些特徵。
L2 損失(L2 loss)
參見平方損失。
L2 正則化(L2regularization)
一種正則化,按照權重平方的總和的比例進行懲罰。L2 正則化幫助促使異常值權重更接近 0 而不趨近於 0。(可與 L1 正則化對照閱讀。)L2 正則化通常改善線性模型的泛化效果。
標簽(label)
在監督式學習中,樣本的「答案」或「結果」。標注數據集中的每個樣本包含一或多個特徵和一個標簽。在垃圾郵件檢測數據集中,特徵可能包括主題、發出者何郵件本身,而標簽可能是「垃圾郵件」或「非垃圾郵件」。
標注樣本(labeled example)
包含特徵和標簽的樣本。在監督式訓練中,模型從標注樣本中進行學習。
學習率(learning rate)
通過梯度下降訓練模型時使用的一個標量。每次迭代中,梯度下降演算法使學習率乘以梯度,乘積叫作 gradient step。學習率是一個重要的超參數。
最小二乘回歸(least squares regression)
通過 L2 損失最小化進行訓練的線性回歸模型。
線性回歸(linear regression)
對輸入特徵的線性連接輸出連續值的一種回歸模型。
logistic 回歸(logisticregression)
將 sigmoid 函數應用於線性預測,在分類問題中為每個可能的離散標簽值生成概率的模型。盡管 logistic 回歸常用於二元分類問題,但它也用於多類別分類問題(這種情況下,logistic回歸叫作「多類別 logistic 回歸」或「多項式 回歸」。
對數損失函數(Log Loss)
二元 logistic 回歸模型中使用的損失函數。
損失(Loss)
度量模型預測與標簽距離的指標,它是度量一個模型有多糟糕的指標。為了確定損失值,模型必須定義損失函數。例如,線性回歸模型通常使用均方差作為損失函數,而 logistic 回歸模型使用對數損失函數。
隱狄利克雷分布(Latent Dirichlet Allocation/LDA)
潛在語義分析(Latent semantic analysis)
線性判別(Linear Discriminant Analysis/LDA)
長短期記憶(Long-Short Term Memory/LSTM)
M
機器學習(machine learning)
利用輸入數據構建(訓練)預測模型的項目或系統。該系統使用學習的模型對與訓練數據相同分布的新數據進行有用的預測。機器學習還指與這些項目或系統相關的研究領域。
均方誤差(Mean Squared Error/MSE)
每個樣本的平均平方損失。MSE 可以通過平方損失除以樣本數量來計算。
小批量(mini-batch)
在訓練或推斷的一個迭代中運行的整批樣本的一個小的隨機選擇的子集。小批量的大小通常在10 到 1000 之間。在小批量數據上計算損失比在全部訓練數據上計算損失要高效的多。
機器翻譯(Machine translation/MT)
馬爾可夫鏈蒙特卡羅方法(Markov Chain Monte Carlo/MCMC)
馬爾可夫隨機場(Markov Random Field)
多文檔摘要(Multi-document summarization)
多層感知器(Multilayer Perceptron/MLP)
多層前饋神經網路(Multi-layer feedforward neuralnetworks)
N
NaN trap
訓練過程中,如果模型中的一個數字變成了 NaN,則模型中的很多或所有其他數字最終都變成 NaN。NaN 是「Not aNumber」的縮寫。
神經網路(neural network)
該模型從大腦中獲取靈感,由多個層組成(其中至少有一個是隱藏層),每個層包含簡單的連接單元或神經元,其後是非線性。
神經元(neuron)
神經網路中的節點,通常輸入多個值,生成一個輸出值。神經元通過將激活函數(非線性轉換)應用到輸入值的加權和來計算輸出值。
歸一化(normalization)
將值的實際區間轉化為標准區間的過程,標准區間通常是-1 到+1 或 0 到 1。例如,假設某個特徵的自然區間是 800 到 6000。通過減法和分割,你可以把那些值標准化到區間-1 到+1。參見縮放。
Numpy
Python 中提供高效數組運算的開源數學庫。pandas 基於 numpy 構建。
Naive bayes(樸素貝葉斯)
Naive Bayes Classifier(樸素貝葉斯分類器)
Named entity recognition(命名實體識別)
Natural language generation/NLG(自然語言生成)
Natural language processing(自然語言處理)
Norm(范數)
O
目標(objective)
演算法嘗試優化的目標函數。
one-hot 編碼(獨熱編碼)(one-hotencoding)
一個稀疏向量,其中:一個元素設置為 1,所有其他的元素設置為 0。。
一對多(one-vs.-all)
給出一個有 N 個可能解決方案的分類問題,一對多解決方案包括 N 個獨立的二元分類器——每個可能的結果都有一個二元分類器。例如,一個模型將樣本分為動物、蔬菜或礦物,則一對多的解決方案將提供以下三種獨立的二元分類器:
動物和非動物
蔬菜和非蔬菜
礦物和非礦物
過擬合(overfitting)
創建的模型與訓練數據非常匹配,以至於模型無法對新數據進行正確的預測
Oversampling(過采樣)
P
pandas
一種基於列的數據分析 API。很多機器學習框架,包括 TensorFlow,支持 pandas 數據結構作為輸入。參見 pandas 文檔。
參數(parameter)
機器學習系統自行訓練的模型的變數。例如,權重是參數,它的值是機器學習系統通過連續的訓練迭代逐漸學習到的。注意與超參數的區別。
性能(performance)
在軟體工程中的傳統含義:軟體運行速度有多快/高效?
在機器學習中的含義:模型的准確率如何?即,模型的預測結果有多好?
困惑度(perplexity)
對模型完成任務的程度的一種度量指標。例如,假設你的任務是閱讀用戶在智能手機上輸入的單詞的頭幾個字母,並提供可能的完整單詞列表。該任務的困惑度(perplexity,P)是為了列出包含用戶實際想輸入單詞的列表你需要進行的猜測數量。
流程(pipeline)
機器學習演算法的基礎架構。管道包括收集數據、將數據放入訓練數據文件中、訓練一或多個模型,以及最終輸出模型。
Principal component analysis/PCA(主成分分析)
Precision(查准率/准確率)
Prior knowledge(先驗知識)
Q
Quasi Newton method(擬牛頓法)
R
召回率(recall)
回歸模型(regression model)
一種輸出持續值(通常是浮點數)的模型。而分類模型輸出的是離散值。
正則化(regularization)
對模型復雜度的懲罰。正則化幫助防止過擬合。正則化包括不同種類:
L1 正則化
L2 正則化
dropout 正則化
early stopping(這不是正式的正則化方法,但可以高效限制過擬合)
正則化率(regularization rate)
一種標量級,用 lambda 來表示,指正則函數的相對重要性。從下面這個簡化的損失公式可以看出正則化率的作用:
minimize(loss function + λ(regularization function))
提高正則化率能夠降低過擬合,但可能會使模型准確率降低。
表徵(represention)
將數據映射到有用特徵的過程。
受試者工作特徵曲線(receiver operatingcharacteristic/ROC Curve)
反映在不同的分類閾值上,真正類率和假正類率的比值的曲線。參見 AUC。
Recurrent Neural Network(循環神經網路)
Recursive neural network(遞歸神經網路)
Reinforcement learning/RL(強化學習)
Re-sampling(重采樣法)
Representation learning(表徵學習)
Random Forest Algorithm(隨機森林演算法)
S
縮放(scaling)
特徵工程中常用的操作,用於控制特徵值區間,使之與數據集中其他特徵的區間匹配。例如,假設你想使數據集中所有的浮點特徵的區間為 0 到 1。給定一個特徵區間是 0 到 500,那麼你可以通過將每個值除以 500,縮放特徵值區間。還可參見正則化。
scikit-learn
一種流行的開源機器學習平台。網址:www.scikit-learn.org。
序列模型(sequence model)
輸入具有序列依賴性的模型。例如,根據之前觀看過的視頻序列對下一個視頻進行預測。
Sigmoid 函數(sigmoid function)
softmax
為多類別分類模型中每個可能的類提供概率的函數。概率加起來的總和是 1.0。例如,softmax 可能檢測到某個圖像是一隻狗的概率為 0.9,是一隻貓的概率為 0.08,是一匹馬的概率為 0.02。(也叫作 full softmax)。
結構風險最小化(structural risk minimization/SRM)
這種演算法平衡兩個目標:
構建預測性最強的模型(如最低損失)。
使模型盡量保持簡單(如強正則化)。
比如,在訓練集上的損失最小化 + 正則化的模型函數就是結構風險最小化演算法。更多信息,參見 http://www.svms.org/srm/。可與經驗風險最小化對照閱讀。
監督式機器學習(supervised machine learning)
利用輸入數據及其對應標簽來訓練模型。監督式機器學習類似學生通過研究問題和對應答案進行學習。在掌握問題和答案之間的映射之後,學生就可以提供同樣主題的新問題的答案了。可與非監督機器學習對照閱讀。
Similarity measure(相似度度量)
Singular Value Decomposition(奇異值分解)
Soft margin(軟間隔)
Soft margin maximization(軟間隔最大化)
Support Vector Machine/SVM(支持向量機)
T
張量(tensor)
TensorFlow 項目的主要數據結構。張量是 N 維數據結構(N 的值很大),經常是標量、向量或矩陣。張量可以包括整數、浮點或字元串值。
Transfer learning(遷移學習)
U
無標簽樣本(unlabeled example)
包含特徵但沒有標簽的樣本。無標簽樣本是推斷的輸入。在半監督學習和無監督學習的訓練過程中,通常使用無標簽樣本。
無監督機器學習(unsupervised machine learning)
訓練一個模型尋找數據集(通常是無標簽數據集)中的模式。無監督機器學習最常用於將數據分成幾組類似的樣本。無監督機器學習的另一個例子是主成分分析(principal componentanalysis,PCA)
W
Word embedding(詞嵌入)
Word sense disambiguation(詞義消歧)