最小2乗法をブラケットで書いてみよう

これは 数学とコンピュータ Advent Calendar 7日目 の記事です。

僕の専門は物理なのですが、最近は機械学習についても勉強し始めていて、主に黄色い本(PRML)で勉強しています。 みなさんご存知のように機械学習の多くの手法では行列やベクトルによる計算が主になります。 また機械学習のほとんどの本ではその横(行)ベクトルと縦(列)ベクトルを明示的に分けて表記します。

\vec x は横(行)ベクトルで、その転置 \vec {x^T} が縦(列)ベクトルといった感じで転置で縦か横かを表記します。

もちろんその方が正確、かつ適切な表記であるので良いのですが、 ちょっと慣れてないと見づらいのです。特に困るのが \vec{x}  {\vec y}^Tスカラーになるのですが、 \vec {x^T} \vec{y} は行列になってしまうところです。ぱっと見でどちらがどちらになるのかが判別付けづらいです。 毎回嫌になってしまいます。

そこで物理を(量子力学を)学んでいる人にとっては馴染み深いディラックのブラケット記法でこれら縦ベクトルと横ベクトルを表記してしまおうというのが記事の主題です(おそらく物理を学んだ人であれば何度か頭によぎったことはあるかもしれません)。

ディラックのブラケット記法

とはどういう記法なのかというと、量子力学における状態を表す記法でこれを使うと量子力学を書いていくのにめっちゃ便利という記法です。 量子力学は「演算子 \hat H」と量子力学的な状態「ケットベクトル |x\rangle」とそれの共役「ブラベクトル\langle x |」で表記されます。またこれらは(演算子は)行列と(ケットベクトルは)縦(列)ベクトルとして解釈することができます。そのためディラックのブラケット記法を行列計算を行うための記法だと見ても良いだろうというのが発想の元です。

これ以上細かい話は抜きにしてではどうやって上記の縦ベクトル \vec x と横ベクトル \vec {x^T} を表記していくのかを見ていきましょう。

ベクトルの表記

まず縦(列)ベクトルはケットベクトル|x\rangleによって表記します。 \vec x \rightarrow |x\rangle 次に横(行)ベクトルはブラベクトル\langle x |によって表記します。 \vec {x^T} \rightarrow \langle x |

行列の表記

行列には上にハット ^ を付けます。 H \rightarrow \hat H

スカラーはそのままです。

a \rightarrow a

ベクトルの積

この表記のどこが良いかというとベクトルの積を取った時に行列になるのか、スカラーになるのかの判断が見た目でわかりやすいという点があります。

  • スカラーになる積 \vec x \vec {x^T} \rightarrow \langle x || x \rangle = \langle x | x \rangle と書きます。縦棒が2本並んだ時はくっ付けて1本で表記します。
  • 行列になる積 \vec {x^T} \vec x \rightarrow |x \rangle \langle x| と書きます。

見た目でパッと行列かスカラーかわかるではありませんか! 微妙?ですか? いやそんなことはないはず。きっと。もう少しこの表記の説明をします。

ブラケット記法の特徴

行列との積 行列\hat Hは 縦棒の隣にしか置けない

|x\rangle \hat H はダメですが(横(行)ベクトルと行列の積は取れない)。 \hat H |x\rangle は OKです。 行列は「縦棒 | 」にピタっとくっつくイメージで。

また\hat H |x\rangle は右を向いている感じがするので縦(列)ベクトルです。感じとか適当ですが、言わんとしていることをわかってくれると信じています。

逆に\langle x| \hat H は左を向いているので 横(行)ベクトルです。

まあ、あまりどれが縦で横かを意識する必要もないはずですので(意識せずにパッと見で左右のどこに行列やベクトルを演算したら良いかがわかるのがポイントなので)とりあえずどちらかを向いていればベクトルであると考えれば良いかと思います。

