ブロック処理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/01 09:06 UTC 版)
アルゴリズム遅延の要因の1つがブロック処理である。ブロック処理では時刻 t {\displaystyle t} の入力信号 x t {\displaystyle x_{t}} を逐次処理するのではなく、 x t {\displaystyle x_{t}} ~ x t + N {\displaystyle x_{t+N}} を1かたまりとしこの単位で一括処理する。次の処理では時刻を h {\displaystyle h} 進めた x t + h {\displaystyle x_{t+h}} ~ x t + h + N {\displaystyle x_{t+h+N}} を同様に一括処理する。処理単位はブロック、フレーム、ウィンドウなどと、間隔 h {\displaystyle h} はホップ長(英: Hop length)やストライド(英: Stride)と呼ばれる。ブロック長 N {\displaystyle N} とホップ長 h {\displaystyle h} は必ずしも一致しない。 N = h {\displaystyle N=h} のブロック処理では、ブロック先頭 x t {\displaystyle x_{t}} を処理するためにブロック末端 x t + h {\displaystyle x_{t+h}} までの入力を待つ必要がある。つまりストリーム入力をとるアルゴリズムであれば、ホップ長 h {\displaystyle h} のブロック処理は入力 x t + a {\displaystyle x_{t+a}} に「最大で」 h {\displaystyle h} のアルゴリズム遅延をもたらす。「最大」なのはサンプル位置によりアルゴリズム遅延が異なるからである。ブロック末端 x t + h {\displaystyle x_{t+h}} の視点でみると取り込まれた瞬間に処理されるためブロック処理のアルゴリズム遅延は0である。ブロック単位でみた遅延は最大値たる h {\displaystyle h} になる。 N > h {\displaystyle N>h} の場合、ブロック処理を出力の視点でみると、ホップ長 h {\displaystyle h} 分の出力を一括で出力している。 N > h {\displaystyle N>h} で出力長以上の入力を取りこんでいるということは、ブロック内での先読み/後読みをおこなっていることになる。つまり t {\displaystyle t} ~ ( t + h ) {\displaystyle (t+h)} を出力するために ( t − b ) {\displaystyle (t-b)} ~ ( t + h + a ) {\displaystyle (t+h+a)} を入力している( N := b + h + a {\displaystyle N:=b+h+a} ) 。アルゴリズム遅延に影響するのは先読みであるため、ブロック単位でみたアルゴリズム遅延は h + a {\displaystyle h+a} になる。 またブロック処理と先読みを組み合わせ、ブロック k {\displaystyle k} の処理にブロック k + M {\displaystyle k+M} を必要とさせることもできる。その場合は h {\displaystyle h} 単位で必要な入力が増えていくため、アルゴリズム遅延が h + a + M ∗ h {\displaystyle h+a+M*h} になる。
※この「ブロック処理」の解説は、「アルゴリズム遅延」の解説の一部です。
「ブロック処理」を含む「アルゴリズム遅延」の記事については、「アルゴリズム遅延」の概要を参照ください。
- ブロック処理のページへのリンク