2 ポイント 投稿者 GN⁺ 2023-07-31 | 1件のコメント | WhatsAppで共有
  • 関数を無限次元ベクトルのように扱うと、線形代数の言葉で画像・幾何処理、曲線フィッティング、機械学習のような問題を説明できる
  • 実関数空間は、関数同士の値を足し、出力値をスカラー倍することでベクトル空間の公理を満たし、多項式は (1,x,x^2,\dots) のような基底で表現できる
  • 微分は線形結合を保存するので線形作用素となり、多項式基底では係数ベクトルに作用する無限行列のように見なせる
  • 内積を積分で定義すれば、関数空間でも長さ・直交・正規直交基底を扱え、自己随伴作用素はスペクトル定理と結びつく
  • Laplacian を対角化する視点は、Fourier series、2D画像圧縮、spherical harmonics、メッシュ Laplacian ベースの幾何処理における基底変換と圧縮をひとつの枠組みで説明する

関数をベクトルとして見る方法

  • ベクトルは通常、実数のリストから始まるが、ベクトル空間には複素数のリスト、グラフのサイクル、魔方陣のような別の対象も入りうる
  • (N) 次元ベクトルは長さ (N) のリストであると同時に、インデックスから値への写像として解釈できる
  • 自然数のように可算無限な定義域では、無限に長いリストで関数を表せる
    • 例: (\mathbf{v}_i=i) は、(x\in\mathbb{N}) 上の (f(x)=x) を表せる
  • 実数のような非可算無限の定義域では、各要素に整数インデックスを付けられないため、リスト表現は不可能になる
    • このときベクトルは任意の関数に近いものになる
    • 関数解析学は、関数を無限次元ベクトルとして表す厳密な定義を扱う
  • 目的は無限次元の結果を厳密に証明することよりも、有限次元線形代数との類比から直観を得ることにある

関数空間がベクトル空間になる仕組み

  • 実関数空間では、スカラー体は (\mathbb{R})、ベクトルの集合は (\mathbb{R}\to\mathbb{R}) の関数、零ベクトルはすべての入力に対して 0 を返す関数である
  • 関数の加法は、同じ入力で2つの関数の値を足し合わせる
    • ((f+g)[x]=f[x]+g[x])
    • ベクトルの要素ごとの加法を、関数のインデックスという観点に一般化した形である
  • スカラー倍は、関数の出力を倍率調整する
    • ((\alpha f)[x]=\alpha f[x])
    • 各インデックスの値をスケールするベクトル演算に対応する
  • この定義により、加法の交換法則・結合法則、零ベクトル、加法逆元、スカラー倍の単位元・結合法則・分配法則を証明できる
  • 関数の標準基底は、各インデックス (\alpha) でのみ 1、他では 0 となる基底関数 (\mathbf{e}_\alpha) と考えられる
    • 実数全体には非可算個の基底関数があるため単純な和では書きにくいが、特定の入力 (x) では (\mathbf{e}_x) だけが残るという直観を与える

線形作用素と微分

  • 行列は線形結合を保存する線形変換をエンコードしており、列ベクトルは新しい基底を定義するものとして解釈できる
  • 関数もベクトルと見なせば、行列に対応する無限次元の対象を考えられ、これを線形作用素 (\mathcal{L}) と書く
    • 実際には、非可算無限次元の作用素をすべて行列として書くことはできない
    • それでも各「列」が関数空間の新しい基底関数を表すという構造は有用である
  • 微分は線形性を満たす
    • (\frac{\partial}{\partial x}(\alpha f[x]+\beta g[x])=\alpha\frac{\partial f}{\partial x}+\beta\frac{\partial g}{\partial x})
  • 多項式空間 (\mathcal{P}) では、(1,x,x^2,x^3,\dots) が可算無限基底になる
    • (p[x]=a+bx+cx^2+dx^3+\cdots) は、係数ベクトル ([a,b,c,d,\dots]^T) として書ける
    • 微分は係数ベクトルを ([b,2c,3d,\dots]^T) に変える無限行列として表現される
  • 解析関数は 0 周りの Taylor series で表されるため、多項式基底の線形結合として表せる
    • Taylor expansion は、べき基底への基底変換に対応する

