テクノロジー

機械学習の数学を避けてきた僕達が、今学ぶべきポイントと活かし方

数学のイメージ

AI(機械学習)を学んでいると「数学を学ぶべきだ!」という情報をよく耳にしますよね。機械学習の分野は数学をベースとしているので「数学が大事っていうのは確かにもっともだよね」という印象の方が多いのかもしれません。

ただ、

「数学を理解せずともライブラリを使えば機械学習を回せるのになんでそんなに口酸っぱく数学数学って言うんですか?」

というのが僕の心理で、そんな風に思われる方も中にはいらっしゃるのではないでしょうか。一方で実務で機械学習をゴリゴリ使われてるような方は「何を今更」と思われるかもしれません。

ただ、やっぱり僕にはモヤモヤするところがあるんです。

例えば僕たちは自動車やパソコンの仕組みを詳細に理解しなくても、目的に応じて十分活用できていますよね。これと似たように機械学習も便利なライブラリを使ってコードを気軽に書いて、中身を理解せずとも気軽に利用できてしまう時代です。

なのになんで数学数学って・・・。

これはあたかも「パソコンを使うにはパソコンの仕組みを完全に理解しないといけないんだ!」って言ってる主張に似てる気がしてます。いや待てよ、、、「ひょっとしたらAI(人工知能)ブームに乗っかった一商法で書籍やセミナーで儲けたいからメディアが煽っているだけでは?」等々、思うところがあります。

少し僕がひねくれた考え方をしているように思われた方もいるかもしれませんが、「世間が言ってるから」ではただ流されてるだけですし、それでは機械学習のために数学を学ぶ動機付けには決してなりません。逆に、なぜ数学を学ぶ必要があるのか、どう活かせるかを理解・納得すれば、目的を見失わず楽しく数学を学び続けていけるはずです!

つっちー
つっちー

実は最近、僕は数学を勉強するやる気が出てきてまして、だからこそこのタイミングで機械学習と数学の関係を整理しようと思いましたし、また僕と同じようなモヤモヤを抱えている方もいるはずだと思って今回情報を整理することにしました。

ーーーーーーー補足ーーーーーーー

※本記事では数学をなぜ学ぶ必要があるのかについてテーマを絞っています。数学のどの分野について学ぶ必要があるのか?については言及しません

※機械学習:AI(人工知能)を実現するための技術の一つで、近年非常に注目を浴びている。コンピュータがデータに潜むパターンや傾向を掴んで、そこから未知のデータの予測が可能になります

※機械学習のライブラリ:機械学習の実装や、機械学習を実際に行うために必要となる色んな処理がまとめられたもので誰でも気軽に呼び出して利用することができます。

ーーーーーーーーーーーーーーーー

数学を学ぶのはやっぱり大事だった

理解したイメージ「機械学習は数学をベースにしているから数学は大事」「数学を学ぶと機械学習を応用しやすくなる」そうしたもっともな答えらしい言葉だけれど具体性に欠けてよくわからない説明はたくさんみられます。

それらをさらに「それどういうこと?」と調べていったところ、数学を学ぶべきだと言われる具体的な理由には以下のものがありました。

<機械学習エンジニアとしてスキルを高めていくなら数学を学んだ方が良い理由>

  • (1) 数式をベースにしている機械学習への理解が深まるため、機械学習で吐き出した結果について、なぜこのような結果が出たのか、結果が本当に妥当なのかなど判断できる
  • (2) 機械学習で吐き出された結果の理由について、よりわかりやすく論理的に他人へ説明できるようになり、数学を理解していない人と比べた時に差別化できる
  • (3) 機械学習は半年も経つと古いと言われるほど流れが早く最新の論文を読んで情報を常にとり続けていくことが求められるが、英語の専門用語は解読が困難。しかし全世界共通言語である数学の理解があれば、論文の内容を理解しやすくなる
  • (4) 機械学習で作成したモデルの精度を上げるためのパラメータ調整では、パラメータも数式に基づいているので数学の知識があるとパラメータをどう調整してよいかの判断ができる
  • (5) ディープラーニング(深層学習)で代表されるように多次元配列を扱うことが多いので、数学を理解すればどの次元で和を取っているかなどで混乱するのを避けられる
  • (6) 便利なライブラリが複数でてきたために、機械学習のアルゴリズム(原理)を理解している人が少なく、数学の理解があればアルゴリズムの理解が進み、機械学習ライブラリを解決したいテーマに応じて使いこなせるようになる

