「数理最適化」の版間の差分

提供: Xenharmonic Wiki
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
12行目: 12行目:


== ノルム ==
== ノルム ==
[[File:Vector norms.svg|thumb|upright=0.5|平面 '''R'''<sup>2</sup> 上の異なるノルムに関する単位円の様子]]
ノルム最適化を行うには、音程の複雑度に関する{{w|ノルム}}を導入する必要がある。技術的には、純正律サブグループを{{w|ノルム線型空間}}に{{w|埋め込み (数学)|埋め込む}}ことである。これをするにはいくつかの側面で検討することがある。重みは形式的素数のそれぞれがどの程度重要なのか、傾き(skew、仮訳)は分数と合成数で扱いを変えるかどうか、である。これらはノルムの定義として書いても座標として表現してもよく、見方の違いでしかない。最後に次数(ノルムと聞いて真っ先に思い浮かべるあれ)は、斜め方向の移動がどう数えられるかを決定する。
ノルム最適化を行うには、音程の複雑度に関する{{w|ノルム}}を導入する必要がある。技術的には、純正律サブグループを{{w|ノルム線型空間}}に{{w|埋め込み (数学)|埋め込む}}ことである。これをするにはいくつかの側面で検討することがある。重みは形式的素数のそれぞれがどの程度重要なのか、傾き(skew、仮訳)は分数と合成数で扱いを変えるかどうか、である。これらはノルムの定義として書いても座標として表現してもよく、見方の違いでしかない。最後に次数(ノルムと聞いて真っ先に思い浮かべるあれ)は、斜め方向の移動がどう数えられるかを決定する。


22行目: 24行目:


=== 傾き ===
=== 傾き ===
各素数軸を直交させた空間は分数の形になっているものと合成数の形になっているものを同じ重要度として扱うが、分数の形のほうが重要であると考えることが多い。例えば、同じように 3 と 5 を1個づつ使っていても、5/3 のほうが 15/1 より重要だとみなされる。傾きはこれを理論に導入する。
interval spaceにおいて各素数軸を直交させた場合は分数の形になっているものと合成数の形になっているものを同じ重要度として扱うが、分数の形のほうが重要であると考えることが多い。例えば、同じように 3 と 5 を1個づつ使っていても、5/3 のほうが 15/1 より重要だとみなされる。傾きはこれを理論に導入する。


[[ワイルノルム]]はテニー重みをベースに、軸の間の角度を 60 度に傾け(さらに線形従属な軸を加え)たものである。
[[ワイルノルム]]はテニー重みをベースに、軸の間の角度を 60 度に傾け(さらに線形従属な軸を加え)たものである。
31行目: 33行目:
* ユークリッドノルム(''L''<sup>2</sup> ノルム)は現実の距離のようなものである。
* ユークリッドノルム(''L''<sup>2</sup> ノルム)は現実の距離のようなものである。
* マンハッタンノルム(''L''<sup>1</sup> ノルム)はマンハッタンの中のタクシーのようなものである。水平方向の移動と垂直方向の移動しかできないので、斜めの移動コストは両方の和となる。
* マンハッタンノルム(''L''<sup>1</sup> ノルム)はマンハッタンの中のタクシーのようなものである。水平方向の移動と垂直方向の移動しかできないので、斜めの移動コストは両方の和となる。
* チェビシェフノルム(''L''<sup>∞</sup> ノルム)はチェスのキングのようなものである。左右に1マス、上下に1マス、斜め移動が全て1手でできる。
* チェビシェフノルム(''L''<sup>∞</sup> ノルム)はチェスのキングのようなものである。左右に1マス、上下に1マス、斜め移動(''L''<sup>2</sup> 的に言えば 1.41 マス先)が全て1手でできる。


''L''<sup>1</sup> と ''L''<sup>∞</sup> が双対ノルム(双対空間それぞれに設定されたノルムである種の性質の良さがある組み合わせ)である。''L''<sup>2</sup> の双対は ''L''<sup>2</sup> である。
''L''<sup>1</sup> と ''L''<sup>∞</sup> が双対ノルム(双対空間それぞれに設定されたノルムである種の性質の良さがある組み合わせ)である。''L''<sup>2</sup> の双対は ''L''<sup>2</sup> である。
38行目: 40行目:


== 強制 ==
== 強制 ==
特定の音程を特定の大きさに強制する手法について解説する。オクターブを純正にすることが最もよく行われている強制であるが、他の音程も対象になりうる。2つの主流な方法がある。
=== デストレッチ ===
デストレッチは後処理により純正音程を強制する方法である。(17.1edoの[[一般化パテントヴァル|GPV]]を17.0edoで用いるようなやつである。)その結果はもはや元々のノルムとは関係ないものになるが、しばしばもっと高度な手法に対する簡便な近似になる。最もありふれた例が{{en仮リンク|POTE tuning}}である。これはたまたま{{en仮リンク|CWE tuning}}に近い結果を得られることで知られている。
=== 制約 ===
制約条件(等式)を追加してそれも満たす最小化問題をきちんと解くこと。制約条件を増やした結果最小化以前に解が定まってしまう場合もある(純正のままにした音程のことを{{en仮リンク|固有モンゾ|eigenmonzo}}という。ランク2テンペラメントに固有モンゾを2個設定すると解が定まってしまう。{{en仮リンク|minimax tuning}}なども参照のこと)。制約条件は最適化の{{w|実行可能領域}}を定義し、実行可能な範囲で最小化された結果をfeasibly optimalという。


