単項符号化[ nb 1] または単項数値システム、時にはサーモメータ符号とも呼ばれるは、自然数nを長さn + 1(またはn )の符号で表すエントロピー符号化であり、通常、n個の1の後に0が続く(自然数が非負の整数として理解されている場合)、またはn − 1個の1の後に0が続く(自然数が厳密に正の整数として理解されている場合)。たとえば、5は111110または11110と表されます。一部の表現では、n個またはn − 1個の0の後に1が続きます。1と0は、一般性を失うことなく交換可能です。単項符号化は、プレフィックスのない符号であり、自己同期符号です。
単項符号化は、次の離散確率分布に対する最適かつ効率的な符号化である。
のために。
シンボルごとの符号化では、任意の幾何分布に最適である。
k ≥ φ = 1.61803398879...の場合、黄金比、またはより一般的には、任意の離散分布の場合、
について。このような確率分布ではシンボルごとの符号化が最適ですが、ゴロム符号化では入力シンボルを個別に考慮せず、むしろ暗黙的に入力をグループ化するため、幾何分布の圧縮能力が向上します。同じ理由で、算術符号化は、上記の最後のケースのように、一般的な確率分布に対してより優れたパフォーマンスを発揮します。
現在使用されている単項コード
単項コードの使用例は次のとおりです。
- ゴロム・ライス・コードでは、ゴロム・コードワードの商部分をエンコードするために単項エンコードが使用されます。
- UTF-8では、マルチバイト シーケンスの先頭バイトで単項エンコードを使用してシーケンス内のバイト数を示すため、継続バイトを調べなくてもシーケンスの長さを判断できます。
- 瞬時にトレーニングされたニューラル ネットワークは、効率的なデータ表現のために単項コーディングを使用します。
生物ネットワークにおける単項符号化
単項符号化は、鳥の鳴き声の生成を担う神経回路で使用されています。[1] [2]鳴鳥の脳内で鳥の鳴き声の学習と生成の両方に関与する核は、HVC(高声中枢)です。鳥の鳴き声のさまざまな音のコマンド信号は、HVCのさまざまなポイントから発せられます。この符号化は空間符号化として機能し、その固有の単純さと堅牢性により、生物学的回路にとって効率的な戦略です。
標準ランレングス単進コード
すべてのバイナリ データは、1 と 0 が交互に並んだ連続した長さで単進数を表す機能によって定義されます。これは、単進数の標準的な定義、つまり同じ数 1 または 0 の N 桁に準拠しています。すべての連続した長さは、定義により少なくとも 1 つの桁を持つため、厳密に正の整数を表します。
これらのコードは、任意のデータ長で有効に終了することが保証されており (任意のデータを読み取る場合)、(別の) 書き込みサイクルでは、全体の長さと整数ごとの単項コードの長さを正確に N に維持しながら、追加ビット (最初のビットに使用されるビット) の使用と送信が可能になります。
一意にデコード可能な非プレフィックス単項コード
以下は、プレフィックスコードではなく、瞬時にデコードできない(デコードするには先読みが必要) 一意にデコード可能な単項コードの例です。
これらのコードでは、(符号なし整数を書き込む場合) 追加ビット (最初のビットに使用されるビット) の使用と送信も許可されます。したがって、m*N ビットのデータ内で、'm' 個の整数 * N 個の単項ビットと 1 個の追加情報ビットを送信できます。
対称単項コード
次の単項コードのセットは対称であり、どの方向にも読み取ることができます。また、どちらの方向にも瞬時にデコード可能です。
標準的な単項コード
最大値がわかっている単項値の場合、文字ベースのコードとは異なる、ある程度数値的な性質を持つ標準単項コードを使用できます。数値の「0」または「-1」( ) と最大桁数から始めて、各ステップで桁数を 1 ずつ減らし、結果を数値の「1」ずつ増減します。
標準コードは、文字列ではなく数値として処理すると、デコードに必要な処理時間が短くなります。シンボルの長さごとに必要なコードの数が 1 と異なる場合、つまり、必要な長さの非単項コードがさらにある場合、長さを減らさずに数値的に値を増減することで実現できます。
一般化された単項コーディング
単項符号化の一般化バージョンは、標準的な単項符号化よりもはるかに効率的に数値を表すために、Subhash Kakによって発表されました。 [3]以下は、0 から 15 までの整数を表す一般化単項符号化の例で、必要なのは 7 ビットだけです (数値を表すために、標準的な単項符号化の 1 ビットの代わりに 3 ビットが任意に選択されます)。この表現は循環的であり、マーカーを使用してより高い周期でより高い整数を表すことに注意してください。
一般化された単項コーディングでは、必要なビット数がこの範囲によって決まるため、表現する数値の範囲を事前に指定する必要があります。
参照
注記
- ^ ドイツの科学文献で「unary coding」という用語に相当するのは「BCD-Zählcode」であり、これは「2進化10進数コード」と翻訳されます。これは、英語でBCD codeと翻訳される同様のドイツ語の用語「 BCD-Code 」と混同しないでください。
参考文献
- ^ Fiete, IR; Seung, HS (2007). 「鳥の歌の生成、学習、およびコーディングのニューラル ネットワーク モデル」。Squire, L.、Albright, T.、Bloom, F.、Gage, F.、Spitzer, N. (編)。New Encyclopedia of Neuroscience。Elsevier 。
- ^ Moore, JM; et al. (2011). 「運動経路の収束がオシネ鳥の音節レパートリーのサイズを予測する」Proc. Natl. Acad. Sci. USA . 108 (39): 16440–16445. Bibcode :2011PNAS..10816440M. doi : 10.1073/pnas.1102077108 . PMC 3182746 . PMID 21918109.
- ^ Kak, S. (2015). 「一般化された単項符号化」.回路、システム、信号処理. 35 (4): 1419–1426. doi :10.1007/s00034-015-0120-7. S2CID 27902257.
