見出し画像

使える知識・スキルを身につけよう!――近刊『Pythonハンズオンによる はじめての線形代数』はじめに公開

2021年9月下旬発行予定の新刊書籍、『Pythonハンズオンによる はじめての線形代数』のご紹介です。
同書の「はじめに」を、発行に先駆けて公開します。

書影配置用

***

はじめに

本書は、線形代数の基礎をプログラミング言語Pythonを用いた簡単なプログラミングを通じて、線形代数の各概念のイメージを掴みながら学習するための入門的な教科書です。高校数学の初等的な知識があれば十分に理解できる内容となっています。また、Pythonについては、Google Colaboratoryというサービスを使った環境を想定し、なるべく簡単に実行環境を手に入れ、なるべく単純な記法になるように構成されているため、プログラミング初心者にも十分読み進められる内容となっています。

2021年現在、AI人材・データサイエンティストが注目される中、これらの人材がまず必要とする数理的知識・スキルとして、統計、微分積分、線形代数が挙げられるでしょう。その中でも、線形代数は、AI人材・データサイエンティストがデータサイエンスの世界に精通するためにはもっとも基本となり、必要となる数理的知識であるといっても言い過ぎではありません。例えば、大量のデータを一括して処理する際に配列を用いますが、その配列こそ、線形代数で扱うベクトル、行列の概念につながります。また、ニューラルネットワークのある層からある層への伝搬は、線形写像・線形変換の概念につながります。そもそも、ICTの多くの技術はある入力と出力の関係をプログラミングなどにより記述することで実現するものであり、この一番シンプルな記述が線形写像・線形変換になると考えてよいでしょう。しかしながら、線形代数の初学者にとって、行列式、逆行列、固有値、固有ベクトルなど、それが何の役に立つのか悩まされる概念も多いと思います。

上記のことから、本書では、ベクトル、行列の演算や基本的な性質を、Pythonで簡単なプログラミングを通じて実践しながら理解していくと同時に、線形写像・線形変換の具体的事例もPythonで実践しながら学習していくこととします。
  
本書が、線形代数の概念や具体的事例をPythonのプログラミングによって実践して理解していく形にこだわる理由は、「使える数理的知識・スキル」を身につけることに着目しているからです。「使える数理的知識・スキル」とは、データサイエンスの文脈で述べるならば、具体的には、数式、データをプログラムにブレイクダウンする能力と考えられます。線形代数を単なる数理的知識として身につけるだけでも不十分であり、Pythonでプログラミングする能力だけでも不十分であり、これらの能力をブリッジする能力が必要です。このブリッジする能力を一番発揮しやすいのが線形代数とPythonです。

ここで、なぜPythonか、理由を述べましょう。もちろん、Pythonが2021年現在において、AI人材・データサイエンティストが用いるプログラミング言語としてよく使われているからという理由もあります。それ以上に、Pythonは線形計算を扱うツール、ライブラリ、モジュールがたくさんあるからです。具体的には、行列式、逆行列、固有値、固有ベクトルなどの線形代数特有の計算を実質1行で書くことが可能です。また、Pythonはインタプリタ言語であり、その書いたコードの結果を簡単に確認することも可能です。さらに、前述のとおり、Google Colaboratoryというサービスを用いれば、GoogleのアカウントとChromeブラウザがあれば、簡単にPythonを実行できる環境を手に入れることができます。つまり、プログラミング経験が浅い初学者にとっても、プログラムを学びながら線形代数を学ぶことを可能にするために、Pythonを選択しています。

本書は、武蔵野大学データサイエンス学部データサイエンス学科の2年生の必修科目である「データと数理I」の内容に準拠しています。本講義は、単なる「線形代数」の内容を座学で学ぶのではなく、プログラミングやグループワークを通じて、各単元をどのような場で利活用するのかを実装しながら学ぶ内容となっています。本書では、「データと数理I」の講義と同様、なるべく「線形代数」の概念を学びながらプログラミングする、実装していくという実践的な内容を意識して構成しています。

ちなみに、武蔵野大学データサイエンス学部では「アジャイル型教育」を推し進めています。これは、1年生は1年生の知識・スキルの取得とともに実践を併せて体験し、2年生は2年生の知識・スキルの取得とともに実践を併せて体験するといった具合に、知識・スキルの取得とその実践の体験というイテレーションを回し続けるようなスタイルの教育を指します。これまでの教育は、1年生は基礎科目をしっかり学んで、2、3年生でその上に応用を積み上げ、4年生になって卒業研究で初めて実践するというスタイルであるため、近年の急速なスピードで変化を遂げる社会に対応する実践力を身につけるためには、間に合わないと考えられます。それに対して、アジャイル型教育では、知識・スキルを学びながら実践をしていくということで、実世界の実問題にアドレスした「活かしていく」力を素早く発揮することができると考えられます。本書は、これらの背景を踏まえ、「線形代数」というデータサイエンスの基礎となる知識の習得とともに、それを具体的に実践するプログラムを組んでいくという体験のイテレーションを回しながら展開していきます。本書は、「線形代数」を実践で「活かしていく」力を育むために生まれた書です。