このように、数学を学ぶと様々なメリットがあることが見えてきました!もうご存知の方にとっては当然のことだったかもしれませんが・・・。

調べてみた今は数学を学ぶ重要性を納得できたのですが、よく見聞きする「機械学習は数学をベースとしているから数学を学ぶべきだ」っていう説明は少々抽象的で僕のような機械学習初学者には不親切だなと感じた次第です 汗

つっちー
つっちー

色々冒頭でグタグタ書いてきましたが、やっぱり機械学習のスキルを高めていく上で数学は大事という訳で納得しました(僕が)。

機械学習を学ぶ入り口として数学は不要で必要に応じて学ぶという考え方

学ぶイメージ確かに数学は大事だ!とわかったわけですが、一方で

「機械学習を学ぶ入り口としては不要だと思う」

という意見もありました。

人工知能プログラミングのための数学がわかる本』の著者であり、AIエンジニアになるためのオンライン学習サービスAidemyを運営する株式会社アイデミーの代表取締役CEOの石川聡彦氏はTwitterで次のようにツイートしています。

このツイートに対して、様々な有識者が同意の言及をしています。実際多くのリツイートといいねがされていますよね。

石川聡彦氏のツイート

※もっと詳しく知りたい方はコチラ
数学分からず機械学習しても良いじゃん。だってエンジニアだもの。

また、この「機械学習を学ぶ入り口としては不要だと思う」という意見に似た見方として、オンライン上でPythonやR、機械学習などが学べるAI Academyを運営しているサイバーブレイン株式会社 代表取締役 CEO&Founderの谷 一徳氏は、

「AI(機械学習)エンジニアになるには、ライブラリに頼って機械学習を実装する体験をして学ぶモチベーションを保ちながら機械学習の中身が気になったタイミングで数学を学習していく方法がお勧め」

という趣旨の文章を次のページに記しています。(もちろん人によってはゴリゴリに数学の理論から学んだ方がモチベーションを保ちやすい人もいるかもしれません)。

【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法

このように機械学習を学べるサービスを運営しており初学者と多く接点を持っている有識者の方々のように「数学を学ぶことは入門時にはそれほど重要度は高くない」という見方も良さそうです。

目的によっては数学はそれほど重視しなくて良いかもしれない

知的なイメージさらに驚いたのですが、石川聡彦氏は「線形代数や微分・確率統計などのテーマは押さえておくべきだけど、機械学習エンジニアならそんなに数学を重視しなくても良いのでは?」という趣旨の主張もされているほどです。

その主張の背景には、現在はCPUやメモリといったコンピュータの論理構造に近い領域の知識が無くともアプリ制作が可能な時代になっており、同じように機械学習でも中身を完全に理解していなくても実装できてしまう現実があります。

「エンジニアは論理より実装できるが求められる職業だからこそ実装がキチンとできれば良いのではないか」という見方です。

プログラミングをしているイメージ

冷静に考えてみると、、、

ビジネスは誰かの問題解決をすること、何かしらの目的を達成することが大事ですよね。機械学習は何らかの目的を達成するためのツールなので、数学の理解がたとえ浅くても機械学習を用いて問題解決できる、目的が達成できるならそれで良いのかもしれません。例えばプラシーボ効果がなぜ起こるのかの全貌は解明されていませんが、世間では効果的な手法として使われています。

なので機械学習を学ぶ人がどこを目指しているかによって、数学を学ぶということの重要度は変わってくるものでしょう。例えば、自分が構築したモデルの価値をお客様に説明&納得して動いてもらいたいのか、機械学習を実装したアプリを作りたいか、、、そうした目的の違いによって数学の重要度も変わってきそうです。

数学のイメージ

すると、「数学は重要だけれど重要でないかもしれない」というめちゃふんわりとしたところに着地するのですが、僕個人的には「あくまで数学は機械学習の学びを深めるもの、実装するためのスピードを高めるための一要素」という石川氏の考えに共感を覚えました。

しかし、統計の専門家やデータサイエンティストのような、「なぜこうした事象、結果が起こったか」といった「論理的な説明」が求められる方達はやはり数学が重要になってくるのでしょう。数学を知らなければ論理的な説明をできるはずがありませんから。

