社会人からAI・ロボットの研究を始めました

大学数学のまとめや研究活動に関することを書いています

PDFファイルのフォント埋め込み(Ubuntu)

結論

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=embedded.pdf -f original.pdf

original.pdfを元ファイル名、embedded.pdfをフォント埋め込み後のファイル名に適宜変更してください。

背景

学会論文を提出する際にErrors: Font TimesNewRomanPS-BoldMT, TimesNewRomanPSMT is not embeddedと怒られてしまった。
おそらく論文の図をパワポで作ったからだと思われる。

TeXでdvipdfで出力するときにオプション付けたりもできるらしいが、今回はすでに出力されたpdfファイルを変換する。

事前準備

ghostscriptが入っていない場合は

sudo apt install ghostscript

pdffontsが入っていない場合は

sudo apt install poppler-utils

ただしpdffontsは埋め込まれたかの確認用なので、なくてもOK。

埋め込み手順

フォント埋め込み状況の確認

pdffonts original.pdf

を実行すると

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
GELBXE+NimbusRomNo9L-Medi            Type 1C           Custom           yes yes yes    341  0
DDLXOL+NimbusRomNo9L-Regu            Type 1C           Custom           yes yes yes    342  0
TXYIJJ+NimbusMonL-Regu               Type 1C           Custom           yes yes yes    343  0
FRSSJB+NimbusRomNo9L-ReguItal        Type 1C           Custom           yes yes yes    344  0
VGWMDO+CMMI9                         Type 1C           Builtin          yes yes yes    345  0
SJUFKT+CMMI6                         Type 1C           Builtin          yes yes yes    346  0
TimesNewRomanPS-BoldMT               TrueType          WinAnsi          no  no  no     147  0
BCDEEE+CambriaMath                   CID TrueType      Identity-H       yes yes yes    150  0
...

のように出力される。embがnoになっているものが埋め込みされていないもの。

フォント埋め込み

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=embedded.pdf -f original.pdf
pdffonts embedded.pdf

と実行してoriginal.pdfでembがnoになっていたものがyesになっていればOK。

そもそもの防止策

パワポで図を作った時はフォント埋め込みをしたうえでpdf出力するか、pdfではなくてpngとかで保存するのがいいかもしれない。

参考

https://iwiwi.hatenablog.com/entry/20120125/1327473584
https://qiita.com/m4saka/items/5a22e283e24406c1eca2

学習とロボティクス(2) 学習制御

f:id:kanichan_robot:20210814180140p:plain

はじめに

本シリーズは学習とロボティクスと題して、一般には制御モデルを立てるのが難しかったり時々刻々と変化する環境におけるロボットの制御問題を取り扱う学術分野について、大雑把にまとめていく。

学習制御(Learning Control)とは

「ロボットのアームの先端をこの軌道に沿って動かしなさい」というような明確な制御目的に対して制御モデルを立てずに施行を繰り返しながら制御ゲインや制御入力を調整する手法。

学習制御に関する論文で必ず引用されるのは杉江先生の論文[1]。 一方で制御対象がハミルトン系であるときには、その性質をうまく活用した藤本先生の手法がある[2]。

いずれも基本的にはフィードフォワードの制御入力を試行の反復によって獲得する。

反復学習制御

[1]のほうをはじめに見ていく。 こちらの基本的な考え方は簡単だ。

まず、制御対象に対して制御入力 u(t), t \in [0, T]を与えると出力 y(t)が得られるとする。 出力 y(t)とは、例えばアーム先端の位置などである。

今、目標軌道 r(t)が与えられているとする。 1回目の試行で制御入力[u_1(t)]を与えたところ、出力 y_1(t)が得られたとしよう。 すると、目標軌道との誤差は e_1 (t) = y_1 (t) - r(t)となる。

これに対して e_1 (t)が小さくなるように制御入力を更新する。 つまるところ、制御入力 uフィードバック制御するのだ。

[3]によると、次式のような更新則で uを更新するらしい。

 u_{k+1} = u_{k} + D \ddot{e}_{k}

気になるのは誤差 eではなく、その2階微分を取っていること。 これは誤差の2階微分を取ることで制御入力=トルクと次数を合わせるためらしい。 ただし、この微分操作を伴う更新則は観測雑音に弱いという欠点もあるとのこと。

[3]が出た時点ですでに上記問題に対する対処もなされてはいたが、まあほかにもいろいろと課題はあったようだ。 ただ、かなり古くからある手法なので、もしかするとさらに改善がなされているかもしれない。

