AIに欠かせない数学を、プログラミング言語Pythonを使って高校生の学習範囲から学び直す連載。今回は行列演算や逆行列について、図版とPythonコードを交えて解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
AIに欠かせない数学を、プログラミング言語Pythonを使って高校生の学習範囲から学び直す本連載『「AI」エンジニアになるための「基礎数学」再入門』。前回は「ベクトル計算」について学びました。今回のテーマは、行列の計算方法(行列演算)です。行列演算が何を意味するのか、その本質について解説していきます。
前回から計算についての説明が続いているので、普段数学に慣れていない方は難しく感じていると思います。特に行列演算は大学で学ぶ領域であり、数式の記述が多くなります。ここでは数学的な計算内容に注目するのではなく、行列演算が何に用いられているのか、その計算が表す意味について解説するので、その点に注目して学んでください。
行列演算について説明する前にベクトルと行列について、いま一度復習しましょう。前々回でベクトルとは「ひとまとまりの数字を縦か横に並べたもの」であり、行列はその「ベクトルを縦横の2次元に並べたもの」と説明しました。
では、この行列というものがなぜ数学で導入されたのでしょうか? その背景には「方程式を簡単に記述する」という目的があります。例として下記の2つの方程式を考えます。
数学では、このような複数の方程式(連立方程式)を用いて変数の値(x,y)を解くことがよくあります。このとき、上記の連立方程式は下記のように行列とベクトルを用いて表せます(詳細は後述)。行列の目的は、このような連立方程式の簡略化にあります。
この連立方程式の解き方は高校数学で学習しますが、行列を用いることで簡略化できるだけではなく、別のやり方で(x,y)の値を計算することも可能です。本稿のゴールは、行列計算の方法と意味を理解して、上記のような連立方程式を行列計算によって求められるようになることです。
なお対象となる連立方程式は、xやyなどの変数が常に「一次」である「一次方程式」に限定されます。このように、変数が一次である方程式を「連立一次方程式」といいます。
以前、「AIはデータに対して用意された数式を当てはめて、その数式が持つパラメーターを解いている」と説明しました。それと同じように例えると、数値で表現されている右辺、左辺の行列やベクトルがデータ、(x,y)という変数で表されたベクトルが数式のパラメーターを指します。
行列とベクトルで表された式を見ると、行列とベクトル(x,y)の積が計算されて別のベクトル(7,3)になっていることが分かります。つまり、行列の積はある“入力”データ(今の例だとベクトル)を別の“出力”データに変換する性質を持っています。
具体的な例でいうと、画像データ(行列)の拡大、回転など入力データを変換する操作がありますが、このようなデータの変換は行列の積で表現できます。
ここからは基本的な計算方法を解説します。行列計算では一部スカラー同士の計算とは異なるルールがあるので、それも含めて説明します。
例としての下記2つの行列があるとします。
これらの和は下記のようになります。
行列同士の和(差も同様)は単純に行列の各要素の和です。互いに対応する要素同士の和なので、行列の和は互いの行列の形(縦横の数)が同じもの同士でないと計算できません。
行列のスカラー倍したものは、単純に各要素をスカラー倍したものになります。
上記の計算をPythonで記述すると下記のようになります。
import numpy as np # 行列の定義 A = np.matrix([[2 , -1], [0 , 3]]) B = np.matrix([[1 , 2], [3 , -1]]) # 行列の和 print(A + B) [[3 1] [3 2]] # スカラー倍 print(4*A) [[ 8 -4] [ 0 12]]
Copyright © ITmedia, Inc. All Rights Reserved.