対角化と固有関数

  • 有限次元では、行列 (\mathbf{A}) は十分な数の線形独立な固有ベクトルと実固有値を持てば対角化できる
    • (\mathbf{A}=\mathbf{U\Lambda U^{-1}})
    • 固有基底へ移し、固有値でスケーリングし、標準基底に戻す過程である
  • 関数空間でも、線形作用素 (\mathcal{L}) について (\mathcal{L}f=\psi f) を満たす固有関数を考えられる
  • 微分作用素の固有関数は (p_0e^{\psi x}) の形になる
    • 係数条件 (p_i=\frac{\psi^i}{i!}p_0) から指数関数の級数が現れる
  • ただし、実解析関数全体の空間で微分を指数関数基底によって対角化することはできない
    • (f[x]=x) を指数関数たちの線形結合で表せると仮定すると、2回微分した式で矛盾が生じる
    • (n) 階導関数が 0 になる非定数関数や、sine・cosine のような周期関数にも同様の問題がある
  • 複素関数空間へ拡張すると、より多くの作用素を対角化できる
    • 微分は (\mathbb{C}\to\mathbb{C}) の関数空間で Laplace transform によって対角化できる
    • Laplace transform は微分方程式の解法に有用だが、逆変換が容易ではないため、ここではこれ以上扱わない

関数の内積とスペクトル定理

  • ユークリッド内積は、一方のベクトルがもう一方のベクトルの方向にどれだけ測られるかを表し、自分自身との内積は長さの二乗を与える
  • 関数空間では、有限和をその連続版である積分に置き換えて内積を定義する
    • 実関数: (\langle f,g\rangle=\int_a^b f[x]g[x],dx)
    • 複素関数: (\langle f,g\rangle=\int_a^b f[x]\overline{g[x]},dx)
  • すべての関数が積分可能とは限らないため、内積空間は区間 ([a,b]) で二乗可積分な関数に制限する
    • ([a,b]) は ([-\infty,\infty]) でもよい
  • 複素関数の内積は、共役対称性、第1引数に関する線形性、正定値性を満たさなければならない
    • 正定値性を厳密に扱うため、0 である点が「ほとんど至る所」である関数たちの同値類を用いる
  • スペクトル定理は関数空間にも一般化され、自己随伴作用素は実固有値と正規直交固有基底を持つ
    • 有限次元では対称行列は正規直交固有基底を持ち、その逆も成り立つ
    • 無限次元では厳密な条件や証明はより複雑になる

Laplacian の対角化

  • 1次元関数における Laplacian は2階導関数である
    • (\Delta f=\frac{\partial^2 f}{\partial x^2})
  • 2回の部分積分を使うと、Laplacian が自己随伴に近い性質を持つことが確認できる
    • 境界項 ((f^\prime[x]g[x]-f[x]g^\prime[x])|_a^b) が 0 でなければならない
    • そのため、定義域を周期 (b-a) を持つ周期関数に制限する
    • 単純化のため、区間は ([0,1]) とする
  • Laplacian の周期固有関数は (e^{2\pi \xi i x}) で、(\xi) は整数である
    • Euler の公式により、sine・cosine の見方と複素指数関数の見方が対応する
    • 固有値は (-(2\pi\xi)^2) である
  • これらの固有関数は ([0,1]) 上で互いに直交し、ノルムは 1 である
    • (\xi_1-\xi_2) が 0 でない整数なら、内積は 0 になる
    • 同じ関数同士の内積は 1 になる
  • Laplacian の正規直交固有基底へ変換することは、Fourier 係数を計算することと同じである
    • (\hat{f}[\xi]=\int_0^1 f[x]e^{-2\pi\xi i x},dx)
    • 逆変換は (f[x]=\sum_{\xi=-\infty}^{\infty}\hat{f}[\xi]e^{2\pi\xi i x})
    • Laplacian 全体は実関数を実関数へ写すが、中間表現は複素数値を取りうる

