結論から言うと、機械学習の中級者以上は線形代数を学ぶべきであると言えます。一方で、機械学習の初心者の段階では、まだ線形代数を学ぶべきであるとは言えません。
機械学習を学び始めた頃は、理論よりも、Python や Pandas、scikit-learn を使って機械学習の実践全般ができるようになることを目指しましょう。そして機械学習の実務を積む中で、様々な用語を学び経験を重ねていけば、線形代数を理解しやすくなっていきます。線形代数を学ぶのは、その状態になったときが理想的です。
一方で機械学習の実務の中級者以上になると、線形代数を学ぶことで、主に以下の 5 つの恩恵を得ることができます。
- 自分自身で新しい機械学習アルゴリズムを実装できるようになる。
- 自分自身で線形代数の算術を実装できるようになる。
- 統計学を深く理解できるようになる。
- 機械学習に使われている行列の分解が分かるようになる。
- 線形最小二乗法問題を理解して解けるようになる。
一つずつ詳しく見ていきましょう。
新しい機械学習アルゴリズムを実装できるようになる
線形代数を学ぶと、自然とベクトルや行列の読み書きができるようになります。そして書籍やリサーチペーパーで解説されているような機械学習アルゴリズムは、ほとんどすべてベクトルと行列が使われています。そのため線形代数がわかると、以下のようなことができるようになります。
- 書籍や教科書に書かれている機械学習アルゴリズムの解説を理解できるようになる。
- リサーチペーパーに書かれている新しいメソッドを自分自身で実装できるようになる。
- 他の人に自分自身のメソッドを簡潔に解説できるようになる。
線形代数の算術を実装できるようになる
Python などの機械学習に適したプログラミング言語には、線形代数の算術のすべてが完璧に実装されているわけではありません。また、NumPy や SciPy などの線形代数ライブラリも完璧なわけではありません。そのため時には必要な関数が実装されていない場合があります。その場合は自分自身で線形代数の演算プログラムを実装する必要があります。そのため線形代数を学んで、ベクトルと行列の演算を理解していることが重要になります。
統計学を深く理解できるようになる
線形代数と統計学は機械学習の根幹を成す学問分野です。そして統計学を深く理解するには、線形代数の理解が欠かせません。最新の統計学では、データの平均や分散におけるベクトル、多変量正規分布における分散共分散行列まで、線形代数の表記法やツールが多く使われています。たとえば機械学習で必ず扱うことになる、データ削減のための主成分分析も線形代数と統計学が融合したものです。
こうしたことから統計学を深く理解するためにも線形代数を欠かすことはできません。
機械学習に使われている行列の分解が分かるようになる
線形代数の中の行列の分解の演算は機械学習に追いて肝となるツールです。そのため Python やその周辺ライブラリには、さまざまな行列分解の関数やメソッドが用意されています。それらを使いこなすには行列の分解の知識が必要不可欠です。また、それらの関数やメソッドの中には、それ自体が機械学習の一要素であるものもあります。たとえば特異値分解は、機械学習におけるデータ削減そのものです。
こうした行列を扱う関数やメソッドを理解するためにも、行列の分解の知識が必要です。
線形最小二乗法問題を理解して解けるようになる。
線形代数はもともと連立線型方程式を解くために開発されたものです。そして機械学習で扱うような連立線型方程式は、未知の説明変数の方が、目的変数よりも多い場合がほとんどです。そうした問題は、線形最小二乗法問題といって、行列の分解などの線形代数の演算を行うことではじめて解けるようになります。そして、この線形最小二乗法問題は、機械学習アルゴリズムの中で幅広い役割を担っています。
こうしたアルゴリズムを読み、理解するためには、やはり線形代数を理解している必要があります。
ポイント
- 線形代数を学ぶべきでない人は機械学習の初心者です。なぜなら機械学習の初心者は、その背景にある理論を理解するよりも、まず機械学習そのものを実践することが大事だからです。
- 線形代数を学ぶべき人は機械学習の中級者以上です。なぜなら、それによって自分自身で新しいアルゴリズムを実装したり、必要な関数を実装したり、統計学を深く理解できたりするからです。