「線形代数」は、機械学習、ディープラーニングなどの人工知能技術や、ゲーム開発やコンピュータグラフィックス、圧縮センシング、ドローンなどの基礎となっています。
最近特に盛り上がっている、ディープラーニング(深層学習)の進歩は早く、論文が出されると自力で理解して実装できなければ、最先端についていくのが難しい状況になっています。
そういった中でディープラーニングを含めた機械学習全般の基礎となる線形代数と、それらをプログラミング実装する能力の2つがあれば、
ライバルに先んじて、先行者優位性を得ることができます。
線形代数のプログラミングを身につけておくことは、これからプログラマとして生き残る上でも重要なポイントになるのではないでしょうか。
線形代数をサクッと学びたいなぁ〜
線形代数演算のプログラミングもサクッとできるようになりたい
手を動かしながら理解したい
と思われる方は、プログラミングしながら線形代数を学ぶのが1つの勉強法かと思います。
線形代数の行列、結合、直和、特異値分解、射影、変換や、ウェーブレット変換、線形補間、素因数分解、多項式近似、複素数、方程式の解、特異スペクトル変換など、
線形代数関係の重要な方法を、プログラミングしながら学べたらうれしいですよね。
そこで本記事では、線形代数や関連する数学について、プログラミングしながらサクッと学べるおすすめの本や参考書をご紹介します。
本記事の概要
線形代数を、プログラミングしながら、学べるおすすめ本はこちらです
本書では、線形代数の重要な概念を、プログラミングしながら学ぶことができます。
基本的には線形代数の本としてとらえて欲しいのですが、
線形代数を、プログラミングしながら学ぶこともできるように工夫されており、
数式やその解説だけの数学本よりも、手を動かしながら理解したい方向けの書籍となっています。
線形代数を数学として、本や参考書を見ながら学ぶのも1つですが、
行列計算をプログラミングしながら、手を動かしながら学ぶことで、頭に入りやすいのではないでしょうか。
また、python で数学や線形代数、行列を学ぶことで、
機械学習やディープラーニング、確率・統計などのpythonライブラリを、
中身を理解しながら使えるようになれます。
その結果、人工知能に関する数学知識を深めるのに、大きく役立つのではないかと考えられます。
線形代数の概念とプログラミングを、応用例を見据えながら学ぶことができます
内容としては、まず、以下の、線形代数の応用で重要なる概念を、シッカリ学べます。
- 線形系の「解が一意」に決まるかどうかは、どう判断できるか
- ベクトルの集合とベクトルで張られた「空間が等価」かどうかは、どう判断できるか
- ある線形方程式の系は、「等価で、かつ、違う線形方程式の系で書き換える」ことができるか
- 有限体上の線形系の「解の個数」はどうすれば決まるか
- すべてのベクトル空間は、「同次線形系の解集合で表現できるか」
加えて、機械学習を理解する上でも必須となる、以下の考え方について、
その「アルゴリズム」を、手を動かしながら身につけることができます。
- 「行列方程式」や「行列不等式」の解
- 「ベクトル空間での距離を最小」にするベクトルを求める
さらに、線形代数の「体」の応用として、
- 複素数は高速フーリエ変換や固有値、
- 有限体では、暗号、認証、チェックサム、ネットワークコーディング、秘密共有、エラー訂正コード
などがありますが、これらを上の具体例を通じて学ぶことができ、
線形代数の観点からは、「ベクトル空間」について、より深く理解することができます。
プログラミング初学者でも学びやすい、Pythonが用いられています
本書では、プログラミングには、「Python」が用いられています。
Pythonは初学者でも理解しやすいプログラミング言語の1つです。
Python初心者だけど、だいじょうぶかなぁ~
と不安に思った方もおられるかもしれません。
だいじょうぶです!
本書では、「Pythonの使い方」も基礎から説明されていますので、
線形代数だけでなく、Pythonについても、一通り学ぶことができます。
Python には、数値計算や人工知能などで役に立つ、ライブラリやフレームワークを、
「フリー」で使えます。
なので、Python は、将来さまざまな応用アプリケーションを作るときなどにも、
役に立つプログラミング言語の1つです。
ただし、本書はあくまで、線形代数の本として書かれていて、Python も学べる
という位置づけです。
Python をしっかり学びたい場合や、Python の実装時に必要となる、様々な技術的な点については、他書を参照されるのも良いかと思います。
- 「Python」についてはこちらもどうぞ
『Python3を学びたい人、入門から実践的な内容まで幅広く含まれていて、自分でなにか作ってみたい人に最適の1冊はこちらです 』
教科書として、問題集として、独学でもペースがつかみやすいよう工夫されています
さらに本書の特徴として、各章には、
- 内容の理解を復習できる「確認問題」
- その章の知識を使う「新規の問題」と、その解答
があり、理解度を確認しながら、着実に進むことができます。
教科書的にも使えますし、
プログラミングのドリルのような感じで着実に進めることもできます。
独学で数学書を読んでいると、ペースがつかみにくいこともありますが、
問題やプログラミングを挟むことで、
予定が立てやすく、続けやすいのではないかと思います。
線形代数を基礎とする、ディープラーニングなどを用いた応用アプリケーションを作りたいあなたにも最適の1冊となっています。
本書の構成は以下の通りです
0章 関数(とその他の数学とコンピュータに関する予備知識)
0-1、集合に関する用語と記法
0-2、デカルト積
0-3、関数
0-4、確率
0-5、ラボ:Python入門ー集合・リスト・辞書・内包表記
0-6、ラボ:Pythonと逆インデックスーモジュールと制御構造
1章 体
1-1、複素数入門
1-2、Pythonにおける複素数
1-3、体への抽象化
1-4、複素数と遊ぼう
1-5、有限体GF(2)で遊ぼう
2章 ベクトル
2-1、ベクトルとは何か?
2-2、ベクトルは関数
2-3、ベクトルで何が表現できるか?
2-4、ベクトルの加法
2-5、スカラーとベクトルの積
2-6、ベクトルの和とスカラーとの積の組み合わせ
2-7、辞書によるベクトルの表現
2-8、GF(2)上のベクトル
2-9、ドット積
2-10、Vecの実装
2-11、上三角形方程式系を解く
2-12、ラボ:ドット積を用いた投票記録の比較
3章 ベクトル空間
3-1、線形結合
3-2、線形包
3-3、ベクトルの集合の幾何学
3-4、ベクトル空間
3-5、アフィン空間
3-6、同時線形系とその他の線形系
4章 行列
4-1、行列とは何か?
4-2、列ベクトル空間と行ベクトル空間
4-3、ベクトルとしての行列
4-4、転置
4-5、線形結合による行列とベクトルの積及びベクトルと行列の積の表現
4-6、ドット積による行列とベクトルの積の表現
4-7、ヌル空間
4-8、スパース行列とベクトルの積の計算
4-9、行列と関数
4-10、線形関数
4-11、行列と行列の積
4-12、内積と外積
4-13、逆関数から逆行列へ
4-14、ラボ:エラー訂正コード
4-15、ラボ:2次元幾何学における座標変換
5章 基底
5-1、座標系
5-2、初めての非可逆圧縮
5-3、生成子を探す2つの欲張りなアルゴリズム
5-4、最小全域森とGF(2)
5-5、線形従属性
5-6、基底
5-7、一意的な表現
5-8、初めての基底の変換
5-9、遠近法によるレンダリング
5-10、基底を求める計算問題
5-11、交換の補題
5-12、ラボ:透視補正
6章 次元
6-1、基底ベクトルの個数
6-2、次元とランク
6-3、直和
6-4、次元と線形関数
6-5、アニヒレーター
7章 ガウスの掃き出し法
7-1、階段形式
7-2、ガウスの掃き出し法の他の応用
7-3、ガウスの掃き出し法による行列とベクトルの方程式の解法
7-4、ヌル空間の基底を見つける
7-5、整数の素因数分解
7-6、ラボ:閾値シークレットシェアリング
7-7、ラボ:整数の素因数分解
8章 内積
8-1、消防車問題
8-2、実数上のベクトルの内積
8-3、直交性
8-4、ラボ:機械学習
9章 直交化
9-1、複数のベクトルに直交する射影
9-2、互いに直交するベクトルに直交する射影
9-3、直交する生成子の集合の生成
9-4、計算問題「ベクトルの線形包の中で最も近い点」を解く
9-5、直交化の他の問題への応用
9-6、直交補空間
9-7、QR分解
9-8、QR分解による行列の方程式Ax=bの解法
9-9、最小二乗問題の応用
10章 特別な基底
10-1、最も近いkスパーススペクトル
10-2、与えられた基底に対する表現がkスパースであるような最も近いベクトル
10-3、ウェーブレット
10-4、多項式の評価と補間
10-5、フーリエ変換
10-6、離散フーリエ変換
10-7、複素数上のベクトルの内積
10-8、巡回行列
10-9、ラボ:ウェーブレットを用いた圧縮
10-10、2次元画像の処理
11章 特異値分解
11-1、低ランク行列による行列の近似
11-2、路面電車の路線配置問題
11-3、最も近いk次元ベクトル空間
11-4、特異値分解の利用
11-5、主成分分析
11-6、ラボ:固有顔
12章 固有ベクトル
12-1、離散力学過程のモデル化
12-2、フィボナッチ行列の対角化
12-3、固有値と固有ベクトル
12-4、固有ベクトルによる座標表現
12-5、インターネットワーム
12-6、固有値の存在
12-7、冪乗法
12-8、マルコフ連鎖
12-9、ウェブサーファーのモデル化;ページランク
12-10、行列式
12-11、いくつかの固有定理の証明
12-12、ラボ:ページランク
13章 線形計画法
13-1、規定食の問題
13-2、規定食の問題を線形計画としてとらえる
13-3、線形計画法の起源
13-4、線形計画法の幾何学:多面体と頂点
13-5、多面体の頂点であるような最適解の存在
13-6、線形計画法の列挙アルゴリズム
13-7、線形計画法における双対性入門
13-8、シンプレックスアルゴリズム
13-9、頂点を見つける
13-10、ゲーム理論
13-11、ラボ:線形計画法を用いた学習
13-12、圧縮センシング
索引
となっています。
本書では、ディープラーニングなどの人工知能の基礎としても必須の「線形代数」を
図やグラフをふんだんに使いながら、わかりやすく解説してくれます。
また、プログラミングしながら学ぶことで、線形代数の実装力も身につけることができます。
独自の人工知能アプリケーションなど、線形代数を基礎とした応用アプリケーションを作るための、シッカリした土台をつくることができる1冊となっています。
以下の本や参考書も、線形代数など、数学とプログラミングを一緒に学ぶのにおすすめです
世界標準MIT教科書 ストラング:線形代数イントロダクション
世界標準MIT教科書 ストラング 微分方程式と線形代数
スタンフォード ベクトル・行列からはじめる最適化数学 (KS情報科学専門書)
線形代数をプログラミングしながら学ぶならこちら
プログラミングのための線形代数
プログラマとして、数学を強化したいならこちら
プログラマの数学第2版
Pythonで統計学を学びたいあなたはこちら
Pythonで学ぶあたらしい統計学の教科書
データ分析によく使う線形代数の内容に絞った1冊はこちら
データ分析のための線形代数
線形代数を、統計学向けに学びたいならこちら
統計学のための線形代数
線形代数を、手を動かしながら学びたいあなたはこちら
手を動かしてまなぶ 線形代数
確率・統計について、プログラミングするために学びたいならこちら
プログラミングのための確率統計
機械学習を、Pythonで動かしながら学びたいならこちら
Pythonで動かして学ぶ! あたらしい機械学習の教科書
人工知能技術のための数学とプログラミングをサクッと理解したいならこちら
人工知能プログラミングのための数学がわかる本
線形代数を、1冊で学びたいならこちら
1冊でマスター 大学の線形代数
機械学習に使われている数学について、わかりやすく理解したいならこちら
やさしく学ぶ 機械学習を理解するための数学のきほん
ゲーム開発に関する、数学や物理を、具体例を通じて学びたいならこちら
実例で学ぶゲーム開発に使える数学・物理学入門
ITと数学 (Software Design別冊)
Introduction to Applied Linear Algebra: Vectors, Matrices, and Least Squares
- 「線形代数」にはこちらの記事もおすすめです。良書をまとめました↓
『「線形代数」を独学したい人はチェックしてほしい良書、13冊はこちらです』
- 「ディープラーニング」の中身を基礎から学ぶならこちらをどうぞ
『結局「ディープラーニング」って中でなにしてるの?初心者でも効率的に学べる1冊はこちらです』
- 「多変量解析」に興味がある方はこちらをどうぞ