NUSのコンピュータサイエンス修士の授業内容 その1

さて、今回はNUSのコンピュータサイエンス修士の授業ではどのような内容を習うのか?と言う点に興味のあるかた向けに、自身が既に履修済みの授業についてレポートしたい。今回はIS5152 Data-Driven Decision Makingの授業内容、自身が単位を獲得するために授業内外で学習した内容等を中心に述べる事とする。 

○「IS」って何?

まずはNUSのMaster of Computingの授業名の頭についている「IS」「CS」等について簡単に述べておきたい。ISはInformation System学科の略、CSはComputer Science学科の略である。ごく大まかに言えばISはどちらかと言うと理論よりは実際のビジネスや企業でのITの導入/活用等の際に必要な知識、フレームワーク、考え方等を学ぶ事に重心が置かれている一方で、CSは数学面も含めてコンピュータサイエンスの理論寄りの内容が中心であると考えておいて差し支えない。大まかな一般論としてはISの方がより産業の実務者向け、CSの方がやや研究者/リサーチャー等を志す人向けと言える面はあるだろう(とは言えCSでも比較的実務家向けのクラスもあるので、その辺はあくまで大まかな括りと言う事で理解頂けると幸いである)。

○修士課程に入る前に何故修士の授業が受講できたのか?

修士課程に入学する前に何故既に修士課程の授業が履修済みなのかと言う点については、NUSがGraduate Certificateの形で、社会人に修士課程の授業の一部を開放しているからである(以下参照)。

自身はGraduate Certificate in Machine Learning Application(略してGC-MLA)に応募する形で、修士課程のうちの機械学習関連についての授業を一部履修する事にしたのである。

因みに、GC-MLAで公開されているもののうち「CS5339 Theory and Algorithms for Machine Learning」は、自身が全部授業に出たのにさっぱり理解ができずに課題で0点を炸裂、あえなくFailで敗退したクラスである。コンピュータサイエンス修士の授業でTheoryとついているものはガチでTheoryで、非常にMath heavyである可能性があるので留意が必要である。自身の場合はこれの宿題の題意も把握出来ず、パートナーの知人経由でスタンフォード大の理系修士卒の人まで紹介して貰いどうしたものかと助けを求めたがその知人もお手上げで、結局どうにもならなかった。後日にウェブサイトなどで評判を調べた所「コンピュータサイエンスの修士コースで最もDry math heavyなクラスの一つだ」「卒業前に頭痛のタネを抱えないためには、数学関連のコースでオールAが取れた位の人以外にはお勧めしない」等のコメントがちゃんと書いてあり、事前に評判を調べておくのは非常に重要である事を痛感させられた次第である。

このCS5339で自身は理論コースに懲りて、もう少し実務家向けで現実的なレベルの授業が必要だと言う結論に到達、その結果として以下に紹介するIS5152を履修する事にしたのであった(そして自身的にはそれが正解であった)。

(注:それでも後日履修したCS系の授業のクラスメートの中には「CS5339?ああ、適度な歯応えの悪くないクラスだよね」等と平然と言ってのける学生も実際におり、本当に優秀な人と言うのはガチでやばいな(語彙...)、等と感じたものであった。)

○IS5152 Data-Driven Decision Makingの授業内容

さて、以上の前置きを踏まえて、IS5152の授業内容を紹介したい。結論から言えば、内容としては「数理最適化の切り口からの実務家向けの機械学習と意思決定の基本」と言ったタイトルがしっくり来る内容の授業であった。

クーンタッカー(KKT)と最適化

最初の授業でいきなりカルーシュクーンタッカー(略してKKT)の公式が紹介される。最初は何だか難しそうでやや面食らい、1回目の授業でこれか...とCS5339の悪夢が少々よぎった。しかし、以下の理由で結果としては自身でも十分に付いて行ける内容であった。

1、大学受験で文系数学をやっている位の人であれば付いて来れる位に分かりやすく噛み砕いて解説してくれた事。

2、KKTの証明までは問われずKKTを利用して最適化の計算が出来れば良いと言うのが授業のスコープ範囲であった事。

後はKKTを踏まえて、非線形最適化、制約付き線形最適化等の問題を、双対問題の解説や経済的な意味合い等の説明も入れながら先生と一緒に解いていくなどした。

