機械学習初学者が機械学習本を輪読会で勉強したいなら

## 概要

最近機械学習の輪読会を開く機会があったため、今回以下の内容をまとめることにしました。

- 機械学習初学者の勉強方法
- おすすめ輪読本
- おすすめ輪読方法

ですので、

- 機械学習の勉強を輪読会で行いたい
- 機械学習初学者である

という方に向けた内容となっております。

私自身は記事を書いた時点で機械学習エンジニア2年目で、機械学習の勉強自体は4年目くらいになります。
ですので私もまだまだある意味で初学者で、こういった記事を書くのは恐縮なのですが、もし「この本がいいよ！」とか「こういったやり方はどう？」など何かご意見ありましたらお気軽にコメントいただけたら嬉しいです。


## 機械学習の始め方

それではまず機械学習初学者の勉強方法についてですが、実はこちらに以前ロードマップをまとめています。
https://note.com/kotabrog/n/n6ca9ff6f52f2

## おすすめ輪読本と輪読方法

ということで、さっそく輪読会についての話に入りたいと思います。

### 輪読会とは？

そもそも輪読会には以下のような意味があります。

>人々が集まって、同じ教科書などの本を読み、その内容について意見を交わすことを意味する語
>https://www.weblio.jp/content/%E8%BC%AA%E8%AA%AD%E4%BC%9A

輪読会の良いところはいろいろあると思いますが、みんなで行うことでモチベーションを保てたり、自分にない意見を聞いてより理解を深めることができると思います。
また定期的に行ったり、発表者を担当でまわしていくようなタイプのものであれば、勉強の習慣づけにも役立てることができます。

もちろん良いことばかりではなく、自分のペースで勉強できない場合があったり、参加者のモチベーションが下がってくるとうまく機能しなくなったりもすると思います。

今回お話しする輪読会は、そんな輪読会の中でも以下のようなものを想定しています。

- 輪読する対象は機械学習系の書籍
- 参加者は全員機械学習初学者
- 定期的に行う

参加者は全員同じレベルくらいの方が、わからないことがあったときにみんなで解決する雰囲気になっていいかなと思うので、先生役みたいなある程度知っている人がいる場合はあまり口出ししない方がいいのかなと思っています。
また、１週間に一度など定期的に集まって、１冊の本について理解を深めていくような輪読会を想定しています。

### 紹介する輪読本の種類

機械学習の勉強をしたいと思った動機や興味は様々だと思います。
また理系大学出身だった人や、微分積分なんてわからんという人ももちろんいるかと思います。
ですので、機械学習初学者と一口に言ってもそういった背景がばらばらだと思うので、分野としては結構広めにご紹介したいと思います。
具体的には以下の５種類になります。

- 機械学習の理論の基礎系
- 高校数学の勉強系
- 大学数学の基礎の勉強系
- 統計系
- 機械学習のプログラミング系

これらについて、それぞれ自分の知っている中から何冊かを紹介していきたいと思います。

## 機械学習の理論の基礎系

機械学習が何をしているかの概要を知るだけでしたら、そこまで数式に頼らずとも理解することはできますが、きちんと理論を勉強するのであれば数学の知識は欠かせません。
ですので、本当に初めて機械学習について勉強する方であれば、まずはプログラミングなどで動かして体感する方がおもしろいと思います。

ちなみに１冊目に紹介する本は、機械学習に必要な数学の知識から勉強でき、しかも一応中学数学を理解していれば読むことができるようになっているので、初めての機械学習系の書籍として選んでもおもしろいかもしれません。

### 人工知能プログラミングのための数学がわかる本