ハミルトン系に対する反復学習制御

次に[2]を見ていく。 実を言うと私はこの「ハミルトン系に対する学習制御」について大学時代に研究していた。 ので、かなり思い入れはあるのだが、こちらは[1]と比べるとだいぶ難しい。

ハミルトン系というのは、あるハミルトン関数 H(x,u)があって次式のような入出力関係が成り立つ系を言う。

 \dot{x} = (J-R)\frac{\partial H}{\partial x}, y = -\frac{\partial H}{\partial u}

ここで、 Jは歪対称行列 J = -J^ T Rは半正定対称行列である。  xはシステムの状態を表していて、例えばアームの姿勢角などがこれに当たる。

このように表されるハミルトン系には「変分対称性」という特別な性質がある。 これをうまく使うと、制御入力 uの微小変化に対する出力 yの変化量を計算することができるのだ。

これがわかると、評価関数を与えたときにどう制御入力を変化させれば評価関数が小さくなるかがわかる。 これに従って制御入力を更新すればよい。

[1]と比較すると、制御対象がハミルトン系に限定されるものの、軌道追従に限らないさまざまな評価関数を最適化する制御入力を学習することができる。

また、非常に数学的な理論がしっかりしているので、興味がある方はぜひ読んでほしい。(ただし難解)

参考文献

[1] Arimoto, S. et al. “Bettering operation of Robots by learning.” J. Field Robotics 1 (1984): 123-140.
[2] K. Fujimoto, H. Kakiuchi and T. Sugie, "Iterative learning control of Hamiltonian systems," Proceedings of the 41st IEEE Conference on Decision and Control, 2002., 2002, pp. 3344-3349 vol.3, doi: 10.1109/CDC.2002.1184391.
[3] 杉江 俊治, 反復学習制御って何?, 計測と制御, 2003, 42 巻, 4 号, p. 314-316, 公開日 2009/11/26, Online ISSN 1883-8170, Print ISSN 0453-4662, https://doi.org/10.11499/sicejl1962.42.314, https://www.jstage.jst.go.jp/article/sicejl1962/42/4/42_4_314/_article/-char/ja

線形代数をわかりやすく(6) 部分空間

f:id:kanichan_robot:20210814164002p:plain

はじめに

本記事は線形空間論の勉強をしたまとめです。 私の理解が誤っている可能性がありますので、その際は優しく指摘していただけると嬉しいです。

部分空間

大した話ではない。 大きな線形空間の一部を切り出したときに、それも線形空間になっているという都合のいい状況の話を今後したいから、それに名前を付けておこうというだけである。


定義

集合 W \subset V Vの和とスカラ倍に関して線形空間であるとき、 W V部分空間と呼ぶ。


定理

 W \subset V Vの部分空間であることは、以下の3条件が満たされることと同値である。

  1.  W空集合出ない
     W \neq \emptyset
  2.  W Vの和について閉じている
     \forall u, v \in W, u + v \in W
  3.  W Vのスカラ倍について閉じている
     \forall v \in W, c \in \mathbb{R}, c v \in W

部分空間の幾何学的な解釈もそこまで難しくない。

例えば V = \mathbb{R}^ 3とすると、原点を通る直線や平面、あるいは \mathbb{R}^ 3自体が Vの部分空間になる。

ポイントは原点を通ることと、まっすぐな空間であること。 平面のようにまっすぐな空間だとしても原点を通らなければ部分空間ではないし、原点を通っても曲面のような空間ならば部分空間ではない。

また、 Vの原点(つまりゼロベクトル)は Wでも原点(ゼロベクトル)になることも忘れてはいけない。

部分空間の基底の延長


定理

 W Vの部分空間とする。  Wの基底を w_1, \cdots, w_mとする。 このとき w_1, \cdots, w_mの取り方によらず、 w_1, \cdots, w_m, w_{m+1}, \cdots, w_n Vの基底となるようなベクトルの組 w_{m+1}, \cdots, w_nが必ず存在する。


 V = \mathbb{R}^ 3の部分空間である xy平面を考えた場合は、 xy平面の基底と z軸方向のベクトルを合わせれば Vの基底になる、というだけである。

簡単な話ではあるのだが、線形写像の次元定理導出のための重要なピースになる。

参考文献

線形空間論入門

線形空間論入門

