34歳からの数学博士

数学徒・プログラマ・一児の父

「第2回 プログラマのための数学勉強会」開催しました!(動画&資料つき)

どうも、佐野です。

3/27(金)「第2回 プログラマのための数学勉強会」が開催されました。今回も多くの方にご参加頂き、数学愛ほとばしるセッションの数々をお送りできて嬉しく思っております。各セッションの動画・資料と共に、簡単に内容のご紹介をさせて頂きます。

1. 「プログラマのための線形代数再入門 2」 - 佐野岳人


[資料]

線形代数再入門の続編として行列式・逆行列について発表しました。高校や大学で行列式を習うときは低次の場合の計算法だけか、あるいは置換を使ったガチな定義を習うかのどちらかと思うのですが、「そもそもこれは何なのか」をプログラマが納得できるように、普段見慣れているであろう「要件・仕様・実装」のフォーマットでその意味と計算法について解説することを試みました。

数学科卒というと計算が得意とか暗算が速いとか思われがちですが、僕は自分でも悲しくなるほど計算が遅くよく間違います。掃き出し法による逆行列計算は跳び箱と同じぐらい苦手でした。幸い今はコンピュータがあるので、学習の重点は人間の計算の速度を上げることよりも原理を正しく理解することに置いた方がいいんじゃないか、という僕なりの提案も込めてあります。

次回は線形代数シリーズのラストとして「基底変換、固有値、そしてその先」を発表しようと思います。あまり楽しくない地道な基礎固めの先で「スカッ!」と応用範囲が広がるところに、この分野の一つの感動があると思います。

2. 「時計の世界の整数論」 - 辻順平


[資料]

日曜数学者 id:tsujimotter さんの発表です。「数」は 1, 2, 3, ... と真っ直ぐ無限に伸びていくものだけではありません。有限個の数だけからなる整数の剰余類環とその法則を「時計の世界の数」として分かりやすく親しみやすく解説してくれました。

参加者に時計の数の演算表を配り、みんなで法則を見つけてみようというスタイルも楽しかったです。例えばフェルマーの小定理  n^{p - 1} \equiv 1 は公式だけ覚えようとすると「肩に乗ってるのが  n だっけ  p だっけ…」とあやふやになりますが、自分で表を眺めてみて「表の右側が全部  1」と気づいた人はもう間違うこともないでしょう。

発表後の質疑応答で想定外の法則が見つけ出され、その場で証明されるという素敵なハプニングもあり、参加型ならではの面白さを体験することができました。

3. 「フーリエ変換と画像圧縮」 - 武田祐一


[資料]

株式会社ミクシィの iOS アプリ開発者であり講師もされている武田さんの発表です。今や誰もが当たり前のものとして使っている JPEG 画像ですが、これはどうしてファイルサイズが小さく納まるんでしょうか?もし画像の保存形式がピクセルごとの色情報を保持する BMP しかなかったら、僕たちがスマホやデジカメに収められる写真の数は 1/8 以下になってしまいます。

周期関数は正弦波の重ね合わせで書けるという「フーリエの定理」を数式とグラフで解説しながら、フーリエ変換・離散フーリエ変換・2次元フーリエ変換と話を進め、最後に画像を2次元の波の重ね合わせに分解して、圧縮のために情報を捨てる仕組みを解説してくれました。

波の重ね合わせで画像が復元されると自然に拍手が。理屈は分かってもやはり不思議ですよね…!

4. 「証明プログラミング入門2」 - 門脇香子


[資料, サンプルコード]

出ました、お茶の水女子大学修士1年、門脇さんのディープな発表です。門脇さんは「情報科学若手の会 冬の陣2015」で証明プログラミングの発表をしていて、発表時間が短かったからか僕は全く分からなかったので今回30分の発表をお願いしたのですが、やはり全くわかりませんでした(笑)

僕の理解では Agda では実装が証明に対応していて、コンパイルエラーが吐かれなければその証明な無謬である、ということなのかなと(間違っていたら殴ってください)。「依存型」を理解することが Agda の文法を読めるようになるキーなんだろうなと思います。

