区分的モデリング・ラボ

x = c で分かれる2つの線形ルールを使い、値とジャンプの挙動を評価します。

インタラクティブシミュレーションを読み込んでいます...

レッスン

理論 — 区分的モデリング・ラボ

区分定義された関数とは、例外つきの一つの規則ではなく、完全な規則が二つと「どちらがどこに適用されるか」の宣言のことです。ここでは折れ点 c より下をひとつの一次規則が支配し、c 以上をもうひとつが支配します。面白い問いは、それぞれの区間が何をするか —— ただの直線です —— ではなく、継ぎ目で何が起きるかです。

各記号の意味

c
折れ点。規則が切り替わる入力値。
f(c⁻)
x が下から c に近づくとき、左の区間が向かっている先。値ではなく極限です。c では左の規則はもう適用されません。
f(c⁺)
右の区間が c で実際にとる値。そこでの関数の値でもあります。
jump
f(c⁺) − f(c⁻)。二つの区間が出会うとき、ちょうどゼロになります。

公式の導き方

  1. 条件をつけたまま定義を書き出します。x < c では f(x) = m₁x + b₁x ≥ c では f(x) = m₂x + b₂。折れ点そのものがどちらの区間に属するかに注意してください。ここでは右側です。グラフの左の枝が白丸で終わり、右が黒丸で始まるのはそのためです。
  2. c では、関数は右の規則による値 m₂c + b₂ を持ちます。左の規則はそこに値を持ちませんが、行き先は持っています。xc へ上がっていくとき m₁x + b₁m₁c + b₁ に近づきます。これが左側極限です。
  3. ある点で連続とは、両側の極限と関数の値が一致することです。ここでは右側極限と値が同じものなので、三つのうち二つは自動的に満たされ、条件全体がたった一つの式に縮みます。m₁c + b₁ = m₂c + b₂
  4. 式は一つ。満たすためにはどの係数を動かしても構いません。b₂ = (m₁ − m₂)c + b₁。つまり連続性はいつでも実現できますが、決してただではありません。パラメータを一つ差し出す必要があります。差し出さなかったときに残るのが、表示で「段差」と呼ばれている量です。(m₂c + b₂) − (m₁c + b₁)

表示の読み方

青い線分が左の規則、オレンジが右の規則で、それぞれ自分の条件が許す範囲まで描かれます。折れ点で青い枝は白丸で終わります。これは決して占めることのない行き先です。オレンジは黒丸で始まり、こちらが f(c) の実際の値です。両者が一致すると丸は重なり、段差の行は 0 になります。青緑の点は評価欄に入れた値に対する f(x₀) で、最後の 3 行が図を数値に翻訳します。区間がつながっているか、またぐときに傾きがどれだけ変わるか、そして下向きの段差が「折れ点より高くつく入力の範囲」を生んでいるかどうかです。

前提
どちらの区間も直線であること、折れ点はちょうど一つで、既知の位置にあること。半開区間の約束も重要で、これは一つの選択です。右の規則が x = c を所有するので f(c)m₂c + b₂ になります。約束を逆にすると c という一点での値は変わりますが、段差は変わりません。
成り立たない場合
本当に厄介なのは、c が既知ではなく推定される場合です。直線を当てはめるのと同じデータから推定した折れ点は、誤差を最小にするように選ばれたパラメータですから、通常の回帰の標準誤差は小さすぎ、当てはまりは実際より良く見えます。分割回帰の手法があるのは、まさにこれに対処するためです。そして二区間モデルは第三の領域について何も語りません。観測した範囲の外へどちらかの直線を延ばすことは、一度も検証していない規則を仮定することです。

折れ点での連続性は自分で作るもの 🖖

注目したいのは跳躍量の行です。四つのプリセットのうち三つでは、そこに0でない値が表示されます。境界点で、タクシー料金は13から12へ、割引料金は2.5、冷却曲線は4.8だけ下がります。いずれも値が小さくなるので、安い料金率に切り替わった瞬間、合計は下がります。ここでは連続性は当然には成り立ちません。m₁c + b₁ = m₂c + b₂ となるよう、厳密に調整する必要があります。これを満たすのが税金のプリセットです。二つ目の切片が−2なのは、連続条件を b₂ について解いて定めているからです。タクシー料金の二つ目の切片を8から9に変えると、跳躍量はやはり0になります。

1つの関数、2つのルール 🖖

