production.log

株式会社リブセンスでエンジニアをやっている星直史のブログです。

Novathのモニターになり、数学を学ぶ楽しさとAI(機械学習)を扱えるようになりました。

概要

2021年4月より、Novathの第2回モニターとしてカリキュラムを受講しました。
Novathは、AI×データ時代の武器としての数学を学ぶカリキュラムを提供するサービスです。

novath.co.jp

これまでに以下のタイトルを獲得しています。

  • TOKYO STARTUP GATEWAY 2020オーディエンス賞
  • TOKYO STARTUP DEGAWA 2021優勝 & 出川賞 受賞

たまたま上記のテレビ放送を観ていて「これだ!」と思い、すぐさまモニター応募をしたのがきっかけです。
この記事では、Novathのモニターになり、数学を学ぶ楽しさとAI(機械学習)を扱えるようになったので、その過程を紹介します。

Novathとは

Novathとは、AIで使用する数学の知識を専属コーチとのマンツーマンレッスンで最短距離で学べるサービスです。

なぜ受講しようと思ったか

先述の通り、認知のきっかけはたまたまテレビ放送を観ていたからです。
モニターに応募しようと思った動機は大きく2つあります。

  1. 直近仕事で使うデータを扱う機会が格段に多くなったので、それに活かしたかった
  2. 最後の機械学習入門にしたかった

業務に活かしたかった

2021年1月よりCTO兼Snapmart事業責任者になりました。
これまではCTOとしてプロダクトをどのように開発するか?(How)に注力していたのですが、今年からは何をなぜ作るべきか?(What / Why)について注力する必要がありました。
これまでSQLを使ってDBからデータを抽出する作業は行っていましたが、データの解釈や何かしらの示唆を得るようなことは、さほどしてきませんでした。
そのため、今年の方針を策定するにあたりデータを使って自分なりに根拠を示すも、「本当にこれが正しいと言えるのか?」という疑念がありました。
その状態を脱却したいという思いがあり、モニターの応募をしました。

最後の機械学習入門にしたかった

これまでのキャリアは、Webのバックエンド領域を主軸に、AWSを使ったインフラ、React Nativeを使ったスマホアプリなどと、領域を広げてきました。
ソフトウェア開発の技術を磨いていると様々な情報が入ってきます。機械学習も例外ではありませんでした。
機械学習領域は本職ではないにせよ関連領域である認識はありましたし、触り程度を知っておく必要はあると思っていたため、過去に何冊か機械学習関連の入門書を読んだこともありました。

しかし、何冊入門書を読んでもプロローグを読んだ後の「最低限の数学の知識をおさらいする章」に差し掛かった途端に読むことを諦めてしまっていました。
また、「どうせscikit-learn使えばいいでしょ?AWS ML使えばいいでしょ?」のような、本来すべきことから目を背けて挫折してしまうことを繰り返していました。

そしてNovathでは「ゴール逆算型のカリキュラム」「コーチングとレッスンによる知識習得」を謳っていたので、

  • 機械学習を行う上で、本当に必要な数学な知識のみ習得できて効率的である
  • もし理解できないことがあってもコーチに泣きつける

という、他力本願ではありますが、これでダメだったら習得は諦めよう...という覚悟を持って受講を決めました。

受講前の数学レベル

先述の通り、いくつかの機械学習入門書で挫折してきたわけですが、その理由は、私の数学のレベルと書籍の想定読者の数学レベルに乖離がありすぎたからだと思います。

具体的には、私は中学数学で「変数x」が出た時点で学校に行くことをやめたため、以下の知識がない状態でした。*1

  • 分配法則
  • 式展開

一次関数、二次関数、微分は、単語としては知っている程度で、それが何なのかは知らない状態です。
このようなレベルの私が、書籍の"数学のおさらい"を見ても理解に苦痛が伴うため、読むことを諦めてきました。

Novathの"数学のおさらい"

Novathでは、数学の知識がない方に向けて「数学超入門」という教材(動画)も用意されています。
「数学超入門」では、関数、一次関数、二次関数、微分、ベクトル、行列をおさらいする内容でした。さすがに分配法則と式展開については軽く触れる程度でした。
ただ、先述の通り私の数学の知識は中1以下だったわけですが、そのレベルの自分が見てもすんなり理解できる内容であったため、現時点で数学の知識に不安がある方でも、安心して良いと思います。
具体的には、四則演算ができれば乗り切ることができると思います(できました)。