===  ===
== 枠組みの定式化 ==
(デストレッチを除いて)テンペラメントの最適化問題は下記のように定義できる。~


===  ===
== 主要なチューニング ==

2025年10月13日 (月) 13:25時点における版

RTTにおいて、数理最適化の技法はレギュラーテンペラメントの「誤差の小さい」チューニングを求めるために使われている。

レギュラーテンペラメントはマッピングまたはコンマ基底によって定義される。これはチューニングを特定するような情報を含んでいない。このテンペラメントを調律するには、tuning map (en) を定義する、つまり各ジェネレーターのサイズを決定しなければならない。ではそれらはどうあるべきなのか? 一般的に、テンペラメントは純正律を近似するものである。どうチューニングしてもいくつかの音程には不可避的に誤差が導入される(そもそも別々の純正音程をひとつの音程にしなければならないという無茶をやろうとしているのだ)。テンパーの肝は妥協にあり――関心のある音程の総合誤差が最小になるようなスイートスポットを見つけること、これにより元の純正律の和声をできるだけ保つようにする。

分類

大まかに言うと、態度がだいぶ違う2種類のチューニング方法がある。

  • ノルム最適化は、形式的素数(純正律サブグループの基底のこと)だけではなく全ての音程(無限個)を対象とする、というていで、実際には無限和を回避し、音程の誤差を音程の複雑度で割ったもの(damage (en) )を考えることにより結局簡単な音程しか考える必要がなくなる(複雑度が有理数に関して加法的な振る舞いをするなら、例えば 9/4 の複雑度は 3/2 の複雑度の2倍になって誤差と比例するので割ったものは同じになり全ての音程のことを考えていると言えなくもない)という、よく言えばエレガントなチューニング方法である。
  • ターゲット最適化は、自由に作曲者が望んだいくつかの音程だけの総合誤差を小さくする。望まれる音程は大体簡単な音程であり、格子のより外側の音程は無関係なものとして無視される。

本項目ではノルム最適化の細かい分類について述べる。ターゲット最適化についてはtarget tuning (en) を参照のこと。

ノルム

平面 R2 上の異なるノルムに関する単位円の様子

ノルム最適化を行うには、音程の複雑度に関するノルムを導入する必要がある。技術的には、純正律サブグループをノルム線型空間埋め込むことである。これをするにはいくつかの側面で検討することがある。重みは形式的素数のそれぞれがどの程度重要なのか、傾き(skew、仮訳)は分数と合成数で扱いを変えるかどうか、である。これらはノルムの定義として書いても座標として表現してもよく、見方の違いでしかない。最後に次数(ノルムと聞いて真っ先に思い浮かべるあれ)は、斜め方向の移動がどう数えられるかを決定する。

重み

重みは対角行列で表され、形式的素数それぞれの重要度を決定する。tuning spaceinterval spaceは互いに双対空間であって、tuning spaceでの重要度はinterval spaceでの複雑度の評価(簡単さ・原点への近さ)に相当する。テニー重みは最もありふれた重みであり、

$$ W = \operatorname {diag} (1/\log_2 (Q)) $$

となる。ここで Q = 2 3 5 …] でありその中の各素数 q の重要度は 1/log2(q)、複雑度は log2(q) となる。

傾き

interval spaceにおいて各素数軸を直交させた場合は分数の形になっているものと合成数の形になっているものを同じ重要度として扱うが、分数の形のほうが重要であると考えることが多い。例えば、同じように 3 と 5 を1個づつ使っていても、5/3 のほうが 15/1 より重要だとみなされる。傾きはこれを理論に導入する。

ワイルノルムはテニー重みをベースに、軸の間の角度を 60 度に傾け(さらに線形従属な軸を加え)たものである。

次数

ノルムの次数はinterval spaceでの単位長さを決定する。

  • ユークリッドノルム(L2 ノルム)は現実の距離のようなものである。
  • マンハッタンノルム(L1 ノルム)はマンハッタンの中のタクシーのようなものである。水平方向の移動と垂直方向の移動しかできないので、斜めの移動コストは両方の和となる。
  • チェビシェフノルム(L ノルム)はチェスのキングのようなものである。左右に1マス、上下に1マス、斜め移動(L2 的に言えば 1.41 マス先)が全て1手でできる。

L1L が双対ノルム(双対空間それぞれに設定されたノルムである種の性質の良さがある組み合わせ)である。L2 の双対は L2 である。

(中略)

強制

特定の音程を特定の大きさに強制する手法について解説する。オクターブを純正にすることが最もよく行われている強制であるが、他の音程も対象になりうる。2つの主流な方法がある。

デストレッチ

デストレッチは後処理により純正音程を強制する方法である。(17.1edoのGPVを17.0edoで用いるようなやつである。)その結果はもはや元々のノルムとは関係ないものになるが、しばしばもっと高度な手法に対する簡便な近似になる。最もありふれた例がPOTE tuning (en) である。これはたまたまCWE tuning (en) に近い結果を得られることで知られている。

制約

制約条件(等式)を追加してそれも満たす最小化問題をきちんと解くこと。制約条件を増やした結果最小化以前に解が定まってしまう場合もある(純正のままにした音程のことを固有モンゾ (en) という。ランク2テンペラメントに固有モンゾを2個設定すると解が定まってしまう。minimax tuning (en) なども参照のこと)。制約条件は最適化の実行可能領域を定義し、実行可能な範囲で最小化された結果をfeasibly optimalという。

枠組みの定式化

(デストレッチを除いて)テンペラメントの最適化問題は下記のように定義できる。~

主要なチューニング