ディープ ラーニング と 物理 学。 ディープラーニングの実用例|株式会社インキュビット

『ディープラーニングと物理学 原理がわかる、応用ができる』(田中 章詞,富谷 昭夫,橋本 幸士)|講談社BOOK倶楽部

ディープ ラーニング と 物理 学

TL;DR• reference が充実している点、3,4章のブラケット記法の導入、5章のサンプリングの説明、は良かった• 7章以降の物理への応用に関しては、お話的な内容だったりどのくらい嬉しいことなのかぱっと見で判断できないものも多かった• 物理の言葉や例で説明されている部分も多く、物理を学んでいる(た)人がディープラーニングを学ぶときに読んでみる本、という印象 理論物理の研究者が書いた「ディープラーニングと物理学」が出版されたという話を目にしたので、一通り読んでみた。 出版されたという話を目にしてからちょっとググってみた感じ、「なぜか」評判が良さそうなので気になっていた。 ここで「なぜか」と書いているのは、自分の理解では物理の人々が参戦した結果としてディープラーニングの理論的理解が飛躍的に進んだという認識はまだない(ので他の分野の人では理解できない真髄を垣間見れるとかはない)し、一方で物理的な解釈を受け入れるにはやはり物理のトレーニングをしていないと難しい(ので色んな人に広く役立つものではないだろう)、と勝手に思っていたためである。 何にせよ自分で読んでみないことには内容がよく分からないので、一通り読んでみた。 印象に残ったところを雑多な感じで書いておく。 reference が充実している reference が結構充実しているなと思った。 この辺はさすがに研究者という感じで、異なる分野においても色々な話題についてよく調べて、それらについてちゃんと言及しているという印象。 一例だけど、ResNet の話を持ち出すときに、skip connection の可能性により早く言及しているものとして Higyway Network の話とその表式に言及していたりする。 こういうのはそれで本の中身自体が分かりやすくなるという類のものではないけど、その気になれば読者が原典を追えるようになるし、何より著者がちゃんと調べてるのが伝わって本の信頼度が上がるので良いよね。 ブラケット記法は便利なのでみんなも使おう ブラケット記法を導入しているのも良い。 これは純粋に記法の話なんだけど、式の見通しがよくなることも多いので是非広まって欲しい。 物理の人は量子力学で慣れているというバイアスもあるとは思うけど、これはちょっと慣れさえすれば誰でも便利に使えるものだとは思うので。 せっかくなのでブラケット記法について少し解説しておこう。 まずブラケットってなんだよというと bracket 括弧 のことであり、ペアで使う括弧 を二つに分けて bra ベクトル や ket ベクトル のように書くものである。 ブラケット記法は bra-ket nottation と書かれて bracket の c は使われてないので綴りは間違いがち。 本来的にはベクトル空間 の元となるベクトルを ket ベクトル で書くことにして、その双対空間 の元となるベクトルを bra ベクトル で書くことにする、というものである。 基底に依らないとか連続の場合も同じように書けるとか色々ありがたい点があるのだが、ここではごく一部だけを切り出して説明してみる。 以降では双対空間とかは忘れてしまって、さらに実数だけを考えることにして、ベクトルと言うときには機械学習で普通にベクトルと言ったときのベクトルだと思っておくようにする。 ある次元を持った列ベクトル を と書くことにして、行ベクトルというときの を と書くことにする。 内積は以下のように書けることになる。 真面目に基底のことを考えてみると、正規直交基底を考えれば以下のようになる。 ということで基底に依らないことも分かる。 基底とかなんとか小難しいこと言うな、という人はとにかく普通のベクトルを表していると思っとけばまあよい。 添字を陽に書くと busy になったりしがちで、ベクトル表記は矢印とか転置記号とかごちゃごちゃしがちだが、ブラケット記法は見た目が分かりやすい(単に慣れているだけ、という説もある)。 間に何か変換行列 が挟まる場合は以下のようになる。 一般に添字の a,i は異なる範囲を走ってよい、これは変換行列で次元が変わると言ってるだけで機械学習ではしょっちゅう遭遇するケースである。 ここで、間の変換行列 M を演算子として真面目に考えておく。 まず、恒等演算子は以下のように書ける。 は単位ベクトルのテンソル積 である。 左もしくは右から もしくは を掛けてクロネッカーのデルタを処理すれば、それぞれ と が得られるのでこれはいいだろう。 これで を以下のように書けば、成分が ブラとケットで挟んでいれば内積でスカラーになっている の行列であることが分かる。 ちょっと式が見慣れないかもしれないが、これも普通の行列と思っとけばいいです、という話。 これからも分かるように はケットベクトルに作用していると見ることもできるし、ブラベクトルに作用していると見ることもできる。 この性質は、同じ演算でも、順伝播の方向に作用させて進んでいくと考えたり、逆伝播の方向に作用させて進んでいくと考えたりできるので、ディープラーニングにはなかなか適している。 これで最低限の準備は整ったので、もう少し具体的な例を考えてみる。 ただし は何番目のデータかを示す index として、これで最小二乗法の計算をしていくとする。 重み行列 を掛けた を出力として、これと教師データ の差分を取って全データの和を取ったものが二乗誤差である。 あとはこれを に関して変分を取って 0 としたもの を解けばよい。 グッと計算すると以下を得る。 これで重み行列の各成分が満たすべき式が導出された。 データ次元の方向も要素を並べて行列演算で計算するようにすれば、よく見る表式へと書き直すことができる。 ぶっちゃけここまででは全然便利な感じがしないし複雑なだけなのでは?と思いたくなるが、先ほども少し述べたように誤差逆伝播法とかにこの記法を適用することで見通しが良くなることが分かる。 演算子の数が増えるとき(多層になるとき)にケットベクトルに作用すると考えてもよいしブラベクトルに作用すると考えてもよいので、そこで順伝播と逆伝播を見通しよく扱うことができるのである。 この辺りが書籍で解説されている内容なので追ってみてほしい。 結構長くなってしまったので、これくらいにしておく。 冒頭で便利だからみんなも使おうと書いたが、こうして紹介してみるとまあまあ難しい感じがするな。 書籍で初めてこの記法に出会ったという人、どう感じたか興味があるので感想を聞かせてください。 第5章はよく整理されていて解説も良かった サンプリングのところは 30 ページ程度の分量でありながら内容も充実しているし解説も明瞭簡潔でよく書けていると感じた。 物理でも MCMC はよく使われているので、詳細釣り合いの理論的な話とかいくつかの典型的なサンプリング手法の解説とかが洗練されていて、理解しやすかった。 マルコフ連鎖の導入として天気模型で説明して遷移行列の固有値の話(ペロン・フロベニウスの定理)をするとかも、シンプルだし肝となる部分も伝わるのでいいなと思った。 イジング模型の話は物理やってないと何だそれとはなると思うが、それを無視してもこの章はサンプリングの話をよく知らないという人が読んでためになりそうだ。 WGAN の双対性の部分の記述は物理的で小気味好いが WGAN の説明は物理の人が慣れ親しんでいる感じの話の展開で読んでて気持ちがいい。 輸送コストエネルギーの期待値を「内部エネルギー」だと思って、ルジャンドル変換で「ヘルムホルツの自由エネルギー」に対象を移してゼロ温度極限を取ることで Kantrovich-Rubinstein duality の話に繋げるところは、おぉ〜って感じだった。 逆に言えば、物理をやってないといきなり熱力学でもそうだよね的な話がなされて置いてけぼりではある。 物理で最も重要な概念であるエネルギー、すわなちハミルトニアンを学んでいれば、読み進めることができるようになっています。 何を以って学ぶとするかとかは意見が色々あると思うのでいいとして、少なくとも解説としては物理を結構やっていないと何が言いたいか分からない部分も少なくないと思う。 さらに言えば、解説というよりは物理における対応物はこれです、という話なので、物理をやってない人は「よく分からないけど物理をやれば機械学習が深く理解できるのか!」と勘違いしないように気をつけた方がいいかもしれない。 我々は我々が慣れている言葉で理解しているに過ぎない(もちろん色々役に立つ考え方とかはあるが、それはきっとどの分野にもあるものだろう)。 ということで、自分が勝手に物理やってない人にも役に立つ本だと期待しただけで、そうではなく物理を既にやっていてそこからディープラーニングを学びたいという人のみを対象にしている本だ、ということなのだろう。 いやいやそんなことない、物理やってないけど物理の言葉で書かれてる部分もためになったぞという人がいたら興味深いのでぜひ教えてください。 第II部は色んな要素があってよく分からない 物理学への応用と展開ということなのでツールとしてディープラーニングを使うという話なのだと思うが、アトラクターとかテンソルネットワークとかの話はほとんどコラム的なお話で今後の可能性に期待という感じで、一方で実際にディープラーニングを使ったものはちょろとした説明と結果が載っているという感じ。 なんか物理で関連付きそうとか試せそうというトピックをつまみ食いしました、みたいな感じがしてしまって自分としてはあまり印象が良くないのだが、どうなんだろう。 自分が分かる範囲で調べたところ、相の検出とか量子多体系を解くとかはかなり有効に使われているようだ。 物性系で複雑な対象で相を同定するとか波動関数を求めるとかはかなり難しい問題だが、論文を軽く眺めたりした感じかなり強力なようだ。 ツールとして使いましたという話ではあるが、得られた発見から理論が進むことも大いに期待できるだろうし、こういうのは良いと思う。 ても本を読むだけではとりあえず適用しましたみたいに見えるので、上述のお話的な要素を削ってこの辺の事情とか意義とかをちゃんとプロとして語ってもらいたかったなぁという感じはする。 ちなみに第12章は自分には判断できないので、詳しい人に教えてもらいたい。 ホログラフィック原理が素晴らしい発明であることはある程度知ってはいるが、ホログラフィックQCDのセットアップでバルクのメトリックを求めることが物理的にどれくらい嬉しいことなのか分からない。 逆問題として定式化して解けるのは分かるんだが。 自分が現象論寄りだからか、ハドロンのスペクトルとか QGP の shear viscosity とか言われるとまだ理解しやすいのだが、バルクのメトリックを数値的に求めたというのはどういう嬉しさがあるのだろうか。 この章はディープラーニングを使うための前準備も明らかに他の章よりも力を入れてる(とはいえついていくのは厳しい)ので目玉の章なのかと思うが、結果の部分はそれっぽいことが書いてあったり量子重力に言及するだけだったりして前準備と比べて十分になされてない感じがするのが気になる。 まあこれは論文を読めということなのだろう。 ソースコードが公開されてないのは明らかにいただけない。 コードによる実装はライブラリ依存になるので取り扱わない という謎の注釈があるが、PyTorch なら PyTorch に慣れてる人がすぐに試せるし、他のライブラリに再実装して試してくれる人もいるかもしれないので、公開しない理由はよく分からない。 この本に限らず物理界隈ではよくある話で、これまでそういうことがなされない文化だったというのは分かるが、せっかく機械学習の手法を導入したのにソースコードを共有するやり方は導入しないのは良くないよなぁと思う。 まとめ 「ディープラーニングと物理学」という本を読んだ。 ブラケット記法とかサンプリングの章とかは物理やっていない人にも有用だと思うのでオススメできそう。 自分が期待したものよりは表面的で、物理を学んでいる(た)人がディープラーニングを学びたいときに読んでみる本、という感じだった。

