機械学習、たまにゲーム

情報科学に関する記事や経験談等を不定期に投稿します.

機械学習とデータサイエンスに興味がある大学院生が今年前半に勉強したこと

1月から7月までに勉強したことと,これから勉強したいことを書いていきます.

目次と概要

はじめに

最初に,簡単な自己紹介です.

  • 学年:修士1年
  • 専攻:東工大 情報理工学院(学部,修士とも).機械学習を扱う研究室に所属しています.
  • 就職:データサイエンティストや機械学習エンジニアに興味があります.機械学習を使ってデータ分析をするようなお仕事をしたいと思っています.

タイトルの通り,私はデータサイエンスに関心があります.ただ,今のところは,「データサイエンティストになりたいから~をやる」みたいなモチベーションで何かに取り組むというよりも,面白そうだと思ったことや,勉強したいと思ったことに手を付けています.

1月から7月までやったこと

1月~春休み前 研究の日々

研究で忙しかったので,それ以外のことはやっていません.

春休み 確率論と応用情報技術者試験

確率論

はじめての確率論測度から確率へ / 佐藤 坦 著 | 共立出版を読んで勉強しました. www.kyoritsu-pub.co.jp この本は確率論の入門書で,全3章から成っています.1章を読み終えたところで新学期が始まったのでそこで止まってしまっています.1章の内容は測度論の基礎事項と期待値の定義,確率変数列の収束,直積確率空間とフビニの定理,ラドンニコディムの定理などです(盛りだくさん!).時間をかけて行間を埋めることを意識していて,1日中読んでいても1ページも読み進められない日もありました.夏休みに入ったら1章の復習をしつつ先に進めたいです.

応用情報技術者試験

大学に入学してから資格を1つも取得したことがなくて,応用情報技術者試験の勉強をきっかけに情報分野の色々な知識を吸収しつつ資格も取れたらいいなと思い,2カ月ほど勉強しました.自分は一応情報系の人間ですが,正直勉強したことのない分野の方が全然多かったです.残念ながら4月の応用情報は新型コロナ流行のために中止となり,春に受験をすることができませんでしたが,それでも今まで知らなかった分野に多少なりとも手を出せたので良かったです.

4月~6月:第1Q 講義,Discord Bot作り

講義

大学の講義が始まりました.3つの専門科目と1つのキャリア科目(修了のために必要な科目)を履修しました.*1専門科目の概要は以下のとおりです.

  • 応用関数解析偏微分方程式への応用を目標とした関数解析の講義です.前半は超関数やフーリエ変換ソボレフ空間や弱微分などの関数解析の基礎事項を学び,それらを使って様々な偏微分方程式(熱,波動,楕円型非線形,...)の解の性質や滑らかさを解析するという内容でした.終盤の講義ではバーガース方程式やナビエストークス方程式などの非線形方程式を扱ったりして,関数解析を応用すると色んなことがわかるんだな~と思いました.多分今までに受けた大学の専門科目の中で一番面白かったです.

  • 微分方程式常微分方程式,特に自励系(力学系)と呼ばれるタイプの微分方程式について扱いました.微分方程式に興味があってこの講義を履修しましたが,前半の講義で(リプシッツ条件等を仮定したときの)常微分方程式の解の一意存在性の証明をしたところらへんで満足してしまった感があります() 後半の講義は解の安定性や中心多様体定理や分岐の基礎について勉強しました.

  • 数理統計学:前半はカーネル法や再生核ヒルベルト空間の数理,後半は統計的学習理論を勉強しました.ここでいう統計的学習理論というのは,汎化誤差を最小にする関数と,モデルがデータから学習することにより得た関数の距離をRademacher Complexity等の確率変数や確率の各種集中不等式(一様大数の法則,...)を用いて解析するというようなものです.

どれも内容が濃くて,復習に多大な時間が掛かりましたし,理解不足な箇所もあってレポートで苦戦したことも少なくありませんでしたが,受けていて楽しかったです.*2

Discord Bot作り

Pythonとdiscord.pyを利用してDiscordのBotを作りました. Discord Developer PortalBotのアカウントを作成して,PythonBotのコーディングして,ローカルPC上でプログラムを動かして遊びました.

一番最初に作成したBotは,Discordのチャット欄で/tenkiと入力すると「わからん」と返すやる気ゼロ天気Botで,Twitterでたくさん反応を頂きました.

それから,天気Botを改善して天気APIを叩いて明日の東京都の天気を取得するものにしたり, 大人気ゲームSplatoon2の現在のルールやステージを返すものや,現在から24時間後までのガチマッチやリーグマッチのルールやステージを返すBotも作成しました. discord.pyを活用すれば比較的簡単にBotを作ることができて,一時期没頭していました.勉強というよりかは趣味の一環という意識でやっていたのでこの記事に載せるべきかは怪しいですが,結果的にPythonによるBot作成技術を知ることができたり,今までしたことがなかったことができて楽しかったので書きました.この記事とは別にBot制作に関する記事を書ければいいなと思っています.

