⑴ 如何根据概率密度函数生成随机数
如何根据概率密度函数生成随机数
我这里并不是要讲“伪随机”、“真随机”这样的问题,而是关于如何生成服从某个概率分布的随机数(或者说 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(词义消歧)