ベクトル同士の積 (縦棒とトンガリの位置関係

\langle x | x\rangle, |x\rangle\langle y | はOKです。

また \langle x | y\rangle はトンガリ \langle, \rangle で閉じているのでスカラーです(期待値を\langle E \rangle と書く気持ちだと言えばわかりやすいでしょうか)。

|x \rangle \langle y | は縦棒 | で閉じているので行列です。縦棒 | は行列ともくっ付けますし、他の縦棒 | (ベクトル)ともくっ付けます。縦棒は 他の縦棒と「くっ付き」待ちなのです。

転置

行列は普通に転置の記号を使いましょう。 ベクトルはブラケット記法の定義通りに向きをひっくり返す感じで。 |x\rangle ^T = \langle x | またスカラーの転置も同じようにひっくり返すだけです(スカラーは転置しても同じです)。 またブラとケットで行列を挟んだものはスカラーです(見た目からすぐわかる)。挟んでいる時の転置で行列に転置のマークを付け忘れないように。 \langle x | \hat H |y \rangle = \langle x | \hat H |y \rangle^T = \langle y | \hat H^T | x \rangle

こんな感じで x と yをひっくり返して 行列\hat H に転置をつければOKです。

具体的に計算しないとわからないので計算して見ましょう!

  • ベクトルの表記 まず縦(列)ベクトルはケットベクトル|x\rangleによって表記します。 \vec x \rightarrow |x\rangle 次に横(行)ベクトルはブラベクトル\langle x |によって表記します。 \vec {x^T} \rightarrow \langle x |
  • 行列の表記 行列には上にハット ^ を付けます。 H \rightarrow \hat H
  • スカラーはそのままです a \rightarrow a

を抑えて計算して見ましょう。

最小2乗法を計算してみる。

最小2乗法

データセット が (x1,y1), (x2,y2,), ・・・ という感じで N個ありこのデータセット

y = \sum_{t=0}^k a_t x^t

というk次多項式モデルから説明したい。 そのためにこの多項式とデータセットの誤差の2乗が最小になるようなパラメータa_tを見つけてくるというのが最小2乗法でした。 データセットを次のような行列表記で書くことで行列の線形式に落とすことができます。

f:id:mashiroyuya:20171207155908p:plain:w320

と書くことで誤差関数Eは E = |\vec{y} - X\vec a|^2

とかけます。これを最小化するような \vec a を求めたいというのが問題ですが、ここからブラケット記法で書いていきましょう。誤差関数Eをブラケットで書いて展開すると

f:id:mashiroyuya:20171207155016p:plain:w350

いいですね。スカラー量であることが一目でわかります。

では、これを最小化する |a\rangle を求めましょう。そのために誤差関数の微分を行います。本当は要素ごとに微分をしなければなりませんが、まあざっと微分してみましょう。

\frac{\partial E}{\partial \langle a |} = -2\hat X^T|y\rangle + \hat X^T \hat X |a\rangle

こう書いていいのかという問題がありますが、わかりやすくするためにこう書いておきましょう。

この微分が0になるような |a\rangle = |a_0\rangle が解になります。\hat X^T \hat X逆行列を持てば、 |a_0 \rangle = 2(\hat X^T \hat X)^{-1}\hat X^T |y\rangle と解を求めることができました。

まとめ

どうですかね?僕的にはわかりやすいと思うのですが。
まあこの記法ならではの問題も起きそうですが(というか微分が)。

自分の好きなミスのしにくい方法で勉強していきましょう。

物理の各分野の概要を簡単に紹介して行くよ!! AdventCalendar2017 1日目

この記事はPhysics Advent Calendar 2017 1日目です。

f:id:mashiroyuya:20171201103042p:plain

初日は物理の各分野の紹介を書いていきたいと思います。
読者の想定は最初は一般の方を想定していましたが、書いていたらそうでもない部分もちらほら。なので幅広い人に読んでいただける方思います。

基礎方程式というのが各分野の研究だったり、計算の出発点となる方程式です。各分野での基礎方程式も書ける分は書いておきました。

何か質問だったり指摘のコメントはいつでもTwitterなり、ブログのコメント欄へ

ニュートン力学(古典力学)

古典力学は粒子(質点)の運動を調べる分野。粒子の座標と速度(もしくは運動量)から次の瞬間はどこに行くか(どういう状態になるか)を予測する。

静力学といって物体が動かない(逆にどうやったら力が釣り合って動かないか)という力学もあるが(工学系で主に勉強されるはず)物理ではどちらかというと物体の運動の方に興味があるので動力学を扱う(なので微分方程式と呼ばれる時間が経ったらどう変化するかという方程式が主役になる)。

基礎方程式は ニュートン運動方程式 ma = Fもしくは m \frac{d^2 x}{dt^2} = F

物理のすべての基礎といっても過言ではないのがこの古典力学
第一法則は慣性の法則とされているが、正確には慣性の法則を満たすような見方(座標系)があるということをいっているだろう。

第二法則は運動方程式 [tex:m\frac{d2x}{dt2} = F] であるが、これは系の時間発展を記述する微分方程式である。この方程式に従って物体は運動(時間発展)していくのだ。

第三法則は作用反作用の法則だ。中高生がつまづきやすいところだ(よく釣り合いの法則と勘違いが起こる。とくに重力と垂直抗力については今だに勘違いしている人も多いだろう : 参考 url垂直抗力は重力の反作用じゃないからね! - ましろのログ )。
大学生くらいになると作用反作用の法則は運動量の保存を意味しているということは押さえておこう。こちらが力を作用したら、相手からも作用が返ってくるという法則だが、力 F が運動量の時間変化であること(運動方程式)から運動量保存を意味しているということはわかるはずだ。

解析力学(古典力学)

粒子の状態は座標と速度もしくは運動量を指定すれば決まるのだが、上のニュートン運動方程式は座標変換で形が変わってしまう(極座標とかだと複雑になる)。それを回避するために座標変換をしても(観測者の見方を変えても)変わらない古典力学として作り直されたのがこの解析力学だ。

解析力学では一般座標を用いるため、座標変換を受けても形が変わらず計算するのにめちゃくちゃ便利である。そのため解析力学の手法は古典力学にとどまらず、下記にある量子力学場の理論といった現代の物理学の基礎となっている。

ちなみにニュートン力学を書き換えただけなので解析力学の下の二つの形式はニュートン力学と等価だ。

ラグランジアン形式

粒子の状態を一般座標q(t)と一般速度\dot q(t)で定める。

基礎方程式はオイラーラグランジュ方程式
\frac{d}{dt}\left(\frac{\partial L}{\partial \dot q}\right) = \frac{\partial L}{\partial q}

ハミルトン形式

粒子の状態を一般座標q(t)と一般運動量q(t)で定める。

基礎方程式は正準方程式 \dot q_i = \frac{\partial H}{\partial p_i}, \dot p_i = -\frac{\partial H}{\partial q_i}

電磁気学

電場や磁場といった電気的、磁気的な物理を扱う分野。エレクトロニクスでも重要だし、現代社会を支えている理論の一つ。

基礎方程式はマクスウェル方程式

 \nabla \cdot B = 0
 \nabla \cdot E = \frac{\partial B}{\partial t}
 \nabla \cdot D = \rho
 \nabla \times H = \vec j + \frac{\partial D}{\partial t}

電磁気学は非常に難しい. 大学の最初の電磁気学の講義ではだいたいが上のマクスウェル方程式ではなく、クーロンやらビオサバールから始まるはずだ. それらから電場、磁場の性質、関わり合いを整理していって上記マクスウェル方程式を得る。

電磁気学マクスウェル方程式は物体の運動を記述するのではなく、電場、磁場といった電磁気力を伝える場を導入してそいつらがどう動くかを示している。そのため今までの古典力学とは趣が異なって難しく感じてしまいがちだ。というか難しい。

ちなみにこの電磁気学はその中に特殊相対性理論の構造を含んでいて、特殊相対性理論の誕生のきっかけである。

熱力学

物質を構成している粒子などには着目せず、もっと大きな視点を持った分野である。なので割と身近な現象から色々組み立てていく。そのためこれから紹介する熱力学の法則は一般の人でもそれはそうだ。と思うことが多いと思う。

物体(系)がどのようにエネルギーをやりとりするかなどを調べる分野と言っても良いかもしれない。 一般の人はあまり馴染みがない分野かもしれないが、物理をやっている人にとってはめちゃくちゃ重要な分野だ。ちなみに上で書いた古典力学電磁気学、これから紹介する古典統計力学量子力学の誕生によって変更を受けたが(これは古典が間違っているのではなく、近似的に正しいという意味)、熱力学は未だに変更を受けず厳密に正しい。

熱力学の法則

  • 熱力学第零法則 : 系 A と B, B と C がそれぞれ熱平衡ならば、A と C も熱平衡にある。
  • 熱力学第一法則 : エネルギー保存則
  • 熱力学第二法則 : 低温の物体から高温の物体に熱を移動させることはできない(それ以外変化させずに)。第二法則は色々別な表現がある。エントロピー増大の原理と等価でこれも第二法則。
  • 熱力学第三法則 : 絶対零度 0 K ではエントロピーが0、 ちなみにこの第三法則から現実では0Kに到達することはできないということがわかる。 なかなか強力

熱力学は熱力学の法則から、様々な熱力学量と呼ばれる物理量を計算することで相転移なども議論できる優れものだ。しかしながら粒子などの詳細には立ち入っていないため、力学と理論的に乖離がある。それをつなげるのが次に紹介する統計力学だ。

統計力学

 たくさんの粒子を統計的に扱うことでマクロな量を導く(粒子の詳細の情報と熱力学をつなげる)分野。現代では量子力学がわかっているため、粒子の性質を考えるときに量子力学の性質が必要になってくることが多いため、統計力学をちゃんと学ぶためには量子力学が必要になってくるのだけれども、量子力学の発見のきっかけは統計力学からなので、大学の講義ではどちらかを先にやるとどちらかがちょっと説明しにくくなるようだ。

たくさんの粒子で構成されている系(気体や液体、普通に固体でも良い)の取りうる微視的な状態(この粒子はこっち、あの粒子はこっちに速度はこれくらいで存在するみたいな)を確率的に扱うことで正確な粒子の運動方程式を解かなくてもマクロな量はわかるという風な流れで進めていく。

統計力学の基礎

  • 等重率の原理 : 系の取りうる状態は全て同じ確率で現れる.

この等重率の原理は原理と言っているが実際に本当にそうなっているかを確かめられたわけでななく、多粒子を統計的に扱うための確率モデルに過ぎない。しかし、このモデルから計算されるマクロな量が実験や観測と一致しているので強く支持されているのである。 - 実際に行われる統計力学の出発点は分配関数(Z)の計算だ。 カノニカル分布を学ぶときに出てくる分配関数 (Z = \sum e^{-\beta H})が統計力学の現場ではよく使われる確率モデルだろう。

しかし、先ほども言ったように統計力学は熱力学や実験と矛盾しないマクロな量を作る確率モデルを仮定しているだけなので他にも確率モデルや平衡状態を記述する方法はあるはずだ。

量子力学

やっとたどり着いた量子力学。 - 基礎方程式は シュレディンガー方程式
 i\hbar \frac{\partial }{\partial t}|\psi\rangle = \hat H |\psi\rangle

  • 実は粒子(物体)は確率的にしか次にどこにいくかなどを予言できないという、全然直感から外れた分野である。
  • 有名なのがシュレディンガーの猫で生きている状態と死んでいる状態の重ね合わせが許されるってやつだ。
  • 粒子は波でもあるということが量子力学の主張。
  • さらに、数学的に扱うには物理量が状態ベクトルに作用する演算子になるのだ!
  • その演算子代数的構造は交換関係によって定められる。
  • 最初に習うのは正準交換関係 [\hat x , \hat p ] = i\hbar

流体力学

流体(液体や気体)を扱う分野。工学的には天気予報だったり、自動車の設計だったりで使われる。

正直僕は流体力学をちゃんと学んだことがないのであまりわかりません。左辺の第二項が可愛いことはわかります。

相対性理論

かの有名なアインシュタインが構築した理論。観測者が違う状況(片方は動いていて片方は動いていないなど)からお互いを見たらどうなるか?というところから時空の歪みまでを扱う。

特殊と一般があるが特殊の方が簡単。数学や科学において大体「一般」は難しい。
「一般」の意味は「普通」ではなくて「汎用的」、「どんな状況においても」という意味で用いられる。

  • 特殊相対性理論は観測者が一定の速度で動いているときのみを扱うので「特殊(限られた状況)」
  • 一般相対性理論は観測者が加速していても良い(一定の速度でなくて良い)ので「一般」

つまり一般相対性理論特殊相対性理論を含む。

特殊相対性理論

基礎方程式はなんだろう。4次元化した古典力学運動方程式とかになるのかな。

理論の基礎となる原理は以下である。

  • 光速度不変の原理:真空における光の速度 c はどの慣性座標系でも同一である
  • 相対性原理:全ての慣性座標系が等価であること

上記の2つの原理で物理を再構成する。光速度不変のせいで今までのような時間の概念ではなく時間も含めた4次元時空で物理を考えなくてはならなくなった。そのため古典力学を記述してた3次元ベクトルというのは4次元に拡張され, 空間はミンコフスキー空間というところが力学を記述する数学の舞台となり色々変わってしまったのである。
しかし、特殊相対性理論の入り自体は高校数学でわかる(三角関数など)にもかかわらず、特殊相対性理論という名前がカッコイイので一般の人もよく勉強しているようだ。僕もカッコイイという理由で勉強した。なのでまだ勉強したことない人も勉強してみるのをオススメする。

アインシュタインの関係式 E = mc2

多分物理で一番有名な方程式がこの特殊相対性理論で出てくる E = mc2 だ。 しかしこれは物体が動いていないという条件の元の方程式でちゃんと書くとすると
E2 = (mc2)2 + (pc)2
となる。

一般相対性理論

観測者が加速している状況を記述していると書いたが、物理的には時空の歪みやそれによる重力を記述する分野。最近ではアインシュタイン方程式から予言される「重力波」が見つかり実験的にも大きな証拠が揃いつつある。
しかし重力があまりにも難しく他の理論との統合がうまくいっていない。

理論の基礎となる原理は以下だ。

  • 一般相対性原理 : 物理学の法則は、任意の仕方で運動している座標系に関していつも成立する。
  • 等価原理 : 慣性質量と重力質量が同一である。 原理が上記であっているのだろうか。とりあえず僕が知っているのは上の二つだ。

一度勉強した時はテンソルの足がたくさんあるし、計算は面倒だしですごい大変だった記憶が鮮明に残っている。

場の量子論

多粒子の量子力学を扱うために電磁場のような場という概念を導入してそれを中心に理論を展開する。
場の量子論では全ての物体が場として扱われるので電子なども粒子ではなく、場になる。電子の場はこの宇宙全てに詰まっていてその場が励起(絨毯が敷かれてあって一部だけ盛り上がっているイメージ)することでそこに電子という粒子が存在すると観測されると考える。

素粒子物理学と物性物理学

素粒子物理学

物性物理学

  • 物性物理学は固体や液体など多粒子からなる系の振る舞いなどについて解析していく学問。
  • 僕たちの身の回りにある物体は原子からできており、物体ごとに存在する特殊な振る舞いなどは大体が電子と電子の相互作用によって発生していることが多いので、電子の多体系について学ぶというイメージを僕は持っている。

まとめ・初日の感想

思いつくままにガンガン書き進めてしまい、量が多くなりすぎてしまった。この記事はこれからも読者の意見を反映したらり、自分で修正を行ったりでメンテナンスしながら完成に近づけていければ良いかなと思う。
本当の理想はあまり物理を知らない、もしくは物理を学びたてという人向けに物理の各分野の概要を知れるような記事にしたかったのだがそれはこれからそういう風になるように修正していければ良いかな。
けれども書いていて自分の物理の各分野に対する簡単な復習的な感じにもなったし、よかった。

というか物理アドベントカレンダー参加者少なすぎる。もっといろんな人の物理を見て見たいのだが。

キャンドゥの100円スタイラスペンは3000円の価値はあるぞ

僕のiPadはProではなく. Air2です.

なのでApplePencilがつかえないのでいつも、同じ研究室だったり友人がiPadProでメモをとっているのを羨ましくみているだけでした。しかしApplePencilではなくても巷にはいろいろスタイラスペンはあるようで今回は百均のペンとちょっと高級な3000円のペンを購入して実際3週間ほど使ってみたレビュー記事です。

そこで百均のスタイラスペンが予想以上によかったので、ちょっと高級スタイラスペン(3000円)と比べながら書いていきます。

続きを読む

Julia の 無名関数をつなげて使う

Juliaで無名関数が使える

input

fnc = x -> x + 2
fnc(2)

output

4

無名関数をつなげて使う

この無名関数を連続して使うことができる. これが僕にとっては変な感じだった(たぶん無名関数を良く理解していないせい).

続きを読む

Juliaをインストールして JupyterNotebookで使う

julia install

juliaをMacにhomebrewを使ってインストールし、 JupyterNotebookで使えるようにするまでの手順を紹介.

続きを読む

【快適Mac設定】Macでデスクトップ切り替えができない? 設定の仕方

今回はMacのデスクトップ切り替えのショートカットキーの設定と、それを使ったMacの便利設定・使い方を紹介したいと思います。
丁寧に書いているので少し長いですが、設定自体はすぐに終わるので是非参考にして設定して見てください。

  • 複数デスクトップとその切り替え
  • ショートカットキー使えないんだけど
    • 新しく追加したデスクトップには設定が必要
  • このデスクトップ切り替えをどう役に立てる?
    • 設定の仕方
    • Mac のデスクトップを動かないようにしておこう
続きを読む