**網路診斷**又称**网络断层扫描**，是近代發展的一種新的網路測量與推論方法，透過可收集到的有限資訊來推估無法觀測的網路資訊，主要分成主動診斷(active tomography)與被動診斷(passive tomography)兩類問題。被動診斷是資料從個別節點蒐集，去尋找路徑上的資訊，問題在估計起始節點至終端節點之流量矩陣。主動診斷是藉由設置接收節點，向接收節點發送大量的封包，根據接收節點收集到的測量數據，分析網路內部有興趣的參數或識別網路拓撲結構。而衍生出來的統計問題稱為統計反向問題(Statistical Inverse Problem)。

研究主題
----

網路診斷的概念最早由Vardi在1996年提出，現今的研究主要分為：

### 網路起始節點至終端節點的流量強度估計

所謂網路起始節點至終端節點(SD)流量強度估計主要是想要估計網路內各條SD路徑的封包流量。其主要概念為假設我們能觀測到網路內各節點互相傳送封包的路徑，以下簡稱連結和各條連結的封包流量，由各條連結所觀測到的結果來估計各條SD路徑的網路流量。

主要問題架構與符號定義如下：
假設網路模型內有 n 個節點、r 條連結、c 條SD路徑且定義A為{\displaystyle r}xc 的路徑矩陣。
  
舉例來說，網路模型有4個節點(a,b,c,d)、7條連結、12條SD路徑，如下方左圖所示，且路徑矩陣A可表達如下方右圖所示。
  

令{\displaystyle X\_{j}^{\left(k\right)}}表示第 j 條SD路徑在第 k 期的封包流量，在此假設
{\displaystyle X\_{j}^{\left(k\right)}\sim Poisson(\lambda \_{j}),\;j=1,...c,\;k=1,...K}。
  
因此連結的流量與SD路徑的流量可以表示成下列的線性模型

{\displaystyle {\boldsymbol {Y^{\left(k\right)}=AX^{\left(k\right)}}},k=1,...K}
其中，