7月 第2Q 線形代数, SQL, Julia

7月から第2Qに入りました.第2Qは授業を1つも履修していないので,第1Qよりも自分の時間を多く確保できています.

線形代数

なんとなく線形代数の勉強をちゃんと勉強し直そうと思い,数研講座シリーズ 大学教養 線形代数|チャート式の数研出版 を購入して読み進めました. www.chart.co.jp この本の定義や定理を追って,練習問題や章末問題も解きながら1ページずつ読み進めました.いまは9章あるうちの5章目(ベクトル空間)を勉強している最中です.線形代数を一通りおさらいしたいと思っていた自分にぴったりの本でした,1冊通して読むつもりです.

SQL

SQLZOOというサイトでSQLの演習をしながらSQLの基礎知識を身に着けようとしています. sqlzoo.net こちらはブラウザ上でSQLを実行できるサイトで,練習問題を解きながら文法を理解できるようなつくりになっています.このサイトには解答は載っていないので,分からない箇所はググって文法を確認したりして,少し時間が掛かることもありますが調べることによって色々分かることもあっていい感じです.難しそうな問題は飛ばし飛ばしやっています.今月中に一通り問題を解き終えられそう.

Julia

つい数日前にJuliaをインストールしました.Jupyter notebookにJuliaを追加してHello Worldを出力した程度のことしかまだやれていないので,何をやったかと聞かれるとほとんどやれていません.文法を調べながら他人が書いたコードを解読しようとしています.今までプログラミング言語Pythonを主に用いていましたが,Juliaの方が断然速いという噂を耳にしてインストールしました.Juliaがどんな言語なのか,なぜPythonに比べて計算速度が速いと言われているのかは何1つとして理解できていませんが,とりあえずPythonで書いているコードをJuliaで表現してみて,計算速度にどれほどの差があるのかを確かめてみようと思っています.

その他今年勉強した書籍等

上で述べるほど時間をかけて勉強していませんが,この本をちょっと読みましたよっていうのを書いていきます.

これから勉強したいこと

何をしたいかと聞かれるとあれもこれもやりたいとなってしまうので,後述したものの中からどれか選んで今年の後半に取り組めればいいなと思っています.

おわりに

以上が今回の記事の内容になります.同じ大学院や研究室の方や,Twitterでつながっている方々には自分よりも遥かに優秀な方ばかりでとても刺激を受けていますが,勉強や研究は自分のペースでやっていけたらと思っています.

また,私と同じように機械学習やデータ分析,統計学などに関心のある大学生や大学院生の方や,実際にそれらを用いた業務をされている方は大勢いらっしゃることと思いますが,そのような方々が,どんなことを勉強・研究・お仕事をされているのかとても気になっています.また,今は興味のあるものを中心に勉強していますが,データサイエンティストや機械学習エンジニアになるためにはどんな技術を習得していると良いかも知りたいです.もしそれらに関して話してくださる方がいらっしゃれば,この記事にコメントをしていただくか,Twitter(https://twitter.com/Mina10Y)宛てにDMしていただけると嬉しいです.どんなことでもお話しましょう!

記事を読んで下さり,ありがとうございました.

謝辞

色んな本を読んでいて,分からない内容を同じ大学出身の同期やTwitterのFF内の方に何度もリプライで教えて頂きました.特に数学を勉強しているときは,勉強不足ゆえ1人で長い時間かけても分からないことも多く,いつも助けられています.また,FF内の方からAtCoderのお話をしていただいたり,データサイエンス系の就職のお話を聞いたり,自然言語処理に関するとても面白いお話をして下さったりと,大変貴重なお話をお聞きしております.お名前を出していいのか分からないのでこちらにはお出ししませんが,関わってくださった皆さまに感謝しております...!いつか自分も誰かに有益なことを伝えられるような人になれるように成長していきたいです.

f:id:optzard:20200726124343j:plain

*1:講義はZoomを用いてオンラインで行われました.オンライン講義は賛否両論あるみたいですが,私は講義のオンライン化による不便さをほとんど感じず,むしろ通学時間がなくなったことで自分の時間も増えてとても嬉しいです.個人的には,新型コロナが終息しても,オンラインで講義を受講できるようなシステムがあると嬉しいなあと思います.

*2:同じ授業を受けている友達とZoomでオンライン勉強会を開いて,講義内容やレポート問題に関する議論をたびたびしていました.講義を受けるにあたって,教え合ったりしてくれる友達や,講義内容や成績について教えて下さる先輩に恵まれていたことが非常に大きかったです.今の大学1年生や他大学院に入学した方は知り合いをつくることに中々苦労されている方が少なくないようで,復習やレポート作成も本当に大変だと思います.新型コロナが流行しているこの状況下で友達をつくったり,オンラインで円滑に勉強会をしたりするにはどうしたらいいのでしょうか.