learning.ikeay.net

文系エンジニア、AI勉強中。

機械学習の基礎知識としての数学

私がAI(人工知能)や機械学習って難しいナーと感じるところは、数学の前提知識がある程度必要なところです。
GoogleからTensorflowが出たときに、私もいっちょやってみるかなんて思ったのですが、参考にした記事もなかなか難しくてあんまり理解できなかったのを覚えてます。途中まで理解出来てたのに、急に数式が出てきて「なるほどわからん!」ってなることが多かったですね。

「というかエンジニアなのに数学苦手なのw」とビックリされる方もいらっしゃると思いますが、エンジニアっつったって、今の御時世理系出身エンジニアばかりじゃないんです。でもエンジニア女子やってると自動でリケジョ扱いされるから面白いですね。

当面の目標としては、AIの中でも機械学習を学んでいきたいので(DeepLearningできるようになりたい!)、あると嬉しい数学の知識としては以下です。

  1. 線形代数
  2. 確率・統計
  3. 微分積分

AIの研究や仕事で本格的に使っていくためには大学レベルの数学の知識が必要ですが、今回はとにかく早めに実践編に入門できることを目指しているので、このへんの分野をざっくり復習したいと思います。実践を通して足りないなと感じる部分はあとから勉強していく予定です。

線形代数機械学習入門でも必須。確率統計や微分積分は入門ではすぐにはいりませんが、特に「統計的機械学習」という分野においては超必須らしいです。

特に私の場合は線形代数は勉強していないこともあり、
線形代数>>>>>確率統計>>微分積分
くらいの優先順位で勉強&復習していきたいと思います。

線形代数

機械学習でやってることは基本的には行列の計算らしく、線形代数はまじで重要っぽい!線形代数に関しては高校の教科書(私は高校で数Cやらなかったので、妹から譲ってもらいました!)と、以下の本を参考書としました。

プログラミングのための線形代数

プログラミングのための線形代数

この本は線形代数に関する本ですが、「プログラミングのための」となっているし、私にもいけるんじゃないか?!そう思って購入してみました。
結構分厚いですが、この本でいうと、「第0章動機」「第1章ベクトル・行列・行列式」「第3章コンピュータでの計算」が特に大事なのでざっくり理解しておく&他のところもなんとなく流し読みしとくといいね!という感じだそう。

確率・統計

確率・統計に関しては、以下のスライドでざっくり理解したつもりになりました。
読む前にΣを復習しましょう。大丈夫、Σはつまりfor文のことだからエンジニアだったら理解しやすいはずだ!

これは
{ \displaystyle
\sum_{i=0}^{7} x_i
}

つまりこれのこと。

int sum = 0;
for(int i=0; i<=7; i++){
  sum += x(i);
}

for文で理解すると私的には大変分かりやすかったです。

まずは統計の基礎の基礎。

そして統計に関する資料をナナメ読み。


微分積分

微積は自分で高校の頃の教科書でも開いてやっといてね!と言われたのですが、とっくに捨てたわ!大学受験終わった瞬間に教科書全部捨てたわ!

微積はエンジニア活してるとなんだかんだいろんなところで必要になってくるので、私そろそろできるようになっとくといいと思ってます。たしかに微積に至っては高校時代はなんとなく出来てたはずなんだけど、恐ろしいことに完全に忘れているだと…?!

インターネット上にあるものはちょっと詳しすぎたりパット見難しいものが多かったりしたので、こんな書籍でざっくりと復習しました。

知識ゼロからの微分積分入門

知識ゼロからの微分積分入門

微積を学ぶための前提知識についての開設もあるので、知識ゼロからスタートできる書籍でした。微積の起源やビジネスマン的微積の使い方なんかも知れて面白かったです。

今は教材が揃ってないみたいだけど、揃ってくるとNHKの高校講座で勉強してもいいかなと思ったり。
NHK高校講座 | 数学2

数1の方は現段階では揃ってるのでいいかんじに勉強できそう。他の分野も復習しとこうかなという方にはオヌヌメです。
NHK高校講座 | 数学1

おーい、「数学なんて勉強しても将来なんの役にも立たないんじゃない?」とか言ってる中学・高校生諸君〜〜!!! 高校時代の数学、社会人になっても意外と使うかもしれないから、みんなやっとこうな!!


Special Thanks: 松尾研 鈴木さん、PARTY 宮本さん


追記: for文で説明しているところ「i<7」→「i<=7」に修正しました。失礼いたしました。