どのようなことを行ったか

f:id:watasihasitujidesu:20210919192934p:plain

Novathでは、実際の業務でありえそうな課題を機械学習で解決するというアプローチで学んでいきます。
具体的に習得できる機械学習の手法は以下の通りです。

  • 単回帰分析
  • 重回帰分析
  • ロジスティック回帰分析
  • k-means法

これらの手法(予測、分類、クラスタリング)は数学を使って計算をしていくのですが、使用する数学の知識について、一つずつ解説を受けることができます。

  • 数学の何の知識を使うのか
  • その知識はなぜ必要なのか
  • どのように数学の知識を使うのか

そのため、各機械学習の手法のロジック(どのような処理をなぜ行うのか)を説明できるようになります。

学習の流れ

Novathでは1つの機械学習モデルを2週間で学びます。*2

学習方法は、動画によるインプット(自学習)と、2週間に一度のコーチングがセットになります。
また、インプット途中でわからなくなっても、Slackでコーチにわからないところを聞くことができるので、ヘルプを上げれば迷子になることはないと思います。

インプット用の動画について

動画は1本あたり20〜25分ぐらいで、各回全体で120分ぐらいのボリュームにまとまっています。
先述の通り、機械学習モデルで使用する数学の知識を、なぜ、どのように使うかを詳細に解説した動画が視聴できます。不必要な数学の知識を余分に学ぶことはなく、最短で学んでいる感覚が個人的には嬉しい作りでした。

私は、動画を使った学習が初めてだったのですが、以下のメリットを感じました。

  • テキストと比較すると視覚的な情報量が多く、概念など抽象的なもののイメージがしやすい
  • 再生速度が可変なので視聴者の理解力に合わせてスピードを調整できる
  • 耳だけでもインプットできるため歩きながらでも多少は学習できる

そのため、学習途中で困ることはありませんでした。
また、動画内での数学の説明が非常にわかりやすく、理解できないような難易度のものはありませんでした。
教材(動画内での解説)の質の高さを感じました。

コーチングについて

2週間に一度コーチングを受けることができます。
コーチングの時間は、学習した内容をコーチに説明するアウトプットの時間になります。
コーチに説明をしていく中で、うまく説明できなかった部分や理解が浅い部分については、コーチから理解を促すための問いかけや解説を受けることができます。

コーチングについての受講後の感想は以下の通りです。

  • コーチへの説明(アウトプット)が伴うことで、インプットの質(理解度)が高まる(後述します)
  • 100%理解した状態でコーチングの時間に臨んでもコーチがさらに理解を深めるために様々な角度から質問をしてくれる
  • それ故に知的欲求が満たされ、コーチングの時間が楽しみになる

アウトプットがあることで、インプットの質の向上や数学を学ぶ楽しさを体感できるような仕掛けになっているので、毎回非常に有意義な時間を過ごすことができました。

f:id:watasihasitujidesu:20210920194034j:plain
分配法則を教わっている図

f:id:watasihasitujidesu:20210920194152j:plain
コーチに説明をしている図

f:id:watasihasitujidesu:20210920194213j:plain
ロジスティック回帰分析の仕組みを数式を用いて説明できるようになった図

私の過ごし方

具体的に私が2週間をどのように過ごしたかを紹介します。

全体感の把握

まずは学習のペース配分やリズム掴むために、レッスン終了後の帰り道に動画を2倍速で視聴しました。 これをすることによって、全体像と理解に時間がかかりそうな箇所を洗い出し、インプットにかかる時間をおおよそ見積もれるので、「学習時間が足りない!」みたいな状態になることを避けることができました。

動画の視聴(インプット)

「理解できない」という内容が「動画を見る(説明を受ける)」という行為の中で存在しなくなることを到達目標にし、ひたすら動画を視聴しました。
先述の通り、動画自体は60~90分なのですが、私の数学レベルが低いこともあり何度も繰り返しみたり、隙間時間や散歩中に音だけ聞き流したりしていました。
ちなみに、動画内の解説スピードは1倍速で見ると結構ゆっくりです。私は1.75倍速を基本スピードとして、わからなくなったら1.5倍速にしてもう一度見るということを繰り返していました。
正確に時間を計測したわけではありませんが、インプットにかかる時間は12時間前後だったと思います。

コーチングに向けて説明の練習をする(アウトプット)