区分関数は、分岐点 c より前では1つの線形ルールを、後ろでは別のルールを使います — 最初は高く、あとで安くなるタクシーメーターのようなものです。2つの区分は c で値が一致するときだけ滑らかにつながります。つまり m1·c + b1 = m2·c + b2 のときにちょうど連続になります。そうでなければ結果に跳びが表示され、グラフは接合部で上か下へジャンプします。

深層学習を支える角 🖖

現代のほとんどのニューラルネットワークの活性化関数 ReLU は、実は区分線形関数にすぎません。x が負のあいだは傾き 0、正になると傾き 1 で、分岐点 x = 0 でつながっています。そこでは連続ですが導関数を持ちません — 滑らかな曲線ではなく鋭い角です。こうしたユニットを何百万個も積み重ねても、ネットワーク全体はやはり1つの巨大な連続な区分線形関数を計算しているのです。

割引のせいで 8 個が 10 個より高くなることがある 🖖

数量割引のプリセットを読み込み、表示の最終行を見てください。10 個のところで料率が 1.2 から 0.7 へ落ち、合計も一緒に落ちます。10 個で 9.5、8 個で 9.6 です。その行が範囲全体を示します。7.916667 個から折れ点までは、素直に 10 個注文するより高く払うことになります。下向きの段差は必ずこうした区間を生みます。価格表に書き込むには奇妙な性質です。8 個ほしい客に、10 個注文して余った 2 個をただで持ち帰る動機を与えてしまうからです。連続性を確かめる実務上の理由はここにあり、飾りではありません。冷却のプリセットに切り替えると、その行はそのような区間は存在しないと告げます。下降する枝は、向かっている値より上に出ることが決してないからです。

全プロセスの詳細解説

  1. 料金の分岐点5と、多く買うほど安くなる範囲 6 ステップ

    ある料金体系では、分岐点である 5 未満で 2x + 3、5 以上で 0.8x + 8 が課される。7 における値を求めよ。さらに、より多く購入した方が支払額が安くなる範囲を求めよ。

    1. 2 つの直線と、どちらを適用するかを定める規則である。唯一注意が必要なのは境界であり、ちょうど x = 5 では第 2 の枝が適用される。

    2. 両側から分岐点に近づける。左極限と実際の値は一致せず、その不一致の大きさが跳びの大きさとなる。

    3. 傾きもまた独立して一致しない。関数は折れ曲がりを持ちつつ連続であることも、折れ曲がりなく跳びを持つこともできるが、この関数はその両方を示す。

    4. ここからが興味深い問いである。第 1 の区間の値が、第 2 の区間の開始値をすでに超えて上昇している範囲を求める。

    5. その不等式は 4.5 から分岐点まで成り立ち、その区間全体において、より安く買えるのはより大きな購入量の方である。

    6. このような範囲をなくす条件は書き記しておく価値がある。なぜなら、それこそが適切に設計された料金表が満たす条件だからである。

    解答

    13.6。そして 4.5 から 5 の間では、常に 5 を買うべきである。第 1 の区間が 12 を超えて上昇している間に第 2 の区間は 12 から始まるため、この範囲内の利用者はより少ない量に対してより高く支払うことになる。この範囲は端数処理の産物ではなく、第 1 区間全体の 10% を占めており、これこそが不連続な料金体系がもたらすものである。実際の料金表では、各部分を接続させることでこれを回避している。連続性には b₂ − b₁ = (m₁ − m₂)c が必要だが、本問では 5 が 6 に等しくなることが要求される。限界税率区分はそのように意図して構築されているため、昇給によって手取り額が減るという俗説は、所得税に関しては誤りであり、印刷されたほぼすべてのまとめ買い割引に関しては正しい。

参考文献 (2)

例題

  • タクシー料金モデル - 境界点5より下では2x + 3、上では0.8x + 8です。境界を越えると値は13から12へ下がります。二つ目の切片を8ではなく9にすれば、跳躍量は0になります。
  • まとめ割引モデル - 10単位までは単位あたり1.2、それを超えると0.7で、切片は2.5です。10単位なら9.50、8単位なら9.60かかります。7.916667単位以上では、10単位を注文したほうが安くなります。
  • 冷却フェーズ - 傾きが-0.5から-0.1に変わり、境界点で4.8下がる減少モデルです。払い過ぎとなる領域がまったくないと表示される唯一のプリセットです。減少する枝では、値がそれより上に出ることがありません。
  • 限界税率の区分 - 段差のない唯一のプリセット。10 までが 20%、それ以上が 40% で、二つ目の切片を −2 にして両区間をぴったり接続