次の

『ディープラーニングと物理学 原理がわかる、応用ができる』(田中 章詞,富谷 昭夫,橋本 幸士)|講談社BOOK倶楽部

ディープ ラーニング と 物理 学

ディープラーニング(深層学習)の進歩は著しく、現在の人工知能の発展を牽引しています。 ディープラーニングは、2012年くらいでは専門家でないと扱うのが難しかったのですが、 現在では裾野が広がり、 フレームワークやライブラリを組み合わせることで、比較的スムーズに実装することができます。 そういった中で、ディープラーニングを実装してみて、 独自データを使い、学習させてみたものの、• あまりうまくいかないなぁ といった経験をされた方もおられるのではないでしょうか。 また、うまくいったとしても、• さらに良くするにはどうすればいいだろう という方も多いかと思います。 より良い性能を出すために必要なのは、• ディープラーニングを「原理から理解」しておくこと が重要になります。 ディープラーニングの原理を理解するには、• 詳細な解説書を読む• フレームワークやライブラリを使わずに実装する などの方法がありますが、 前提となっている「 数学力が重要」になります。 数学が重要なのはわかってるよ〜• 数学といっても、どんな分野を学べばいいの?• ディープラーニングのために効率的に数学を学ぶには? と思われる方も多いかと思います。 そこで本記事では、 ディープラーニングを原理から理解するための数学について、より小分けにして説明し、 あなたにとって、• 必要な部分をサクッと学べる• どこを集中的に勉強すればいいか• 苦手部分を克服するには何を学べばいいか といった、より必要な数学の部分について、 おすすめの本や参考書などをご紹介します。 本記事の概要• 「ディープラーニング」で必要な「数学」の分野と、そのポイントをまとめました(関数・微分・積分編) ディープラーニングで必要となる数学は、 大きく分けると3分野になります。 1 , 微分積分 2 , ベクトル・行列(線形代数) 3 , 確率・統計 これらについて、サクッと復習するには、 全体をまんべんなくやるだけでなく、 重要な部分を理解した上で、内容を絞ってメリハリをつけてやるのもオススメです。 そこで 1 , 微分・積分 2 , ベクトル・行列 3 , 確率・統計 の3分野のそれぞれについて、• 数学のある分野が、ディープラーニングのどの部分で重要か という対応関係を理解することで、勉強が加速されるかと思います。 それらの部分を重点的に復習することで、 より効率的に深層学習の数学力を高めることができます。 1 , ディープラーニングと関数・微分・積分 ディープラーニングの理解には、 微分・積分では、特に重要となるのは、以下の部分になります。 「関数の極大や極小」の扱い方• 「関数の合成」や「合成関数の微分」• 「指数関数」や「対数関数」の微分• 「多変数関数」の扱い方 それぞれ苦手なところがあれば、 この順に学んでいくのがオススメです。 「関数の極大・極小」を求めるために微分を理解する ディープラーニング(教師あり学習)では、 「損失関数」を定義して、それを最小化(最大化)する計算を行っています。 「損失」とは、現在の学習状況と、正解データからの状況と比べて、その違いの度合いを定義したものです。 正解との違い(損失)が少なくなれば、ニューラルネットワークがうまく学習したことになります。 この損失関数を小さくする、すなわち最小値を求める計算が行われているわけです。 損失は数学的には関数で表現するので、損失関数と言われます。 関数の最小値を求めるには、• 関数の極小値を求める考え方 を理解しておく必要があります。 最小値と極小値は少し意味が違いますが、ここでは同じ意味と考えてもらって大丈夫です。 (ちなみに、関数の極大・極小は、ディープラーニングにかかわらず、 他の機械学習などでも重要ですので、学んでおいて損はないかと思います。 ) 学ぶ順番ですが、 関数の極大・極小って何?って方は、 まず、関数の考え方になじむのがオススメです。 2次関数よりも複雑な3次関数などの極大・極小の考え方を学ぶことができます。 関数の増減表などの書き方や、微分との関係を理解しておくことが重要です。 関数の極大・極小って、こういう風に考えるんだ というイメージをつかめるかと思います。 「関数の合成」や「合成関数の微分」の理解をする ディープラーニングでは、合成関数や合成関数の微分が使われています。 「 合成関数」とは、関数を合成する、ということですが、具体的に説明しますね。 具体的には、関数1と関数2があるとして、関数1と関数2の合成関数を考えます。 普通の関数では、• 関数1の入力は、関数1の出力を出す• 関数2の入力は、関数2の出力を出す と考えます。 合成関数では、 関数1の入力による関数1の出力を、関数2の入力にして、関数2の出力を得る といった考え方になります。 合成関数では、• 複数の関数の入力と出力がくっついたもの というイメージになります。 ディープラーニングにおいて「 合成関数」が使われる例としては、神経細胞のモデルがあります。 「 神経細胞のモデル」である(ディープラーニングの)それぞれの「 ノード」は、以下の2段階でモデル化されています。 1 , ある神経細胞では、他の神経細胞からきた情報は、重要なものをより重視しながら、全部考慮して、結果を出す、と考えます。 入力と出力の関係を関数として表現します。 (関数1) 2 , 他の神経細胞からの情報によって、その神経細胞が興奮するか・そのままか、の反応が決まります。 興奮したら信号を他の神経細胞に伝えます。 活性化関数の結果が、ノードの出力として、興奮したか・しなかったかの反応として出されます(関数2)。 1 , 2 のプロセスは、関数1、関数2の合成として数式化することができます。 神経細胞は、合成関数の考え方を使ってモデル化されているわけです。 それが次の指数関数などと関係してきます。 「指数関数」や「対数関数」の微分 指数というのは、同じものをかけ算するときに、使う記号のことです。 同じものを何回かけ算したか を表す数字になっています。 この「何回かけたか」の指数部分が変化する関数を指数関数と呼んでいます。 指数関数はディープラーニングだけでなく、統計や機械学習全般で重要です。 ディープラーニングでは、神経細胞のモデルであるノードの興奮と非興奮を判断する活性化関数がありますが、 活性化関数として使われる関数の1つに、• シグモイド関数 があります。 これは分数の形をしているのですが、 分母に指数関数を含んでいます。 なので、シグモイド関数の微分を考えるときなど、指数関数の微分も理解しておく必要があります。 また、ディープラーニングでは、対数関数も使われています。 例えば• 交差エントロピー で使われていて、ディープラーニングでの損失関数の1つとして活用されています。 損失関数なので、最小値を求める必要がありますが、 そのため、対数関数を含む交差エントロピー式を微分する必要があります。 なので、対数関数の微分を理解しておくことが必要になります。 指数関数や対数関数について理解するには、 まず、指数・対数をひととおりやって、その後、指数・対数関数の微分を学ぶのが早道です。 上で紹介した高校数学の内容を、多変数に拡張した、という違いになります。 例えば、高校数学だったら、ほとんどの場合には、• xの式をxで微分する というように、1変数の微分が多かったと思います。 ここで使う多変数関数では、• x、yの式をxで微分する のように、いくつかの変数がある式で、微分をするやり方を理解することになります。 (ちなみに、多変数関数で、ある変数について着目した微分を「 偏微分(へんびぶん)」と呼びます) ディープラーニングでは、数万以上の変数を微分するので、超多変数の偏微分計算を行っていることになります。 超多変数なんて難しそう・・・ と思われるかもしれませんが、大丈夫です。 その原理を知るには、• 2、3の変数での多変数関数の偏微分 を学べば十分だからです。 その2、3変数関数の偏微分は、大学初年度レベルの微分積分で習います。 ご訪問ありがとうございます。 読書が好きで、多くの本に目を通しています。 大量の書籍の中から読んで役に立った本、おすすめできる本を紹介して、読者の方が知ってよかった1冊に効率良く出会ってもらえたらと考えています。 プログラミングと料理が好きです。 3,4年前の Coursera の Machine Learning 修了以来、面白くて統計・機械学習・人工知能も学んでいます。 今は脳や数学、物理を学ぶのも楽しいです。 このブログについて•