Amazon

【初心者向け】シンプルで見やすいスライドの作り方

f:id:kanichan_robot:20210813091903p:plain

概要

私が会社でプレゼン資料を作るときに意識していることのまとめです。

  • 配置(これさえ整っていればだいたいOKだと思います)
    • とにかく「揃える」を意識。
    • 余白を十分にとる。
  • 配色(意識するとさらに見やすくなります。固執しすぎると疲れますのでほどほどに。)
    • 原則色は2~3色×濃淡。足りない場合は同じトーンで。
    • 黄色の上に白文字を書かない。紺色の上に黒文字を書かない。
  • その他Tips(もっと垢抜けた雰囲気にするにはこちら)
    • 太字、文字の大きさ調整、下線を適切に使う。
    • フォントはメイリオ・若干グレーに。
    • 行間は1.1~1.3倍。
    • いらすとやは使わない。
    • PowerPointのデフォルト配色や原色は避ける。
    • 吹き出しは自作。
    • 何でもかんでも枠で囲わない。
    • 無駄なアニメーションは入れない。

配置

配置さえ整えておけばそれなりの見た目になります。 面倒な人でもこれくらいはやりましょう。

とにかく「揃える」を意識。

f:id:kanichan_robot:20210813102746p:plain
とにかく「揃える」を意識しましょう

なるべく同じ形・同じ大きさのものを均等に並べるようにしましょう。 また、図形がスライド内の左右のどちらかに偏らないようにしましょう。 PowerPointであれば「ホーム>配置>配置」と選べば「○○揃え・○○に整列」というのがあるので、こちらも活用しましょう。

f:id:kanichan_robot:20210813103054p:plain:w300
ホーム>配置>配置>○○揃え・○○に整列を活用しましょう

余白を十分にとる。

余白は十分に取りましょう

以下余白を作るための手順です。

まずは話す内容を必要十分な量に減らしましょう。 話の要点が掴めないと聴衆は聞き飽きてしまいます。 少しでも聴衆に聞き続けてもらうには、本当に必要な情報だけを伝えるべきです。

次に各スライドで伝えるメッセージを1つに絞りましょう。 「1スライドにたくさん詰め込む」「1スライドに1分が目安」の時代は終わりました。 これからは「1スライド1メッセージ」です。 1ページあたりの文量が多い場合はスライドを分割することも考えましょう。

ここまで出来たらあとは要素を配置するだけです。 ぎゅうぎゅうのスライドを見せられると聴衆は途端に話を聞かなくなります。 以下ポイントです。

  • 文章を枠などで囲う場合は文と枠の隙間を十分持たせましょう。
    • 左右/上下の一方に偏らないように気を付けて。
  • スライドの上下左右の端にも十分に余白を持たせましょう。
    • そもそも画面共有やスクリーンに映したときに端が切れることもあります。
  • 余白を作るために多少字を小さくしてもかまいません。
    • 字の大きさより余白の広さを優先しましょう。
  • 文の行間を調節するのも見やすくするために効果的です。

配色

配色はあまりこだわりすぎないほうが平穏な気持ちでスライドを作れます。

原則色は2~3色×濃淡。足りない場合は同じトーンで。

f:id:kanichan_robot:20210813120925p:plain
色の濃淡でもバリエーションを増やせます。ただし、あまり2~3色にこだわらなくても大丈夫です。

「色の数は多くても3色までにしましょう」というのはよく言われることですが、それに固執しすぎるとかえっておかしくなったりわかりにくくなったりします。

「色が足りないな」と思ったらまずは色の濃淡を変えてバリエーションを増やしましょう。 また、同じようなものが並んでいたりするときは案外たくさんの色があっても違和感はありません。 その時は、トーン(彩度と明るさ)だけでも合わせると統一感が出ます。

あとは、固執しすぎて「このイラストにちょっとだけ緑色が入っている!!これは使えない!!!」みたいな考え方をする人がいます(私が昔なりかけた)が、多少違う色が入っていても全く違和感ありません。 雰囲気だけあっていれば大丈夫です。

黄色の上に白文字を書かない。紺色の上に黒文字を書かない。

f:id:kanichan_robot:20210813122208p:plain
背景色と文字色のコントラストをつけましょう
たまに黄色い四角の上に白い文字を書く人がいますが、見づらいのでやめましょう。

明るい色の背景には暗い色の文字、暗い色の背景には明るい色の文字を使うようにしましょう。