数学を学ぶことがどれだけ重要かというのは人それぞれでしょう。

機械学習の数学を学ぶためにめちゃ役に立った&感謝してる3冊

最後に、僕自身数学の勉強はこれまでちょこちょこ取り組んできており、機械学習の数学の説明がわかりやすいなあとめちゃ感謝してる本をご紹介します。(今更感がありますが・・・汗)

『やさしく学ぶ 機械学習を理解するための数学のきほん アヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで』

やさしく学ぶ 機械学習を理解するための数学のきほん アヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで

つっちー
つっちー

機械学習の中身をイメージをするのに本当に助けられました。ゆっくりと対話形式で進めていってくれるのでとても理解しやすいです。数学の事前知識に自信が無くても巻末の付録ページで知識を補充できるのもとても嬉しい点ですね。

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

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

つっちー
つっちー

AIプログラミングに必要な数学に絞って解説してくれているので効率的に数学を復習できます。「人工知能ではこう使われる!」という数学が機械学習でどのように使われるかのコラムもついているので、数学を学びながら機械学習とのつながりをイメージしやすいです。

『はじめてのディープラーニング Pythonで学ぶニューラルネットワークとバックプロパゲーション』

はじめてのディープラーニング Pythonで学ぶニューラルネットワークとバックプロパゲーション

つっちー
つっちー

数学を絡めたディープラーニングの理解はこの書籍が本当に丁寧でわかりやすかったです。ディープラーニング入門書として「ゼロから作るDeep Learning―Pythonで学ぶディープラーニングの理論と実装」が現在日本のデファクトスタンダードのようになっていますが、この書籍の理解につまづいて落ち込んでた僕でも、こちらの書籍なら理解していけました!

まとめ

人が歩いているイメージさて、今回は「機械学習を学ぶのにはなぜ数学が大事でどう活かせるのか」について見てきました。

数学を学ぶことで「機械学習にどう活かせるのか」、「機械学習ライブラリの中身を理解せぬまま使う場合とどう差が出るのか」、「数学は機械学習にとってどのような位置付けなのか」、などが見えてきましたよね。

「数学を学び直すぞ!!」というモチベーションが湧いてきた方、「数学で挫折しそうになってたけど気楽にやっていこう」と思われた方などなど、みなさんそれぞれに感じられたものがあることでしょう。途中書いたように人それぞれ機械学習を用いて何をしたいかという目的は異なるので、ご自身の目的に沿ってご自身で数学の重要性を決める、それで良いのかもしれません。

また、新しいことを学ぶのは楽しいもので「機械学習には数学が重要だ!数学を勉強しよう!」と取り組むうちにいつの間にか数学を学ぶこと自体が目的に・・・なんていう目的のすり替わり惨事をやってしまいがちです(僕が)が、「なぜ今自分は数学を学ぶ必要があるのか?」そうした自分を客観視する視点を見失わずに目標に向かって邁進していきたいですよね!

<参考>
機械学習をやる上で線形代数のどのような知識が必要になるのか
機械学習をやるのに「数学」は必要!? | 流行の機械学習を使いこなすための「骨太な」勉強のやりかた。
なぜ今数学を学ぶ必要があるのか?
【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法
数学分からず機械学習しても良いじゃん。だってエンジニアだもの。
石川 聡彦(Aidemy)

つっちー
つっちー

AI(人工知能)って「なにそれ美味しいの?」ってレベルだった僕が、AIエンジニアを目指してステップを踏んだり踏まれたりしている記事を書いてます。よかったら読んでみてください(ほぼ実話)。

「歩く負債」と言われた僕がゼロからAIエンジニアになる為のステップを実践してみた!
みんなのAI(人工知能)用語集

コメントをどうぞ

  1. つっちー つっちー より:

    赤石様、先日出版されたばかりなんですね。コメントくださりありがとうございます!

  2. 赤石雅典 より:

    記事を大変興味深く拝見しました。
    ちょうど同じ領域を対象とした書籍「最短コースでわかる ディープラーニングの数学」を日経BP社より出したばかりの者です。お時間のあるときにこちらの書籍も評価していただけると幸いです。よろしくお願いいたします。

トップへ戻る
タイトルとURLをコピーしました