お茶女の情報科では大学院で Agda を学ぶそうです。本人曰く「型の感覚はある日突然悟れるもの」だそうですが、逆に誰にでもアクセスできるものを通して悟りを経験できるのはありがたいとも言えます。分かりやすいというのは大事なことですが、全くわからない(けど何故か面白い)というのもまた崇高なものだと感じました。

5. 「エニグマ暗号とはなんだったのか」 - 堀川隆弘


[資料]

「いま日本で最もエニグマに詳しい人」InfoLens, Inc. CTO 堀川さんによる発表です。現在上映中の映画「イミテーション・ゲーム」の主題でもあるエニグマ暗号機、それがどういう作りになっていて数学者たちはいかにそれを解読したかを解説する完全にガチな発表です。

堀川さんはご自身でもアラン・チューリングの論文を読んで研究をしたそうです。数学的に見れば暗号機はアルファベット26文字の置換の組み合わせで、シラミつぶしにやれば150兆ものパターンを試さなければいけないものを対称性や巡回性に注目することで人間に扱える個数に絞り込むことができる、というのがその主旨のようです。

僕はこの日に向けてちゃんと予習(別名、映画鑑賞)をしてきました。映画ではアラン・チューリングが独力でエニグマを解読したようなストーリーになっていましたが、実際にはその前にポーランド人数学者レイフェスキが実物の暗号機がない中で傍受した暗号からエニグマ機の仕組みをロジカルに解明していた、というのはとても興味深い話でした。これは3時間コースで聞きたかったですね。

「プログラマのための」…?

今回もだいぶガチな内容揃いとなり、後半頭がショートしてしまった人も多いのではないかと思います。終了後に知り合いから冗談半分に「プログラマのための、ではないですよね」と言われたのですが、皆さんはどのように感じられたでしょうか。

「プログラマのための」というと「プログラミングに使える」と捉えられるかとは思うのですが、僕は直接使えるものだけが役に立つという訳ではないと思います。

ある問題を別の角度から見てみる、今までこうだと思っていたものが丸ごと逆転してしまう、難しいことを集中して考える、全く分からないものに出くわして愕然とする、積年のモヤモヤが一瞬で晴れる、簡単な規則が重なり合って複雑な現象となって現れる、複雑さの中から美しい性質が引き出される…数学によって得られるこういった経験や知恵はプログラミングに限らず生きる上で役に立つものですし、特にプログラマは日々の鍛錬によってそれを受容するメソッドが備わっていることが多いんじゃないかと思います。

そういう訳で今後も役に立つ数学はもちろん、そうでない(ように感じられる)数学の話も聞いて楽しめるイベントにしたいなと思っています。

発表者募集中!

数学好きな発表者あってのイベントなので、良いネタをお持ちの方は是非登壇をご検討下さい!

それでは、また次回(5月末を予定)お会いしましょう!


Facebookページ:

ツイートまとめ:

辻さんのレポート記事:
tsujimotter.hatenablog.com

CodeIQさんのレポート記事:
https://codeiq.jp/magazine/2015/04/23350/codeiq.jp

3/27(金) 「第2回 プログラマのための数学勉強会」開催します!

第2回 プログラマのための数学勉強会」開催します!

現場でコードを書いているプログラマ同士、身近な例をもとに数学を語り合おうという勉強会です。先々月の 第1回 に続き、今回も濃厚なラインアップです!

タイムテーブル:

時間 発表タイトル 分野 発表者
19:00-19:30 プログラマのための線形代数再入門 2 線形代数 taketo1024
19:30-20:00 時計の世界の整数論 整数論 tsujimotter
20:00-20:30 フーリエ変換と画像圧縮 フーリエ解析 ginrou799
20:30-20:50 コーヒーブレイク(軽食付き)
20:50-21:20 Agdaによる論理学入門 論理学 kdxu
21:20-21:50 エニグマ暗号とはなんだったのか 暗号理論 thorikawa

(次回は LT 枠を設けて…というつもりではあったのですが、すぐに30分の発表時間を希望される方で埋まってしまったので、今回もガッツリめなラインアップとなりました笑)

今回は参加登録を抽選方式にしました。本日から一週間が応募期間となります!

次回発表希望者枠も

さらに今回は「次回発表希望者枠」を設けてみました。