また、写真などの上に文字を書くと、明るい色の背景色と暗い色の背景色に跨ってどの文字色にしても見づらくなる時がよくあります。 そういう時は「光彩」を使ってみると見やすくなったりします。

f:id:kanichan_robot:20210813123032p:plain
明るい色の背景色と暗い色の背景色に跨るときは「光彩」を使うのも手です

その他Tips

以下Tipsを実践すれば、かなり垢抜けた印象のスライドになるかなと思います。

太字、文字の大きさ調整、下線を適切に使う。

強調したいときは文字色を変えるより前に太字文字の大きさ調整下線を先にしましょう。

また、見出しと本文の文字の大きさは大きく変えましょう。

あとは、「20%」のように数字は大きく単位は小さくすると伝わりやすいです。

フォントはメイリオ・若干グレーに。

和文フォントはメイリオにしましょう。 欧文フォントは私はSegoe UIにしていますが、正直最適解かは微妙なところです。 メイリオと雰囲気の近いものにするといいと思います。

また、見逃しがちですが、基本の文字色は若干グレー(黒80%白20%くらい)にしましょう。 特にスクリーン投影でなく画面共有などの場合は、黒100%は刺激が強すぎます。 はてなブログでも文字色は真っ黒ではないですよね?

行間は1.1~1.3倍。

デフォルトのPowerPointでは行間がすこし狭いです。行間の倍率を1.1~1.3倍程度にするがおすすめです。

f:id:kanichan_robot:20210813124459p:plain
行間の倍率は1.1~1.3倍程度がおすすめです

いらすとやは使わない。

完全に個人の考えですが、シンプルでかっこいいスライドを作りたいなら、いらすとやは避けたほうがいいです。 いらすとやを使うと一気に品格が落ちます。 なるべくシンプルなアイコンなどを使いましょう。 unDrawICOOON MONOあたりが便利です。

逆に、ポップで明るい、共感を得たいようなスライドにしたい場合にはすごく便利だとも思いますので、適材適所という感じですね。

PowerPointのデフォルト配色や原色は避ける。

PowerPointのデフォルト配色はいかにもPowerPointという感じがします。 別にいいのですが、私はあまり好きでないので配色を変えてます。

配色は難しいですが、HUE360とかを使うと割と簡単に決められます。

また原色(真っ赤とか真っ青とか)は彩度が高く刺激が強いので避けましょう。

吹き出しは自作。

f:id:kanichan_robot:20210813141146p:plain
吹き出しは自作しましょう

好みもありますがPowerPointの図形にある吹き出しはあまりおすすめしないです。 私はいつも四角形と三角形を重ねて接合して自作しています。 コツは、三角形を細目にすることです。

f:id:kanichan_robot:20210813141352p:plain
四角形と三角形を重ねて接合するといい感じの吹き出しになります

何でもかんでも枠で囲わない。

f:id:kanichan_robot:20210813142514p:plain
何でもかんでも枠で囲うのはやめましょう

何でもかんでも枠で囲んじゃう人がいますが、冗長な場合も多いです。 グループでひとまとめにしたいときは、同じグループどうしは近づけ違うグループどうしは遠ざけるようなデザインにすれば枠は要りません。

また、枠線と塗りつぶしは基本的にどちらか一方だけのほうがスッキリ見えます。

無駄なアニメーションは入れない。

アニメーションは凝りだすと無限に時間を消費します。 また動くアニメーションの多用は安っぽさを生み出します。

ちょっと吹き出しを出すときなど以外はあまり使わないほうが無難です。

参考資料 兼 私のバイブル

https://www.slideshare.net/yutamorishige50/ss-41321443

学習とロボティクス(1) はじめに

f:id:kanichan_robot:20210813180324p:plain

はじめに

本シリーズは学習とロボティクスと題して、一般には制御モデルを立てるのが難しかったり時々刻々と変化する環境におけるロボットの制御問題を取り扱う学術分野について、大雑把にまとめていく。

学習×ロボティクスに関連するキーワード

所詮は大学の研究室で制御工学を扱った(ロボットではない)のと会社に入ってから数年AIとかロボットについて勉強した程度なので、まだまだ浅い知識ではあるが、 私の知る限りでは学習×ロボティクスに関連するキーワードとして知っておくべきなのは以下4つかと思う。

