CodeIQ MAGAZINECodeIQ MAGAZINE

池澤あやかとプログラミングで学ぼう!機械学習のための数学講座【行列編】

2017.06.05 Category:【連載】池澤あやか☆勉強部 Tag: , , ,

  • 152
  • このエントリーをはてなブックマークに追加

最近なにかと話題の機械学習を学ぶための数学勉強会。第一回の確率分布、第二回のベイズの定理に続き、第三回は行列編を学びます。
数学が苦手な皆さま、これを期に復習したいと思っている皆さま、一緒に勉強していきましょう!
by 池澤あやか

機械学習のための数学ゼミ第三回は行列編!

第一回の「確率分布編」、第二回の「ベイズの定理編」に続き、第三回は行列編です。

まずは本連載の登場人物をご紹介します!

<登場人物>


池澤あやか
タレントときどきエンジニア。数学は苦手だけど、機械学習入門したい。


増井雄一郎
株式会社トレタのえらいエンジニア。本人曰く、プログラムは書けるけど数学をまともに勉強したことがない。


梅崎先生
今回数学を教えてくれる先生。社会人のための数学教室「すうがくぶんか」の講師。

行列とは!?


第1回目は二項分布と多項分布、第2回目はベイズの定理について学びました。今日は『行列』について学びます」


「行列…? 高校時代は文系だったので数学はⅡBまでやったのですが、確か私が学習した範囲では扱ってないような」


「行列って、つまり何者なんですか?」


行列とは簡単に言ってしまえば1次方程式のことなんですよ。下のようなよく見る1次方程式は、行列でこう書き下せます」

●Before

●After


「メリットが分からん(笑)」


「こんな短い式だとメリットが分かりにくいですね。でもこんな長い式だとどうでしょうか?」

●Before

●After


「なんとなくスッキリ書けることは分かりました」


行列は複雑な数学的概念をスッキリ書けるので重宝されているんですよ」

なぜ、機械学習に行列?


「なぜ、機械学習に行列が必要なんですか?」


「具体例で少し考えてみましょう。好きになった人の数をX1、付き合えた人の数をX2としてデータをマッピングするとします。下のような感じで」


「総じてリア充すぎませんか?」


「このデータをモテる人、モテない人に区分したいと思います。今は適当にこのあたりに区分線をいれますね」


「あまりに非情だ」


「この区分線、中学で習った1次方程式で書けますよね。池澤さん、どうなると思いますか?」


「おぼろげな記憶では、1次方程式のグラフは傾きと切片から求められたはずなので、こんな具合ですかね」


「正解です。この式は、移項するとこう変形することもできますね」


「また上の式をwを使って公式っぽく直すとこうです。上の式の例でいうと、

ですね」


機械学習とはつまり、この適切なパラメーターw0、w1、w2を学習して、適切な区切り線を求めることなんですよ!」


「先程は、好きになった人の数をx1、付き合えた人の数をx2とした2次元のグラフでしたが、機械学習をする場合はもっと数多くの種類のデータを扱います。そうなると次元がどんどん増えてしまいますよね。そうなった場合も式上ではこんな感じで対応できるんです」


「これはプログラムでもfor文で記述できますね!」

sum = 0
for i in range(len(x)):
  sum += w[i] * x[i]


「そうですね。数学界ではシグマを使って

と表現したりします。ちなみにこれを行列に直すとこう書けます」


「確かに複雑な区切り線なはずなのに行列では見やすく記述できますね!というか、区切り線じゃなくて、区切り面? ……3次元超えると面でもないような……?」


「混乱してますね(笑)。ちなみに、この区切りのことをみんな『超平面』って呼んでます」

実際の機械学習上は行列はどう使われているの?


「行列で超平面が表現できることは分かったのですが、実際の機械学習の中では超平面はどう使われているんですか?」


「また先程のグラフに戻って考えてみましょうか。このグラフでいうこの点やこの点は先程の方程式

に代入すると答えはどうなるでしょうか?」


「こんな感じか」

モテるに分類されている点(a)

モテないに分類されている点(b)


「つまり、右辺がマイナスの場合はモテる、プラスの場合はモテないということになりますね。ある人がどちらにマッピングされているかは、超平面の式に代入して右辺がプラスになるのかマイナスになるのかが分かれば分かるということになります」


「分類のしくみってそうなってたんだ…!」


「と、ここまでが前段です。ここからは、もっとデータ量が多い先ほどの超平面の行列を例に挙げて考えましょう」


「この超平面の式を使って、とある人のデータを表現するとこうなったとします」