本書の構成は下記のとおりです。

1章  Pythonの環境設定と基本操作
 本書でハンズオンとして使うGoogle Colaboratoryの扱い方と簡単なPython  の基本操作について述べます。この章については、Pythonのプログラミングに慣れている方は飛ばしていただいてもかまいません。

2章  線形代数のイメージ
 線形代数の大きな話題の一つ、線形写像/線形変換がどのように使われるかというイメージを述べます。ここで、例として、線形変換によってアフィン変換(画像処理における平行移動、拡大・縮小、回転、せん断、鏡映)が実現できるということも触れます。

3章  ベクトルの基本-ノルム、距離、内積
 ベクトルとは何か、基本演算という導入から、Pythonによるハンズオンで計算結果を確かめながら進めます。また、ベクトル空間の概念や線形独立・線形従属の解説をはさみ、ベクトルを評価するための「ものさし」としてノルム、距離、内積を紹介します。これと同時に、色の違いを距離やコサイン類似度で計算するといった実践的なPythonハンズオンを展開します。

4章  行列の基本-連立1次方程式を解くために
 行列の生まれた背景を辿るため、連立1次方程式を扱い、これをどのように行列表現するのかを学び、そこから派生する逆行列、行列式の概念をPythonによって、計算結果を確認しながら進めます。またガウスの消去法による連立1次方程式の解き方についても示し、最後にPythonで計算しながら行列の基本演算について述べます。

5章  線形写像/線形変換
 2章で述べた線形代数のイメージからつなげ、具体的に線形写像・線形変換をどのように計算するのかを学ぶと同時に、合成、像Imℱ、核Kernelℱといった概念を述べます。各概念を学ぶところで、Pythonのハンズオンを展開していきます。

6章  アフィン変換-画像の平行移動、拡大・縮小、回転、せん断、鏡映
 2章で述べたイメージ、5章で述べた線形写像/線形変換の内容を基本にして、平面画像処理、平行移動、拡大・縮小、回転、せん断、鏡映について具体的な行列演算で実現できることを示します。さらに変換の合成という観点から、アフィン変換へ昇華させるストーリーを展開すると同時に、Pythonでのハンズオンによりアフィン変換を体現します。

7章  固有値・固有ベクトル
 基底の取り替え、対角化にどんなメリットがあるのか背景を述べたのち、固有値、固有ベクトルの概念をPythonのハンズオンにて、計算結果を確認しながら理解していきます。また、最後には、応用例としてGoogleのPageRankを挙げ、具体的に固有値、固有ベクトルを使ったWebページの重要度計算方式についても述べます。

では、Pythonのプログラミングと線形代数の世界に入っていくことにしましょう。

***

著:中西崇文(武蔵野大)



データサイエンスやAIの世界で欠かせない基礎知識といえる、線形代数。
本書は、そのような応用に必須の知識に焦点をあて、イメージを掴みながら学習できるよう、やさしく解説した入門書です。

手軽にできるPythonプログラミングを交えながら学ぶため、概念や計算方法の理解が深まるだけでなく、それらをプログラムに落とし込む力も身につけることができます。

はじめの章で基本事項を解説しているので、Python初心者でも大丈夫です。

〈このような方におすすめ〉
 ・データサイエンティストを目指している方
 ・線形代数を学ぶ必要が出てきたが、普通の数学書を読むのはきついと感じている方
 ・Pythonを気軽に学び、活用してみたい方


【目次】
1章 Pythonの環境設定と基本操作
 1-1 GoogleColaboratoryの導入
 1-2 Pythonの基本文法

2章 線形代数のイメージ
 2-1 「線形代数」の意味
 2-2 ベクトル、行列の簡単な例
 2-3 ベクトル、行列のいろいろな例

3章 ベクトルの基本-ノルム、距離、内積
 3-1 ベクトル
 3-2 ベクトルの分解と線形結合
 3-3 線形独立・線形従属
 3-4 ノルム、距離、内積
 3-5 正規直交基底

4章 行列の基本-連立1次方程式を解くために
 4-1 連立1次方程式を行列で表現
 4-2 行列
 4-3 行列式
 4-4 ガウスの消去法
 4-5 行列の基本演算

5章 線形写像/線形変換
 5-1 線形写像/線形変換
 5-2 写像の合成
 5-3 画像データからの印象語抽出システムを線形写像で実現

6章 アフィン変換-画像の平行移動、拡大・縮小、回転、せん断、鏡映
 6-1 線形変換をまとめて行うには
 6-2 平面画像処理
 6-3 平面画像のアフィン変換
 6-4 3次元でのアフィン変換

7章 固有値・固有ベクトル
 7-1 基底の取り替え
 7-2 対角行列
 7-3 固有値・固有ベクトル
 7-4 固有値・固有ベクトルを使った応用例-GooglePageRank

謝辞
参考文献
索引

この記事が気に入ったらサポートをしてみませんか?