「発表したいネタがある!」という方は、抽選なしでご参加頂ける枠です。業務で数学をゴリゴリ使っている方、大学で数学を専攻されていた方、趣味で数学を研究されている方、是非ご検討下さい!

ちなみに第1回のアンケートで「次回聞いてみたいテーマはありますか?」という問いに対して、以下のような回答がありました:

ティン⭐︎と来たそこのあなた、是非「次回発表希望者枠」にご登録を!

それでは、発表者・運営メンバー共々、数学好きなプログラマの皆さんにお会いできることを楽しみにしております!

参加登録はコチラから:

Facebookページもあります:

「第1回 プログラマのための数学勉強会」開催しました!(動画&資料つき)

f:id:taketo1024:20150131155130p:plain

どうも、佐野です。

昨日「第1回 プログラマのための数学勉強会」を開催しました。朝からの大雪にも関わらず多くの方にお集り頂き、濃厚なセッションの数々をお送りすることができて大変嬉しく思っております。

以下、各セッションを動画・資料と共に、簡単に内容のご紹介をさせて頂きます。

1. 「プログラマのための線形代数再入門」 - 佐野岳


[資料]

トップバッターとして発表させて頂きました。線形代数は3Dプログラミングをはじめ、画像処理や機械学習など多くの分野で必要になる数学の分野です。「行列の積はなぜこんな複雑な形をしているのか?」から「行列は線形変換・アフィン変換の定量表現である」という話をしました。

次回は中編として「行列式逆行列とその実装」、後編で「座標変換と固有値固有ベクトル」を発表してみたいと思います。

2. 「明日話したくなる「素数」のお話」 - 辻順平


[資料]

日曜数学者 id:tsujimotter さんの発表です。素因数分解の説明、素数の歌や自作の音楽、3Dプリントした正12面体という身近な話題から、最終的には未解決の「リーマン予想」まで突っ切るという圧巻のプレゼン…ストーリーテリングでした。

ご自身で開発された「リーマンの素数公式」を可視化するウェブアプリでは、会場から感動の拍手が。ぜひ動画をご覧のうえ、辻さんのサイトで滑らかな曲線が階段に近づいていく様子を体験してみて下さい。

3. 「3D表示の数学と高次元への応用」 - μ崎みのり

4次元の人、μ崎みのりさんの発表です。μ崎さんはニコニコ動画で多くの 4次元図形の解説動画 を公開しています。3D空間がどのように2Dの画面に映し出されているかを説明し、その類推から4D空間をどうすれば「見える」のかを解説してくれました。

終盤は4次元図形のオンパレードで会場を震撼させ(実際に揺れた)、イベント終了後にはいつの間にかその姿はなく、スッと4次元の方へ隠れてしまったのかなと噂になっていました。

4. 「Autoencoderでの教師なし特徴抽出」 - 佐々木海


[資料]

データ処理インフラ開発者の佐々木海さんの発表です。機械学習による最適化手法の中で使われている数学の解説と、Deep Learningの概要説明です。

高度な情報処理においては線形代数や解析などの数学が駆使されている…ということがよく分かる発表でした(専門外なので下手なことは言えない…参考図書買って勉強しよう)。

5. 「ゲーム開発におけるバックトラック法」 - 束田大介


[資料]

ミュージシャン・ドラマーであり Unity ゲーム開発者である束田さんの発表です。数学に関する勉強会を開催して欲しいと強く背中を教えてくれ、またゲーム開発者の中に数学に関する課題意識を持っている人が多いということを認識させてくれたのも束田さんでした。

どんなゲームも何かしらのアルゴリズムの上で動いており、その中でもバックトラック法を紹介して動作するデモを見せてくれました。

次回に向けて

…という訳で実に濃厚な3時間でした!辻さんが言っていたようにプログラミングができるということは数学を理解する上での助けにもなり武器にもなるということが伝えられていれば何よりです。

今回ご参加下さった方や、この記事を見て興味を持って下さった方の中で、何か発表できる内容をお持ちの方(あるいは知り合いにそういう人がいる方)は是非ご連絡下さい!次回は LT 枠も設けてもう少し気軽に発表できるようにもしたいなと思っています。

それでは、ご参加下さった皆さん、この記事を読んで下さった皆さん、ありがとうございました!


当日のツイートまとめ:

Facebookページ作りました: