時間embedding

csjywu1發表於2024-09-11


左邊的公式和 time_embedding(1) 的區別在於它們表示的維度不同。公式中的左邊部分是一個概括性公式,用來說明如何為每個時間步 ( t ) 生成時間嵌入。而具體的 time_embedding(1) 展示的是當 ( t = 1 ) 時,如何生成一個更長維度的時間嵌入向量。

1. 左邊公式的含義

左邊的公式表示的是時間步 ( t ) 在不同維度上生成的正弦和餘弦值。它用到了引數 ( i ) 和 ( d ),其中:

  • ( i ) 是當前的維度索引(不同的 ( i ) 值代表不同的維度),
  • ( d ) 是總的嵌入維度。

公式實際上表示,對於嵌入維度的每一個索引 ( i ),我們分別生成正弦和餘弦值。這個公式表達了時間步 ( t ) 在不同的維度上如何對映到正弦和餘弦值。

2. time_embedding(1) 的具體表示

time_embedding(1) 展示了當 ( t = 1 ) 時,具體的時間嵌入向量是什麼樣的。因為時間嵌入是透過正弦和餘弦函式生成的,所以它會在嵌入維度的每個索引 ( i ) 上生成兩個值:一個是正弦值,另一個是餘弦值。

  • 對於 ( i = 0 ),我們計算 $ \sin(1) ) 和 ( \cos(1) $,它們是第一個維度的正弦和餘弦表示。
  • 對於 ( i = 1 ),我們計算 $ \sin\left(\frac{1}{10000^{2 \cdot 1/d}}\right) ) 和 ( \cos\left(\frac{1}{10000^{2 \cdot 1/d}}\right) $,這是第二個維度的正弦和餘弦表示。

如此類推,我們繼續為後續維度生成對應的正弦和餘弦值。每個維度 ( i ) 都會生成一對正弦和餘弦值,因此時間嵌入的維度將會是總維度 ( d ) 的兩倍。

3. 時間嵌入的維度解釋

具體來說,如果時間嵌入的總維度是 ( d ),那麼它將包含 ( d/2 ) 對正弦和餘弦值。例如,如果我們生成 6 維的時間嵌入,那麼:
\( \text{time_embedding}(1) = \left[ \sin(1), \cos(1), \sin\left(\frac{1}{10000^{2 \cdot 1 / 6}}\right), \cos\left(\frac{1}{10000^{2 \cdot 1 / 6}}\right), \dots \right] \)
總共會包含 6 個元素,即 3 對正弦和餘弦值。

總結:

左邊的公式是一個概括的生成時間嵌入的方式,而右邊展示的是一個具體例子,當時間步 ( t = 1 ) 時,如何生成多對正弦和餘弦值。每一對正弦和餘弦值都對應著嵌入向量的一個維度,因此最終生成的時間嵌入向量的長度是總維度的兩倍。、

累計噪聲比例

在擴散模型中,( \alpha_t )( \bar{\alpha}_t ) (或者寫作 ( \alpha_t^{\text{bar}} ))是兩個重要的係數,它們在擴散過程中有不同的定義和作用。

  • ( \alpha_t ):是每個時間步 ( t ) 的噪聲比例係數。它用於控制當前時間步 ( t ) 上引入噪聲的比例。
  • ( \bar{\alpha}_t ):是從時間步 0 到時間步 ( t ) 的累計噪聲比例。它表示的是到時間步 ( t ) 時為止,嵌入中包含的累計噪聲。

1. ( \alpha_t ) 的含義

( \alpha_t ) 表示的是在單個時間步 ( t ) 上引入的噪聲比例。每個時間步 ( t ) 都有一個獨立的 ( \alpha_t ),用於控制在當前時間步上如何對嵌入進行處理。

在前向擴散過程中,每個時間步 ( t ) 的嵌入更新公式是:
[
h_{t} = \sqrt{\alpha_t} h_{t-1} + \sqrt{1 - \alpha_t} \epsilon
]
其中:

  • ( h_{t-1} ) 是上一時間步的嵌入。
  • ( \epsilon ) 是從標準正態分佈取樣的噪聲。

透過這個公式,( \alpha_t ) 控制了當前時間步上原始嵌入 ( h_{t-1} ) 和噪聲 ( \epsilon ) 之間的權重比例。

2. ( \bar{\alpha}_t ) 的含義

$\bar{\alpha}_t $ 是時間步 ( t ) 之前的累計噪聲係數,它表示從第 0 個時間步到第 ( t ) 個時間步的所有噪聲的累積效應。具體地,( \bar{\alpha}_t ) 是從時間步 0 到時間步 ( t ) 上每個 ( \alpha_t ) 的乘積:

\( \bar{\alpha}_t = \prod_{i=1}^{t} \alpha_i \)
這意味著,( \bar{\alpha}_t ) 表示嵌入中已經混入的全部噪聲的比例。因此,時間步 ( t ) 上的嵌入可以看作是從初始無噪聲的嵌入 ( h_0 ) 和噪聲 ( \epsilon ) 的組合:

\( h_t = \sqrt{\bar{\alpha}_t} h_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon \)
這表示的是從 ( t = 0 ) 到 ( t ) 時間步的整個噪聲新增過程的累積效果。

3. 兩者的區別

  • ( \alpha_t ):控制每個時間步 ( t ) 單獨的噪聲比例,即在時間步 ( t ) 中,嵌入和噪聲的混合程度。
  • ( \bar{\alpha}_t ):是累計噪聲比例,它控制了從時間步 0 到 ( t ) 的所有噪聲的累積效應,反映了整個擴散過程的總體噪聲水平。

4. 舉例說明

假設我們有 3 個時間步 ( t = 1, 2, 3 ),每個時間步的 ( \alpha_t ) 分別為:

  • $ \alpha_1 = 0.9 $
  • $ \alpha_2 = 0.8 $
  • $ \alpha_3 = 0.7 $

計算 ( \alpha_t )

這些值表示每個時間步上加入的噪聲比例。例如:

  • 在時間步 ( t = 1 ) 時,嵌入的更新為:
    \( h_1 = \sqrt{0.9} h_0 + \sqrt{0.1} \epsilon_1 \)
    這裡 ( 0.9 ) 控制了原始嵌入和噪聲的權重。

  • 在時間步 ( t = 2 ) 時,嵌入的更新為:
    \( h_2 = \sqrt{0.8} h_1 + \sqrt{0.2} \epsilon_2 \)

計算 ( \bar{\alpha}_t )

現在,我們計算累計的噪聲比例 ( \bar{\alpha}_t ):

  • $ \bar{\alpha}_1 = \alpha_1 = 0.9 $
  • $ \bar{\alpha}_2 = \alpha_1 \cdot \alpha_2 = 0.9 \times 0.8 = 0.72 $
  • $ \bar{\alpha}_3 = \alpha_1 \cdot \alpha_2 \cdot \alpha_3 = 0.9 \times 0.8 \times 0.7 = 0.504 $

這些累計值表示嵌入中從初始狀態 ( h_0 ) 到時間步 ( t ) 累積的噪聲比例。例如:

  • 在時間步 ( t = 3 ) 時,嵌入的計算可以直接表示為:
    \( h_3 = \sqrt{\bar{\alpha}_3} h_0 + \sqrt{1 - \bar{\alpha}_3} \epsilon_3 \)
    這意味著在 ( t = 3 ) 的嵌入中,已經有 ( 1 - 0.504 = 0.496 ) 的嵌入是噪聲的貢獻,而 $ 0.504 \(是從原始嵌入\) h_0$ 中保留的資訊。

5. 總結

  • $ \alpha_t $ 控制在當前時間步加入的噪聲比例。
  • $ \bar{\alpha}_t $ 是從時間步 0 到當前時間步 $t $ 的累積噪聲比例

前者用於控制每一步的嵌入和噪聲的混合程度,後者則表示經過$ t $ 個時間步之後,嵌入中的總噪聲比例。

相關文章