最近の話ですが、以下のようなニュースが話題になっているのを見かけました。
データサイエンス系の学部は文理融合の学びを掲げ、文系の受験生も集めるため、受験科目に「数学」を含まない入試方式を設ける大学も少なくない。河合塾によると、私立大のデータサイエンス系学部・学科における昨春の一般選抜のうち、数学を選ばずに受験できる大学は約半数もあった。
要は「数学不要」のデータサイエンス学部が出てくるようになったというお話で、各種SNSでは論議を呼んでいるようです。界隈によってはほとんど「嘲笑」に近い評が流布していることもあり、少なくともデータサイエンス業界におけるこのニュースの受け止められ方としてはかなり冷ややかだという印象があります。
とは言え、冗談でも何でもなく「全国津々浦々どこに行っても大学の新設データサイエンス学部の広告を見かける」*1というのが既に常態化している昨今では、これに類する話題は今後も続くのではないかと思われます。そこで、今回の記事ではこの話題について僕自身のデータサイエンス業界での経験に基づいてちょっとコメントしてみようと思います。
「データサイエンスに必要な数学」の話題を思い出してみる
そもそも「データサイエンスに数学は必要なのか?」という問題提起がなされているのが現状のように見受けられますが、これについては6年前に既に以下の記事でコメント済みだったりします。列挙すると、
という感じで、平たく言えば「大学理系学部の教養課程レベルの数学」の知識が上っ面だけでもあった方が良い、というぐらいの話です。と言いますか、これぐらいの数学の知識があればNNや統計分析の実装コードを見ても「ああこれは〇〇をしているんだ」というその仕組みの理解に役立つ、ということですね。
こういう話をすると「そもそも今時は実装コードも既にあるもののコピペで事足りるしわざわざ数学なんか覚えなくても良いのでは」という反論が来るのが常なのですが、それについても3年前の記事でもコメントした通りです。あえて簡潔に言えば、
- ソフトウェア開発では基本的にはコードを書いた通りに確定的に動くものとされる
- だが機械学習や統計分析では入力されたデータと適用した手法の仕組み次第で確率的に振る舞いが変わってしまう
- よってデータサイエンスにおいてはデータの性質に加えてその「仕組み」まで理解していないとトラブルシューティングするのが難しい
というものなのです。そして、その「仕組み」の多くが数学的に記述されていることが多いため、どうしても数学の知識がないと「仕組み」の理解が難しいわけです。けれども、その数学は大学の理系学部では比較的平易とされる教養課程レベルのもので十分、という実態が今回の議論を少々複雑なものにしているように見受けられます。
まだ若い学生のうちだからこそ、ストレートに大学で必要な数学まで学んでもらうべき
つまり、プロのデータサイエンティストとして仕事をするには最低でも学部教養課程レベルの数学の知識が必要なのですが、これは高校以降数学から離れてしまっている人には結構難易度の高い話かもしれないんですね。けれども、これはいわゆる「専門としての数学」としてはかなり平易な部類に入ります(いわゆる「社会人のための数学学び直し」的なテキストや有料講座が世の中に数多い所以でもあります)。ただし、その一方でそのレベルの数学を学ぶには最低でも高校レベルの数学の知識が必要とされています。このため、ソフトウェア開発やデータサイエンスのための数学学び直しコンテンツの多くが、高校レベルからの数学の復習を伴っているという実態があるようです*2。
しかし、今回話題になっている「新設データサイエンス学部」たちがこれから大学に入る若い人たちにデータサイエンスを教えようというのであれば、そんな回り道を取る必要はないと思うわけです。仮にそれらのデータサイエンス学部がデータサイエンティストの卵を輩出したいというのであれば、「入試に数学を課す」もしくは「入学後に手厚い高校レベル数学の補習措置を設ける」かのいずれかを必ずやるべきなのではないでしょうか。最低でも、教養課程レベルの数学を学ぶ上での「下地」を確保する措置はあって然るべきかと。
これを、数学を省いてただ上っ面だけの概念と実装コードのコピペだけを教えて、いざ本質的な理解のための数学は大して教えず、どうしても学びたい学生には大学を卒業した後で「社会人向け数学学び直しコンテンツ」で学び直してください、というのは大学という教育機関のやり方としてはあんまりだと思う次第です。勿論各大学としては受験生を集めるための宣伝としてデータサイエンス学部を新設しているだけで*3、その内容にはそこまで頓着していないということなのかもしれませんが、それでも教育機関としてやるべきことはやってもらいたいものです。
業界の実態を踏まえてのコメントなど
こういう話をするとよく「お前はただ参入障壁を上げて自分だけ安全地帯でぬくぬくしたいだけなんだろ」と詰られることがあるんですが*4、僕のメッセージはシンプルで「背景となる理論的知識が全くないといとも簡単に事故りますよ」ただそれだけなんです。
一番分かりやすい例が「二値データでK-means」ですね。これはK-meansが文字通り「平均」を取ってクラスタリング結果の最適化計算を回している*5という裏側の仕組みを知っていれば陥らない罠なんですが、知らない人が何の対策もせず漫然と二値データに対してK-meansをやってしまって後で困ったことになった……というケースを見聞したことは何度もあります。しかも厄介なことに、PythonでもRでも実装によっては「二値データだからNG」とは言ってくれない上に、何のerrorもwarningもなくそれっぽい出力を返してくれてしまうので、分からないんですよね。
これに限らず、機械学習や統計分析だとerrorもwarningも出ないのにデタラメな結果が返ってしまうということは珍しくありません。往年のTensorFlowでは途中でデタラメな演算をしていても一切errorを出さずに最後までグラフを計算して、返ってきた結果を見たらただのゴミだった……というケースを何度も体験させられたものでした。これは数学の理解の有無とは関係ないケースも中にはありますが、実装上の都合で「狙った処理を実際にはやってくれていない」という事態が起きた結果だったりします。
ということで、こういう罠に陥らないためにも、これからデータサイエンス分野に参入しようという若い人たちには是非大学にいるうちに最低限で良いので数学を学んでいただきたいですし、大学の側もそこは手厚くして欲しいと願う次第です。