Beyond the State-of-the-Art

最先端を超えたいと思ってる(大嘘)エンジニアのブログ

Sine-Square DeformationとCFT

『数理物理 Advent Calendar 2018』22日目の記事です。 adventar.org 昨日に公開しないといけませんでしたが、遅れて今日公開となりました。

概要

Sine-square deformation (SSD) *1 とは、モデルのエネルギースケールをsin関数の2乗に従って端へ行くほど小さくしていく変形のことです。ある種の1次元量子系に対してSSDを施した場合、SSDのモデルの基底状態は、元のモデルで周期的境界条件を課した場合の基底状態に一致します。この一致性はCFTで説明されます。本記事では、SSDとCFTの関係性を簡単に紹介したいと思います。

Sine-Square Deformation

SSDがどのような変形なのかを説明します。tight-bindingモデルから始めます。サイト数をNとしてハミルトニアンを書くと、

 \displaystyle \mathcal{H}=-t \sum _ {j=1} ^ {N} ( c _ {j} ^ {\dagger} c _ {j+1} + c _ {j+1} ^ {\dagger} c _ {j} ) - \mu \sum _ {j=1} ^ {N} c _ {j} ^ {\dagger} c _ {j}

となります。ただし周期的境界条件

 c _ {N+1} = c _ 1, \; c _ {N+1}  ^ {\dagger} = c _ 1  ^ {\dagger}

を課しています。SSDでは次のように変形します。

 \displaystyle \mathcal{H}=-t \sum _ {j=1} ^ {N} \sin ^ 2 \left( \frac{\pi j}{N} \right) ( c _ {j} ^ {\dagger} c _ {j+1} + c _ {j+1} ^ {\dagger} c _ {j} ) - \mu \sum _ {j=1} ^ {N} \sin ^ 2 \left( \frac{\pi (j - 1/2)}{N} \right) c _ {j} ^ {\dagger} c _ {j}

今度はこれを様々なモデルに一般化した形に書き換えます。

 \displaystyle \mathcal{H}= \sum _ {j=1} ^ {N} f _  {j + 1/2} h _ {j, j+1} + \sum _ {j=1} ^ {N} f _ {j} h _ {j}

ここで  \displaystyle f _ {j} = \sin ^ 2 \left( \frac{\pi (j - 1/2)}{N} \right) です。

tight-binding モデルの場合は、

 \displaystyle h _ {j,j+1} = -t ( c _ {j} ^ {\dagger} c _ {j+1} + c _ {j+1} ^ {\dagger} c _ {j} ), \; h _ {j} =
 - \mu c _ {j} ^ {\dagger} c _ {j}

です。

この一般化したハミルトニアンを念頭において、CFTの話に移ろうと思います。CFTの話では連続系の話になるので、総和が積分になることに注意してください。

SSDとCFT

CFTとの関係性*2を駆け足で述べます。CFTについてはある程度既知であるものとして、話を進めます。

ここでは周長lの無限の長さのシリンダー上のCFTを考えます。ハミルトニアン

 \displaystyle \mathcal{H} _ {0} = \int _ {0} ^ {l} \frac{dx}{2\pi} ( T _ {cyl} (w) + \bar{T} _ {cyl} (\bar{w}) )

です。ここで、 w = \tau + ixで、 T _ {cyl} (w) はエネルギー運動量テンソルである。 conformal mapping

 w = \tau + ix = \frac{l}{2\pi} \log z

を使うと、

 \displaystyle T _ {cyl} (w) =  \left( \frac{2\pi}{l} \right) ^ {2} \left( T(z) z ^ 2 - \frac{c}{24} \right )

と表せる。T(z)は次のようにモード展開できて、

 \displaystyle T(z) = \sum _ { n \in \mathbb{Z} } z ^ {-n-2} L _ {n}

展開係数  L _ {n} はVirasoro代数の関係式

 \displaystyle [ L _ m , L _ n ] =  (m + n) L _ {m-n} + \frac{c}{12} ( m ^ 3 - m) \delta _ {m+n, 0}

を満たします。

 L _ {n}を使ってハミルトニアンを書き換えることができて、

 \displaystyle \mathcal {H} _ 0 = \frac{2\pi}{l} (L _ 0 + \bar{L} _ 0) - \frac{\pi c}{6 \pi}

の書けます。基底状態 | \mathrm{vac} \rangle = | 0 \rangle \otimes | \bar{0} \rangle です。

ここからSSDの話に移ります。SSDハミルトニアンを得るために、次のchiralハミルトニアンを導入します。

 \displaystyle \mathcal{H} _ {\pm} = \int _ {0} ^ {l} \frac{dx}{2\pi} ( e ^ {\pm \delta w} T _ {cyl} (w) + e ^ {\mp \delta \bar{w}} \bar{T} _ {cyl} (\bar{w}) )

ここで\delta=2\pi / lです。これを用いると、SSDハミルトニアン

 \displaystyle \mathcal{H} _ {\mathrm{SSD}} = \frac{1}{2} \mathcal{H} _ {0} - \frac{1}{4} (\mathcal{H} _ {+} + \mathcal{H} _ {-} )

で得られます。chiralハミルトニアンはVirasoro代数を使うと、

 \displaystyle  \mathcal{H} _ {\pm} = \frac{2\pi}{l} (L _ {\pm 1} + \bar{L} _ {\mp 1} )

と表せます。これを利用すると、元のハミルトニアン基底状態 | \mathrm{vac} \rangleSSDハミルトニアン基底状態であることがわかります。

駆け足で述べたので、いろいろ話を端折ってます。詳しい話は脚注の原論文で確認してください。

