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

大学(特に理系)において、線形代数の行列の計算、微積分のフーリエ変換、確率統計学のような数学知識はプログラミングで必要なのでしょうか?

  • 何に使うの?
  • 勉強して意味あるの?

と思う方もいると思います。どんなシステムにどんな数学的知識が使われているのでしょうか。

プログラミングで数学の知識は必要?

まず結論から言います。プログラミングにおいて理系大学で学ぶような物理学の知識や高等な数学的知識は、作るものによって必要か必要でないかは異なります。

というのは、一般的なWebページやアプリケーションを作るのには、そのような物理学の知識や数学的知識は必要にはなりません。

ではどのようなものが物理学の知識や数学的知識を必要とするのでしょうか。

線形代数学

線形代数学の行列演算は、主に機械学習という人工知能(AI)の分野で必要になります。

機械学習についてはまとめた記事がありますので是非ご一読ください。

人工知能・機械学習・深層学習 それぞれの違いをわかりやすく解説!

行列演算がどのように使われているのかも気になるところですよね。

そもそも線形代数って「たくさんの数式を簡潔にまとめる」役割があるんです。

例として、行列って方程式の係数をとったものともいえますよね。

それも、いらない情報を捨てて必要な情報だけを抜き取るというプログラミングにおいて非常に重要な考え方です。

また、そのまとまったデータを一括で処理、演算するようなこともできるのできるのがこの分野です。

機械学習は大量のデータ群を評価する必要があります。

大量のデータを処理する際に線形代数学の行列の知識が大いに活躍するのです。

参考サイト:線形代数の基礎,AI・機械学習には数学が必要って本当?

プログラミング言語「Python」にはこの線形代数学における行列演算処理についてのライブラリ(追加機能みたいなもの)がたくさんあるため、人工知能の分野で活躍しされています。

線形代数学はAIの機械学習に必要!

「たくさんの数式を簡潔にまとめる」役割!

微分積分学

微積分は主に画像認識、信号処理に使われています。

画像認識とはコンピュータビジョンとも呼ばれます。

コンピュータビジョンcomputer vision)はコンピュータがデジタルな画像、または動画をいかによく理解できるか、ということを扱う研究分野である。工学的には、人間の視覚システムが行うことができるタスクを自動化することを追求する分野である。

wikipedia

あれですよ。

ビデオカメラの機能で顔に̻四角がついて「Smile70%」って出るやつとか、iPhoneの顔認証とか。

四角い枠がついてるあれ。

引用サイト

これ。googleがオープンソース化した画像認識のAPIだそうです。

「コンピュータが人をどう認識しているのか」って所がとても興味深いですね。

信号処理(しんごうしょり、signal processing)とは、光学信号、音声信号、電磁気信号などの様々な信号を数学的に加工するための学問・技術である。

wikipedia

信号処理は身近なところでいうと「画像圧縮」があります。

本来の画像データよりも何倍も小さいバイト数で同じ画像(厳密には違う)を表現することができる技術ですね。

このサイトの図解がすごくわかりやすかったです。53ページから見てみてください。

また、微分積分学は物理学の範囲での基礎となっていたりもします

というより、個人的には物理学の基礎は微積が大半を占めている気がしてなりません。

微分積分学のフーリエ変換が、「画像認識」「信号処理」に必要!

物理学でも必要になってくる!

確率統計学

確率統計学の意味は、実際のデータに近似したモデルを作成しそれに当てはめて物事を考えることにあります。

ビジネスやマーケティングにおいて統計を取ることは非常に大事です。

また、機械学習の既存にもなるのでデータサイエンティストやAIエンジニアを目指す人は絶対に学んでおくべき分野です。

確率統計学はマーケティングビジネスの分野で活躍!

データサイエンティストになるには必須!

機械学習にも使われる!

物理学

主にゲームプログラミングで必要になってきます。

というのも、物理演算を必要としているゲームには必要不可欠ですからね。

サッカーゲームのボールが飛ぶ軌道だって物理法則にしたがっているわけですし、なくてはならないですよね。

しかしながら、数学的知識とは違い少し的を絞った分野になります。

なので将来「モノを動かすプログラム」を作りたいと考える方が学ぶための分野だと思います。

この記事の主旨からは離れますが、物理学は日常において便利に暮らすために必要だったりもします。

ゲームプログラミングで必要!

「モノを動かすプログラム」には必要不可欠!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です