{\displaystyle {\boldsymbol {Y^{\left(k\right)}}}=\left(Y\_{1}^{\left(k\right)},...Y\_{r}^{\left(k\right)}\right)'}表示從第1期到第K期各條連結上觀察到的流量向量
{\displaystyle {\boldsymbol {A}}}表示路徑矩陣，由元素0和1構成
{\displaystyle {\boldsymbol {X^{\left(k\right)}}}=\left(X\_{1}^{\left(k\right)},...X\_{r}^{\left(k\right)}\right)'}表示從第1期到第K期各條SD路徑的流量向量
我們希望利用觀測到的Y向量去估計X向量中的參數值{\displaystyle \mathrm {\lambda =\left(\lambda \_{1},...\lambda \_{c}\right)'} }，但通常X向量的維度遠大於Y向量的維度，因此X可能會有無限多解，
而目前發展出下列幾種尋找最佳參數解的方法

1. 最大概似法
2. 參數可能解中讓概似函數最大者
3. 藉由EM演算法找最大概似估計量
4. 動差法
5. 貝氏方法

#### 例子

假設網路模型有2條連結、3條SD路徑、1期的SD流量，即{\displaystyle r=2,c=3,K=1\ }  

令{\displaystyle X\_{i}\sim Poisson(\lambda \_{i}),\;i=1,2,3} 且 {\displaystyle X\_{1}+X\_{2}=1,X\_{1}+X\_{3}=2}  

如下圖所示  

  

則我們可以得到 

{\displaystyle Y={\binom {1}{2}},A={\begin{pmatrix}1&1&0\\1&0&1\end{pmatrix}},X={\begin{pmatrix}X\_{1}\\X\_{2}\\X\_{3}\end{pmatrix}}}
因此模型可表示成 

{\displaystyle {\binom {1}{2}}={\begin{pmatrix}1&1&0\\1&0&1\end{pmatrix}}\cdot {\begin{pmatrix}X\_{1}\\X\_{2}\\X\_{3}\end{pmatrix}}}
  

以最大概似法求最佳解為例，

* 參數可能解中讓概似函數最大者

先將所有可能的參數解找出。因為封包流量必須為正整數，因此只有以下兩組解：

{\displaystyle X={\begin{pmatrix}1&0&1\end{pmatrix}}'} 或 {\displaystyle X={\begin{pmatrix}0&1&2\end{pmatrix}}'}
將可能的參數解代入概似函數

{\displaystyle L(\lambda )=(\lambda \_{1}\lambda \_{3}+{\frac {\lambda \_{2}\lambda \_{3}^{2}}{2}})exp(-\lambda \_{1}-\lambda \_{2}-\lambda \_{3})}
找出讓概似函數最大的參數解，即為最佳參數解

{\displaystyle Find\;\lambda :max\_{\lambda }L(\lambda )}
因為

{\displaystyle L({\begin{pmatrix}1&0&1\end{pmatrix}}')} > {\displaystyle L({\begin{pmatrix}0&1&2\end{pmatrix}}')}
最佳解為

{\displaystyle {\lambda }={\begin{pmatrix}1&0&1\end{pmatrix}}'}
* 藉由EM演算法找最大概似估計量

先將概似函數整理成期望值的型態

{\displaystyle \mathbf {\lambda } =E\_{\lambda }[X|Y=AX]}
選定起始值{\displaystyle \lambda ^{\left(0\right)}}
，運用EM演算法，進行遞迴運算，直到找出讓期望值最大的參數解

{\displaystyle \lambda ^{\left(n+1\right)}=E[X|Y,\lambda ^{\left(n\right)}]}
利用EM演算法求解的缺點是當網路模型較大時，在計算上比較複雜；即使當期數夠多時，EM演算法僅能提高估計上的準確性並無法解決計算上的複雜。

  

針對EM演算法的缺點，Vardi在1996年提出一種較為可行的方法，即利用動差法來估計參數解。

假設當各條連結流量觀測的期數夠多時，根據中央極限定理

{\displaystyle {\bar {Y}}={\frac {1}{K}}\sum \_{k=1}^{K}Y^{\left(k\right)}\;{dist.\to }\;N\_{r}(A\lambda ,K^{\left(-1\right)}A\Lambda A'),\;\Lambda =diag(\lambda )}
利用動差法，令樣本平均數等於母體平均數，樣本共變異數等於母體共變異數，即

{\displaystyle {\bar {Y}}=A\lambda } ， {\displaystyle S=K^{\left(-1\right)}A\Lambda A'}
由上述式子即可估計出參數解  

因此Vardi提出動差法可解決計算上的困難，也可以利用產生動差等式解決參數解不唯一的情況。

### 網路連結層級參數推估

所謂網路連結層級參數推估問題主要是想要推論網路連結的特性，例如節點傳輸之間資訊遺失率或延遲分配等。其主要概念為假設已知網路的形式，包含節點、路徑等，一般常見為樹狀，以及假設已知網路特性的模型，蒐集端點所測量的結果來找出有最大機率產生觀察結果的網路參數。

若考慮封包遺失率下，其主要問題架構與符號定義如下：
  

假設有一個樹狀網路定義為

{\displaystyle T=\left\{{V},{E}\right\}}，  

表示該網路有V個節點(包含起始節點0、終端節點R及中間節點I)、E條連結。令

{\displaystyle X=(X\_{k})\_{k\in V}}，  

其中X\_k表示封包傳送是否通過節點 k ，即

* {\displaystyle X\_{k}=0}表示沒有通過 k 節點
* {\displaystyle X\_{k}=1}表示有通過 k 節點

此外，若{\displaystyle X\_{i}=1}且{\displaystyle X\_{j}=1}，表示節點i與 j 之間的連結有封包通過，此處以{\displaystyle \alpha \,\_{i}}表示封包通過的機率。

舉例來說，
  

上圖為一個樹狀網路  

{\displaystyle T=\left\{{V}=\left\{0,1,2,3,4,5,6,7\right\},{E}=\left\{(0,1),(1,2),(1,3),(2,4),(2,5),(3,6),(3,7)\right\}\right\}}   

數字表示節點，起始節點為0，中間節點為1、 2、 3，而終端節點為4、5、6、7，{\displaystyle \alpha \,\_{i}}表示連結i的通過率。

令封包傳送結果{\displaystyle X\_{(R)}=(X\_{k})\_{k\in R}}，則其機率分配表示為

{\displaystyle p\,(x;\alpha )=P\_{\alpha }(X\_{(R)}=x)}。  

並假設發送了n個封包，令{\displaystyle n(x)}表示x所獲得的封包數，則 n個獨立的觀測值
x^{1}、x^{2}到x^{n}的分配為

{\displaystyle p(x^{1},x^{2},\cdots ,x^{n};\alpha )}
{\displaystyle =\prod \_{m=1}^{n}p(x^{m};\alpha )}
{\displaystyle =\prod \_{x\in \Omega }p(x;\alpha )^{n(x)}}，  

因此問題的目標即為估計\alpha 。

從起始節點傳送封包，並觀察終端節點封包通過情況。傳送封包主要有兩種情況，一種為一次只傳送到一個接收的端點，稱為單一傳送；另一種為封包傳送到特定的一些接收端點，稱為多重傳送。然而這兩種傳送方式較沒有彈性，且無法使用不同的流量或不同時間下觀察網域，因此Xi et al. (2006)及Lawrence et al. (2006)針對**彈性傳送(flexicast)**封包的情況作探討。

此種觀察封包傳送情況來對網路做推論產生了統計反向問題，即利用觀察結果來診斷連結中的分配或特徵。有許多統計方法可解決此類推論問題，Castro et al. (2004)提到像是降低複雜性的階層統計模型(Complexity-Reducing Hierarchical Statistical Models)、動差或最大概似法為主的估計、EM及馬可夫鏈蒙地卡羅(Markov Chain Monte Carlo, MCMC)演算方法等已被使用；且認為而使用統計方法來解決此問題的領域仍具有發展性，而未來應有更多現存的統計方法可加以應用。

以下茲列舉一種問題情況：「針對多重傳送為主的網路來推論該網路的封包遺失率」來說明網路連結參數中的遺失率推估問題。估計封包遺失率為Cáceres et al.(1999)首先研究，在假設連結遺失為獨立的伯努利分配下，利用最大概似法來估計多重傳送的樹狀網路中連結遺失率；他們亦證明此估計量具備強烈一致性，並透過最大概似估計量之漸近常態性來推導出這些估計的比率會收斂到真正的比率。

以最大概似法求估計之連結遺失率方法如下：首先計算對數概似函數，

{\displaystyle L(\alpha )=\log \,p(x^{1},x^{2},\cdots ,x^{n};\alpha )=\sum [{n(x)}log\,p(x;\alpha )]}；  

則\alpha 的最大概似估計量

{\displaystyle {\hat {\alpha }}=argmax\_{\alpha \in [0,1]}L(\alpha )}。
另外，Cáceres et al.(1999)亦利用終端節點接收封包機率來估計\alpha 。令{\displaystyle R(k)}為第k個節點傳送下來之終端節點所成集合，{\displaystyle \Omega (k)}為{\displaystyle R(k)}集合中至少有一個終端節點有收到封包之所有觀測情況所成集合。假設{\displaystyle \gamma \_{k}=P[\Omega (k)]}，則{\displaystyle \gamma \_{k}}估計量為{\displaystyle \Sigma \left[{\frac {n(x)}{n}}\right]}，
即觀察到的比例總和。令{\displaystyle k=f\,(j)}表示節點k為前一個節點j所傳下來的，  

且定義{\displaystyle f\,^{n}\,(j)=f(f\,^{n-1}\,(j))}，即前n個節點傳下來。並令{\displaystyle l(k)}表示第k條連結所在從起始到終端節點的層級。定義

{\displaystyle \beta \_{k}=P\,[\Omega (k)|X\_{f(k)}=1]}，
表示給定從第k的節點傳送的節點有通過下，其傳送到的終端節點至少有一個有收到封包的機率。他們證明{\displaystyle \gamma \_{k}}跟\alpha 的關係為

{\displaystyle \gamma \_{k}=\beta \_{k}\prod \_{i=1}^{l(k)}\alpha \_{f\,^{i}(k)}}，
即將通過第k條連結所在從起始到終端節點的所有{\displaystyle \alpha \_{k}}相乘，在該篇文章中亦提供求{\displaystyle \gamma \_{k}}的演算程序。因此，利用觀察到的樣本結果，則可推估封包通過率，而封包遺失率則可求之。

#### 例子

以兩層的樹狀網路為例：
  

令通過此網路終端節點的可能情況集合為

{\displaystyle \Omega =\left\{00,01,10,11\right\}}，
其中

* 00表示封包皆沒有通過節點2跟3，
* 10表示封包通過節點2但沒有通過節點3，
* 01表示封包通過節點3但沒有通過節點2，
* 11表示封包節點2跟3皆有通過。

可計算{\displaystyle \gamma \_{i}}值如下：
  

\gamma \_{1}= P[\Omega (1)]表示從第1個節點傳送下來之終端節點中，至少有一個節點有收到封包的機率。
\gamma\_2= P[\Omega (2)]表示從第2個節點傳送下來之終端節點中，至少有一個節點有收到封包的機率。
{\displaystyle \gamma \_{3}}= P[\Omega (3)]表示從第3個節點傳送下來之終端節點中，至少有一個節點有收到封包的機率。
則

{\displaystyle {\hat {\gamma }}\_{1}={\hat {P}}(11)+{\hat {P}}(10)+{\hat {P}}(01)},
{\displaystyle {\hat {\gamma }}\_{2}={\hat {P}}(11)+{\hat {P}}(10)},
{\displaystyle {\hat {\gamma }}\_{3}={\hat {P}}(11)+{\hat {P}}(01)}

  

利用{\displaystyle \gamma \_{k}}跟\alpha 的關係式可得

{\displaystyle {\hat {\alpha }}\_{1}={\dfrac {{\hat {\gamma }}\_{2}{\hat {\gamma }}\_{3}}{{\hat {\gamma }}\_{2}+{\hat {\gamma }}\_{3}-{\hat {\gamma }}\_{1}}}={\dfrac {({\hat {P}}(01)+{\hat {P}}(11))({\hat {P}}(10)+{\hat {P}}(11))}{{\hat {P}}(11)}}}，
{\displaystyle {\hat {\alpha }}\_{2}={\dfrac {{\hat {\gamma }}\_{2}+{\hat {\gamma }}\_{3}-{\hat {\gamma }}\_{1}}{{\hat {\gamma }}\_{3}}}={\dfrac {{\hat {P}}(11)}{{\hat {P}}(01)+{\hat {P}}(11)}}}
{\displaystyle {\hat {\alpha }}\_{3}={\dfrac {{\hat {\gamma }}\_{2}+{\hat {\gamma }}\_{3}-{\hat {\gamma }}\_{1}}{{\hat {\gamma }}\_{2}}}={\dfrac {{\hat {P}}(11)}{{\hat {P}}(10)+{\hat {P}}(11)}}}

補充
--

### EM演算法

EM演算法為一種在具有無法觀測的資料或是混合模型下計算最大概似估計量之一種有效率的反覆程序，每次遞迴(iteration)包含下列兩個步驟：

* E步驟(Expectation)

此步驟為在給定完全的資料及當下的參數估計值後，計算對數概似函數的條件期望值。

* M步驟(Maximization)

此步驟為在最大化E步驟中的條件期望值對數概似函數，即求最大概似估計量。

令\mathbf{X}表示觀察到的資料，\mathbf{Z}表示遺失或無法觀測的資料，及{\displaystyle {\boldsymbol {\theta }}}表示欲估計的參數。
演算步驟如下：

1. 選擇參數起始值 {\displaystyle {\boldsymbol {\theta }}^{(0)}}。
2. 第m次遞迴

* E步驟：

{\displaystyle Q({\boldsymbol {\theta }}|{\boldsymbol {\theta }}^{(m-1)})=E\_{\mathbf {Z} \mid \mathbf {X} ,{\boldsymbol {\theta }}^{(m-1)}}[logf(\mathbf {x} ,\mathbf {z} \mid {\boldsymbol {\theta }})]}
* M步驟：

{\displaystyle {\hat {\boldsymbol {\theta }}}=argmax\_{{\boldsymbol {\theta }}\in {\boldsymbol {\Theta }}}E\_{\mathbf {Z} \mid \mathbf {X} ,{\boldsymbol {\theta }}^{(m-1)}}[logf(\mathbf {x} ,\mathbf {z} \mid {\boldsymbol {\theta }})]}

参考文献
----

1. ↑  詹政霖.  (学位论文). 中央大學統計研究所. 2008  [2021-02-26].
2. ↑  李惠康; 高艺,董玮,陈纯.. 软件学报. 2021, **32** (2): 475–495  [2021-02-26]. （原始内容存档于2021-01-17）.  引文使用过时参数`coauthors` (帮助)

1. Cáceres, R. Duffield, N. Horowitz, J. and Towsley, D.(1999). Multicast-based inference of network-internal loss characteristics. IEEE Trans. Inform. Theory, 45 2462–2480.
2. Castro, R. Coates, M. Liang, G. Nowak, R.D. and Yu, B. (2004), Network tomography: recent developments, Statistical Science, 19, 499-517.
3. Lawrence, E. Michailidis, G. and Nair, V. N. (2006). Network delay tomography using flexicast experiments. J. Roy. Statist. Soc. Ser. B 68 785–813.
4. Lawrence, E. Michailidis, G. and Nair, V. N.(2007). "Statistical Inverse Problems in Active Network Tomography."in Statistical Inverse Problems, Liu, R. Straderman, W. and Zhang, C. H.(editors), IMS Lecture Note Series.
5. Tebaldi, C. and West, M. (1998), Bayesian inference of network traffic using link count data (with discussion), Journal of the American Statistical Association, 93, 557-576.
6. Vardi, Y. (1996), Estimating source-destination traffic intensities from link data, Journal of the American Statistical Association, 91, 365-377.
7. Xi, B. Michailidis, G. and Nair, V. N. (2006). Estimating network loss rates using active tomography. J. Amer. Statist. Assoc. 101 1430–1438.