低差别序列:高维序列(Halton sequence)
?一、前言
????????在文:低差異序列:范德科皮特序列(Van der Corput sequence)中提到范德科皮特序列是低差異序列。
????????本文講用?van der Corput sequences序列構建高維度的低差異序列Halton sequence,以及使用方法。
二、基本概念
????????在數學中,低差異序列是具有以下性質的序列:對于 N 的所有值,其子序列 x1,...,xN 具有低差異。
????????粗略地說,如果序列中落入任意集合 B 的點的比例接近于與 B 的度量成比例,則序列的差異很小,這在平均情況下會發生(但不是針對特定樣本)一個等分布的序列。關于 B 的選擇(超球體、超立方體等)以及如何計算每個 B 的差異(通常是標準化)和組合(通常采用最差值),差異的具體定義有所不同。
????????低差異序列也稱為準隨機序列,因為它們通常用作均勻分布隨機數的替代品。 “準”修飾符用于更清楚地表示低差異序列的值既不是隨機也不是偽隨機,但此類序列共享隨機變量的某些屬性,并且在某些應用中,例如準蒙特卡羅方法,它們的差異較小是一個重要的優勢。
低差異序列可以用下圖理解:
三、Halton sequence序列
????????
????????Halton 序列是根據使用互質數作為其基礎的確定性方法構建的。舉個簡單的例子,讓我們假設 Halton 序列的一個維度基于 2,而另一個基于 3。要生成 2 的序列,我們首先將區間 (0,1) 分成兩半,然后再分成四分之一、八分之一等,從而產生
1?2、1?4、3?4、1?8、5?8、3?8、7?8、1?16、9?16、...
????????等效地,這個序列的第 n 個數字是用二進制表示的數字 n,反轉并寫在小數點后。這適用于任何基地。例如,要找到上述序列的第六個元素,我們可以寫 6 = 1*22 + 1*21 + 0*20 = 1102,可以將其取反并放在小數點后得到 0.0112 = 0* 2-1 + 1*2-2 + 1*2-3 = 3?8。所以上面的順序是一樣的
0.12, 0.012, 0.112, 0.0012, 0.1012, 0.0112, 0.1112, 0.00012, 0.10012,...
為了生成 3 的序列,我們將區間 (0,1) 分為三等分,然后是九分之九、七分之二等,生成
1?3、2?3、1?9、4?9、7?9、2?9、5?9、8?9、1?27、...
當我們將它們配對時,我們會在一個單位正方形中得到一系列點:
(1?2, 1?3), (1?4, 2?3), (3?4, 1?9), (1?8, 4?9), (5?8, 7?9), (3?8, 2?9), (7?8, 5?9), (1?16, 8?9), (9?16, 1?27)。
???????? Halton 序列在低維中表現得非常好,但在從較高素數生成的序列之間已經注意到相關問題。例如,如果我們從質數 17 和 19 開始,前 16 對點: (1?17, 1?19), (2?17, 2?19), (3?17, 3?19) 。 .. (16?17, 16?19) 將具有完美的線性相關性。為避免這種情況,通常會刪除前 20 個條目,或根據所選素數刪除一些其他預定數量。還提出了幾種其他方法。最突出的解決方案之一是加擾 Halton 序列,它使用用于構建標準序列的系數的排列。另一種解決方案是跳躍式 Halton,它會跳過標準序列中的點。例如,僅使用每個第 409 個點(Halton 核心序列中未使用的其他素數也是可能的),可以實現顯著的改進。
四、圖像處理
4.1 Halton序列生成程序
def halton(b):"""Generator function for Halton sequence."""n, d = 0, 1while True:x = d - nif x == 1:n = 1d *= belse:y = d // bwhile x <= y:y //= bn = (b + 1) * y - xyield n / d4.2 halton與randon函數的比較
????????下圖表示用halton序列和計算機內randon函數生成的10、100、1000、10000個點的隨機序列,可見,halton對空間的覆蓋更勻稱高效。
總結
以上是生活随笔為你收集整理的低差别序列:高维序列(Halton sequence)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 时间序列:五种编辑距离和Python实现
- 下一篇: 语音识别:时间序列Damerau–Lev