私は、実はDay1のレッスンで「動画を見て理解できたから説明とか楽勝でしょww」というノリでコーチングの時間に臨みました。
ところが、実際に説明をすると以下のような問題がありました。

  • そもそも理解できていない内容があることに気づいた
  • 動画で行っていた計算処理をなぜ使うのか説明できない
  • 動画内でコーチが導いていた答えと、説明しながら出した自分の答えが違う(!)

コーチの大いなるサポートを受けながらなんとか1回目のコーチングの時間が終わりましたが、自分に対する情けなさや学習を怠った後悔の念が残りました。
また、このような状態にも関わらず懇切丁寧に解説をしていただいたコーチの方に対する申し訳なさや、Novathを運営する皆さんの想いに応えるべく、自分も最大限努力をするべきだと、心を入れ替えました。

具体的に行ったコーチングに向けての説明の練習は、機械学習の処理の説明を口に出しながらノートに書いていくことです。
これを行うと「説明に困った部分は理解が足りていない部分」だと認識することができます。
そして、理解が足りていない部分に関する動画を再度視聴し、もう一度説明の練習を行います。
これを繰り返し行うことで、理解度を限りなく100%に近づけることができました。
この練習の到達目標は以下の通りです。

  • 動画で行っていた計算処理や結果と、何も見ずに自分で導いたものが合致していること
  • 何も見ずに自分が理解したことを数学の計算処理をしながら相手に説明できること

この状態に到達するまでには、説明の練習は3, 4回程度(機械学習モデルをはじめから最後まで説明しきって1回とカウント)行う必要がありました。
時間にすると6~8時間程度だったと思います。

振り返ると、このアウトプットの練習がなければ(純粋に動画視聴のインプットのみだと)理解度は60%くらいに留まっていたのではないかと思います。
この行いをすることで過不足なく学習を進めることができたので、これから受講する方にオススメの学習方法だと思います!

f:id:watasihasitujidesu:20210919205344j:plain
実際に使用したノート

ちなみに、ノートはインプット時には使用しませんでした(概念や計算処理などは動画に収録されているため、改めてノートに書く必要性を感じなかったため)。
完全にアウトプット用として使用していました。
Day7までに普通のキャンパスノートの2/3程度は使ったと思います。*3

コーチング後の復習

コーチングが終わった後は、復習も行います。
コーチングを受けると、その場では理解したつもりになってしまうのですが、時間の経過とともに記憶が薄れてしまうので、帰宅してから復習を行います。

私の場合はDay1で分配法則と式展開がうまくできないという非常にまずい状態だったので、帰宅後に復習しました(復習というより改めて学びました)。
また、Day1はコーチの助言によりゴールまでたどり着けたので、一人で説明できるようになるため先述のノートに説明の練習をするということを、レッスン後に行いました。(これを行ったのはDay1だけです。)

さらに深堀 / 業務に適用

隙間時間でこまめに学習することや、可処分時間は最優先でNovathの学習に使っていたので、若干時間が余ることがありました。

余った時間は以下のように使いました。

  1. 動画で触れていた知識をさらに深堀すべく、異なる媒体(他の人が書いたブログなど)で同じ内容を学んだり調べる
  2. 仕事で適用できそうな課題を見つけて、実際に機械学習を適用してみる

1に関しては、説明する人が違えば説明の仕方も異なります。
具体的には、数学記号を用いて解説されている方が大半であることがわかりました。
逆にいうとNovathでは、理解を促すことを目的にしているからか、数学記号は必要最小限に抑えられていると感じました。
そのため、Novathで学んだ数式を、数学記号を使った表記にした場合でも理解できるようになる必要性を感じました。
最初は数学記号を一つずつ調べるので時間がかかりますが、一旦理解すると数式がざっくり何を行っているのかがわかるようになります。
また、数学アレルギーを持っている方(私も含め)にとっては、この数学記号でアレルギー反応が出てしまうということがわかりました。
数学記号は、概念を省略して表記するために使われているものだとわかると、落ち着いて読み解こうとする姿勢になれた(=数学アレルギーがなくなる)のは大きな収穫でした。

2に関しては「習うより慣れろ」という言葉があるように、実際に習った機械学習を使うことで定着を促すことができると感じました。
私の場合は、k-means法を学習中にたまたまデータの標準化をしなければ解けない業務やクラスタリングをして解釈(=他者へ説明)する機会がありました。*4

