著者名:伊藤真
価格:2894円
400ページ
出版社:翔泳社
ISBN:4798144983
発売日:2018.1.24
キーワード:Python,数学,回帰,分類,ニューラルネットワーク,教師なし学習
AIの理論の理解に役立つ |
★ ★ ★ ★ ☆ |
機械学習の基本を習得できる |
AIの実装(プログラミング)に役立つ |
★ ★ ★ ★ ☆ |
プログラミングを初歩から学ぶことができる |
深層学習の理解に役立つ |
★ ★ ★ ☆ ☆ |
簡潔な説明がなされている |
数学の難しさ |
★ ★ ★ ☆ ☆ |
数式を理解するには大学初年度程度の数学が必要 |
総合 |
★ ★ ★ ★ ☆ |
|
想定される読者
機械学習を初めて学ぶ人向け.
必要な数学・Pythonプログラミングについての解説があるので高卒理系程度の数学能力があればよい.
概要
機械学習とはデータから法則性を抽出する統計的手法の1つであり,様々な分野で予測や分類のために応用されている.
特に2010年代に深層学習という方法でその性能が飛躍的に向上した.
本書は深層学習を含む統計的機械学習について基本的な考え方と仕組みを解説したものである.
第4章までが準備であり,第5章から第7章において教師あり学習(回帰,分類,ニューラルネットワーク),
第8章において教師なし学習(クラスタリング)が解説される.
第1〜4章
Pythonプログラミングの基本,必要な数学(ベクトル,微分,行列,指数関数と対数関数)について解説される.
Anacondaをインストールすることにより有用なPythonライブラリを使うことができるようになる.
本書ではJupyter Notebookを使うことが想定されており,Python自身だけでなく必要な数学についても,
Pythonのコードを順次入力して確かめながら学ぶことができる.
第5章
回帰の問題について典型的な手順が解説される.
年齢(入力データ)と身長(目標データ)のデータベースを用いて,年齢から身長を予測する例が扱われる.
このように入力に対し連続した数値を対応づける問題を「回帰」の問題という.
年齢と身長の間に比例関係があると仮定(直線モデルを選択)すると,
目標データとモデルから得られたデータの平均二乗誤差から,
勾配法または解析解により直線のパラメータ決定することができる.
また直線ではなく曲線(線形基底関数モデル)の方がデータをうまく説明できる場合もある.
このとき,基底の数を増やしていくとデータ点のあるところではよく近似できるようになるが,
新しいデータに対する予測は悪くなる.この状態を過学習と呼ぶ.
過学習を避けるためにデータを訓練データとテストデータに分け,
訓練に用いなかった未知のデータに対する予測誤差を計算(ホールドアウト検証),
さらに訓練データに用いるデータを変えた場合も調べることにより基底の数を決定することができる(交差検証).
また事前にデータについて何らかの知見がある場合,それをふまえたモデルを適用することも有用であり,
ホールドアウト検証によりモデル間の比較を行うことで,モデル選択ができる.
モデルが決定されると入力データ全てを使うことによりモデルのパラメータが決定される.
第6章
分類の問題について解説される.
体重(入力データ)と性別(目標データ)のデータベースを用いて,体重から性別を予測する例が扱われる.
このように入力に対しクラスを対応づける問題を「分類」の問題という.
与えられた体重データ(x)に対し,それがオス(t=1)またはメス(t=0)である条件付き確率p(t|x)を考える.
つまり,オスであるかメスであるかのあいまいさも含めて予測することを考える.
あるxの範囲において確率モデルとして一様確率分布を仮定し,
体重データがこのモデルから生成される確率(尤度)が最大になるようにモデルパラメータを決める.
現実には,一様モデルよりもシグモイド関数を用いたロジスティック回帰モデルを用いる方がよく,
平均交差エントロピー誤差が最小になるようにモデルパラメータが決定される.
これらの内容に加えて入力データが2次元である場合のPythonによる実装例が示される.
第7章
ニューラルネットワークを用いた学習についての解説がなされる.
脳において神経細胞は他の神経細胞からの電気パルスにより膜電位が変化し,
閾値を超えるとシナプスを介して他の神経細胞にパルスを出力する.
膜電位の変化の度合いはシナプス伝達強度により決まる.
このようなメカニズムからヒントを得て考案された数理モデルをニューロンモデルという.
このモデルでは,各素子は入力に対し重みパラメータ(シナプス伝達強度)から入力総和が決まり,活性化関数から出力が決まる.
素子を入力層,中間層,出力層に配置することによりニューラルネットワークモデルが構築される.
目標データと出力データの平均交差エントロピー誤差と誤差逆伝播法により重みパラメータを更新(学習)する.
これらの内容のPythonによる実装例,またライブラリとしてKerasを用いた実装例が示される.
第8章
具体例として手書き数字認識をMNISTデータベースとKerasライブラリを用いた実装例が示される.
学習の効率を高めるため,一度に全ての訓練データを用いるのではなく,
その一部(このサイズをバッチサイズという)を用いて確率的勾配法により誤差関数の勾配を計算し,
重みパラメータを更新する.
これをくりかえし全ての訓練データを使い終わったときを1エポックという.
エポック数により学習の更新回数がわかる.
画像を1次元のデータとみるより2次元のデータとみる方が自然であるので,
画像処理で用いるフィルターを重みパラメータと考え,
活性化関数をReLUに設定,
画像の大きさを一定に保つパディング処理,
フィルターのずらし方であるストライドの設定,
画像の位置ずれに対するプーリング処理,
学習の効率を高めるために中間層のニューロンを一部無効化するドロップアウト,
などを取り入れる工夫がある.
これを畳み込みニューラルネットワーク(CNN)という.
第9章
教師なし学習として入力データをクラスに分類するクラスタリングについて述べられる.
k-means法と混合ガウスモデルが扱われるが,
いずれも分割するクラスターの数kを前もって決めておく必要がある.
k-means法では,クラスターの中心位置μ,各データ点がどのクラスに属するかを示すクラス指示変数Rが
変数として用いられる.アルゴリズムは,まず中心位置μを適当に決め,
各データ点が最も近い中心のクラスターに属するように指示変数Rを決定する.
次にこの指示変数Rを用いてクラスターの中心位置μを計算し直す.以下,これをくり返す.
このとき各データ点の所属するクラスターの中心位置までの2乗距離の和である歪み尺度を
目的関数として使うことができる.
混合ガウスモデルでは,潜在変数を用いて各データ点がどのクラスターに属するかを確率で考える.
あるクラスに属していたためにデータ点が生成されるとして,
各データ点に対しどのクラスであったのかの事後確率を
各データ点があるクラスに属する確率(どのクラスターにどれくらい寄与しているかの負担率)とする
データの分布をk個のガウス関数の和として,ガウス関数のパラメータを適当に決め負担率を計算する.
次にこの負担率からガウス関数のパラメータを計算し直す.以下,これをくり返す.
これをEMアルゴリズムという.
データは混合ガウスモデルから生成されたものと考え,
データが生成される確率(尤度)が最大になるようにパラメータが更新される.
コメント
Pythonのコードを順次入力していくことにより,
プログラミングの基本と必要な数学を習得し,
機械学習の仕組みが理解できるような構成になっている.
最尤推定の考え方を利用する箇所がいくつかあるが,
条件付き確率やベイズの定理が前半の章で扱われていれば,
より分かりやすくなったと思われる.
題材が基本的なものに限定されているため,
機械学習の初学者にとって本書は非常に有用であると思われる.