[書籍リンク](https://amzn.to/3CbO6JL)

まず１冊目はこちらになります。
上で少し述べているように、この本は、機械学習に必要な部分だけをかいつまんで、しかも一応中学数学を理解していれば読むことができるように作られています。

また、その数学の知識が、機械学習のどんなところで活用されているかなども書かれていて、最終的にはニューラルネットワークの仕組みを理解することができるようになっています。
半分以上が数学（微分、行列、統計）についての内容ですが、理論につながる部分があったので「機械学習の理論の基礎系」の１冊としてご紹介することにしました。

この本を読むのにおすすめな方は以下のような方になります。

- 高校数学があやしかったり、大学数学にふれたことがない方
- とりあえずさらっと、機械学習で数学がどんなふうに使われているかを知りたい方


### はじめてのパターン認識

[書籍リンク](https://amzn.to/3CaCIOo)

次の本は、大学数学の基礎は勉強済みという方向けになります。
おそらく、本当に機械学習が初めて、という方よりは、多少は機械学習について知っている方が読みやすいかと思います。

この本は機械学習の理論の基本的な部分について、簡潔にまとめられている本になります。
結構行間がある……つまり計算過程が省かれている部分があるので、ある意味輪読するにはぴったりかもしれません。

ちなみにパターン認識という分野についてですが、機械学習との関係としては

>機械学習の一部と言われることもあるが、機械学習が計算機科学の見地から生じたものであるのに対し、パターン認識は工学を起源とする。
>https://kakeruai.jp/glossary/pattern-recognition/

ということだそうです。
他にも有名なものとして「パターン認識と機械学習」という書籍がありますが、こちらもパターン認識という語が入っていますね。

ということでまとめると、はじめてのパターン認識を読むのにおすすめな方は以下のような方になります。

- 大学数学の基礎は勉強済み
- 多少は機械学習について知っている
- ある程度しっかりと機械学習の理論の基礎を勉強したい

### その他

多少機械学習について知っていて、もう少し機械学習でやりたいことが定まっている方に関しては、例えば画像認識について特化した理論書や、深層学習などといった手法に関して特化した理論書をやるのもおもしろいと思います。
そういった分野ごとに特化した内容を扱っているシリーズとして、**機械学習プロフェッショナルシリーズ**というシリーズがあるのですが、以前そのシリーズについてまとめた記事を書いたので、もしご興味ある方はこちらもどうぞ。
https://note.com/kotabrog/n/n23bf928735cb?magazine_key=m951ae49a3fc9

## 高校数学の勉強系

機械学習の理論をしっかりと理解するためには大学数学の知識が必要ですが、それどころか高校数学もかなり怪しい……という方ももちろんいるかと思います。
そんな方は、一度高校数学をしっかりと勉強するのもいいかもしれません。

ということで高校数学の書籍を紹介したいのですが、あまり高校数学の勉強を最近やっていないので、良い輪読本候補があまり思いつきませんでした……。
ですので、あくまで参考程度にご覧ください。

### チャート式

[書籍リンク](https://amzn.to/3zgFVtQ)

私が高校生のときは、このチャート式で数学を勉強していました。
このシリーズは例題や演習問題が豊富で、一度教科書で勉強した内容を定着させるために、とにかく問題を解きまくるための本、という立ち位置なのかなと思っています。

そんな演習用の本を輪読？と思うかもしれませんが、ちょっと特殊な形式ですがやろうと思えばできると思います。
方法について詳しくはこの記事の最後で紹介したいと思います。

ちなみに難易度としては白＜黄＜青＜赤なのですが、これを読む方はおそらく受験生ではないので、黄色くらいでいいのではないかと思います。
（リンク先のものが黄色です）

この本がおすすめの方は、以下にあてはまる方になります。

- 教科書を読むだけでなく、手を動かしたい
- 数Bや数Ⅲなど、触れたことがないものがある
- 機械学習の理論についての本を読もうとしたら、数式の部分で全然歯が立たなかった

### 新体系　高校数学の教科書

[書籍リンク](https://amzn.to/3Arxttr)

こちらは上下巻で３年間の数学が学べる本になっています。
普通の教科書とは違って、数学１、２、３、A、Bのように分かれているのではなく、例えば方程式についてや微分についてなど、分野で内容が分かれているので、大人になってから読むにはぴったしだと思います。
ただ、少し内容が難しいので、数学が苦手な方だと苦戦するかもしれません。

この本がおすすめの方は、以下にあてはまる方になります。

- 高校のときの体系ではなく、できるだけコンパクトに学びたい
- 数学がそんなに苦手ではない

### その他

輪読向きではないかもしれませんが、単純に数学の勉強をするのにおすすめするのであれば、数学ガールの秘密ノートシリーズはとてもおすすめです。

[数学ガールの秘密ノート／式とグラフ](https://amzn.to/3lsGKLq)

もともと数学ガールは数学を題材にした小説（？）で、この秘密ノートシリーズは番外編として高校数学くらいの内容を学ぶことに特化したものになっています。
通常の数学ガールと比べて物語は少ないですが、本当にわかりやすく、そして楽しく学ぶことができるので、とてもおすすめです。

## 大学数学の基礎の勉強系

機械学習の理論を理解するのに必要な大学数学の基礎としては、統計学を除くと大きく分けて以下の２つになります。

- 微積分
- 線形代数

もちろん、機械学習の中でも特定の分野だったりではまた別の数学が必要になってきますが、基本的な部分を抑えるにはこれらをある程度知っていれば大丈夫だと思います。

とはいっても、例えば理系大学の１，２年目で習うすべての微積分と線形代数が必要というわけではなく、機械学習に必要な部分は限られています。
ですので、一般的な微積分や線形代数の本を読むのは若干必要以上に学ぶことにもなるかもしれませんが、概観を知ればより理解は深まりますし、無駄にはならないと思います。

ちなみに、このレベルの微積分と線形代数は、少し高度な統計学の理論を理解するために一部必要になる部分があります。
もちろんこれもどこまで深く理解したいか……によりますが。

また大学数学の教科書もそこまで詳しいわけではないので、こちらも参考程度にご覧ください。
（ここにあげるレベルくらいのものであればなんでもいいと思います）

### スッキリわかる線形代数

[書籍リンク](https://amzn.to/3lvNsA5)

こちらは線形代数の本になります。

線形代数で機械学習にもっとも関係する分野は行列になります。
機械学習の入力としては様々なデータが入れられますが、それらはベクトルや行列としてあらわされることが多いです。
例えば猫の画像が与えられたとしたら、その猫の画像は、画素一つ一つが要素となっている行列としてあらわされたりします。
また、たくさんのデータを扱う場合、並列に計算ができる行列はとても便利なので、機械学習の理論を勉強するうえで行列の計算は必要不可欠なのです。

この本がおすすめの方は、以下にあてはまる方になります。

- 線形代数についてしっかりと学びたい

### 微分積分学 (数学シリーズ) 

[書籍リンク](https://amzn.to/2XkCBRd)

次は微積分の本になります。

高校数学で微積分はやりますが、多変量の微積分が機械学習では必要になるため、大学数学としての微積分もある程度必要になります。
特に機械学習で必要なのは微分になります。
機械学習は、学習をする過程で、ペナルティが小さくなるようにしていくのですが、どこをどう変化させればどれだけペナルティが減るのか……というのを考えるために、変化の度合いを表す微分が使われます。
また、統計をしっかりと学ぶためには、確率が積分であらわされるので、ある程度積分の知識も必要になります。

この本がおすすめの方は、以下にあてはまる方になります。

- 微積分についてしっかりと学びたい

## 統計系

機械学習と統計は切っても切れない関係にあります。

例えば、機械学習で得た結果があっても、それがどれくらい当たっているのかをきちんと示すには確率を使う必要があります。
また、データがどういった傾向にあるのかなどを知っておかないと、とんちんかんな方向に機械学習を使ってしまうこともあるかもしれません。

ですので、ある程度の統計の知識は必要不可欠といってもいいくらいに必要だと私は思っています。

また、機械学習の理論的な部分について知りたい場合には、その背景に統計学的な要素が含まれることもあります。
ですので、もし理論の勉強をしたい場合には、統計についてより知っておいた方が、理解が深まるかもしれません。

### 統計Web

[リンク](https://bellcurve.jp/statistics/course/)

１冊目……というか、本ではないのですが、まず最初におすすめするのはこちらの統計Webになります。

こちらはなんと無料で統計検定２級相当の内容を学ぶことができるようになっていて、とりあえず統計を学びたい方すべてにおすすめしたいくらいの内容になっています。
統計検定２級は大学で学ぶ統計学の基礎くらいのレベルなのですが、簡単なところから丁寧に解説されていて、なんと中学数学がわかれば読めるように一応作られています。

輪読としてやるのであれば、これをきっかけにみんなで統計検定２級を実際にとるのもいいかと思います。
その際は、この統計Webを勉強した後に、公式の過去問を読めば、おそらく合格までもっていくこともできるかと思います。

ということでこのサイトがおすすめの方は、以下にあてはまる方になります。

- 統計学を勉強したい
- 統計検定をとりたい

### 統計学入門 (基礎統計学Ⅰ)

[書籍リンク](https://amzn.to/3zgZu5h)

正直初学者であれば統計Webを全員におすすめしたいところなのですが、それでは生ぬるい！もっと統計を勉強したい！という方は、こちらの本がおすすめです。
統計Webでは紹介されているだけの理論の証明を行っていたりするので、もし機械学習の理論をしっかりと勉強したい場合には、一度こちらを勉強しておくと理解がより深まるかもしれません。

この本がおすすめの方は、以下にあてはまる方になります。

- 統計Webでは物足りない
- 証明含めしっかりと統計の勉強をしたい

## 機械学習のプログラミング系

機械学習初学者であれば、まずは動いているところを見た方がイメージもつきやすいしテンションも上がるのかなと思います。
ですので、基本的にはプログラミングでまずは動かす……というところを初学者にはおすすめしたいのですが、初学者向けのプログラミング本は理解というよりは演習っぽい側面の方が強いと思うので、みんなで理解を深める輪読とはあまり相性がよくないとも思います。

ですが、しっかりと理論的な部分も含まれている書籍や、輪読のやり方によっては、もちろんプログラミング系の本も実のある輪読会にできると思うので、こちらで紹介していきたいと思います。

ちなみに今回紹介するものはすべてプログラミング言語がPythonになっています。
Pythonの基礎についてはそこまで深く事前に勉強しなくても、都度必要になったことを学べばそれで十分だと思います。
まったくプログラミングをしたことがない方は、最初にあげたロードマップにのっている方法で、少し触れてみることをおすすめします。

### PythonとKerasによるディープラーニング 

[書籍リンク](https://amzn.to/3hC2mnd)

こちらはkerasという機械学習フレームワークを用いて、様々なディープラーニングを体験しようという内容になっています。
理論的な部分は少なめですが、とにかくディープラーニングを簡単に体験でき、かつ実践的な内容まで載っているのでとてもおすすめです。

この本がおすすめの方は、以下にあてはまる方になります。

- 実践的な内容を学びたい
- できるだけ手軽にある程度高度な機械学習を体験したい

### 第3版 Python機械学習プログラミング 達人データサイエンティストによる理論と実践 impress top gearシリーズ

[書籍リンク](https://amzn.to/3Eqt3oJ)

次に紹介するのは基本的な理論もある程度載っている本になります。
その代わり、「PythonとKerasによるディープラーニング 」より紹介している内容が基礎的な部分になっています。
基礎的だからといって簡単なわけではなく、むしろディープラーニング以外の古典的な手法の理論も含めて、段階的に学ぶことができます。
またそのため、約７００ページもあるので、なかなか覚悟して挑まないといけないかもしれません……。

この本がおすすめの方は、以下にあてはまる方になります。

- 理論もある程度学びたい
- 機械学習について、段階的に学びたい

### ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

[書籍リンク](https://amzn.to/3tRhK47)

機械学習は普通フレームワークやライブラリといった、簡単に機械学習を実装できる仕組みを使って実装するのですが、この本はその仕組みは使わずに、自分で機械学習を作ろうという内容になっています。

自分で作るので、もちろんある程度理論的な部分も理解することができます。
また、Pythonについての簡単な説明も最初に載っています。

実は私の最初の機械学習本はこの本で、そのおかげでこのあたりの内容については今でもよく覚えています。

この本がおすすめの方は、以下にあてはまる方になります。

- ゼロから機械学習のアルゴリズムを作ってみたい
- 機械学習が行われているときにプログラム的に何が起こっているかも理解したい

## 輪読の方法

ということで、書籍の紹介は以上になります。
ここからは、いくつかの輪読会の方法のアイデアについてお話していきます。

1. 担当者を決めて決まった範囲を発表する
2. 担当者を決めて発表するが、ページを決めずに、みんなが理解できたところまで進める
3. 問題の作成者を決めて、それをみんなで解く。
4. 理論とプログラムの時間をわけて担当者が発表する
5. 司会だけ決めて、目標が達成できたかや、わからないところを聞く時間にする

##### 担当者を決めて決まった範囲を発表する

これが一番一般的なやり方だと私は思っています。
例えば交代で担当者を割り振って、その週の担当者が発表をして、発表途中や発表後にどんどん発表者に質問をして、みんなで理解を深めていく……というようなイメージです。

次の項目との違いである範囲を決めることには以下のメリットがあります。

- 担当者以外が輪読会に参加する準備がしやすい
- 輪読会自体がいつ終わるかが明確になりやすい
- 発表時間が限られているので大事なポイントにしぼって学びやすい
- 小さい部分にとらわれず、全体をつかみやすい

あまり長い期間輪読会をしているとモチベーションが保てなくなることもあると思います。
発表範囲を明確にしてゴールが明確になるので、モチベーションは保ちやすいでしょう。
また、細かい部分にとらわれすぎると結局全体として何をやったのかを見失ってしまう……ということもあると思うので、１つの範囲に対して発表時間が決まっていればその点はある程度大丈夫かと思います。

ただ、逆に言えば細かい部分まですべて発表することはできないので、ふわっと発表して終わってしまうことがないように注意する必要があります。
そのあたりは、担当者以外も輪読会の前に勉強しておいて、わからなかったところを輪読会で発表者に質問するなどすれば、ある程度補えるかもしれません。

##### 担当者を決めて発表するが、ページを決めずに、みんなが理解できたところまで進める

次の例は１つ前と違って範囲を決めずに行うパターンです。
こちらには上の方法と比べて以下のメリットがあると思います。

- 細かい部分含めてしっかりと理解ができる
- 担当者以外はどこまで発表が進むかわからないので、予習をある程度先まで行える

範囲を決めて行う場合と違って、細かい部分までじっくり学ぶことができるのが一番のメリットだと思います。
しかし、間延びしやすいという欠点があるので、発表時はその点を気を付けなければなりません。
例えばみんながわかっている部分は飛ばしたりするとテンポよく進めることができるでしょう。

また、モチベーションを保つのも、おそらく範囲を決めるよりは難しいと思います。
最初のうちはいいかもれませんが、時間がたつと「もしかしたら次回はそんなに進まないかも……」と思って発表者以外が全然予習をしなくなってしまうこともあるかもしれません。

そういったことを避けるためにも、ある程度目標を設けたり、発表の前にある程度発表範囲を連絡しておくなどといったことをするといいでしょう。

##### 問題の作成者を決めて、それをみんなで解く

これはもはや輪読といっていいのか微妙なところですが、例えば演習問題が多い書籍で行うとおもしろいかもしれません。
例えば、高校数学系の書籍紹介であげた本をやるときとかですね。

具体的には、まず問題作成者を毎週交代で決めて、その人が問題を作成してきます。
問題は、事前に決めた本の範囲の中から作成者の好みで作成します。
そして輪読会を行う時間に、参加者みんなに解いてもらいます。
解き終わったら、解けた人のうちの誰かか作成者が、解説をする……といったような流れです。

このようにすれば、作成者は問題を作れるくらいには理解していないとですし、解答者もどの問題が出るかわからないのできちんと理解ができるまで勉強する必要があります。

この方法なら、例えば資格の勉強をしたりといったテスト勉強としても有効だと思います。

##### 理論とプログラムの時間をわけて担当者が発表する

機械学習本は理論とプログラムの両方について書かれている書籍もたくさんあります。
ですので、例えば前半は理論部分を、後半はその理論に基づいたプログラムを実際に見せる、というような形式でも発表することができると思います。

また、このやり方は理論系の内容しか書かれていない本でも実践することができます。
その際は難易度が少し上がってしまうので、参加者がある程度プログラミングができることが前提となりますが……。

##### 司会だけ決めて、目標が達成できたかや、わからないところを聞く時間にする

最後の方法は、発表を行わない形式です。
輪読会時は進捗報告やわからなかったところをみんなで考える時間にします。

この方法は例えば発表には向かないタイプの本を輪読するのにいいかもしれません。
例えば演習系の本や、プログラミング系の本はこの方法でもいいかと思います。
また統計検定などの資格取得を目指すのにもいいかもしれません。

ただ、この方法の注意点としては、やはりモチベーションを保つことにあると思います。
他の輪読法だと、自分が発表者のときにさぼってしまうと周りに迷惑をかけてしまうので、やらざるを得ない状態を作ることができますが、この方法だと誰の迷惑にもならないのでついついさぼってしまうということが起きやすいと思います。

## 輪読会の注意点

ということで最後になります。
これで書籍と輪読の方法の紹介は終わりましたが、細かい注意点などを最後にのせておきます。

##### 発表形式

発表方法は私はなんでもいいと思っています。
例えばパワポを使ったり、ブログにしたり、電子ノートを画面に映したり、ホワイトボードを使ったり……と様々だと思います。
ですが、例えば初回の人はみんながどんな発表を想像しているのかがわからないでしょうし、輪読会の最初で軽く認識合わせをするのがいいかもしれません。

##### 輪読会以外での質問

せっかく同じ本を勉強する仲間がいるのですから、輪読会時以外でも積極的にわからないところは質問できるといいと思います。
ですので、まず輪読会を行う前に、チャット形式で連絡がとれる手段を用意すると、スムーズにいくのではないかなと思います。

##### 参加者の背景の差

輪読会の参加者にはいろいろな背景がある場合もあると思います。
ですので、その差が大きい場合には、わかる人にとっては退屈なものになったり、わからない人にとっては結局最後までわからないということが起きてしまうかもしれません。
そういったことがないように、わからない場合は質問をする、わかる場合はそれに答える、というやりとりを積極的に行って、みんながより理解を深められるように意識することが大切だと思います。

##### リアクションを！

発表に慣れていない人もいると思いますし、聞いているときはできるだけ優しいリアクションをしてあげましょう。
リアクションがないと、なんだか自分一人でただただ喋っているだけ……という気分になることもあると思います。
また、リアクションの一つとしての質問も、会を盛り上げるためには重要な要素です。

そしてもちろん、発表者も余裕があればそんなリアクションを取りやすいように、例えば誰かに話題を振ったりなどができると、より会が盛り上がるかと思います。
区切りがよくなったら質問の時間を作るとかもいいかもしれません。

## 終わりに

さて、結構長くなってしまいましたが、初学者への機械学習輪読会のすゝめはこれで以上になります。
参考にしていただけたらとてもうれしく思います。

また、冒頭でも述べましたが、もし「こんな本もおすすめだよ！」などいったことがありましたら、ぜひコメントお願いします。