内積と統計学の関係、展開図の描ける曲面、ハイブリッド・モンテカルロ法──5時間半、熱いトークが繰り広げられた数学勉強会【第5回】
- ガジェット通信を≫
- @getnewsfeedさんをフォロー
内積が見えると統計学も見える
最初に登壇したのは、@kenmatsu4さん。Qiitaで統計、機械学習、Pythonなどのテーマで記事を書いており、「Python」というタグでストック数上位に入っている。Googleで「標準偏差」と検索すると3番目に出てくるという充実コンテンツである。
まずは内積の話から。ベクトルa、bをn次元ベクトルというように各要素にかけ算して足し合わせる親しみのある式となる。
これだと何らかのかけ算的な操作であることはわかるが、絵的にどういうことかはわからない。ベクトルの長さを考えたときに、要素ごとに二乗してルートを取ると長さになる。つまり、長さは自身の内積の√なので、長さも内積で表せる。
ここで余弦定理を思い出す。
これを展開すると、自分との内積のルート長さとなり、よってもう一つ内積の定義(下記)と同値になる。
角度θとは以下の図を見ればわかるが、cの長さに半径で割ったモノが、cosθの定義。つまり半径の長さにcosθをかけたものはcの長さ。「見方を変えると、cはrというベクトルをライトで照らしたときの影の長さになっている。これを射影というが、この射影の長さはRにcosθを掛けたものである」と説明された。
ここで内積の話に戻る。aとbの長さにcosθを掛けた値はベクトルaの長さ×ベクトルcの長さに分解できるというわけだ。
「このように内積には2つの定義があり、直観的な意味が分かるのは後者のcosθを使った方だ」と@kenmatsu4さんは説明し、内積を理解したとして統計の話に移った。
例として示したのはcarsデータセットのヒストグラムと散布図。ちなみにcarsデータセットとは車が走る速度とブレーキを踏んだ時に止まることができるまでの距離のデータである。このcarsデータセットのヒストグラムから算出される平均、分散、標準偏差を式で表すと次のようになる。
式を見ても意味が分かりづらい。そこで先ほど解説した内積を使って、分散・標準偏差の視覚的イメージをつくることに。ここで「ポイントになるのは偏差だ」と@kenmatsu4さん。分散は偏差を2乗してできた正方形の面積を平均したものと捉えることができる。
ただ分散のままだと単位が面積になっているので、元の単位と合わない。そこでルートをとって元の単位に戻すことで、元々のデータとの関連性が分かるようになる。これが標準偏差である。
さらにデータをn次元ベクトルとxして捉え直すこともできる。
このように標準偏差はベクトルx’の長さの一種と考えられる。これにより「統計学の見方を変えられる」と@kenmatsu4さんは言うのである。続いて相関係数や回帰分析についても、ベクトルで捉え直す方法を紹介した。
「こうすると絵的にいろいろな処理ができるようになる。面白いので、ぜひ、みなさんもベクトルで統計を捉えることにチャレンジしてほしい」と語り、セッションは終了した。
☆もっと詳しい資料はこちらから☆
@kenmatsu4さんの講演動画 / 講演資料
円柱、円錐以外の、展開図の描ける曲面
続いて登壇したのは、落合雄介@taro_xさん。「曲面には2種類ある。展開図が作れる曲面、可展面と、作れない曲面、非可展で、球面はどうやっても展開図は作れない」と説明からセッションは始まった。
曲面が可展面であるための第一の条件は、曲面乗の任意の点に対し、その点を含む曲面が存在することだ。言い換えると直線で構成される曲面ということになる。だが、直線で構成される曲面は必ず可展面かというというわけではない。その例として示したのが、割り箸を真ん中で束ねたモノをねじった曲面。
可展面であるためのもう一つの条件は、「隣り合う挑戦がねじれの位置にないこと。つまり任意の点におけるガウス曲率がゼロの曲面とも言える。
円柱、円錐以外にも可展面はある。それは線織面を構成する直線が全て並行(柱面)、1点で交わる(錐面)、ある曲線の接線の集まり(接線曲面)のいずれか、もしくはこれらの組み合わせとなる。
落合さんはまず、2種類のつるまき線の接線曲面と展開図、実際に作ったもの(工作)を披露した。
次に可展面を応用して作ったものの紹介を行っていく落合さん。例えば球面の可展面による近似を求めるというお題では、球面乗にらせん状の曲線を引き、この曲線を通る可展面を計算し、その展開図を示した。
「白紙だと面白くないので、世界地図を印刷してみたところ、地球儀ができた」と、できあがった地球儀の写真を披露した。実は地球儀をちゃんと作るためのりやテープが要らないような工夫も行ったという。
さらにGoogle Street Viewのような全方向の写真がとれるカメラで、松本城の写真を撮影し、球面に印刷。そのときに使ったカメラが、RICOH THETA。
落合さんは「これを使って球体を作りまくっている」のだそう。「このようなカメラで撮影した画像をアップロードすると、勝手に球面の印刷するときの形が出力するサイトを作った。可展面を楽しみましょう」と参加者に呼びかけた。
「応用すると球面以外、例えばトーラス(円環面)も作れる」と、ちょっとしたおまけも披露。例えばトーラスで作った結び目もできる。最後には写真を入れると勝手に切り絵にしてくれるサイトも紹介された。
☆もっと詳しい資料はこちらから☆
落合@taro_xさんの講演動画 / 講演資料
独学の不可能性について/群をつくる
3番目に登壇したのは、@tsurumauさん。
@tsurumauさんは、フリーランスプログラマで数学は専門ではない。たまたまガロア理論の紹介番組を見たことがきっかけで、数学を始めた。
だが、社会人の素人が数学を勉強するのは容易ではないという。それは「適当な教科書が存在しないことだ」とその理由を語る。専門書あるあるだが、『初学者のための~』と書いてあっても、その初学者とは一流の数学者を目指している人で、「とんでもなく難しかった」と、@tsurumauさんは明かす。
いわゆる名著や好著、良著と呼ばれるものは数学者向けで、素人に必要なのは労作と言われるような本だったという。だが、いずれにしても読みやすい教科書はない。
数学書の読み方を知るためには、ゼミに参加するのが手っ取り早いが、社会人だとそうはいかない。また趣味でやっている人にとっても、その敷居は高すぎる。
「そういう方は今日のような勉強会に参加したり、数学基礎論サマースクール、数理論理学ゼミ合宿などに参加することがお勧め。それらを活用して真剣に数学に向き合うことしかない」と@tsurumauさん。
続いて、「群をつくる」の説明へ。「群の公理を再構成して、理解を深める」というのが目的だ。主に有限群についての理解を深めていくための順序を説明する時間となった。
最初に群の公理を披露する@tsurumauさん。
群とは演算の定義された空集合ではない
集合Gについて単位元が存在し、すべての元が逆元を持ち結合法則が成り立つ
これらは当たり前すぎてよくわからない。理解するために、3つの元からなる集合にどんな演算をすれば群になるかを調べることに。
集合G={a,b,c}
この集合を、乗積法を使って群の公理を満たすように用いて定義していく。それができれば次に結合法則をつくるのだが、一般に結合法則が成り立つか確認するのも、つくるのも難しい。
3つの元を取り出して、すべての組み合わせで結合法則(ab)c=a(bc)を確認していくのだそうだ。
乗積表の可能性は3^(3×3)=19683通りとなるが、そのうち群になるものはたった3つで3次の交代群と呼ばれるもの。それらは同型のため、同じ群を表している。
「正しいとは思うが、総当たりでの検証をしていない。後日必ず検証したい」と@tsurumauさんは言う。このような試みをして分かったことは「一から群を作るのは大変。群はかなり特別な集合だということを感じられた」と感想を述べる。
「正しいとは思うが、総当たりでの検証をしていない。後日必ず検証したい」と@tsurumauさんは言う。このような試みをして分かったことは「一から群を作るのは大変。群はかなり特別な集合だということを感じられた」と感想を述べる。
@tsurumauさんが群を学ぶ理由は、「ガロア理論を知りたい」ため。「表現論や数理解析的な物理学では、群論は活用されている。そういった応用をして見たい」のだそうだ。
また最近、有限単純群の中で一番大きな位数の群である、モンスター群にも魅力を感じている@tsurumauさん。「流行の機械学習を使ってモンスター群の膨大な証明をやってみたい」と意欲を見せ、老師岡の「技を真似ず、心を真似よ」という言葉でセションを締めくくった。
☆もっと詳しい資料はこちらから☆
@tsurumauさんの講演動画
回転する円のショートヒストリー
4番目に登壇したのは、 ISOコンサルタントで、リスクアセスメントなども行っている@Hyperion64さん。
現在、数学は趣味でしか関わっていないが、かつてはヘリコプターの空力設計やデータマイニングなど、業務で関わってきた。Mathematicaという数式処理システムの愛用者で、20年ぐらい使っているという。
円をテーマとしたセッション。まず、円を回転したときに、円周上の点がどう動くかについて、うんちくを付けて解説した。使う分野は解析幾何学の媒介変数表示。
まずは「これは直線上の半径の円を滑らずに回転するときの円周上の軌跡」というサイクロイドを示す。
この場合、
x(t)=at-asint
y(t)=a-acost
という媒介変数表示でできる。aが半径でtがパラメータ。さらに、このサイクロイドをアニメーションにして披露。Mathematicaを使えば、簡単に作れるのだという。
先のサイクロイドで「滑らない」という仮定を外すにはどうすれば良いかというと、移動距離に比例する係数を入れるだけで計算できる。
「古代ギリシャ人はサイクロイドには気付かなかったが、代わりにエピサイクロイドを知っていた」と@Hyperion64さんは説明する。古代ギリシャの天文学者、プトレマイオスは惑星の軌道を天動説で説明するための、円周上にもう一つ円をつくってクルクル回るという巧妙なモデルを作った。
それがエピサイクロイドである。実はこれを最初に提唱したのは古代最大の天文学者のヒッパルコスで、プトレマイオスはその説に改良を加えたのである。中世にコペルニクスが地動説を唱えるために作ったモデルの精度はプトレマイオスよりもかなり低かったそうだ。
ここまで説明したところで、「日本人は円が好き」という話題に。卑弥呼時代の古鏡、マンホールのフタ、さらには家紋などを示して、いかに日本人は円が好きかを説明。中でも面白かったのは通貨が円で、かつて固定相場だったときのドルとの換算レート360だったということも、「円好き」の根拠(?)としていたことだ。
続いて話題は周転円の拡張に。ある物理学者が指摘した「周転円は惑星軌道のフーリエ関数展開である」。周転円は三角関数の和を示したモノであると証明をn個までやり、その結果をアニメーションで表示させた。
「これを計算するには2時間ぐらいかかった」と@Hyperion64さんは語る。さらにドイツの数学者のワイエルシュトラスと言う人が初めて証明した「病的曲線」にも触れた。このような病理関数は高木貞治、ディレクレも作っている。
少し時間が余ったので、最後はブログで作ったものを紹介した@Hyperion64さん。中でも気に入っているのが、曲線状転がる楕円、ダサイクロイド。「楕円の周りを転がる楕円も、力作で軌跡自体も面白い」と紹介した。
複雑な計算結果になるが、方程式自身は高校レベルの方程式である。だが、それを解くことは高校レベルではできないので、「Mathematicaに任せている」と最後にMathmaticaの使い勝手の良さを紹介したところで、セッションは終了。
☆もっと詳しい資料はこちらから☆
@Hyperion64さんの講演動画
「Hybrid Monte Carlo(ハイブリッド・モンテカルロ)法の紹介」
5番目に登壇したのは、小川兼司さん。小川さんは総合研究大学のポスドクとして、現在、AIに関する研究を行っている。今回のテーマは、数学というより計算方法の話と前置きし、セッションは始まった。
「ハイブリッド・モンテカルロ法を用いる目的は、多重積分をするため」と語る小川さん。次の様なタイプの積分の例を紹介した。
モンテカルロやメトロポリスとの違いは、効率が良いことだと言う。
ハイブリッド・モンテカルロ(HMC)法の応用分野としては、格子状の理論、自発的対称性の破れ、HiggsやQCD(クオーク閉じ込め)制約ボルツマンマシンなどがある。
例えば分布がP(x)になるようなx_0,s_1,……,x_Nを生成するとする。その十分条件として使えるのが、Detailed Balanceで、実現方法としてメトロポリス法を使うという。Detailed Balanceは次の通り。
ここで具体例として、ネコの例を使って解説した。それが次の図である。
3つの部屋にネコがおり、門番は決まった割合でネコを通過させるというようなもの。ネコ分布は各部屋にいる門番によってコントロールできる。最終的な分布は遷移行列の最大固有値に対応する固有ベクトルとなる。
マルコフチェインモンテカルロ(MCMC)はたくさんいるネコの分布=ある一匹の猫の長い時間の軌跡で示すというものだ。
これを取り出す実現方法が、メトロポリステストである。
だがこれだと少しずつしか進めない。そこでより効率的にするための方法がHMCである。HMCはメトロポリステストに分子動力学を取り入れ改良された。
小川さんは最後に本セッションのまとめを次の様に紹介し、セッションは終了。
☆もっと詳しい資料はこちらから☆
小川さんの講演動画 / 講演資料
データに隠れた構造を推定して予測に活かす
6番目に登壇したのは、国立研究開発法人産業技術総合研究所(産総研)の兼村厚範さん。セッションテーマは、「データに隠れた構造を推定して予測に活かす ~行列分解とそのテストスコアデータへの応用~」。
兼村さんのセッションについては、直接インタビューする機会があったので、ぜひこちらの記事をご参照いただきたい。
CODE.SCOREと産総研が「スキル測定」の試験時間短縮に機械学習の非負行列分解を採用
試験時間が90分から60分以内に!採用シーンで導入しやすいCODE.SCOREから新サービスが登場
兼村さんの講演動画 / 講演資料
10分間のLT8本!CodeIQの人気出題者、増井さんの姿も
今回の勉強会ではこの後、10分間のLTが8本行われた。
1.「球面上で踊る複素数」 @taketo1024さん
講演動画
佐野さんの「第5回 プログラマのための数学勉強会」レポート(動画&資料付き)
2.『これを買っている人はこれも買っています』実装してみた @tomzohさん
講演動画 / 講演資料
3. 「複素関数を見る」 @Hyrodiumさん
講演動画 / 講演資料
4. 「ゲームアプリの数学@プログラマのための数学勉強会」 @ryukbkさん
講演動画 / 講演資料
5. 「グラフィックエンジニア必見!イージングの数学」 @butchi_yさん
講演動画 / 講演資料
6. 「Google Apps Scriptで解く算数パズル」 @nekoneneneさん
講演動画 / 講演資料
7. 「プログラマのためのビジネス数学入門」 @masuipeoさん
講演動画 / 講演資料
8. 「内積が見えると主成分分析も見える」 @kenmatsu4さん
講演動画
今回は7番目にLTを行った、CodeIQ「今週のアルゴリズム」出題者でもある増井敏克さんの「プログラマのためのビジネス数学入門 」を簡単に紹介する。
「ビジネス数学」とは学校の数学とは異なり、実践中心で厳密さよりも使えるかどうかが重視される。また唯一の正解は存在しない。「ビジネス数学では難しい数学は必要なく、基本的な算数を徹底活用していくこと」だという。
ビジネス数学には資格制度もあり、それが増井さんも取得しているビジネス数学検定である。同検定にはLiteと2級、1級があるが、Liteは簡単すぎるので取得するなら2級か1級だと増井さん。
問題数は30問。1問3分ぐらい必要になる。70点で合格だが、1級の場合はランク付けもある。もちろんパソコンでも電卓使っても大丈夫。パソコンが使いこなせることが重要になる。
ビジネス数学検定は把握力、分析力、予測力、選択力、表現力が評価される。把握力の例題は次の通り。
自分でエクセルに入力して解いていくことになるという。また分析力では、あるデータを元に次年度の生産・販売計画案を作成するという例題が紹介された。ビジネス数学検定1級では、次のような問題が出る。
「損益分岐点や財務諸表などは、エンジニアにとって苦手な項目かも知れない。1級はマクロ経済やミクロ経済などを知っていないと取得は難しいと思う」と増井さんは説明する。
ビジネス数学検定に合格するメリットは、第一に合格者として名前が出ること。それによりセミナー講師として声がかかること。これは増井さんの体験からの言葉である。何よりもビジネスおける数字の使い方が勉強になるので、取得して損はない。
3Dゲームの開発やデータ分析に応用するため高等数学を学ぶのも良いが、ビジネスに活用できる数学を勉強するのも、これからのエンジニアにとって必要なこと。サンプル問題はこちらで紹介されているので、ぜひ、チャレンジしてみよう。
(Special Thanks:佐野岳人@taketo1024さん 撮影:馬場彩さん)
*「プログラマのための数学勉強会」とは、その名の通りプログラマを対象とした数学を学習するための勉強会である。プログラマと銘打ってはいるが高校数学(初等関数、ベクトル、確率など)レベルの知識を持っている人、仕事で使う数学の理解を深めたい、他の領域で使われる数学に興味がある、単に数学が好きという人であれば、学生や他の職種の方ももちろん参加可能。☆コミュニティぺージはこちら
CodeIQ運営事務局より
現在、CodeIQでは「数学の問題をプログラミングで解こう!nのn乗の桁数に関する問題」が出題中です。
ぜひ挑戦してみてくださいね!