機械学習/ディープラーニングの「数学」が学べるオススメ本:AI・機械学習の独学リソース
機械学習やディープラーニングに必要な数学項目をピックアップし、そういった項目を教科書的〜実践的にカバーしているオススメの「数学」本を紹介する。また中学〜大学までの数学全体を学び直したい人向けの本も紹介。
機械学習やディープラーニングを学んでいると、その内部の仕組みは計算式なので、やはりどこかしらで数式が出てくる。そこで数学の必要性を感じて本格的に学び始めるという人も少なくないだろう。
では、どのレベルから、どんな本で学べばよいのだろうか。これはケースバイケースで、あなたが大学生であれば大学レベルの本からスタートすればよいだろうが、大学から遠ざかって5年以上たつような社会人であれば、数学をもう少し基礎的なところから復習した方がいいかもしれない。
また、数学に10年以上のブランクがある場合、中学レベルの数学から部分的に記憶が欠落しているかもしれない。数学は積み上げ型の学問なので、一部の知識が欠落していると、その上位の数学で躓(つまず)いてしまう。よって本来であれば、中学数学から地道に学び直した方がいいのだろうが、さすがに学習範囲が膨大すぎて簡単には実行できないだろう。
多くの社会人にとってまずは、中学〜高校1年生レベルの数学知識があることを前提として、機械学習やディープラーニングに必要な部分の数学だけを限定的に学ぶのが一番効率がよいと思われる。そういったレベル感に役立つ本やネット上のコンテンツは多数ある。そこで本稿では、社会人で数学は忘れてしまったレベル感の人に役立ちそうなオススメの本を、特に日本語の書籍(単行本や電子書籍)に絞って紹介していく。
※なお以下で紹介する本は、筆者が所有しているか、図書館で借りて一読したか、本屋さんで一通り目を通しただけの書籍が対象である。筆者が知らないものの優良な書籍もあると思われるので、その点はあらかじめご了承いただきたい。
本の紹介に入る前に、「機械学習やディープラーニングでは、どんな数学が必要なのか」を筆者なりに示しておきたい。
機械学習/ディープラーニングに必要な数学とは
ディープラーニングは機械学習の一分野であり、それに使われる数学範囲もより狭い。数学を学ぼうとしている人なら知っていると思うが、ディープラーニングでは、
- 微分の基礎+偏微分
- 線形代数の基礎
- (できれば)統計学の基礎
という3分野の数学を学ぶ必要があるとされている。これらはあくまで(機械学習全般ではなく)「ディープラーニング」を実装するのに最低限、必要とされるものだ。より高度な内容を扱ったり、機械学習全般に手を広げたりすると、当然これだけでは足りなくなる。よって、まずは上記の3分野を中心に基礎的な数学をマスターし、これら以外の数学項目が必要になった段階でその数学項目を学んでいくようなイベント駆動型の方針で数学を学んでいくとよいのではないかと思う。
最初に習得したい数学分野
ディープラーニングだけでなく機械学習全般を含めて数学を学ぶのであれば、あくまで筆者の経験に基づくもの(※必要な数学項目を完全に網羅しているわけではなく思い付いたものだけ)であるが、以下のような分野/項目の数学を習得することをお勧めする(凡例: ◎ 必修、○ 習得が望ましい、△ できれば習得)。
- 数と式:
- ◎ 数(自然数/整数/有理数/無理数/実数/複素数)と定数と変数 → あらゆる場面で使う
- ◎ 平方根と累乗/累乗根 → 例えば活性化関数などさまざまな計算で使う
- ◎ 連立方程式 → さまざまな計算で使う
- ○ 集合 → 例えば条件付き確率などで使う
- 数列:
- ◎ 総和 → 例えば回帰分析やニューラルネットワークなどさまざまな場面で使う
- △ 総乗 → 例えばベイズ統計などで使う
- △ 順列と組み合わせ → 確率論などで使う
- 関数:
- ◎ 2次関数/n次関数 → さまざまな計算で使う
- ○ 指数関数 → 活性化関数(例:シグモイド関数)などで使う
- ○ 対数関数 → 損失関数(例:交差エントロピー誤差)/評価関数(例:LogLoss)などで使う
- △ 三角関数 → コサイン類似度やデータセット(例:Sin波)などで使う
- 微分・積分:
- ◎ 極限/常微分 → 偏微分の基礎となる
- ◎ 偏微分/全微分 → 損失関数/目的関数の最適化(例:誤差逆伝播法)などで使う
- ○ 初等関数(対数関数や三角関数など)の微分 → 活性化関数の微分(例:ソフトマックス関数の導関数)などで使う
- ◎ 合成関数の微分(=連鎖律) → ニューラルネットワークの誤差逆伝播法などで使う
- △ ヤコビ行列(偏微分を行列として並べたもの) → 機械学習ライブラリ(ソフトマックス関数などで主に内部計算用)などで使う
- △ 積分の基礎 → 確率の計算(例:確率分布の面積)などで使う
- 線形代数:
- ○ ベクトル → ノルム(例:正則化)やコサイン類似度などで使う
- ○ ベクトル同士の和/定数倍/内積 → ベクトルの計算で使う
- ◎ 行列/テンソル → 複数の値や変数をまとめて扱う機械学習の演算全般で使う
- ◎ 行列同士やベクトルとの和/定数倍/積 → 行列&ベクトルの計算で使う
- ◎ 単位行列/逆行列/転置行列 → 行列の計算で使う
- △ 固有値と固有値ベクトル → 主成分分析(PCA)などで使う
- 確率・統計:
- ○ 平均/分散/標準偏差/期待値 → データの前処理や評価などで使う
- ○ 共分散と相関係数 → 相関関係を調べるときに使う
- ○ 確率分布 → パラメーターの初期化や正規化などで使う
- ○ 条件付き確率/ベイズの定理 → 強化学習やベイズ推定などで使う
- △ 最尤推定/MAP推定/ベイズ推定 → パラメーターの推定などで使う
上記の箇条書きでは微分と線形代数を重要視しているが、機械学習エンジニア視点に基づく場合である。データサイエンティスト視点で見ると、微分と線形代数よりも統計学方面の知識の方が重要になる(と筆者は考えている)。これは機械学習がデータから予測することに主眼を置くのに対し、データサイエンスはデータからインサイト(洞察)を得ることに主眼を置くためである。
知っておいて損しない、数学の便利ツール、7選
数学を学ぶモチベーションが湧きやすいように、上記の箇条書きでは「機械学習のどんな場面で活用されるか」を簡単に説明することで各数学項目の有用性を示した。ただしそれでも「これって何の役に立つのか」がうまくイメージできないという人もいるかもしれない。そんな人のためにもっと汎用(はんよう)的な活用例で、(筆者が機械学習エンジニア視点で考える)「知っておいて損しない、数学の便利ツール、7選」を紹介しておこう。下記の活用ポイントを意識すると、数学ががぜん有用なものと感じられるのではないだろうか。
- 三角関数: 三角形の辺と辺の比から「長さ」(=点と点の「距離」)を求めたいときに役立つ。また、微分がシンプルで扱いやすいので便利
- 微分: 接線の「傾き」(=ある瞬間での変化率)を求めたいときに役立つ
- 積分: 関数が描く曲線によって囲まれる部分の「面積」を求めたいときに役立つ
- 線形代数(行列/テンソル): データを「まとめて計算」したいときに役立つ
- 指数: 微少な数値〜天文学的に巨大な数値(=極端に桁数の違う数値)を「短い数値表現にして扱いやすく/比較しやすく」したいときに役立つ
- 対数: 指数と同じ場面で役立つ。また、「複雑な計算をシンプルにして扱いやすく」したいときにも役立つ。例えば数値の掛け算/割り算は、対数では足し算/引き算になるので、コンピューターでの微少〜巨大な数値の計算が安定する
- ネイピア数(=オイラー数)e: eを底とする指数や対数(=自然対数)は「微分計算をシンプルにして扱いやすく」したいときに役立つ。例えば(ex)'=exや(loge x)'=1/xになる
以上、前置きが長くなったが、いよいよ数学の本を紹介する。
機械学習のための「数学」オススメ本
本稿に記載した評価ポイントと売れ筋ランキングは、2021年3月13日時点のAmazon.co.jp(単行本)に掲載されていた内容を引用したものである。
『最短コースでわかる ディープラーニングの数学』
- 出版日: 2019年4月15日
- 評価: 4.2 / 64件のレビュー、売れ筋ランキング: 1万4045位
前半は数学の教科書パートとなっている。教科書パートでは、前述した「最初に習得したい数学分野」をおおよそカバーしており、なおかつ図も多く分かりやすい。
欠点としては教科書パートの例題や演習問題が少ないように思う。数学は繰り返し自分で問題を解きながらでないとなかなか身に付かない(という印象を筆者は持っている)。本当の実力を付けるには、応用パターンも含めた問題集も欲しいところだが、適切な問題集もないので、これだけでマスターできるかどうかは疑問に感じている。
後半は数学の実践活用パートとなっている。線形回帰やロジスティック回帰、ニューラルネットワークの数学を一通り学べるので、「ディープラーニングの数学」そのものを学びたい人に役立つだろう。
『人工知能プログラミングのための数学がわかる本』
- 出版日: 2018年2月24日
- 評価: 3.7 / 68件のレビュー、売れ筋ランキング: 9万1640位
最初の3分の2が教科書パートとなっている。教科書パートでは、数学項目の見出しが、常にページの先頭から始まっており、ページをぱらぱらとめくって項目を探しやすい。数学項目をちょっと調べたいときなどで、辞書的に使えるだろう。手元に置いておきたい本である。また、例題や演習問題も比較的多めなのは評価できる。
欠点としては、ページ内にきれいに収めるためというのもあるだろうが、「一部で説明が不十分」「説明にムラがある」との評価コメントがAmazonレビューなどで散見されることだ。あくまで既に数学知識を持っている人が、手元で確認するための本ということになるかと思う。
残りの3分の1が実践活用パートとなっている。線形回帰や、自然言語処理の初歩、ニューラルネットワークの数学を一通り学べる。
『統計学が最強の学問である[数学編]』
- 出版日: 2017年12月21日
- 評価: 3.7 / 38件のレビュー、売れ筋ランキング: 11万1967位
「統計学」と書かれているが、最終的に説明されているのはニューラルネットワークの数学である。ただし、この本には教科書パートはなく、数学を本格的に学べる本ではない。ニューラルネットワークで使われている数学を文章説明で読む形になる。
例えばカフェで読書する際は、前述の2冊よりも断然にこの本がお勧めである。実際に筆者も勉強というよりも、「趣味の教養」的な形でこの本を読むことが多い。特に文系出身など数学に苦手意識がある人は、文章で読めるこの本からニューラルネットワークの数学になじむのもアリだと思う。
欠点としては(Kindleではなく単行本の場合)字が小さいことである。
その他の「数学」本
上記の3冊をまずはお勧めする。とはいえ、万人に合う本などない。自分の数学レベルに応じて、書き方や見た目の好みに応じて、TPO(カフェで読むなど)に応じて、自分にとってベストな1冊を選べばよいだろう。
これら以外にも機械学習のための「数学」本はたくさんある。以下では追加の8冊を箇条書きで短く紹介しておく。
- 『機械学習のエッセンス』の「第3章 機械学習に必要な数学」【2018年9月21日】
- → 線形代数のパートが充実。特に数学を復習したい人に向いている。
- 『機械学習を学ぶための基礎数学』【2020年8月15日】
- → Kindle版のみ。全ページが教科書パートで、数式が多く文章解説が少ない非常に真面目な内容で、取り扱う範囲も比較的広い。数学に自信がある人向け。
- 『文系プログラマーのためのPythonで学び直す高校数学』【2019年3月18日】
- → Pythonプログラミングと数学を結び付けたい人にお勧め。ただし高校数学の基本部分が対象であり、必要な数学知識の全部がそろうわけではない。
- 『文系プログラマーだからこそ身につけたいディープラーニングの動きを理解するための数式入門』【2020年8月26日】
- → ディープラーニングで使われている数式が学べる。逆にいうと、教科書パートがなく、数学自体を学ぶ本ではない。
- 『やさしく学ぶ 機械学習を理解するための数学のきほん』【2017年9月20日】
- 『やさしく学ぶ ディープラーニングがわかる数学のきほん』【2019年7月31日】
- → 末尾の付録として教科書パートも短くあるものの、あくまでディープラーニングで使われている数式を学ぶための本。ある程度の数学知識がある人向け。
- 『ディープラーニングがわかる数学入門』【2017年3月28日】
- → これも教科書パートがない。ディープラーニングにおける数学の使い方を解説した本。Excelを使って計算内容を確認できる。
- 『Pythonで動かして学ぶ! あたらしい数学の教科書 機械学習・深層学習に必要な基礎知識』【2019年9月17日】
- → 目次は教科書的になっているが、タイトルにもあるようにPythonで数学のコードを書くことが学べる本。数学自体が学べる教科書ではない。
機械学習のための「数学」ネットコンテンツ
本稿では、機械学習/ディープラーニングのための数学「本」を紹介してきたが、本以外にも「無料のネットコンテンツ」で有用なものも幾つかあるので紹介しておこう(※あくまで筆者が知っている範囲なので、もっとよいコンテンツもあるかもしれない点をあらかじめご了承いただきたい)。
「AI・機械学習の数学入門 ― 中学・高校数学のキホンから学べる - @IT」
(編集担当なので)手前みそになって恐縮だが、全編が教科書パート(+応用例)となっており、数学自体が学べる。例題と練習問題を備えており、これを繰り返し学習するだけで数学の知識が定着するように工夫されている。
また応用例の題材として、平方完成、重心、線形回帰/重回帰分析、ニューラルネットワークの一部なども説明している。これまでに紹介した書籍と比較しても遜色(そんしょく)ない内容ではないかと思う。また一部の解説で理解の助けとなるよう動画も無料提供している。
ただし対応している数学範囲に足りていない部分がまだある(※対数や積分、より高度な線形代数などを番外編として不定期に追加予定)。
「脱ブラックボックスコース ― キカガク(eラーニングプラットフォーム)」
Udemyで定評があったキカガクによる「脱ブラックボックス」講座(動画)が今は無料で視聴できる。教え方がお世辞抜きにうまいので、特に数学が苦手な人にお勧めしたい。
Chainerチュートリアルは、かつてディープラーニングを学ぶ人によくお勧めされていたコンテンツで、Preferred Networksだけでなくキカガクが制作に協力したようである(メディカルAI専門コースも同様)。Chainer自体は開発がストップしているものの、そのチュートリアルに含まれる数学に関する内容は分かりやすくて有用である。
ただしディープラーニングの数学範囲に特化しているのが欠点になるだろう。
地道に時間をかけて基礎から数学を学びたい人へ
取りあえず、上記の中からまずは1冊(もしくは1コンテンツ)を学んでみるとよい。その後は、機械学習やディープラーニングを実践しながら、少しずつ数学力を身に付けていけばよい。では、どんな数学本があるのか。これについて、最後に紹介しておきたい。レベルに応じて探せるように、大学数学レベル→高校数学レベル→中学数学レベル+統計学の順で紹介する(※通常は高校数学レベルくらいから学べばよい)。あくまで筆者が優良と考える代表的な本であるので、実際に購入する際は自分に合ったものを探して判断することをお勧めする。
Copyright© Digital Advantage Corp. All Rights Reserved.