これらのうち「学習制御」と「適応制御」は制御工学の一分野として発展したのに対し、「強化学習」「模倣学習」は機械学習の分野で発展してきた、という印象を持っている。

ただし、いずれも制御工学と機械学習の重なり合う部分に属するとは思うので、立場によって見方は変わると思う。

それぞれの違い

これまた私の浅い知識で語るので、大学の先生とかが見たら何を言っているのだとなるかもしれないが(その場合は優しく指摘していただければ幸いです)、上記の4つの違いを記す。

学習制御 (Learning Control)

制御目的は明確だが、モデルが非線形だったりそもそもモデル化が困難な時に用いられる。

「制御目的が明確」とは、例えば「ロボットのアームの先端をこの軌道に沿って動かしなさい」とか。 これに対して制御モデルを立てずに施行を繰り返しながら制御ゲインや制御入力を調整する手法。

基本的には同じ動作を繰り返しながら微調整していくので、反復学習制御などと呼ばれたりもする。

適応制御 (Adaptive Control)

適応制御はちゃんと勉強したわけではないので合っているか不安だが、制御目的は明確でモデルもだいたいわかっているが、正確なモデルパラメータがわからなかったり時々刻々と変化するときに用いられる、というようなイメージを持っている。

モデルパラメータにはロボット自身のパラメータ(人間で言えば四肢の長さなど)や環境のパラメータ(地面が固いか柔らかいかなど)が含まれる。 例えば、移動ロボットの制御において走行中に路面環境が変化しても数秒たてば適切に制御できるようになるような感じ。

強化学習 (Reinforcement Learning)

制御目的が不明確(抽象的)で、モデル化も困難な時*1に用いられる。

「制御目的が不明確(抽象的)」といったのは、「どう動けばいいかはわからないけど最終的にはこうなってほしいな」あるいは「どう動けばいいかは教えないけどその動きがいい感じかどうかのヒントは教えるよ」というような状況。 後者のような意地悪な言い方は、前者の(人間側の)願望をロボットに伝えるためにこういう言い方をしている。

ロボットが試行錯誤をしながらより良い制御則を見つけていく手法。

こう聞くと学習制御と似ているが、学習制御のほうが無駄なく良い制御則を獲得しようとするイメージ。 逆に強化学習は失敗しながら学ぶので、時に奇想天外な動き方を編み出す。 また、制御目的が不明確である点も学習制御との違いになる。

模倣学習 (Imitation Learning)

知名度は若干下がるが、強化学習の親戚のようなもの。 制御目的が半分明確、半分不明確で、モデル化も困難な時に用いられる。

「制御目的が半分明確、半分不明確」という、これまた不明確な言い方になってしまったが、これは「制御目的を数値的に表現するのは難しいけど、人間の手動操作でなら欲しい動きを表現できる」という意味。

学習制御や強化学習はその動き方の良さを何かしらの数値で評価する。 しかし、ロボットに欲しい動きを獲得してもらうための適切な評価指標を設定するのは非常に難しい。

これに対して、人間がロボットを手動操作で動かして、そのときの動き方をマネ(模倣)するように学習する手法。

おわりに

次の記事からそれぞれについてもう少し詳しく見ていこうと思う。

*1:ただしモデルベース強化学習というのもある

【院試】院試の成績はそこそこよかったので何をしてたかを書いてみる

f:id:kanichan_robot:20210812231921p:plain

概要

もう5年くらい前にはなるが、私はいわゆる旧帝大の大学院入試(機械工学)にまあまあ好成績で合格した。 その時に何をどのくらい勉強したかを思い出してみる。

以下やったこと

  • TOEICは大して勉強しなかった(600点もなかったと思う)
  • 入試の4~5か月前頃から本格的に勉強を始めた(毎日6時間くらい?土日は除く)
  • 力学→機械力学→材料力学→制御工学→数学→流体力学の順番で勉強した
  • 最後の1か月くらいはずっと過去問を解いていた(この頃は毎日10時間くらいは勉強していたかも)
  • 面接対策は特にしなかった

ずいぶん昔なので記憶はあいまいだが、確かこんな感じだったと思う。

前提

入試は8月。成績上位20%は院試免除だったので、下位80%の中では上位で合格したという感じ。 合格率は6~7割くらい?内部生でも3人に1人くらいは普通に落ちる。外部から入る人は相当優秀。(同期に外部入学がいたかも怪しい)

試験科目は、力学と数学は必須、機械力学・材料力学・熱力学・流体力学・制御工学の5科目のうち3科目を選択。

TOEICは大して勉強しなかった

英語が苦手で勉強したくなかった、点数が圧縮される(確か800点満点くらいの中の100点)ので専門科目に注力したほうがコスパがいいと思った、などの言い訳を並べてTOEIC対策などは大してしなかった。

周囲は5月ごろまで受けていた人が多かったが、私は12月と3月に受けたうちの良かったほうを提出した。

後悔はしていない。

入試の4~5か月前頃から本格的に勉強を始めた

専門科目の勉強を本格的に始めたのは4月。周りと比べても早いほうだったと思う。(周りはTOEICの勉強をせっせとやっていた。)

基本的に研究室で勉強していた。この頃は授業はほとんどなく、朝10時ごろから夕方5時ごろまで淡々と勉強をしていた。

昼ごはんはだいたい研究室の先輩と一緒にカツカレーを食べていた。いつも最後の一切れが多いなぁと思っていた記憶がある。

土日は勉強していなかったと思う。

バイトは週3くらいで行っていたと思う。

力学→機械力学→材料力学→制御工学→数学→流体力学の順番で勉強した

機械系で院試を受けると、その科目の多さが非常に辛い。 また、どの順番で勉強するかが結構悩ましい。

私の周りでは数学を最初にやる人が多かったように思ったが、数学は後回しにした。 理由は、最初にやっても解法を忘れそうだったから。 (特に微分方程式なんかは、解法の暗記ゲーなので)

逆に私は取っつきやすい力学から始めた。教科書を読んだり演習問題を解いたりしていた。あと過去問も解いていたと思う。

選択科目ははじめは機械力学・材料力学・制御工学の3つにしようと考えていたが、7月くらいに材料力学から流体力学に変えた。 流体力学は(流体系の研究室希望でない限り)避けられ、逆に材料力学は好まれる傾向にあったが、私は材料力学にどうしても馴染めなかった。

結果として、当日の流体力学の問題は死ぬほど難しくて、後から先生に聞いたところ流体力学を受けた生徒の点数は壊滅的だったそう。 後悔は…していない…

選択科目の勉強は、基本的に授業で出された演習課題と過去問をひたすら解いた。

数学は授業で使った教科書とか研究室に置いてあった教科書とかを使って勉強した。 あまりどんな勉強をしたかは覚えてないが、たぶん例題とか演習問題を解いたりしてたんだと思う。

基本的に私は院試のために新しく教科書や問題集は買わなかった。 授業で使った教科書やプリント、先人が集めてくれた過去問をメインの教材にしていた。 ただ、周りの人はよくマセマとか四力問題精選を使っていたので、授業で使った教材で勉強しにくい人はこれらを使ってみてもいいのかもしれない。

最後の1か月くらいはずっと過去問を解いていた

7月半ばか末ごろには試験範囲を一通り見終わっていたので、後は過去問を淡々とやっていたように記憶している。 過去問はトータルで20年分×2周くらいしたと思う。もしかしたら2回やったのは直近10年だけとかだったかも。あやふや。

解答を後世に残してあげようと思い、ノートで解いていた。 10冊くらいだったような気がする。

ノートは研究室に後輩が入ってきたタイミングで後輩に寄付した。もし今も使ってくれていたらうれしいな。

面接対策は特にしなかった

筆記試験に合格したらほぼ大丈夫と言われていたので、志望動機とかだけ空で言えるようにして臨んだ。 当日ネクタイを忘れたことは覚えている。

おわりに

勉強法に正解なんてないと思うけど、1サンプルとして誰かの参考になればいいなと思います。

線形代数をわかりやすく(5) 線形独立・基底・張る空間

f:id:kanichan_robot:20210812154047p:plain

はじめに

本記事は線形空間論の勉強をしたまとめです。 私の理解が誤っている可能性がありますので、その際は優しく指摘していただけると嬉しいです。

線形独立・線形従属

前回、 \mathbb{R}^nの公理化によってベクトルというものを再定義した。

さて、いくつかのベクトルの組の関係性を表す言葉として「線形独立・線形従属」というものがあった(参照)。 これらを前回定義した線形空間 Vでも同じように定義しよう。

定義

 v_1, \cdots, v_m \in Vの線形結合が 0 \in V \forall v \in V, v + 0 = 0 + v = vとなるベクトル)となる、すなわち

 \displaystyle