次の

ディープラーニングで細胞や遺伝子を詳細に分析

ディープ ラーニング と 物理 学

最近は人工知能界隈がざわざわしています。 というのも、各界の大物たち、例えば物理学者のスティーブン・ホーキング博士や、電気自動車メーカー、テスラ・モーターズの総帥、イーロン・マスクなどが人工知能の開発に対して警鐘を鳴らしているからです。 「人工知能なら、昔からあったじゃない」という方もいると思いますが、最近になって人工知能に警鐘を鳴らす人が急増した理由は、「ディープラーニング」の技術が開発されたからといってよいでしょう。 その「ディープラーニング」ですが、一体どんな技術なのでしょう。 なぜ皆が、「人工知能は危険」と言っているのでしょう。 今回は、それについてカンタンに解説してみたいと思います。 ディープラーニングとは まずは混同しやすい機械学習との違いから。 前提として、AIの学習のための技術には大きく分けて2種類の技術があります。 そもそもディープラーニングとは機械学習をさらに発展させたものであり、ディープラーニングと従来の機械学習との大きな違いは情報やデータを分析する際に使う枠組みが異なっていることであるといわれています。 ディープラーニングでは、人間の神経を真似て作った「ニューラルネットワーク」でコンピューターによるデータの分析と学習を強力なものに仕立てあげています。 つまり、機械学習が「プログラムされた学びを重ねる」のに対し、ディープラーニングは「たくさんのデータからどこに注目すれば良いかを自分で学習し、人間からの指示を待たずに自動でどんどん賢くなっていく」のです。 「ディープラーニング」という技術が発見されるまで、実は「人工知能」は、大したことはできませんでした。 人工知能といえば、せいぜいチェスや将棋で強いだけ、というイメージで、現実的な問題は何一つ解けない、そんなイメージでした。 コンピュータが解けるのはせいぜい、「トイ・プロブレム」、すなわち、「あるルールの中での最適解を見つける」「決まった制約の中で、素早く問題を解く」といった、まさに「高度な計算機」に過ぎませんでした。 つまり、「ディープラーニング」以前の人工知能は、「問題を解くアルゴリズム」を人間が与える必要があったのです。 画像認識ソフトの例を挙げましょう。 ディープラーニング以前のコンピュータは、顔の判別が非常に苦手でした。 なぜなら、人間が「人間の顔の特徴」「動物の顔の特徴」などの特徴データを創りださなければならなかったからです。 一旦特徴を教えられたコンピュータは、その処理を行い、応用も利かせることができるようになります。 「人間ぽい」や、「馬のようだ」もわかります。 これはこれで十分すごいのですが、これはディープラーニング以前のコンピュータです。 ところが、ディープラーニング後のコンピュータは全くちがいます。 適当に選んだ写真や画像を読ませると、勝手に「A」「B」「C」などの分類を写真を見た特徴を割り出して行うのです。 人間が教える必要はありません。 人間は後から、Aは人間、Bは馬、Cはネコと名前を教えてあげるだけでいいのです。 ディープラーニング後のコンピュータは「特徴量」と呼ばれる問題の解を導くためのアルゴリズムを、自動的に生成するのです。 これは、以前の人工知能からの大きな飛躍です。 なにせ、人間が先に教えるのではなく、人間は後から教えればいいのです。 これは、人間が気づいていない法則や特徴を大量のデータを読み込ませることにより、「勝手に発見してくれる」という、人間を超える知能を生み出す可能性を示唆しています。 人工知能の発明が人類最後の、最悪の発明になるかどうかはまだわかりません。 が、取り扱いに注意を要するのは他の科学技術と同様であることは間違いないようです。

次の