2016年6月11日土曜日

文系プログラマから見た「いまさら聞けない!コンピュータの数学」

このエントリーをはてなブックマークに追加
Pocket

学習ガイドラインとしてだと思うのだが、ソフトウェア・エンジニアの数学学習のために、情報処理学会誌「情報処理」の2015年5月号の特集「いまさら聞けない!コンピュータの数学」が勧められていた*1ので、確認してみた。計算機工学に必要な数学のための本が十分ではない事を背景に、どういう種類の数学が必要になるのかさわりの部分を紹介する特集で、内容は興味深い。しかし、大学一、二年次の数学の続きを説明するものだけに、基礎的な大学数学の知識が無いと十分に理解できないかも知れない。

第1節の「プログラミング言語の数学」は、プログラミング言語の形式意味論の紹介記事になっていて、平易な記述となっている。Haskell厨が言いたい事を理解したい人は読んでおくと良いかも知れないが、大半の職業プログラマは言語自体のデザインは行わないので、興味が沸く人は少ないかも知れない。

第2節の「数値計算における数学」は、連立一次方程式の求解法を説明しており、これは必要とする機会はそれなりあるであろう。もっと複雑な方程式の解法も、連立一次方程式の求解法に頼っているわけで、応用範囲は広い。しかし、連立方程式の表記を理解するのに線形代数の知識がいるので、先に線形代数の教科書を読んでおく必要がある。それが分かれば、そう難解な記事ではないのだが。

第3節の「機械学習のための数学*2は、とても簡潔で要点を抑えたパターン認識の説明になっている。ベイズの定理からその手法を識別的アプローチと生成的アプローチに分けて、それぞれの説明を要領よく行っており、特徴選択の話が割愛されているとは言え、機械学習に興味を持った統計ユーザーにはまずこの節を読むことをお勧めしたいぐらいだ。ただし、ベイズの定理はもちろん線形代数の知識は読むのに要るし、最尤法を知らないと最大化する式を最後どうすればいいのか困惑するかも知れない。

第4節の「情報セキュリティの数学」は、証明可能安全性について説明している。暗号の強度を評価する立場にある職業プログラマはほとんどいないであろうし、大半の実害を蒙りうるセキュリティー・ホールはソフトウェアの実装方針の問題かバグに近い範疇のものだし、公開鍵暗号の安全性について質問を受ける事などもないし、RSAではなくエルガマル暗号に興味があるのはPGP使いぐらいな気もするが、ここは数学的には難しくは無い。

第5節の「情報系の大学数学カリキュラム」では、情報系の学部で学ぶ数学が紹介されている。進学を検討されている人は読むと良いかも知れない。なお、以下のものがリストされていた。