c_{1} v_{1} + c_{2} v_{2} + \cdots + c_{m} v_{m} = 0

となるような実数の組 c_1, \cdots, c_m

  •  (c_1, \cdots, c_m) = (0, \cdots, 0)以外にあり得ないとき、 v_1, \cdots, v_m線形独立であるという
  • そうでないとき、 v_1, \cdots, v_m線形従属であるという

(例1)  V 2 \times 2実数行列全体とすると、

 \displaystyle
E_1 = \begin{pmatrix}
1&0\\
0&0
\end{pmatrix}, 
E_2 = \begin{pmatrix}
0&1\\
0&0
\end{pmatrix}, 
E_3 = \begin{pmatrix}
0&0\\
1&0
\end{pmatrix}, 
E_4 = \begin{pmatrix}
0&0\\
0&1
\end{pmatrix}

は線形独立。

(例2)  Vを実関数全体とすると、

 \displaystyle
f_1: x \mapsto x, 
f_2: x \mapsto x^2, 
f_3: x \mapsto x^3,

は線形独立。*1

(例3)  Vを実関数全体とすると、

 \displaystyle
f_1: x \mapsto x, 
f_2: x \mapsto x^2, 
f_3: x \mapsto x^2 + 3 x,

は線形従属( f_3 = 3 f_1 + f_2で表せる)。

基底・張る空間

同様に、「基底」と「張る空間」も再定義しよう。

基底

定義

ベクトルの組 v_1, v_2, \cdots, v_m \in Vが以下2つの性質を両方満たすとき、ベクトルの組 v_1, v_2, \cdots, v_m V基底という。

  1. 任意のベクトル v \in V v_1, v_2, \cdots, v_mの線形結合で表せる。
 \displaystyle
\forall v \in \mathbb{R}^n, \exists c_1, c_2, \cdots, c_m \in \mathbb{R} \hspace{4mm} \mathrm{s.t.} \hspace{4mm}
c_{1} v_{1} + c_{2} v_{2} + \cdots + c_{m} v_{m} = v
  1. 線形独立である。

張る空間

定義

ベクトルの組 v_1, v_2, \cdots, v_m \in Vの線形結合全体を v_1, v_2, \cdots, v_m \in V張る空間といい、 \langle v_1, v_2, \cdots, v_m \rangleで表す。

 \displaystyle
 \langle v_1, v_2, \cdots, v_m \rangle = \{ c_{1} v_{1} + c_{2} v_{2} + \cdots + c_{m} v_{m} | c_1, c_2, \cdots, c_m \in \mathbb{R} \}

基底の例

テイラー展開フーリエ級数展開

テイラー展開フーリエ級数展開は多くの実関数*2多項式三角関数の和の形で表現できますよ、というもの。

これはまさしく実関数をある基底の線形結合で表現しているに他ならない。

テイラー展開の場合、基底は 1, x, x^ 2, x^ 3, \cdotsフーリエ級数展開の場合、基底は \sin x, \cos x, \sin 2x, \cos 2x, \sin 3x, \cos 3x, \cdotsとなるわけだ。

次元

最後に次元を再定義する。

定義

線形空間 Vの次元 \mathrm{dim} Vとは、 Vの基底をなすベクトルの数である。

さきほどのテイラー展開の例で言うならば、基底の数は \inftyにあるので \mathrm{dim} V = \inftyになる。

つまるところ色々なものを座標表現できるということ

基底というのはつまり軸のことだ。  \mathbb{R}^3に対して x軸、 y軸、 z軸を取ったように、複素数空間に対して実数部の軸と虚数部の軸を取ったり(いわゆる複素平面)、関数空間に対して 1軸、 x軸、 x^ 2軸、 x^ 3軸、・・・と取ったりできるのだ。

そうしてみると色々なものの見え方が変わってくる。 関数どうしが近いか遠いかというのも、 1軸、 x軸、 x^ 2軸、 x^ 3軸、・・・と取った時の座標が近いか遠いか、なんて考え方もできそうな気がしてくる。

ああ、なんだか真理に一歩近づいたみたいでワクワクしてくる。

参考文献

線形空間論入門

線形空間論入門

Amazon

*1: f: x \mapsto yという書き方は「 f f(x)=yとなるような関数ですよ」という意味。数学では一般に使われるので知らなかった人は覚えておくといい

*2:テイラー展開は無限階微分可能な関数、フーリエ級数展開だと周期関数限定だったりする