For Further Reading

SSD考案者の1人である西野友年氏*3のWebサイトにSSDに関する文献のリストがまとまられていますので、そちらを見ると参考になると思います。

Sine Square Deformation

今年の6月にSSDの研究会が開かれたようです。

Workshop on Sine square deformation and related topics | iTHEMS

おまけ

ここで自分の大学院時代の研究についてさらっと触れておきます。 論文は

[1412.3053] Bulk Property on Cayley Tree with Smooth Boundary Condition

です。査読は通らなかったですけどね。

SSDをCayley Tree上のモデルに適用して基底状態の物理量を計算すると、Bethe格子(Cayley Treeの無限格子版)の基底状態の物理量の近似値が得られる、ということを数値的に示しました。

Qiitaにクソ記事を載せたことに対する反省

つい最近、Qiitaにクソ記事を投稿しました。 qiita.com

この記事はQiitaのとある炎上記事に便乗して書いたものです。 早く公開することを考えて、薬にも毒にもならない薄い内容の記事になりました。

記事のクオリティ自体は大変お粗末なものでしたが、便乗したおかげで、いままで書いた記事よりも多くいいねが貰え、Qiitaの1日のトレンドにも掲載されました。コメントでは古代言語に関する情報を仕入れることもでき、個人的には満足できる結果でした。

ただ一方で

で書かれているように、真面目に技術記事を探している方々に対してノイズになってしまいました。 これについては大変申し訳ないと思っています。

Qiitaはプログラミングの知見を共有する場所であって欲しいと思ってますし、かつてトレンドに自己啓発的な記事ばかりが載っていたときはトレンドに辟易していました。なので、今後はQiitaの健全化のためにも、前回のようなふざけた記事は書かないようにし、これまで通り細細と技術的な記事を書いていきたいと思います。

最近はElixirに興味があるので、それ関係の記事を増やしていきたいなと思います。

気になったビジネスニュース 2018-10-18

セプテーニ、専門のクリエイティブ研究チーム「TikTok LAB」を設立

rtbsquare.ciao.jp TikTokの注目度が高まっていますね。TikTok専門の広告クリエイティブ研究チームが設立されているということは、それだけ市場価値の成長が見込めるアプリなんですかね。

サイバーエージェント、アニメレーベル「CAAnimation」の設立について

rtbsquare.ciao.jp サイバーエージェントがアニメ制作レーベルを設立とのこと。CygameとかAbemaTVとかと連携して、サブカル・エンタメのエコシステムを構築しようとしてるんですかね。

Deep Learningをゼロから作ることにした(その2)

下記の本の勉強の続きです。今回は3章をフォローしたので、所感などを書きます。

3章 ニューラルネットワーク

2章でやったパーセプトロンからニューラルネットワークに移行するスタイルで書かれています。

実装するニューラルネットワークは3層のもので、移行のところでシグモイドやReLU等の活性化関数の導入がありました。 出力層の設計のところでsoftmax関数の導入がありました。softmax関数はn次元ベクトルからn次元ベクトルへの関数で、関数の値のk成分は

  \displaystyle f(\mathbf{x})_{k} = \frac{ \exp (x_k) }{ \sum_{i=1}^{N} \exp (x_k) }

で定義されます。ただし、この定義をそのまま使うとオーバーフローしやすくなるので、

  \displaystyle \frac{ \exp (x_k) }{ \sum_{i=1}^{N} \exp (x_k) } = \frac{ \exp (x_k + C) }{ \sum_{i=1}^{N} \exp (x_k + C) }

という関係式(Cは任意の定数)を使って、オーバーフロー対策をするという話が少し面白かったです。この関係式の証明は簡単にできます。

ニューラルネットワークの実装は、Numpyのおかげでスッキリと書けたのが良かったですね。

章の最後は、MNISTのデータと学習済みモデルを使って、実際に文字画像認識するという内容でした。データとモデルの準備は、オライリージャパンのGitHubリポジトリにあるPythonスクリプトで行うようになってました。deep learning以外のことに紙面を割くのは教育的ではないので、データとモデルの準備のコードの説明がなかったのは仕方ないとは思いますが、「ゼロから作る〜」というタイトルと乖離している印象を受けて少し残念に思いました。個人的には本書だけで完結する形式が望ましかったですね。

次章

次章ではニューラルネットワークで実際に学習を行います。

Deep Learningをゼロから作ることにした(その1)

最近Kerasを使って試しにLSTMでcos曲線を予測するというのをやってみたのですが、deep learningについては雲を掴むような感じで何もわかりませんでした。 そこで、deep learningの原理から実装までをひと通り知るために、次の本を読みながらdeep learningを実装することにしました。

このシリーズ記事では上の本で勉強した事について適当に書こうと思います。今回は1〜2章について書きます。

1章 Python入門

Pythonは普段からよく触っているので、基本的に軽く目を通しただけです。Numpyに慣れていないので、Numpyのところを重点的に読みました。ブロードキャストの有効活用例はいまいちイメージできないですね。Numpy配列のflattenメソッドは便利そうだなと思いました。

2章 パーセプトロン

ニューラルネットワークの前身?であるパーセプトロンについて。AND・NAND・ORといった単純な論理回路パーセプトロンで表現。実装例を見ると、Numpyのelement-wise productは便利だなと思いました。

本章では線形分離性について説明されていて、XORは単一のパーセプトロンで表現できず、AND・NAND・ORを使って多層のパーセプトロンで表現できることが書かれていました。多層パーセプトロンを表す図がニューラルネットっぽい図だと思いました。

次章

次章はニューラルネットワーク入門。