Fourier series と信号処理への応用

  • Fourier transform は、Laplacian の固有基底へ移す基底変換である
  • (\hat{f}[\xi]) は、関数 (f) が整数周波数 (\xi) の波としてどの程度表現されるかを測る
    • この表現は関数を周波数領域へ移す
  • 正規直交基底なので、Fourier series は係数を再び波と結び付けるだけで容易に逆変換できる
  • ある閾値以上の Fourier 係数を捨てると、関数の滑らかな再構成を作れる
    • この手法はローパスフィルタ(low-pass filter) と呼ばれる
  • 少数の Fourier 係数だけ保存して関数を近似再構成できるため、計算上圧縮に有用である

画像圧縮と球面調和関数

  • Laplacian を定義できる場所では、対応する Fourier transform を見つけられる
  • 2次元では、Laplacian は2階偏微分の和である
    • (\Delta f[x,y]=\frac{\partial^2 f}{\partial x^2}+\frac{\partial^2 f}{\partial y^2})
  • ([0,1]\times[0,1]) では、固有関数は (e^{2\pi i(nx+my)}) の形で、(n,m) は整数である
    • 1D 関数を 1D の波の集まりに分解するように、2D 画像は 2D の波の集まりに分解される
  • 2D Fourier transform の一変種は、JPEG を含む多くの画像圧縮アルゴリズムの中核にある
  • 単位球面でも Laplacian を定義でき、その正規直交固有基底がspherical harmonicsである
    • (Y_\ell^m[\theta,\phi]=N_\ell^mP_\ell^m[\cos[\theta]]e^{im\phi})
    • (\ell\ge0), (m\in[-\ell,\ell])
    • ゲームエンジンでは、diffuse environment map や global illumination probe の圧縮によく使われる
    • spherical harmonics は電子軌道としても見なせ、量子力学は主に線形作用素の固有関数を扱う

幾何処理とさらなる探求

