このすみノート

Webエンジニアが技術や趣味を書くブログです。

機械学習入門 ボルツマン機械学習から深層学習まで【感想・レビュー】

「機械学習入門 ボルツマン機械学習から深層学習まで」を読みました。

機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

ちなみに、本書は「ITエンジニア本大賞 技術書部門大賞」を受賞しています。

(注釈:普通に書店の棚に置いてあっただけなので、そこまで話題になってはいないのかもしれませんが)。

www.shoeisha.co.jp

読み終えたので、復習も兼ねて感想を書いていきます。

鏡よ鏡、鏡さん。世界で一番美しいのは誰?

本書は、白雪姫に登場する「魔法の鏡」と、とある地方の国の「お妃様」が繰り広げる物語です。ずばりその目的は、機械学習を活用して、自分(お妃様)が美しいという事を、客観的に判定して貰うこと!

前半は無知なお妃様ですが、魔法の鏡の助けを借り、まずは美しさのバラつきを1次関数に当てはめてみて、誤差を最小にするような関数を作り始めます。

後半にもなると、魔法の鏡ではなく、お妃様から提案がされ始めます。本書後半のお妃様は、間違いなく私よりも頭の回転が早いと思います(笑)。

・・・というわけで、最終的に「誰が世界で一番美しいのか?」その答えは本書でお確かめください。

複雑な数式が登場しない

本書の凄いところは、複雑な数式を使わないで機械学習や深層学習を解説しているところです。

本当かと思って読んでみましたが、本当でした。全く数式が登場しないわけではないですが、本書は数式が重要なわけではないのです。

f:id:konosumi:20180408111823j:plain

特徴量によって、美しさを判定する

本書の序盤では、いくつかの特徴量を用いて、美しさの判定を試みます。お妃様権限で全国美しさ調査が行われるため、なんとデータが揃っているのです(驚)。

目のぱっちり度 X 重み付け + 肌の張り具合 X 重み付け + ・・・ = 美しさ

重要な特徴では「重み付け」を大きくして、あまり重要ではない項目は「重み付け」が小さくなります。後半では「スパースモデリング」という、データの本質をつかむためにゼロを探すというテクニックも紹介されます。

重要でない特徴は、いっそ「重み付け」をゼロにしまう方法もありかもしれませんね。

教師なし学習と教師あり学習

ざっくり言ってしまうと「正解のデータがあるなら教師あり学習」で「正解のデータがないなら教師なし学習」です。

音楽を聞かせて、音楽というものは聴き続けていると、どうやらリズムというものがあるらしいとか、音階があるらしいとか、我々が何となくで抱いている概念を、教師なし学習は勉強するわけです。

教師あり学習は、数学の勉強をイメージするのが手早いでしょう。入力と出力結果がある状態で、頑張って関数を導き出していくわけです。

教師なし学習では、人間も賢くなります。物事のまだ見ぬ側面が、機械学習によって新たに発見されるかもしれません。例えば、将棋ではソフト発祥の「ポナンザ囲い」のような戦法があります。ソフトが多用する戦法を、人間が使い始めたのです。

誤差関数をできるだけ小さくする

美しさを算出する関数は、誤差関数によって精度が判定されます。

  • Aさん 関数が出した美しさ80 (実際の美しさは 75)
  • Bさん 関数が出した美しさ60 (実際の美しさは 70)

(80 - 75)の2乗 X (60 - 70) の2乗 = 誤差

2乗している理由は、マイナスを打ち消すためです。関数が出した答えと実際の正解が近いほど、誤差は小さくなります。

線形変換と非線形変換

単純な足し算や掛け算を使う「線形変換」では、物事の複雑さを表現するには限界があります。そこで登場するのが、非線形変換です。

本書では、シグモイド関数やランプ関数が登場します。

zellij.hatenablog.com

mathtrain.jp

詳しくは本書で勉強して欲しいのですが、現在は「ランプ関数」が多く使われているようです。単純ながら「線形性を壊す」役割を持っており、さらに「微分」の変化量が大きいという特徴があります。

微分重要

機械学習において「微分」は重要です。例えば「目のぱっちり度」を1加算すると、どれくらい美しさが変化するのか?その変化量を、微分で計測するのです。

「微分」は瞬間の変化量を測定するので、パラメータの変動による動きを計算することができるわけです。

訓練データとテストデータ

機械学習を重ねていくと、機械はどんどん賢くなっていきます。しかしながら、学習した結果が世の中にも通用するのか、それはまだ未知数です。

そこで登場するのが「テストデータ」です。機械が訓練データに対して「最適化をしすぎた(過学習)」してしまった状態では、テストデータに対して正しい結果を返さない可能性があります。

例えるならば、抜き打ちテストでしょうか。

入力層と中間層と出力層

データは、入力層から入り、中間層でクラスタリングや計算が行われ、最終的に答えが導き出されて出力されていきます。

深層学習がやることは、言ってしまえば中間層の構築です。「この画像は犬かどうか?」「この画像は猫かどうか?」こういった事柄を判定するための中間層を、たくさんの犬の画像や猫の画像を与える事によって、構築させていくのです。

多層ニューラルネットワーク

我々の脳も、同じく「入力層と中間層と出力層」を持っています。目や耳で得た情報は、中間層を経て解釈されます。それがニューラルネットワークなわけですが、その中間層を再現してしまおうというのが、深層学習の目的の一つです。

脳内のニューラルネットワークを再現する事が出来れば、人間と同じような判断を機械が出来るようになるわけです。

中間層は一つではなく、たくさんのフィルタリングの層が積み重なって出来ています。だから「多層ニューラルネットワーク」なのです。物事を様々な側面から判断しようとすると、どうしても層が積み重なっていく必要があるわけです。

凄い世界です。もし機械が人間と同じような判断を出来るようになったら、仕事は機械にお任せして、私はニートライフを満喫したいですよ(苦笑い)。

さいごに

機械学習や深層学習は、しっかりと解説を書かないと理解できないと思うのですが、書き続けたら筆が止まらなくなりました(笑)。

この辺りで筆を置きたいと思います。

後半のお妃様の理解度が高すぎると言った、ツッコミどころこそあるものの、機械学習や深層学習といった難しい分野を楽しく学べる、とても良い本でした。

続編の「ベイズ推定入門 モデル選択からベイズ的最適化まで」も読みたいと思います。さっそく本屋に行ってこようかな。

機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

ベイズ推定入門 モデル選択からベイズ的最適化まで

ベイズ推定入門 モデル選択からベイズ的最適化まで