「これが5人分になるとこうなります。この行列に対してちょうどいいωを求めるのが機械学習というわけです」


「改めて、5人分とかそれ以上の人数分のデータを、ひとつの式で管理できる行列ってすごいですね」


「機械学習のモデルって、決定木とかパーセプトロンとかSVMとかたくさんあると思うんですけど、これはなんですか?」


「あれは簡単に言うと、どういう風にwを求めるかのアルゴリズムがたくさんあるってことなんですよ。実際には超平面よりももっと複雑な式を使っているものもいろいろあります」


「行列と機械学習の関係がすごい分かりました。今ものすごくへぇ〜ボタン連打したい気分です」

行列の計算をプログラムで書いてみよう


「行列の計算は行と列が多くなればなるほど手で計算するのが大変になります。例えば下の式を手で解いてみてください」


「うわあ(イヤな予感)」


「ムリです、長すぎです…」


「行列は大きくなればなるほど、手で解くとめっちゃ大変なんですね。ここで活躍するのがプログラムです。先程の行列はプログラムではこう書けますね。プログラムで書くと、実行もあっという間です」


import numpy as np m1 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) m2 = np.matrix([[1, 3, 5, 7], [2, 4, 6, 8], [9, 10, 13, 15], [10, 12, 14, 16]]) print m1.dot(m2) >> [[ 72 89 112 132] [160 205 264 316] [248 321 416 500] [336 437 568 684]]


「うわあ、早い&スッキリ!プログラムってすごい!!!」


「Pythonには『Numpy』という便利な計算用ライブラリがあるので、こんなに簡単に記述できるんですよ。Pythonはこういった機械学習系のライブラリが充実しているので、『機械学習をするときはPythonで!』という風潮が生まれたんですよ」

次回は今回たくさん出てきたwの推定、つまりパラメーターの推定について学びます。そして、そこで必要な数学として微分について復習します。

次回もどうぞお楽しみに!

CodeIQで機械学習クイズに挑戦しよう!

機械学習の理解度をはかるクイズに挑戦してみませんか?
ITエンジニアのスキルの腕試しができる「CodeIQ」では初心者向けの基礎知識をチェックできるクイズを出題中!
ぜひチャレンジしてみてくださいね♪

  • 152
  • このエントリーをはてなブックマークに追加

■関連記事

池澤あやかとプログラミングで学ぼう!機械学習のための数学講座【ベイズの定理編】... 機械学習のための数学ゼミ第二回はベイズの定理編! ということで、第一回の確率分布に続き、第二回はベイズの定理を学びます。 まずは今回の登場人物をご紹介します! <登場人物> 池澤あやか タレントときどきエンジニア。数学は苦手だけど、機械学習入門したい。 増井雄一郎 株式会社トレタのえら...
池澤あやかとプログラミングで学ぼう!機械学習のための数学講座【確率分布編】... 機械学習のための数学ゼミ開講! 今なにかと話題の機械学習。これを期に機械学習をはじめてみようかなと思っている方も多いのではないでしょうか。 しかし、実際に機械学習をはじめてみると、数字や数式、グラフのオンパレードに目眩を起こしそうになります。数学が苦手な方にとってはなかなかハードルが高いのが現状...
ドキッ!女性だらけの「第3級アマチュア無線技士試験勉強会」に潜入してみた!... 女性限定!第3級アマチュア無線技士試験勉強会 こんにちは、池澤あやかです。 いろいろな技術系勉強会に潜入している私ですが、今回潜入したのは、エレクトロニクスとアマチュア無線の専門出版社、CQ出版が主催する「女性限定!第3級アマチュア無線技士試験勉強会」です!! アマチュア無線というと、高校...
ブラウザでVR?なにそれおいしいの?池澤あやかがWebVRの勉強会に潜入してみました!... WebにVRを求めるのは間違っているだろうか? 今回潜入してきた勉強会は、渋谷のイベントスペースdots.で行われた「html5j Webプラットフォーム部勉強会 第13回勉強会~WebにVRを求めるのは間違っているだろうか?~」。 ▲受付嬢は、勉強会やハッカソンでよく見るあの人だ…! ...
【池澤あやか勉強部】もしもPepperが金融マンになったら!?「Mizuho.hack」に潜入してみ... みずほ銀行の主催する「Mizuho.hack」に潜入! 2015年7月にみずほ銀行に入行した新米金融マンのPepper。 そんなPepperと一緒に「全く新しい『銀行』というサービスを創る!」というのが、今回のハッカソンのテーマです。 なので会場に入ってみるとたくさんのPepperたちが出...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