「機械学習に必要な数学」の対象者
この節の対象者は、
・なんとなく機械学習はわかったけども、中でどんなアルゴリズムが動いているのか気になる
・より高い精度のモデルを素早く作るために理論を抑えなければならない
けれども数学の知識がないから論文や難しい本が読めない という方向けのものです。
ですので、この「機械学習に必要な数学の全体像」で扱う内容は、機械学習の理論が書かれた本では、「これ位は知っているだろうから書かなくて良いよね」として、省かれてしまった内容に敢えて重きを置いて解説していきます。 既に大学等の教育機関で数学について学んだ人は、おさらいとして読み進めると良いです。
ただし、大人になると使わない知識は抜けているものですので、意外と忘れていたものがあるかと思います。何年も数学から離れている人は慎重に読み進めていってください。
機械学習と最適化
教師あり学習、教師なし学習、強化学習、色んな学習方法がありますが、それらのどれもが、裏では数学が動いています。数学に関してですが、「数学がどのように使われているのか」と、機械学習を出来る人に聞いたら「要は最適化を行うためだよ。」と言われるかもしれません。「なるほど、最適化ね..」と相槌だけ打って、悲しくなった方は読み進めてください。 最適化とはなんでしょうか。最適化を理解するためには、「機械学習とは何か」という事をはっきりさせておかなければなりません。
機械学習とは何か
ところで、「機械学習とは何か」と聞かれたら理論編を勉強している皆さんはなんと答えるでしょうか。機械学習を難しく考えないようにも、ざっくり一言で言いますと、「物凄く、よくできた関数を作ること」です。 この表現を見て、数学やプログラミングのイメージがない人は、ちょっとだけ違和感があるかもしれません。関数とは「何か」を入力すると、「何か」を返してくれるものです。自動販売機が一番簡単な例です。自動販売機の場合、100円を入れると(これが関数の引数です)、500mlの水が出てきます(これが関数の返り値)です)。
例えば、これが機械学習の関数になると、
・画像を入力すると、それが猫だとか犬だとかいうテキストを返したり
・日本語を入力すると、英語にして返したり
・音声を入力すると、そのテキストを返したりしてくれる訳です。 ですが、この関数は適当には作れません。 これらのような関数を作るためには最適化が必要になります。
どのように「物凄く、よくできた関数を作る」事が出来るか
確認ですが、機械学習は「物凄く、よくできた関数を作ること」でした。次に疑問に思うのは、どのようにそれを実現できるかですね。 例えば、東京の家賃を部屋の家の畳数から予測するモデルを考えたとしましょう。データは、次のようにします。
家賃 = [12万円, 15万円, 17万円] 畳数 = [6畳, 8畳, 10畳]
問題を報告する試しにこの二つをプロット(家賃と畳数の関係を図示すること)してみると、以下のようになります。
この二つには明らかに相関がありそうですが、もしここに、こんな線(y = ax + b)を引いて見たら、未知データに対して予測ができるのではないか?と考えます。
この線(関数y = ax + b)は凄くありがたい線です。なぜかというと、この線さえあれば、9畳の家の家賃を予測することができるからです。
なるほど、見たところによると、この図から良さそうな感じな関数ができていることはわかりました。ちなみに、これは誰もが機械学習を学ぶ上で通る回帰直線を引くということでした。 しかし、例えばここで、先ほどの関数(y = ax + b)のaが大きくなったら直線はどうなるでしょうか。グラフはこのように変化します。
では、bが大きくなると、図はこのように変化します。
これでは、予測をしようにも全く精度がよくない予測しかできません。なので、aとb(ちなみに、中学の時の数学ではaを傾き、bを切片と表しました。忘れていた方は要注意です。)を調節して上げる必要があります。 ここでいう、調節が「最適化」のことです。最適な値aと最適な値bさえ分かれば、機械学習の予測の精度を上げることができます。 ちなみに、機械学習では、このa, bの事をパラメータと言います。ですので、この最適なパラメータを求めることに機械学習では本気を出します。また、最適なパラメーターを求めることを最適化と呼びます。
最適なパラメータを求めるためには
最適なパラメータを求めることは、実はscikit-learnやTensorFlowなどの便利なPythonのモジュールを使えば一撃なのですが、その裏では果てしない(?)数学が動いています。それらを理解するのがこの数学編の目標なのですが、そのためには幾つかの前提知識が必要になります。
機械学習に必要な数学
機械学習のアルゴリズムを理解しようとしようとして、機械学習の理論が書かれた本に手を伸ばすした時、「当然知っているよね。」といった風に書かれている数学の内容について羅列しました。
・基礎数学(中学で学んだ、基本的な数学)
→ 先ほどの「傾き」などは中学で学んだのですが、当たり前のように書かれます。
・確率・統計
→ 統計検定3級くらいの内容までは当たり前のように書かれます。
・微分・積分
→ 大学数学での微分、マクローリン展開程度は当たり前のように書かれます。
・線形代数
→ 教育課程にもよりますが、理系大学の1,2年生が学ぶ内容は当たり前のように書かれます。
中々重そうですが、大事なことは一つずつ理解していくことです。 数学は好きな人は好きなのですが、嫌いな人にとってはとても辛いものです。いくら考えても全く分からないこともあります。そういった場合、有識者に直接聞くのも一つの手です。勉強会に参加したり、理系の出身の方にアドバイスを求めたり、何かしらのサービスを利用して悩む時間は15分以内に収めましょう。 まずは、テキストを読み進めながら引き続き頑張りましょう!
まとめ
この記事では、機械学習と最適化に関してざっくりと説明し、機械学習に必要な数学の範囲に関して解説しました。AI Academyの『機械学習に必要な数学編』では、機械学習の本を読んだ時に、前提知識とされてしまっている中学の初等数学から、理系大学の1,2年生が学ぶ線形代数や微分などの高等数学の内容まで扱っていきます。
わからないことを気軽に質問できる環境で学ぼう!
Pythonプログラミングや機械学習、データ分析を一人で学んでいると、どこかでわからないことが出てきます。
わからないことを1人で解決しようとしてもなかなか解決できず、時間だけが過ぎてしまった。。という経験はありませんでしょうか。
「Google先生に聞けば(自分でGoogleで調べれば)解決できるはずだ」「もう少し考えればきっと解決できるはずだ」といった具合に、終わりの見えない泥沼に陥ってしまいます。
このようなときこそ、自分よりスキルのある人に質問ができれば、余計な時間を浪費しなくて済むようになります。
AI Academy Bootcampの「オンデマンド動画+チャットサポートプラン」は6ヶ月、機械学習エンジニアやデータサイエンティストからチャットにて受講期間中、質問し放題です。
6ヶ月間質問し放題で、受講料も35,000円(税込)とお手軽にご受講頂けます。
(1日の受講費用換算で、なんと194円でご受講頂けます。)
是非、いつでも質問し放題の環境で効率の良いAI学習を始めてみてください。