post Image
機械学習はライブラリを使えれば数学は必要ないのだろうか。生の声を聞いてみた。

はじめに

株式会社キカガク

株式会社キカガクでは、機械学習や人工知能に関して、初心者向けに数学やプログラミングの教育サービスを行っています。
2017年1月に創業し、約4ヶ月で累計700名以上の方に、手書きの数学プログラミングオフラインの講義スタイルでお伝えしてきました。

このご時世、機械学習の便利なライブラリがたくさん開発されており、数学を含めた中の仕組み知らなくても、なんとなくうまくいく物を作ることができます。
個人的には、大学院で機械学習の応用研究をしていたという背景もあり、機械学習の数学をしっかりと勉強するのが当たり前だと思っています。
しかし、中の数学を知らなくても、(教師あり学習の場合)入力$X$と出力$Y$の関係性を見つけるといった大枠の概念を知っておくことと、データの準備さえできれば、動くものを作ることができるため、
「もしかすると、数学を学ばなくても、別に良いのではないか?
 機械学習はライブラリを使えれば数学は必要ないのだろうか。
と感じることもありました。

もし必要ないのであれば、ライブラリの使い方を含めたプログラミングのみを教えるのがベストだと思います。

しかし、実際のところ、受講生の悩みの生の声を聞いてみると、やっぱり数学を学ぶことは必要だと感じたため、今回の記事としてまとめることに決めました。

機械学習の数学を学ばないと陥る3つの落とし穴

1.人に説明できない

最も多かった意見がこれでした。

マーケターの方や、エンジニアの方の意見として多かったのですが、やはり機械学習(人工知能と呼ばれている製品を含む)系のプロダクトを作成した際に、「なぜこれはうまくいくのか?また、他社のAI製品との差別化ポイントはどこなのか?」といった説明を求められることが多いそうです。
この「なぜうまくいっているのか?」といった理由を話すためには、ある指標として定めた数値をもとに議論する必要があります。
この数値はもともと意味をもった数式と紐付いており、簡単な統計量だけでは議論できない機械学習では、当然その中身の数式と紐付いて説明する必要があります。

そういった点で、その機械学習のロジックを表現している数式を理解していないと、なぜうまくいっているのかを説明することができないといった話でした。
機械学習の数学を正しく理解していると、なぜうまくいっているのか、またどの変数が予測に寄与しているのかも議論することができるようになるので、説明がぐっと楽になります。

2.調整できない

これはエンジニアの方から多かった意見です。

機械学習はモデルを作るといった作業があり、そのモデルに基づいて今後のデータに対する予測を行っていきます。
一度モデルを作ると後は自動的に計算を行ってくれるのですが、もともとモデルを作成した際に使用したデータと、現在のトレンドが変わってきていると、予測の精度が低下してくるため、モデルを更新する(メンテナンス)といった作業が必要となります。
その際に、モデルを作成した人が別の部署や会社に移動したりなどで引き継ぎが生じ、別のエンジニアの方が担当した際に、結局どれを調整して良いかわからず、その調整すべき(ハイパー)パラメータは、数式とリンクしているため、中の数学がわからないと結局できないといった悩みでした。

余談ですが、自分がその立場であれば、非常に辛いだろうなと感じながらも、機械学習の数学をお伝えする中で、「これがこれに対応していたのか!」と喜んで帰っていただける様子を見ると、いつも嬉しくなります。

3.どの手法を使って良いかわからない

これは、実際にライブラリを使い始めた方からよくある意見です。

機械学習はデータの関係性を見つけるといった概念として位置づけられますが、実際に具体的にどうやってデータの関係性を見つけるかといった手法(アルゴリズム:概念ではなく、具体的な方法論)がたくさんあります。
数学的な見解がわからない限り、その手法の特性を理解することができず、自分の解決したい課題はどれを使えばよいのかわからないといった質問がよく出ます。

こちらに関しては、ざっとでも良いので数学を学び、全体感が見えてきてからこそ、答えられる問題だったりするので、まずは俯瞰的に色々なモデルの数学を学ぶと良いと思います。

オススメの勉強法

やはり数学を学ぶことが必要であるといった少し偏った見解となっていますが、実際に機械学習を導入されている方々からの意見としても、やはりある程度は数学も含めて中を理解していなければといったところでした。
ただし、論文を読むといったレベルでなければ、1〜2年腰を据えて勉強するほどではなく、数カ月の勉強で大丈夫だったりします。

1.参考書で独学

仕事終わりや土日など、腰を据えて勉強出来る場合は、まず独学してみるのもありだと思います。
理系出身の方であれば、数式に慣れている方も多く、数学的にもそこまで難易度は高くないため、良い参考書があれば独学で習得できることもあります。
独学で意識しておくべき点は、数学を学ぶ前に、どのような応用事例があるか?といった具体的なイメージを掴んでおくことが大事です。
入力Xにはこのデータを使用して、出力Yにはこのデータを使用するといった具体的なデータをイメージできるとベストです。
参考書には、そのデータの関係性の見つけ方の方法論を中心に書かれており、その数学だけ学ぶと、結局何がしたいんだったっけ?といった現象に陥ってしまいがちですので、お気をつけください。

おすすめの参考書(順番も大事)

1.ビジネスの応用例を知る:グーグルに学ぶディープラーニング
2.機械学習の数学の全体像を把握する:データサイエンティスト養成読本 機械学習入門
3.機械学習の数式の計算をざっくりと理解する:ITエンジニアのための機械学習理論入門
4.ビジネスの応用例から必要な数学を学ぶ:事例+演習で学ぶ機械学習 ビジネスを支えるデータ活用のしくみ

2.動画で独学

最近ではUdemyをはじめとした動画コンテンツも増えてきたため、こちらもおすすめです。
やはり、参考書の数学だけでは、それがどのような経緯で式変形をされたかといった意図がつかみにくいといったこともあり、そういった解説があるのはより一層理解の手助けになると思います。

3.勉強会やセミナーに参加

最近では、こちらの記事「AI勉強会トレンド調査 「数学」の壁に挑戦する場が400%増!?」にあるように、都内を中心に機械学習の数学を学ぼうといった勉強会やセミナーが増えているため、そういった場を活用することもおすすめです 。
オフラインで集まるため、移動や時間の問題がありますが、やはり実際に行って勉強するというのは、この時間は勉強しなければいけないという拘束力(超強力)や、周りの仲間がいるモチベーションアップもあり、短時間で多くのことを吸収できることが多いです。
上記の記事で紹介されている有名な勉強会をこちらでも紹介しておきますので、ぜひ勉強会への参加も検討されてはいかがでしょうか。

記事で取り上げられている数学系の勉強会やセミナー

キカガク ← 光栄にもトップバッターに弊社をピックアップしていただいています
Nextreamer勉強会
TeamAI

おわりに

今回はやはり数学は学ぶべきであるといった結論の内容となりましたが、 生の声を聞いた方々は、実際に機械学習の導入を行っており、より一歩先に進みたいといった傾向があります。
そのため、絶対に数学を学ばないとできないわけではなく、まず簡単に概念を掴んで、ライブラリを使って動かしてみて、より一歩先に進みたいなと感じていただけた場合は、数学を学ぶといった流れで良いと思っています。

(結論)
導入に必要不可欠ではないですが、プロダクトを安定して保守・運用および営業をしていくためにはあった方が良い

ぜひ、みなさん、数学を思いっきり学んで、楽しい機械学習ライフを送りましょう!

著者

株式会社キカガク
代表取締役社長 吉崎 亮介


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。