何だか難しそうな響きがあるかも知れないが問題の内容は非常に具体的で、工場で椅子と机を作ってます、椅子は労働者3人月で作れて机は労働者5人月で作れます、労働者の制約は月に300人月で労働者の1人月辺りの人件費は幾らで云々、椅子は1個50ドルで売れて机は1個90ドルで売れます、最低両方とも1つは売る必要があります、さて一番利益を最大化するには各々何個作るのが良いでしょう?...と言った非常に具体的な問題である。加えて高校生のチャート式ばりに計算過程も省略しないで解説してくれた面もあり、文系おじさんの自身にも付いて行ける内容であった。

サポートベクターマシン(SVM)

こうした最適化の話題の何が機械学習なんですか?と思われるかも知れないが、上記の最適化の話題が、次に学ぶ機械学習の基本的な手法であるサポートベクターマシン(SVM)の解説の前振りとなっているのである。自身的にはこの、最適化→SVMの講義の流れが大変に良かったと感じている。また、カーネル法を用いたSVMの解説もあった。実際に少ないデータ数でペンで手計算しながら、2次元を5次元に引き上げたら、二次元では解けなかったXORの問題を5次元では線形カットできれいに分類出来ます、と言った過程を確認出来たのが非常に良かったと感じている。SVMやカーネル法が手に馴染んで来る事を実感できた。

Data Envelopment Analysis (DEA)

次はData Envelopment Analysis (DEA)、日本語で言えば「包絡分析法」。詳細の解説は省略するが、労働力や原材料等の投入コストと産出アウトプットを相対比較するよみたいな話題である。例えば、異なる病院間で看護師の投入量と捌けている患者数のアウトプットの効率性比較をする、と言った話である。ここでEfficient Frontier、効率フロンティアの話題が出てきて、ファイナンスでも定番の話題をオペレーションリサーチや最適化風な観点で学ぶとこう言う感じになるのねと言う再発見が期せずしてあった。温故知新というか、こういう再発見は中々に嬉しかった。

データの前処理、分類系タスクの評価方法、決定木等

閑話休題的にデータの各種前処理等の手法を学んだ後は、分類系のタスクのモデル構築方法と評価方法、具体的には混同行列、PrecisionとRecall、F値、AUC、ROC等の話題を学習。その後は最適化の話題に再度戻り、ゴール/Objectiveが複数ある場合、ゴールを守れなかった際にペナルティがある場合等の事例を学習した。その後は決定木の話題と、その際に必要となる情報エントロピーの考え方などについて学習した。

不確実性下の意思決定、ベイズの基本等

授業の後半戦は不確実性下の意思決定についての話題である。Maximax, Minimax等の意思決定基準、ベイズを用いた意思決定などの話題の基本を学んだ。この辺は投資の意思決定に考え方が非常に近く、もっと詳細に学びたいものだなと感じるなどした。

ニューラルネットの基本

最後にニューラルネットの基本を学んだ。シグモイド関数、バックプロパゲーション等の話題と、最後の方に軽く触れる程度でディープニューラルネット、オートエンコーダ等の話題を取り扱った。

○その他の課題

中間テストと期末テストに加えて、4−5名でチームを組んだチームプロジェクト課題があった。具体的にはKaggle等からデータを取って来て、それを上記授業で学習した手法で前処理、分析、評価し、5−10枚程度のレポートにまとめる、と言ったものであった。Kaggleからはデータを取って来るだけであり、コンペで競う課題はなかった。使用フレームワークはsklearn位で良くkerasやPyTorchで凝った事までしなくて良いと言った位が課題のスコープであり、自身もsklearnやpandas等は仕事で使用していた経験があるので負担感としては比較的適切であった。

自身のチームは、オンライン通販の売上データを取得し、ユーザ毎の製品購入について0(購入せず)、1(カートに入れたが購入せず)、2(購入)、と言ったラベリングをして分析し、混同行列やF値等用いて評価した。レコメンシステムという程のものではないが簡単な「このプロダクトを買った人は、このプロダクトも買う可能性が高い」的な予測を試みるなどした。

結果はまあ、スマホ買った人はスマホケースやスマホ用のイヤホンも買う人が多い等と言った程度の話で凄くエクセレントな素晴らしい発見が出来た訳ではない。また、行列の殆どのデータがゼロになる所謂「スパースデータ」の取り扱いという授業では出てこなかったオンライン通販データ特有の話題がありここも多少うーんとなった。とは言え、メンバーの中にオンライン通販会社のデータアナリスト的な仕事をしている人が幸いにもいた。彼の知識等のお陰もあり、またチーム運も良く皆協力的で良い形で期限内に課題も仕上げる事ができ、先生から比較的良い評価を得る事が出来た。

