高維空間中的球體
注:此系列隨筆是我在閱讀圖靈獎獲得者John Hopcroft的最新書籍<Computer Science Theory for the Information Age>所作的筆記。其中我只詳細讀了第二(高維空間)、三(隨機圖)、六(VC理論)章,其他的某些章節也略微看了一下,但沒有作筆記。此書的章節大部分是相互獨立的,事實上每一個章節都是一個大的方向,代表了作者認為的在信息時代中最有用的計算機理論。
(一)介紹
第一部分,高維空間。在現實的世界里,很多數據的維度都是及其高的,而當維度增高時,很多在低維中的性質在高維中似乎不太一樣了。比如當維度趨近無窮時,單位超球的體積趨於0,而其面積大都集中在超球的赤道附近(equator)。
首先,來看一下在現實中有那些數據是高維的。第一,用詞向量模型表示的文本文件。假如我們用一個$n$維向量來表示一個文本文件,其中每一個維度代表對應單詞出現的次數,那么這個文件的維度將是巨大的。比如英文中大概有25,000個詞,那么這個文件的維度就有25,000維。第二,多媒體數據。當我們把一個二維圖像,或者三維的視頻拉成一個一維的向量時,那這個表示圖像或視頻的向量的維度也是巨大的。第三,網頁的連結情況。假如我們用一個$n$維向量來表示一個網頁與其他網頁的連結情況,即向量的第$i$個元素表示該網頁與第$i$個網頁的連結情況,那么當網頁數量巨大時,這個向量的維度也是非常高的。類似的數據還有很多,比如用一個向量表示某個用戶對所有產品的購買情況等。
高維的數據帶來的不僅僅是計算和存儲的問題,有時也會導致精度的問題。解決這類問題的最有效方法就是在保證信息不丟失的前提下進行降維,比如PCA(無監督),LDA(有監督)。但當維度非常非常高的時候,這類方法的降維效果並不好,此時最好用的應該還是隨機投影,即找一個隨機矩陣,左乘這個數據,從而到達降維並且能保證准確度(下一篇隨筆我會詳細介紹隨機投影)。
(二)高維空間中的正方體
一個$d$維的單位正方體,其體積總是1。現在我們將這個$d$維正方體的各個面同時向里收縮一點,使這個$d$維正方體的邊長為$a<1$,此時收縮后的正方體的體積為$a^d$,當$d$趨於無窮大的時候,這個收縮后$d$維正方體的體積趨於0。從這里我們可以看到,一個高維的正方體,其體積主要集中在正方體的表面附近。換個角度理解,假設我們要在這個$d$維正方體內均勻隨機的取一個點,那么當$d$很大時,這個點將以很高的概率是在某個面的附近,而將以很低的概率出現在高維正方體的內部。
假設一個$d$維單位正方體的中心點為原點,並且我們以這個原點為中心,半徑為1畫一個高維的球體。現在,我們來看看這個高維正方體和高維球體的關系。當$d=2$時,原點到正方形頂點的距離為$\sqrt{\frac{1}{2}^2+\frac{1}{2}^2}\approx 0.707<1$,也就是說這個正方形被包含在圓形內部;當$d=4$時,原點到4維正方形的頂點距離為$\sqrt{\frac{1}{2}^2+\frac{1}{2}^2+\frac{1}{2}^2+\frac{1}{2}^2}=1$,也就是說這個四維的正方體剛好被這個四維的球體給包含中。很顯然,當$d$在繼續增大時,原點到$d$維正方體頂點的距離為$\frac{\sqrt{d}}{2}>1$,這個$d$維的球體將無法包含住$d$維的正方體。事實上,這個$d$維的正方體的對角線以$\sqrt{d}$增長,而$d$維球體的直徑卻一直保持在2,而每個邊的中點與原點的距離也始終保持在$\frac{1}{2}$,處於球體內部。
(三)高維空間中球體的體積與表面積
我們現在來計算一個$d$維球體的體積以及它的表面積。有趣的是,這個當$d$趨於無窮時,球體的體積趨於零。在笛卡爾的坐標系下,$d$維球體的體積可按如下計算:
\begin{equation}V(d)=\int_{x_1=-1}^{x_1=1}\int_{x_2=-\sqrt{1-x_1^2}}^{x_2=\sqrt{1-x_1^2}}\cdots\int_{x_d=-\sqrt{1-x_1^2-\cdots-x_{d-1}^2}}^{x_d=\sqrt{1-x_1^2-\cdots-x_{d-1}^2}}dx_d\cdots dx_2dx_1\label{equ:CarSphereV}\end{equation}
由於以上的積分太難計算,我們可以轉換為極坐標系下計算。
首先,先來回顧一下極坐標表換。對於$V(2)=\int_{x_1=-1}^{x_1=1}\int_{x_2=-\sqrt{1-x_1^2}}^{x_2=\sqrt{1-x_1^2}}dx_1dx_2$,我們可以利用極坐標變換$\left\{\begin{array}&x_1=r \cos\theta\\x_2=r\sin\theta\end{array}\right.$,其對應的雅可比行列式為$\left| \begin{array}&\frac{\partial x_1}{\partial r}&\frac{\partial x_1}{\partial\theta}\\\frac{\partial x_2}{\partial r}&\frac{\partial x_2}{\partial\theta}\end{array}\right|=r$,所以在極坐標下表示為:
$$V(2)=\int_0^{2\pi}d\theta\int_0^1rdr\triangleq \int_{S^1}d\Omega\int_{r=1}^1rdr\triangleq A(1)\int_{r=0}^1rdr$$
其中,$A(1)=\int_{S^1}d\Omega$表示單位圓形的周長。同樣,對於$V(d)$,我們也可以利用以下極坐標變換以及雅可比行列式:
\begin{align*}&\left\{\begin{array}&x_1=r\cos\theta_1\\x_2=r\sin\theta_1\cos\theta_{2}\\\vdots\\x_{d-1}=r\sin\theta_1\cdots\sin\theta_{d-2}\cos\theta_{d-1}\\x_d=r\sin\theta_1\cdots\sin\theta_{d-2}\sin\theta_{d-1}\end{array}\right.\\& J(d)=\left|\begin{array}&\frac{\partial x_1}{\partial r}&\frac{\partial x_1}{\partial\theta_1}&\cdots&\frac{\partial x_1}{\partial \theta_{d-1}}\\\frac{\partial x_2}{\partial r}&\frac{\partial x_2}{\partial \theta_1}&\cdots&\frac{\partial x_2}{\partial \theta_{d-1}}\\\vdots\\\frac{\partial x_d}{\partial r}&\frac{\partial x_d}{\partial \theta_1}&\cdots&\frac{\partial x_d}{\partial \theta_{d-1}}\end{array}\right|=r^{d-1}\sin^{d-2}\theta_1\sin^{d-3}\theta_2\cdots\sin\theta_{d-2}\end{align*}
所以在極坐標下$V(d)$表示成
\begin{align}V(d)&=\int_0^\pi d\theta_1\cdots\int_0^\pi \theta_{d-2}\int_0^{2\pi}\sin^{d-2}\theta_1\cdots\sin\theta_{d-2}d\theta_{d-1}\int_0^1r^{d-1}dr\nonumber\\&\triangleq\int_{S^d}d\Omega\int_{r=0}^1r^{d-1}dr\label{equ:ParSphereV}\end{align}
其中$d\Omega$為$d$維立體角$S^d$(solid angle)對應的超扇形的表面積微分。比如$d=2$時,為扇形周長的微分;$d=3$時,為球的表面積微分。
由於變量$\Omega$和變量$r$之間是相互無關的,所以:
\begin{equation}V(d)=\int_{S^d}d\Omega\int_{r=0}^1r^{d-1}dr=\frac{1}{d}\int_{S^d}d\Omega=\frac{A(d)}{d}\end{equation}
這里的$A(d)=\int_{S^d}d\Omega$為$d$維球體的表面積。接下去來求這個表面積。求這個表面積之前先來看一個特殊的積分$I(d)$:
\begin{align*}I(d)&=\int_{-\infty}^\infty \int_{-\infty}^\infty\cdots\int_{-\infty}^\infty e^{-(x_1^2+x_2^2+\cdots+x_d^2)}dx_d\cdots dx_2dx_1\\&=[\int_{-\infty}^\infty e^{-x^2}dx]^d\\&=(\sqrt{\pi})^d=\pi^{\frac{d}{2}}\end{align*}
另外我們也可以通過極坐標來計算$I(d)$:
\begin{align}I(d)&=\int_0^\pi d\theta_1\cdots\int_0^\pi d\theta_{d-2}\int_0^{2\pi}J(d)d\theta_{d-1}\int_0^\infty e^{-r^2}dr\nonumber\\&=\int_{S^d}d\Omega\int_0^\infty e^{-r^2}r^{d-1}dr\end{align}
由於:
\begin{equation*}\int_0^\infty e^{-r^2}r^{d-1}dr=\frac{1}{2}\int_0^\infty e^{-t}t^{\frac{d}{2}-1}dt=\frac{1}{2}\Gamma(\frac{d}{2})\end{equation*}
其中$\Gamma(x)$為gamma函數(階乘在實數域上的推廣)。所以我們得到:
\begin{equation}A(d) = \frac{I(d)}{\frac{1}{2}\Gamma(\frac{d}{2})}=\frac{\pi^{\frac{d}{2}}}{\frac{1}{2}\Gamma(\frac{d}{2})}\end{equation}
所以我們能夠得到一下的一個引理:
$d$維球體的表面積和體積分別為:
\begin{equation*}A(d)=\frac{2\pi^{\frac{d}{2}}}{\Gamma(\frac{d}{2})}\quad\text{and}\quad V(d) = \frac{\pi^\frac{d}{2}}{\frac{d}{2}\Gamma(\frac{d}{2})}\end{equation*}
由於$\Gamma(\frac{d}{2})$是以階乘增長,而$\pi^\frac{d}{2}$以指數增長,所以當$d$趨於無窮時,$V(d)$趨於零。
(四)高維空間中球體的體積聚集
接下去我們分析高維空間中球體的體積聚集現象。在高維空間中,球體的體積主要聚集在赤道(Equator,以下會給出定義)附近,或聚集在狹窄的外環內。乍一看這似乎是相互矛盾的,很難想象,體積怎么可能又聚集在赤道,又聚集在外環內?以下我們先從數學上給出嚴格的分析,然后我在直觀的給出自己的理解(我們的思維被限制在三維內,對高維空間真的難以想象,比如一個四維的球體,拿個平面從中間將其分割開,得到的“切面”是個三維的球體)。
在一個$d$維空間里,假設其坐標軸為$x_1,x_2,\cdots,x_d$,並且令其$x_1$軸上的$x_1=1$點為“北極點(North Pole,其實人家的方向不止東西南北四個啦)”。現在,我們用平面$x_1=0$與這個球體相交,得到的交集$\{x|\|x\|^2\leq 1,x_1=0\}$稱為赤道(其實給定球體表面任意一點為“北極點”都有對應的赤道),而這個赤道是一個$d-1$維的球體。現在我們來求一個比例,就是除去赤道附近部分的體積(即$T=\{x|\|x\|^2\leq 1,x_1\geq\epsilon\}$的體積)與球的上半部分體積之間的比例(這里我們只分析半個球體)。如果這個比例非常小的話,那么就可以說明球的體積主要聚集在赤道附近。
要求$T$的體積$\mathop{Volume}(T)$,可以用微分的方法。我們對$x_1=\epsilon$到$x_1=1$之間進行微分,則在$x_1=a$到$x_1=a+dx_1$之間的微分體積為切面體積乘以$dx_1$。而已知這個切面為$d-1$維球體,那么切面體積就為$r^{d-1}*V(d-1)$,其中$r=\sqrt{1-a^2}$為這個切面的半徑,$V(d-1)$為$d-1$單位球體的體積。由以上分析可求$T$的體積:
\begin{equation}\mathop{Volume}(T)=\int_\epsilon^1(1-x_1^2)^{\frac{d-1}{2}}V(d-1)dx_1=V(d-1)\int_\epsilon^1(1-x_1^2)^\frac{d-1}{2}dx_1\label{equ:volumeT}\end{equation}
對這個體積進行放大得:
\begin{align*}\mathop{Volume}(T)&\leq V(d-1)\int_\epsilon^infty e^{-\frac{d-1}{2}x_1^2}dx_1\leq V(d-1)\int_\epsilon^\infty\frac{x_1}{\epsilon}e^{-\frac{d-2}{2}x_1^2}dx_1\\&\leq\frac{1}{\epsilon(d-1)}e^{-\frac{d-1}{2}\epsilon^2}V(d-1)\end{align*}
這里用到了$1-x_1^2\leq e^{-x_1^2}$, $\frac{x_1}{\epsilon}\geq 1, \epsilon\leq x_1$ 以及 $\int x_1e^{-\frac{d-1}{2}x_1^2}dx_1=-\frac{1}{d-1}e^{-\frac{d-1}{2}x_1^2}$。
現在我們來求整個上半球體積的下界。已知在$x_1=0$與$x_1=\frac{1}{\sqrt{d-1}}$之間的切片體積一定是整個上半球的下界,而一個半徑為$\sqrt{1-(\frac{1}{\sqrt{d-1}})^2}=\sqrt{1-\frac{1}{d-1}}$,高為$\frac{1}{\sqrt{d-1}}$的$d$維圓柱體的體積也一定是上面切片體積的下界,所以我們可以用這個圓柱體體積來界定上半個球體體積,記圓柱體體積為$\mathop{Volume}(R)$,則:
\begin{align}\mathop{Volume}(R)&=\frac{1}{\sqrt{d-1}}V(d-1)(1-\frac{1}{d-1})^{\frac{d-1}{2}}\nonumber\\&\geq\frac{1}{\sqrt{d-1}}V(d-1)(1-\frac{1}{d-1}\frac{d-1}{2})=\frac{1}{2\sqrt{d-1}}V(d-1)\end{align}
所以$T$的體積與整個上半球體積的比:
$$\mathop{Ratio}\geq\frac{1}{\epsilon(d-1)}e^{-\frac{d-1}{2}\epsilon^2}V(d-1)/\frac{1}{2\sqrt{d-1}}V(d-1)=\frac{2}{\epsilon\sqrt{d-1}}e^{-\frac{d-1}{2}\epsilon^2}$$
令$\epsilon=\frac{c}{\sqrt{d-1}}$,則$\mathop{Ratio}=\frac{2}{c}e^{-\frac{c^2}{2}}$。此時,若$d$很大,則$\epsilon$很小,並且我們取$c$較為的大(相對與$d$還是很小)的話,那么這個比列就很小。也就是說$T$的體積占整個上半球的很小一部分,這就說明了高維球體的大部分體積都聚集在赤道附近。事實上,對於一個維度為$d$,半徑為$r$的球體,其體積主要聚集在距離赤道$\mathcal{O}(r/\sqrt{d})$內。
接下我們來說明高維球體的體積聚集在外部很小的一個環內。一個半徑為$1-\epsilon$的$d$維球體的體積為$(1-\epsilon)^dV(d)$,該體積與單位球體的體積比為$\frac{(1-\epsilon)^dV(d)}{V(d)}=(1-\epsilon)^d$。很顯然,這個比例在$d$很大時是很小的,所以論證了高維球體的體積主要聚集在外部很小的一個環內。
這到底是怎么回事呢?球體的體積可以聚集在赤道附近(而且赤道可以有無窮多),也可以聚集在外環上。首先,球體聚集在外環上,說明球體內部的體積相對於外環幾乎為空的。那么我們又說球體的體積聚集在赤道附近的切片上,事實上這個切片也是由$d-1$維球體疊加起來的(其內部體積也很小),所以赤道附近切片的體積又可以認為主要集中在其表面附近,所以總的來說球的體積主要集中在赤道附近的表面上。那么任意給出一個點都有對應的赤道,而球的體積也主要聚集在該赤道,這又怎么理解?我們知道,$d$維球體的體積可以由$d-1$維球體的體積通過積分求得的,也就是說可以由無數多的$d-1$維球體疊加起來。而在球體中分布在赤道周圍的$d-1$維球體的半徑比那些距離赤道較遠的$d-1$維球體的半徑要大,而當維度增加時,即使是半徑相差很小的兩個球之間的體積差也是巨大的,所以高維球體的體積主要聚集在赤道附近可以理解為,高維球體的體積主要是由聚集在赤道附近的$d-1$維球體組成,而以任何點為“北極點”都存在這些主導的$d-1$維球體。(由於沒找到相關的資料有給出直觀的解釋,以上僅是個人的理解。另外,從這里似乎也可以看出維數災難這個問題。)
(五)高維空間中球體的表面積聚集
在二維空間,圓形有對應的面積和周長。三維空間中,球形有對應的體積和表面積。所以在$d$維的球體中也有與體積對應的表面積,這個表面積定義為集合$\{x|\|x\|^2=1\}$,而這個表面積對應的赤道為集合$\{x|\|x\|^2=1,x_1=0\}$。同樣,我們先來界定在上半球中,遠離赤道的表面積部分$S=\{x|\|x\|^2=1,x_1\geq\epsilon\}$的上界。
$S$的表面同樣也可以用微分來計算,其對應的微元為半徑為$\sqrt{1-x_1^2}$的$d-1$維球體的表面積和微分$dx_1$的乘積,所以:
\begin{equation}\mathop{Area}(S)=\int_\epsilon^1A(d-1)(1-x_1^2)^\frac{d-2}{2}dx_1\leq \frac{\epsilon(d-2)}{1}e^{-\frac{d-2}{2}\epsilon^2}A(d-1)\end{equation}
接下去,我們還是一樣,界定整個上半球體的表面積的下界。這個上半球體的表面積肯定大於半徑為$\sqrt{1-\frac{1}{d-2}}$高為$\frac{1}{\sqrt{d-2}}$的$d$維圓柱的表面積。也就是說整個上半球體的表面積的下界為:
$$\frac{1}{d-2}A(d-1)(1-\frac{1}{d-2})^{\frac{d-2}{2}}\geq\frac{1}{\sqrt{d-2}}(1-\frac{d-2}{2}\frac{1}{d-2})A(d-1)\geq\frac{1}{2\sqrt{d-2}}A(d-1)$$
所以$S$的表面積和整個上半球體的表面積比值小於$\frac{2}{\epsilon\sqrt{d-2}}e^{-\frac{d-2}{2}\epsilon}$,令$\epsilon=\frac{c}{\sqrt{d-2}}$,則比值上界為$\frac{2}{c}e^{-\frac{c^2}{2}}$,所以這里也論證了高維球體的表面積主要聚集在赤道附近的表面積。
另外,球體的體積跟表面積存在這積分關系,即:
\begin{equation}V(d,r) = \int_{x=0}^rA(d,r)dx\end{equation}
其中$V(d,r)$表示維度為$d$半徑為$r$的球體體積,$A(d,r)$表示維度為$d$半徑為$r$的球體表面積。