AI関連で使う数学を理解するには、大学レベルの線形代数、微分積分、確率統計が必要です。それ以上の大学レベルの数学も特定分野では必要になりますが、基本的には不要で、線形代数、微分積分、確率統計を理解していればほとんどのAI関連の内容は理解出来ます。
そのために中学レベルの数学から何をやっていけばいいか、1年間で大学レベルの数学まで独習するルートを紹介します。1日2時間学習すると推定したルートです。
やる気がある中学3年生なら、中学卒業までに大学レベルの数学を学習できるし、これから数学を再学習しようと思った社会人でも現実的なルートになります。
もちろん、本人がどの分野をどの程度理解しているかによって、期間を短縮することは可能です。
学習のポイント
短期間で数学を理解するためには、例えば受験数学の難問を解けるまで数学の学習をする必要は無いです。必要なのは教科書に書いてある基本的な内容を理解することです。
内容の理解とは公式に当てはめて計算できるということではなく、例えば微分とは何かを理解している事です。
AI関連では数学でもあまり使わない項目はあるので、そういった内容は簡単な理解にとどめる、各項目でもあまり深掘りしないことが重要です。ここで言及していない項目は学習する必要は無いですが、数学の基礎としてはある程度目を通しておくことに問題は無いです。
目的はAI関連の数学を理解する事なので、例えば受験合格レベルを目指すことは無駄になる場合があります。教科書の基本的な例題を解ければ、その分野は終わらせて次に進んでいくことが重要です。
その後進んだ分野でつまづいたら、また戻ってくればいいだけです。
中学レベルの学習
正負の数、文字式の計算、一次方程式、一次関数、連立方程式を出来るようにします。
出来るかどうかを中学生向けのドリルで解けるか確認してみましょう。図形問題は基本的に不要です。
中学生レベルの数学の内容を一通り学習したい場合は参考書などを使っても問題ないですが、基本的には前述の方程式、関数などを解けるようになっていれば次に進みます。
高校基礎レベルの学習
高校数学Iの内容を固めます。二次関数グラフ、最大・最小、三角比(sin, cos, tan)の定義、平方完成までをやります。
この時点でPythonを使ったグラフを書いてみてもいいでしょう。
平方完成が出来ればAIで重要な誤差最小化の考えにつながります。
二次関数など高校数学IIを学習します。
指数法則、対数(log)の定義、シグマ記号などを理解して基本的な計算が問題ないようにします。
この時点で出来ない場合は前の項目に戻って学習し直してください。
この段階までが3ヶ月で出来るようになっていることが目標です。既にある程度理解している場合はもっと短く終了できているかもしれません。
高校レベルの学習
数学B/Cのベクトルの内容を学習し、数II・IIIの基礎を学習します。
微分・積分を中心に、接線の傾き、微分の公式、合成関数の微分、連鎖律を中心に学習します。ベクトルは内積について理解する事が重要です。
連鎖律(合成関数の微分)を学習すれば、AIのバックプロパゲーション(誤差逆伝播法)が理解出来ます。
ここまでを半年程度で終わらせることを目標にします。
大学レベルの学習
線形代数の学習をします。
特に行列の積、逆行列、行列式、固有値・固有ベクトルを理解しますが、概念が抽象的で分かりにくくなっているかもしれません。行列式については概念を理解すれば問題ないです。
その後、多変数関数と偏微分の内容に入ります。
偏微分、勾配を中心に学習します。
確率・統計を学習して、一通りの数学の分野の学習を終了します。
確率分布、正規分布、期待値、分散、ベイズの定理を学習します。
大学レベルの数学の学習は半年程度かけますが、終わったらAI関連の数学関連で学習して、自分の理解を確認します。
わからなければ復習
もしも、AI関連書籍の数式の意味などがわからない場合は、その前の項目に戻って学習し直しましょう。
ここまでで全くわからない状態ではなく、理解が不足しているのでイマイチピンとこないような状態になっていると思います。
それでもわからない部分が出てくると思います。
既に先人が同じようにどこかでつまづいているので、関連のブログ、YouTubeの解説動画などを確認します。特に重要なのが数式に実際に数字を入れて計算してみることです。
AI関連の数学の内容は教科書的に書かれているわけでもないので、理解しにくい場合もあります。AIに聞く事も有効かもしれません。
これを繰り返していけば、数学関連の理解には問題なくなっていると思います。
Pythonの学習も並行する
最終的にPythonを使ってAIのコードを書くことになるので、数式もPythonでかけるようにPythonの学習も並行すると効率が高いです。
Pythonのライブラリ、NumPyとMatplotlibを使うとグラフを書けますが、NumPyとMatplotlibを使ってグラフを書くコードをAIに書いてもらうような事も学習に役立ちます。
例えば、NumPyの配列は数学的にはベクトルや行列に対応しているため、線形代数の理解がそのままコードの理解につながります。
プログラミング自体の初心者の場合は、Pythonの基本を並行して基本を学習しましょう。
この時点で重要なのは細かなコードを自分で書けるようにすることではなく、Pythonで出力された基本的なコードの意味がわかることです。
例えば二次関数のグラフを書くPythonコードはそこまで難しくないので、すべてのコードを自分では書けないかもしれませんが、AIで出力されたコードの意味はすべての行で理解出来ると思います。(個別の行の意味は理解出来るという意味です)
更にその先への展望
高校基礎レベルが終わった段階、もしくは数学の内容を一通り理解した段階で、コンピュータサイエンスの学習も並行すると、より様々な理解が深まります。
特にアルゴリズムとデータ構造、データベースあたりを理解すると、AI関連で役立ちます。コンピュータサイエンスではCPUなども学習しますが、アルゴリズムなどの必要な内容に絞って学習することで、学習時間を最適化出来ます。大学などでは2年くらいかけて行う内容を、一部分だけを半年ほどで学習します。
まずは基礎を固めるという意味で、AIを使うための数学、AIを使うためのPython基礎、それらの基礎となるアルゴリズムなどの学習に目安として1年半くらいかけます。
このレベルまで来ると、コードが数学的に何の意味がある物か、論文を読んでコードは書けなくても、どのパラメータがどんな意味があるのかは理解出来る状態になり、知識だけで言えばAI関連の技術者としては中の下くらいにはなっています。実際の理解度にもよりますが、それよりも上のレベルに位置している場合もあります。
あとは経験を積んでいくだけです。
実際に数学、特に線形代数、確率統計などを理解せずにコードと数学が一致しない、AIをブラックボックスとしてAPIを使っているだけの自称AIエンジニアは多数いるのが現状です。
そのようなエンジニアに比べて、数学の理解は深いが経験が浅いエンジニアは長期的に見ると、有用な人材として生き残っていき、貴重な人材であり続ける可能性が高いです。