○全体的な感想

全体的に、紙とペンで手計算可能な数個のデータサンプルや事例を用いて、計算過程も省略せずに解説し、先生と一緒に問題を解いていくと言うスタイルが自身のレベル感的に大変に良かった。そうする過程で最適化、SVM、決定木、混同行列他分類系タスクの評価方法、不確実性下の意思決定とベイズ、基本的なニューラルネットと言った分野について、数学面/計算面の地に足のついた理解を伴った実データへの活用が可能になった。自身にとっては「そうよこういうレベル感の先生や授業が必要だった!」と言う内容であり、大きなブレークスルーとなった。結果として、有り難くもA-の評価を頂く事が出来た。

○単位獲得のために用いた副教材

最後に、上述の授業を完遂するために使用した副教材を一覧しておく。レベル感や負担感の把握の参考にして頂けると幸いである。

まずはAndrew Ng先生のこちら。今更Matlab、Octaveで課題やるの?RやPythonじゃなくて?と言う点はご愛敬ではある。しかし授業の内容としては非常に良く基本がまとまっていると今も感じているし、非ディープラーニングの機械学習の初歩的な内容を概観するに良く出来ていると思う。Andrew Ng先生の分かりやすく解説する能力というのは凄いなと思う。一方で、数学面のディテールを非常に巧妙に避けてふわっとした解説で分かったような気分にさせてしまう面もあるにはあり、これだけで修士のレベルに付いて行けるかと言うとNoである点にも留意が必要である。修士の授業の予習用ウォームアップ教材位の感じである。

後はこちら。授業を受ける際の前提知識として基本的な線形代数と微分が挙げられていたので、Imperial College Londonの上記のSpecializationで一通り勉強した。内容的には微分は分かり易いしお勧めでき内容的にこの位で問題なく今回のIS5152の授業にも付いて行ける、PCAはまあまあ、線形代数は後半の方になると率直に言って解説が分かりやすくなくいまいち感否めず、と言う感じであった。分野により解説の巧拙はあるが機械学習に必要な算数の基本をまとめて提示してくれていると言う意味で有用であった。

はじめての最適化
https://www.amazon.co.jp/dp/4764904500/ref=cm_sw_em_r_mt_dp_y8B5FbG1Z2MKF

画像1

授業の序盤戦は主に最適化の内容であったので、この書籍で勉強した。所々に「公式の証明のための証明(公式がある→証明したい→証明するために別の公式なりツールが必要→更にその証明)」と話題が込み入ってしまい全体的な見取り図を失いかける、めげかける部分もあったにせよ、全体的に具体的な計算例と図解で分かりやすく解説されており、大変に助かった書籍である。

これなら分かる最適化数学―基礎原理から計算手法まで
https://www.amazon.co.jp/dp/4320017862/ref=cm_sw_em_r_mt_dp_taC5FbBBF5Q3P

画像2

こちらも最適化について非常に分かりやすく、計算過程も省略なくしっかり解説が為されており重宝した一冊である。試験問題のうち1問はこの書籍で紹介されていた問題殆どそのままの出題もあったりして非常に助かった。

最短コースでわかる ディープラーニングの数学
https://www.amazon.co.jp/dp/4296102508/ref=cm_sw_em_r_mt_dp_HcC5FbD085AZZ

画像3

機械学習の算数を最初からきちんと学ぶ、バックプロパゲーションが何をやっているのかを理解するために使用した参考書。体系的に非常に分かりやすい。

機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム- (Machine Learning)
https://www.amazon.co.jp/dp/4797393963/ref=cm_sw_em_r_mt_dp_ceC5FbZBQ7H5Q

画像4

最後はこちら。370ページの著書のうち270ページが算数の筋トレで機械学習にようやっと入るのは最後の100ページと言う配分であり、最初の270ページで力尽きず筋トレ出来るかと言う点は多少留意点ではある。しかし非常に分かりやすく数学面の解説、また非ディープラーニングの機械学習の解説が為されており、やれば力がつく著作であると感じた。授業で重要なポイントであったSVMのクーンタッカーを用いた解説の辺りがこの本の後半に丁寧にされており、大変に助かった。日本語でこう言う良い学習書があると言うのは非常にありがたい事である。

...以上でIS5152 Data-Driven Decision Makingの授業内容のレポートは終了である。幾らかの参考になればこれ幸いであります。

この記事が気に入ったらサポートをしてみませんか?