めちゃくちゃ感動しましたし、数学の面白さをここで味わいました。
そして、学生の時に数学をしっかり勉強していれば...と後悔もしました。

どのような状態になったか / 受講後に変わったこと

Novathのカリキュラムを終えて振り返ると、自分自身に以下の変化がありました。

  • 「機械学習の学習」の成功体験を積むことができた
  • 機械学習の計算プロセスを説明できるようになった
  • 数学アレルギーが払拭できた(数式や数学記号を見ても怯まずに意味を理解しようと調べるという行動に移れるようになった)
  • 純粋に数学の楽しさを感じることができるようになった
  • 何かしらの課題やデータを与えられた場合に、機械学習の適用可否を判断できるようになった
  • 機械学習が適用できる課題やデータに対して、小規模なデータセットであれば、習得した知識の範囲においては解決できるようになった

特に、挫折しかしてこなかった「機会学習の学習」について成功体験を積めたことや、数学アレルギーが払拭できたことは、言うなればコンプレックスが解消されたといっても過言ではありません。
コンプレックスは一朝一夕にして解消できるものではないので、Novathには本当に感謝しています。

今後の学習計画

Novathによって機械学習の入門ができたので、さらに学びを深めたり活用するための方法をいくつか検討しています。

  • プログラムで機械学習を行えるように学ぶ(インプットドリブン)
  • 業務上の課題を機械学習を使って解決する(アウトプットドリブン)
  • 統計を学ぶ

NovathではケーススタディにおいてExcelを使用します。しかしExcelでは操作が煩わしく感じることや、データ量が増えると処理が重くなり扱えるデータ量に制限が出てきます。
実際の業務では扱うデータ量が大きいため、プログラムで機械学習を扱えるようにする必要性を感じています。また、課題解決の幅を広げるために、scikit-learnなどで他のモデルを扱えるように学んでいこうと考えています。
一方、目の前の課題をこなす中で必要になるスキルを磨いていくアプローチもあるので、業務上の課題を機械学習を使って実際に解決していくことも考えています。これらの両アプローチについてバランスを取りながら進めていくのが良いのではないかと思います。

また、統計についても学習を始めようと考えています。
こちらも業務上、統計を知っていると解けたであろう課題が過去にあったので、数学の知識を使った学問の一つである統計学を学んでみようと考えています。

まとめ

Novathのサービスページにある受講後の到達地点は以下の通りです。

  • AI(機械学習)の数学的な本質(ロジック)を理解し、人に説明できる
  • ビジネスの現場で役に立つ統計手法(重回帰分析、ロジスティック回帰分析、クラスタリング等)をExcelで使いこなせるようになる
  • AIに必要な中学~大学の基礎数学の習得(関数、微分、線形代数、確率統計等)

このレベルには間違いなく到達できると思います(もちろん適切な量努力する必要はあります)。

上記以外で私が伝えたいことは、Novathで数学の苦手意識の払拭にとどまらず、数学の面白さを知れたことや、数学が実社会で役に立つことを体感できたことを強く強調したいです。

学生時代に「なんのために勉強をするのかわからない」と感じてしまい、学習することを辞め挫折を繰り返すことで、やがてコンプレックスになってしまった数学ですが、Novathに出会ったことで数学に対する見方が180度変わったので感動しました。

もし私が学生時代にNovathに出会っていたのなら、データ分析に関する職業に就くことが有力な選択肢になっていたのではないかと正直思います。
もちろん、今の自分にとっても、エンジニアとして戦うための武器を手に入れた感覚があるのでキャリアがさらに好転する確度が高まったという感覚を持っています。

現時点で多少なりともデータを扱っている方には間違いなくオススメできるサービスです!

人生が変わったと言える貴重な時間と学びの機会をいただけたNovathのみなさんには感謝してもしきれません。本当にありがとうございました!!!

f:id:watasihasitujidesu:20210920200619j:plain
Novathのみなさんと私

紹介割引(受講料金より5万円割引)について

今ならNovathモニターの紹介割引があるようです!
受講料金より5万円割引されるのはかなりデカいですね!! 利用されたい方はTwitterのDMよりご連絡いただければと思います!

novath.co.jp

*1:なかなか強烈ですね

*2:ロジスティック回帰は4週間で学ぶ

*3:こんなにノートを使ったのは人生初

*4:その他にもロジスティック回帰を使ったこともありました