解析学(微分・積分)
線形代数
確率統計
この三つは文系でも馴染みがある。確率統計の紹介に「ベイズ推定,母関数と特性関数,大数の法則,中心極限定理,確率過程などが,主要なトピック」とあるのだが、解析学(微分・積分)に測度論ともルベーグ積分とも書いていないのが気になった。
微分方程式
解析学の範疇ではないのかと思ったが、学部のカリキュラムに対応している・・・わけではないようだ。図では常微分方程式と偏微分方程式に分かれている。「微分方程式論は,物理現象を扱う機械系や物理系,電気系の学生にとっては必須だが,純粋な情報系の学生の履修率は必ずしも高くない」のに、なぜリストしたのであろうか。
ベクトル解析
これも解析学の範疇で、手元の微積の教科書では重積分に関連して紹介されているが、一般には別科目とすることが多い。ガウスの定理、グリーンの定理、ストークスの定理ぐらいは知っておいても損はあるかも知れないが、とりあえず学べ・・・と言うわけではなく、これも「情報系の学科では必修ではない」とある。
複素関数論・フーリエ解析
応用面では重要ですよ感の説明がされている。複素関数論のテキストでフーリエ級数やフーリエ積分が紹介される事はほとんど無い気もするのだが、たぶん気にしてはならない。ラプラス変換がフーリエ変換の前座なのは、そういう教科書もあるのでそういう扱いなのであろう。
離散数学基礎
「要素の集まりとしての集合を数学的にきちんと定義し,それをもとに,べき集合,写像,関係,ブール代数などの概念を構築する」とあるので、『数の体系と超準モデル』を読んでおけば良いらしいが、第3章に入る前に積読である*3。しかし、これに入る前に集合を学んでおかなくて良いのか。
代数学
誤り訂正符号の本にガロア有限体の説明があったし応用範囲は広そうなのだが、なぜか1年ではなく3年で習う事になっている。線形代数を使ってアーベル-ルフィニの定理の証明までもって行く方法などもある*4のだが、全体として微分・積分と線形代数と平行して教えられる気がしなくも無い。
情報理論
これこそ情報系の学部で学ぶ数学と言った感じなのだが、説明は短い。
データ構造・アルゴリズム
職業プログラマから見ると、アルゴリズムは計算可能性や計算量の証明を追いかけないで使っている事が多いので数学とは違う何かに思えるのだが、さすがに情報系の学部では違うらしい。
形式言語理論
これが好きなプログラマは話が通じないと言うか、無闇にオートマンについて語りだし他のプログラマを困惑させるイメージがあるのだが、たぶん教育のせいではない。
計算量理論
「データ構造・アルゴリズム」に組み込まれていないのが謎である。なおP≠NP予想について触れられていたが、数学セミナー2013年12月号の「P≠NP予想最前線」を読んだ限りは深入りしても得るもの無しと言う感じであった。
数理論理学
言語モデル論
離散数学基礎~数理論理学~形式言語理論~言語モデル論でつながっている気がするのだが、気にしない。
数値計算
最適化
数値計算と最適化を分けて説明する必要はあったのか。そう言えば、日本ではよく知られていない米国の著名大学の文系学部ではChapra (2011)が教科書として使われているそうだ。
グラフ理論
アルゴリズム本にも出てくるし定番ではある。説明でも言及されていたが、確率・統計などにもよく出てくる。

圏論を学んでクライスリ圏、モナド、モナド、モナド・・・とぶつぶつ言わなくて良いのか*5、確率とフーリエ変換はあるのに測度論が、ベクトル解析はあるのに多様体が言及されていないのが気になったが、際限が無いので省略されたのであろう。何はともあれ、カリキュラム例の図がつけられていたが、数学のウェイトは重い方の学部だと思う。

平均的な職業プログラマとしては数値計算、機械学習を使いたければ確率・統計ぐらいを抑えておけば良い気がするのだが、大学に入って総合的に学ぶと見えてくるものもあるかも知れない。

全体としては短い特集で内容も肩の力が抜けたものだと思うのだが、数学セミナーほどではないにしろ、スイスイ読める人はそれなり学力のある人であろう。学ぶために学ぶ必要が出てくるこの世が恨めしい(´・ω・`)

なお来年、2017年04月15日からPDFは無料ダウンロードできるそうです。

*1社会人SEが数学を学びなおすならば情報処理学会誌の記事はいかがでしょう? - 発声練習

*2ask.fmで指摘されて知ったのだが、この原稿は著者が配布しているのでリンクしておく。他の部分も無料公開されているかも知れない。

*3超準解析についての概要だけ知りたかったので、齋藤正彦「超準解析とはどういうものか」と西山龍吉「数学理論に対する個別超準化法I」を読んで満足してしまった(注意:超準解析について理解したとは言っていない)。

*4アルティンのガロア理論入門がそのような展開になっていた(関連記事:文系が「ガロア理論入門」を読むとどうなるの?

*5クライスリ圏を理解しないと上手く使えない機能やフレームワークがあると指摘されたのだが、圏論まで手が回らないので真偽は不明。気になる人は「『圏論の歩き方』が難しかったので『Basic Category Theory for Computer Scientists』を読んだ」を参考にして学ぶべし。

0 コメント:

コメントを投稿