プログラミングで数学の知識は必要?関係性を解説!


大学(特に理系)において、線形代数の行列の計算、微積分のフーリエ変換、確率統計学のような数学知識はプログラミングで必要なのでしょうか?
- 何に使うの?
- 勉強して意味あるの?
と思う方もいると思います。
どんなシステムにどんな数学的知識が使われているのでしょうか。
プログラミングで数学の知識は必要?
まず結論から言います。
プログラミングにおいて理系大学で学ぶような物理学の知識や高等な数学的知識は、作るものによって必要か必要でないかは異なります。
というのは、一般的なWebページやアプリケーションを作るのには、そのような物理学の知識や数学的知識は必要にはなりません。
ではどのようなものが物理学の知識や数学的知識を必要とするのでしょうか。
線形代数学
線形代数学は、主に機械学習という人工知能(AI)の分野で必要になります。
機械学習についてはまとめた記事がありますので是非ご一読ください。
線形代数学を勉強すると、「行列演算」という計算に出会うと思います。
この行列演算は「大量のデータをまとめて効率的に処理できる」という性質があります。
その性質が、膨大な処理を必要とする機械学習やディープラーニングで活躍します。
機械学習エンジニアになりたいのであれば、線形代数学をしっかりと学んでいたほうがよいでしょう。
プログラミング言語「Python」にはこの線形代数学における行列演算処理についてのライブラリがたくさんあるため、人工知能の分野で活躍しされています。
- 線形代数学はAIの機械学習に必要!
- 機械学習エンジニアになりたいならしっかり学ぶべき!
- 「大量のデータをまとめて効率的に処理できる」役割!
微分積分学
微積分は主に画像認識、信号処理に使われています。
画像認識とはコンピュータビジョンとも呼ばれます。
コンピュータビジョン(computer vision)はコンピュータがデジタルな画像、または動画をいかによく理解できるか、ということを扱う研究分野である。工学的には、人間の視覚システムが行うことができるタスクを自動化することを追求する分野である。
ビデオカメラの機能で顔に̻四角がついて「Smile70%」って出るやつとか、iPhoneの顔認証とかです。
四角い枠がついてるあれ。

上の画像は、googleがオープンソース化した画像認識のAPIだそうです。
「コンピュータが人をどう認識しているのか」って所がとても興味深いですね。
信号処理(しんごうしょり、signal processing)とは、光学信号、音声信号、電磁気信号などの様々な信号を数学的に加工するための学問・技術である。
信号処理は身近なところでいうと「画像圧縮」があります。
本来の画像データよりも何倍も小さいバイト数で同じ画像(厳密には違う)を表現することができる技術ですね。
このサイトの図解がすごくわかりやすかったです。53ページから見てみてください。
また、微分積分学は物理学の範囲での基礎となっていたりもします。
というより、個人的には物理学の基礎は微積が大半を占めている気がしてなりません。
- 微分積分学のフーリエ変換が、「画像認識」「信号処理」に必要!
- 物理学でも必要になってくる!
確率統計学
確率統計学の意味は、実際のデータに近似したモデルを作成しそれに当てはめて物事を考えることにあります。
ビジネスやマーケティングにおいて統計を取ることは非常に大事です。
また、機械学習の基礎にもなるので、データサイエンティストや機械学習エンジニアを目指す人は絶対に学んでおくべき分野です。
- 確率統計学はマーケティングビジネスの分野で活躍!
- データサイエンティストになるには必須!
- 機械学習にも使われる!
物理学
主にゲームプログラミングで必要になってきます。
というのも、物理演算を必要としているゲームには必要不可欠ですからね。
サッカーゲームのボールが飛ぶ軌道だって物理法則にしたがっているわけですし、なくてはならないですよね。
しかしながら、数学的知識とは違い少し的を絞った分野になります。
なので将来「モノを動かすプログラム」を作りたいと考える方が学ぶための分野だと思います。
この記事の主旨からは離れますが、物理学は日常において便利に暮らすために必要だったりもします。
- ゲームプログラミングで必要!
- 「モノを動かすプログラム」には必要不可欠!