1件のコメント

 
GN⁺ 2023-07-31
Hacker Newsのコメント
  • この記事には2回アップボートしたいくらいで、これまで見た関数解析の基本概念の入門としては最高です
    さらに数学的に深く踏み込んだ良い概説としては、https://arxiv.org/abs/1904.02539 もあります
    このWebサイトが触れていない優れた応用として、Koopman作用素があります。制御理論では、自律ドローン、自動車、ロボットアームのような実システムの多くは扱いにくい非線形ダイナミクスで記述されますが、Koopman作用素は非線形システムに対して大域的に有用な線形近似を与えます
    つまり、非線形システムをかなり高い精度で線形システムのように扱えるため、計算の観点から制御と推定が大幅に単純化されます。このような線形化はデータから学習することもできます
    Steve BruntonのKoopman理論の資料 https://youtube.com/playlist?list=PLMrJAkhIeNNSVXUvppZTYNHKQ...https://arxiv.org/abs/2102.12086 は良く、ソフトロボット制御のような応用もあります https://arxiv.org/abs/1902.02827

    • 最初に思い浮かんだのは、フーリエ変換と概念的に驚くほど似ているという点でした。本当に興味深いので、もう少し掘り下げてみるつもりです
    • Steve Bruntonのコンテンツには本当に感謝しています。修士課程のとき、10年前にこうした資料を見ることができていたなら、この分野に対する彼の情熱と説明の質のおかげで博士課程まで進んでいたかもしれません
      当時は研究費探しに疲れ、また一人で硬い本を読むことになって学界に嫌気が差して離れました
      優れたYouTube教育者たちは大きな未来の機会を生み出しており、最終的には誰もがその恩恵を受けるでしょう。制御理論は複数の分野の間の接点を見せてくれるので、パターンや構造をどこにでも見いだすのが好きな人にとっては大きな楽しみになり得ます。Steveが最近、社会モデルのための制御理論の動画も投稿していたと記憶しています
  • 関数を無限次元の抽象ベクトル空間の元として扱えるという発見は数学史上の転換点であり、これが関数解析という下位分野の誕生につながりました
    この見方の転換の意味は、3次元ユークリッド空間のような有限次元空間の研究から得られた幾何学的直観を、特定の微分方程式の解の存在といった関数に関わる難問へ適用できるようにした点にあります
    この変化の歴史は19世紀末から20世紀初頭にさかのぼり、非常に興味深いものです。当時、数学の公理的基礎づけの作業は、数学的対象の構造を簡潔な公理の一覧で捉え、体系化する流れを生み出していました
    たとえば抽象ベクトル空間の概念もこのように生まれ、ユークリッド空間だけでなく無限次元の関数空間まで包含するようになりました
    この見方の転換を初期の形ながらすでに示している資料として、Vito Volterraの1889年の回想録があります https://projecteuclid.org/journals/acta-mathematica/volume-1...
    Maurice Fréchetの1906年の博士論文 https://zenodo.org/record/1428464/files/article.pdf は、この新しいパラダイムを結晶化し現代的な形で提示したもので、20世紀前半の主要な参考文献となった最も影響力のある仕事の一つと見なせます
    もちろん当時の数多くの研究のうちの二つにすぎず、その後の発展を見るならStefan Banachの1932年の本も外せません http://kielich.amu.edu.pl/Stefan_Banach/pdf/teoria-operacji-...

    • 関数解析をするのに必ずしもベクトル空間である必要まではなく、本当に必要なのは内積だと思います。ただし内積は線形でなければならないので、結局はベクトル空間の中になければならない、という点は認めます
    • ベクトル空間という点が素晴らしくないという意味ではありませんが、関数解析という名前が付いている理由は、さまざまな形の極限、半連続性、空間の完備化などを扱うことができ、それらが良い性質を持つからです
      だから核心は、これらのベクトル空間が実際には位相的であるという点にあると思います
  • この見方はいつもとても気に入っていました。Vito VolterraがMadridで行った微分方程式と積分微分方程式の講義を楽しく読んでいるところですが、彼は同時に関数解析の形成にも貢献しました
    ここで汎関数は双対ベクトルに対応する概念です。Volterraは有限個の変数から無限個、さらには非可算個の変数へ移る類比の方法を繰り返し活用しています
    同じアイデアを繰り返しすぎているのではないかと本人が恐縮している箇所まであるほどです。教える立場の人なら、一緒に一度目を通す価値があります
    https://searchworks.stanford.edu/view/526111

    • Giventalも自身の微分方程式の講義ノートでこの見方を使っています。関数の線形独立性とベクトルの線形独立性の間に断絶を感じる学生には役立つかもしれません
  • このようなインデックス関数をベクトル空間の超限基底として使う例は見たことがない。その関数は基底関数の有限列の極限点というより、ほとんどが 0 の項からなる奇妙な超限和のように見える
    すべての関数に対してフーリエ変換が可能だとは思えない。対角化の方法では有用な結果が得られないことを、簡単に反証できそうだ
    Hilbert 空間でさえ、通常は整数でしか添字付けされない。そのような基底は連続性や微分可能性の条件をまったく与えない
    私が見た関数解析はどれも、何らかの連続性条件と可算基底を使っていた。それ以外の点では、関数を見る非常に有用な視点であり、量子力学の形式を理解するための出発点に近いとは思う

    • この記事で一番気になるのがまさにこの点。直感には役立つが、和の後ろに付いている「...」には数学的な意味がない
      入門レベルで教えられる量子力学でもよくある問題だ。ただ、この記事も入門量子力学の講義のように、関数解析の概念を動機づけることに重点を置いているようで、厳密でなくても説明用としては役に立つ
    • この記事は、複数章からなる本の要約に近い。ある時点で空間を周期関数の部分空間に制限し、基底を Dirac デルタから、周波数 2pi*k/(b-a)、k は自然数であるサイン関数群に置き換えている
      この部分空間のすべての関数はフーリエ変換を持つ
    • 基底であるためには、各要素が有限線形結合で表現されなければならない。もちろん、別種の基底の選び方では可算線形結合を許す概念もある
      この記事はおそらく正当な理由から、関数解析で普通かなり難しい選択である「どのベクトル空間を使うのか」を完全に無視している
      ここでのように関数を点ごとに定義したベクトル空間は、ほとんど常に最も役に立たない選択だ。ただし、テーマの全体像を教えるためのものだったなら、それ自体にはかなり価値がある
      「すべての関数にフーリエ変換が可能なはずがない」という点について言えば、そのような空間では有用な距離の概念すら得にくい
    • 数学者が嫌う奇妙な裏技:選択公理なしで実関数のベクトル空間の基底を作る方法
  • これは関数の実際の定義に関わっている。関数とは、最初の集合のすべての要素が、2 番目の集合のちょうど 1 つの要素へ写る集合間の写像である
    ベクトルを使う方式の問題は、ベクトルが集合ほど一般的ではないため、ベクトルで表現できない関数が存在することだ
    たとえばベクトルは、未定義の値や数値ではない要素を扱うのに使えない

    • 関数も未定義の値は扱えない。関数 f はある集合から別の集合への写像であり、始集合の各要素は終集合のただ 1 つの要素に対応していなければならない
      定義上、始集合のすべての値が終集合の何かに対応していなければならないので、その意味での未定義値はない
      関数空間を常にベクトル空間と見なせない理由は、関数同士の加法の概念やスカラー倍の概念がない場合があり、仮にあっても関数が満たす加法構造とうまく合わない場合があるからだ
    • それは関数の定義というより全単射関数に近い。全単射ではなく、2 つの異なる値へ行き得る単純な例として sqrt(x) がある
  • これは終域がベクトル演算に必要な構造を持つ場合にだけ正しい。関数はベクトルより一般的である

    • その通り。具体的には終域がアーベル群でなければならない。しかもそれだけでは十分ではなく、スカラー体がその終域に適切な性質で作用しなければならない
  • 本当に素晴らしそうで、後でもっと詳しく読んでみたい。一般的な物理学の学位課程なら、おそらくほとんど扱う内容だろう
    それでも良い映画や本のように、概念そのものが興味深いので一度以上見返す価値がある
    プログラマーの立場から見ると、こうした手法の一部はかなりハックのように見える。最初はごく合理的な整数インデックスから始めて、インデックスを一般化できると気づき、本来の意図よりはるかに多くの情報をインデックスに押し込む
    本当に驚くのは、こうした愚かで濫用に見えるアイデアが、後にはいつも洞察に富んだ有用な何かにつながる点だ。少し魔法のようだ

  • Pyro と NumPyro の確率的プログラミング言語で使うために Eli Bingham と一緒に作った Funsor ライブラリを紹介したい
    「関数はテンソルである」という視点を取り入れ、主に確率分布の対数密度関数を対象とする、NumPy のような関数用ライブラリを作ろうとした
    論文: "Functional Tensors for Probabilistic Programming" (2019) https://arxiv.org/abs/1910.10775
    コード: https://github.com/pyro-ppl/funsor

  • この記事は向きが逆なので、悪い直感を与えると思う。関数がベクトル空間をなすようにするのは入力ではなく出力である
    ある集合 X から体 F への関数は、X に順序がなくてもベクトル空間をなすことができる

    • 入力でも出力でもなく、入力を出力へ送る対応、つまり関数そのものだ
  • 追える範囲では非常に興味深い視点だが、残念ながらあまりついていけない
    このような形式論理が、ベクトルを説明する関数を導く助けになるのか気になる
    ビッグデータ解析、たとえばニューラルネットワークの学習における最大の非効率とボトルネックは、依然として期待ベクトルに似た出力を近似する関数を見つける方法に帰着するように思う
    それが記号回帰であれ、多数の変換層であれ同じだ。入力と出力の間の関係を何らかの形で抽出または圧縮せずに、関数としてのベクトルだけに対して演算できるなら「魔法」のようだろう

    • 可能だ。ベクトルにフーリエ変換を適用し、寄与の低い項、つまり周波数を一部捨ててから、残った係数だけを保存できる
      これは本質的に MP3 と JPEG 圧縮の基本アイデアだ。もちろん空間と時間のトレードオフなので、元のベクトルの近似を得るには、まず逆フーリエ変換を適用しなければならない
    • ここで言うベクトルを、R^3 の [x y z] のような具体的な値の集まりとして考えているのかもしれない
      この記事は抽象ベクトル空間、その性質であるベクトル加法やスカラー倍などを扱い、特に関数がその定義を満たして関数のベクトル空間、つまり関数空間を作るという点を述べている
      たとえば 2 つの関数 f, g とスカラー b があれば、次のように扱える
      f + g = g + f
      b(f + g) = bf + bg
      また (-f) が存在して f + (-f) = 0 となり、ここで 0 は零関数であり、関数空間にはこの零関数も存在しなければならない