社会人からの異分野大学院進学〜修士〜

大学院で数学をしています.

M1のふり返り

はじめに

お久しぶりです.s.shimoです.
そろそろ修士1年が終わるので,この1年間の数学との思い出をざっくばらんに振り返ろうと思います.
内容は僕の思い出話なので,気楽な気持ちで読んでいただけたらと思います.
大きく以下の事について書きます:

  1. 勉強の仕方とセミナーの準備
  2. 大学の授業について
  3. 初のワークショップ参加
  4. 最後に:M2に向けての抱負

勉強の仕方とセミナーの準備

取り組んでいる本の読み方およびセミナーの準備の仕方は,以下の前期の振り返りブログに書いた内容とほとんど変わっていません.

前期の振り返り〜M1編〜 - 社会人からの異分野大学院進学〜修士〜

そう考えると,これらの取り組み方は前期である程度確立されてたのだなぁと感じます. ただ,細かい部分はアップデート?されています.
例えば,

  • 前期よりも命題やその証明のどの部分がポイントかを強調して発表するようになった(気がする)
  • セミナー練習において,前期は毎回練習のたびにipadに板書を完全に書いて練習していたが最近は練習後半は空で(頭の中で)思い浮かべながら行っている(これは単に労力を減らしているだけです...)

などです.
1つ大きく変わった点は,次のルールを設定したことです:

どんな命題を立てればいいか分からなかったり命題の証明が思い浮かばなかったりした時に,最低でも1週間は何も見ずに自分で考え抜く.1週間経って少しも進捗がなかったら,何か資料を参照する.

前期のブログを書いた段階では,長くても2~3日程度しか考え抜いてなかったので,自分で考える時間をより多めにすることを意識し実行しています.
なぜこのようにしたのかは,僕が考えている数学への向き合い方と関係があります.
僕は数学をガッツリ勉強し始めたのが2年半前ぐらいなので,知識は圧倒的に少ないです(全国の数学大学院生の中で一番知識がない自信があります!笑).
今から知識を増やそうと思っても,時間的に多分厳しいだろうなとも思っています.
そこで,知識は少ないけど新しい概念に遭遇した際に「あ,これはこう言うことがやりたいから,だったらこう言う風に考えれば大体こんな感じでいけそう」と言うようなその概念のお気持ちというかモチベーションというかをキャッチして自分なりに思考できる そういうメタ的な能力を伸ばそうと考えています.
そして,このような能力は1つの物事を多角的に見たり自分なりに考える練習をすることで養われるかなと考えているので,上で述べたように1週間じっくりといろんな角度から観察することを意識して実行しているわけです.
また僕はこれまで機械学習の研究をやってきて「知識はあるけど研究ができない」という状態を1年半ぐらい経験してきており,その状態を脱却したきっかけも知識量ではなく「1つの物事を多角的に見て深く観察する」ことでした.
なので,僕にとっては,知識量を増やすことよりも物事の解像度を上げる力を伸ばしたほうが合っているのではないかなと考えていて,これも上で述べた取り組み方をしている理由になります.

大学の授業について

前期に引き続き,リーマン幾何の講義を取りました(担当の先生は違う先生です).
その講義では,主に,リーマン多様体上のラプラシアンの自己共役生について学びました.
講義担当の先生が最初の授業で「この講義はインタラクティブな感じでやりたいから,授業中にどんどん質問してください」とおっしゃってくださりました.
そこで「せっかく授業料払ってるから講義を自分事化しちゃお」と思い,授業中に分からないことや板書でミスかな?と思ったことは積極的に聞いていました.
そうこうしていると,先生と段々とコミュニケーションが増えてきて,ランチに誘われるようになりました.
ランチメンバーは先生,その先生の指導を受けている学部生の方2名,その他数学系の先生方がいる場合もある といった感じで毎週行っていました.
色んな方と話せて楽しかったですし大変勉強になりました.また,これぞ大学っぽいというイベントだったので嬉しかったです.
学生方は数学を応用する事にも興味を持っているようで,僕がこれまで学んできた機械学習やプログラミングなどのお話をさせて頂いたりもしています.
僕のこれまでの経験が誰かの役に立っているかもと思うと嬉しいです.
実は,このご縁から,先生にお声がけ頂いてある事に参加予定なのですが,こちらはまたそのうち報告させていただこうと思います.
そんなこんなで,1つの授業から素敵なご縁が続いていて,有難い限りです.

初のワークショップ参加

研究室の同期の方がmagnitudeのワークショップで発表をするということで,僕は聴講者として一緒に参加させてもらいました.
数学のこういう会に参加するのが初めてだったので,色々な方からmagnitudeについてもそうですし他の数学の内容についてもお話を聞くことができてとても勉強になりました.
また,開催場所の大学は僕が研究室訪問させていただいた先生がいらっしゃる大学でその先生もそのワークショップに参加されていて改めてご挨拶することもできました.
(その大学は試験範囲の勉強が間に合わずに受験できなかったのですが...)
ワークショップに参加して色々学べましたが,1つ大きく学んだこととして,ワークショップ開催期間中は自分の勉強をする時間を確保しづらいという点があります.
僕はまだ修士の学生なのでそう感じるのかもしれません.
ですので,修士の間は自分の勉強を優先しても良さそうだなと思いました.

最後に:M2に向けての抱負

さて,次の4月からM2になります.
指導教員からは「修士のうちが一番勉強時間を確保できます」というアドバイスをもらっており,僕もそんな感じがしております.
広中先生の著書「学問の発見」において,キノコのお話があったと記憶しております(間違っていたら本当にすみません🙇‍♂️半年前ぐらいに読んだので記憶がだいぶ曖昧です).
そこでは,確か,「キノコは地中に菌糸を張り巡らせる.張り巡らせる量が少ない状態で上に成長しようとすると途中で成長限界がきてしまう.一方で,ずっと張り巡らせるだけで上に伸びようとしないといつまでも地上に出てこれない」こんな感じのことが書かれていたと思います.
僕にとっての修士課程はこのキノコの地中に菌糸を張り巡らせている段階だと思っています.
ですので,修士課程でちゃんと勉強できるか(=菌糸をしっかり地中に張り巡らせられるか)が今後に大きく影響しそうだなと感じています.
入学前と比べて,本の読み方が分かってきたりセミナーのやり方が分かってきたり,少しずつ見える景色が鮮明になってきた反面,気が緩みやすくもあるかなと思います.
ですので,M2は博士課程を含めた大学院生活において沢山勉強できる最後の一年だという気持ちを持って,M1の時以上に数学に打ち込んでいきます.

最後まで読んでいただきありがとうございました!
どこか1つでも面白いなと思ってもらえる内容があったなら嬉しいです.

距離空間上のgradient flowの定義 〜ノルムに対する不等式で微分の情報を抽出する〜

はじめに

こんにちは,shimoyamaです.
本稿では,僕の修士の勉強テーマである距離空間上のgradient flowについて,Euclid空間上の関数に対するgradient flowの定義から始めて,その定義を距離空間上でも定められるように一般化するまでの過程を紹介してみようと思います.
読むために必要な知識としては,微積の基本的な知識+ノルム空間と線形空間の定義を知っていれば十分だと思います.
また,本稿のサブ目標として,「不等式にあまり慣れていない方向けに,不等式の使い方の一例をgradient flowという一例を通してお伝えする」という目標を設定しています.
もしよければ読んでみていただけると嬉しいです.

内容に誤りがない様に努めますが,もし誤りを見つけた場合はご指摘いただけますと幸いです.
(ただ,今回はあくまで雰囲気を掴んでもらうことを優先しているため,踏み込むと脇道に逸れてしまい煩雑になるような話題についてはあえて一言で済ませて避けている箇所もあります.)
本記事の内容は,基本的に文献[2]を参照しています.
(文献[2]は僕が修士で取り組んでいる本です.)

本稿の内容をざっくり述べると以下になります:
gradient flowとは,関数を与えると定まる曲線のことで,与えられた関数をgradient flowと合成して得られた関数は与えられた関数の値が減少する方向に進むような曲線のことです.
距離空間には必ずしも微分構造(特に,線形性)が備わっているとは限らないため,通常のgradient flowの定義式を用いて距離空間上の関数に対するgradient flowを定義することはできません.
そこで,微分構造を明に用いない十分条件を導出し,それを距離空間上の関数に対するgradient flowの定義とします.

本文

[1] gradient flow の定義と意味

まず,一般の距離空間で考える前に,n次元Euclid空間上の関数に対するgradient flowを紹介します.
(※ 本記事では,Euclid空間は,実数の直積  \mathbb{R}^n にdot productによって内積を入れ,その内積から誘導されるノルム,そのノルムから誘導される距離を備えた空間を指すことにします.i.e. 通常の意味でのEuclid空間です.)

Definition 1 (gradient flows on Euclidian space)
  f: \mathbb{R}^n \to \mathbb{R}: 可微分関数, u: [a, b] \to \mathbb{R}^n: 可微分曲線とする.
 u f に対し次の等式を満たす時,  u f の gradient flow であると呼ばれる:
 \displaystyle
\begin{align}
\text{(C1):} \ & u'(t) = - \nabla f (u(t)) \ \text{for}\  \forall t \in [a, b],  \\
& \text{where}\  u' (t) = \left[u_1'(t), \ldots, u_n'(t) \right], \nabla f(x) = \left[ \frac{\partial f}{\partial x_1}(x), \ldots, \frac{\partial f}{\partial x_n} (x) \right]. 
\end{align}


gradient flowの意味を考えます.
条件(C1)から,gradient flowは曲線で,各点における接ベクトル  u'(t)

  • その点における関数のgradient(i.e.  \nabla f(u(t)))と逆方向を向いていて

  • その大きさがgradientと一致する

ような曲線のことだと分かります.
関数のgradientは関数値を大きくする方向を表しているので,gradient flowは「それに沿って進むと関数値を小さくし,進む大きさがgradientと一致する」という曲線だということが分かります.
(もう少し,厳密に上の説明を記述すると以下のようになります:
 f, u は共に微分可能だから, f \circ u微分可能.
よって,平均値の定理より,  \displaystyle
a \lt \forall s \lt \forall t \lt b
に対して,

 \displaystyle
\exists c \in (s, t)\  \mbox{s.t.} \  \frac{f \circ u(t) - f\circ u(s)}{t - s} \leq (f\circ u)'(c)
.

chain ruleと条件(C1)より,

  \displaystyle 
 (f\circ u)'(c) = \langle u'(t), \nabla f(u(t)) \rangle = - \| \nabla f(u(t)) \|^2 \leq 0.

 t - s \gt 0 だから,上2つの事実を組み合わせれば,

  f \circ u(t) - f\circ u(s) \leq 0.  

つまり,

 \displaystyle
f \circ u(t) \leq f\circ u(s)\ \text{for} \ a \lt \forall s \lt \forall  t \lt b

これは,gradient flowに沿って進むと関数値が減少することを意味する.)

gradient flowの応用例をあげると,例えば,熱流をgradient flowと見ることでリッチ曲率の下限条件と熱流の関係を見やすくできることが知られています[1].
これ以外にも様々な分野でgradient flowの概念は用いられているようです.
(gradient flowの応用例については,僕の勉強不足でほとんど知らないため,「色んな場所で使われている」という事しか知らないです... 具体的な応用例を調べることは今後の課題とさせてください.)

(gradient flowは応用例が多いということを認めると)
Euclid空間上の関数のみでなく,一般の距離空間上の関数に対してもgradient flowを扱えるようにすることで,より広いクラスに対してgradient flowの視点から解析が行えるようになるため有用そうです.
しかしながら,一般の距離空間上では条件(C1)を定義として採用することはできません.

[2] 距離空間微分構造(線形性)を持たない

 (X, d)距離空間として,関数  f: X \to R と曲線  u: [a, b] \to X に対して,「 u f のgradient flowである」という定義を定めることを考えます.

しかし,Euclid空間におけるgradient flowの定義(C1)をそのまま採用することはできません.
その理由は以下です:
gradient flowの条件(C1)では, \mathbb{R}^n線形空間としての微分構造(線形性とスカラー倍)が使用されています.
uの微分の定義式を思い出してみます:  \displaystyle
u'(t) = \lim_{h \to 0} \frac{u(t+h) - u(t)}{h}
.
定義内で, \mathbb{R}^nの元としての加法  u(t+h) - u(t)スカラー \displaystyle
\frac{1}{h} \cdot (u(t+h) - u(t))
が用いられています.
しかし,一般の距離空間上では加法演算とスカラー演算(i.e. 線形空間の構造)が定まっているとは限りません.
なので, u距離空間への曲線  u: [a, b] \to X とすると,通常の意味での微分  u'(t) を定義することができません.
同様に距離空間には線形構造が定まっていないことから, f: X \to \mathbb{R} のgradient  \nabla f も定義することができません.

そこで, u'(t), \nabla f を用いない(C1)に対する十分条件を導出します.
この時,ノルムに対する不等式が重要な役割を果たします.

[3] gradient flowの定義(C1)に対する同値条件(C2)

再び,Euclid空間の場合に戻ります(つまり,可微分関数  f: \mathbb{R}^n \to \mathbb{R} と可微分曲線  u: [a, b] \to \mathbb{R}^n

まず, u' における線形性の使用を回避した,(C1)と同値な条件を導出します.

Proposition 2 (equivalent condition to (C1))
 f: \mathbb{R}^n \to \mathbb{R}: 可微分関数, u: [a, b] \to \mathbb{R}^n: 可微分曲線とする.
 f u に対し,以下の2条件は同値である:
 \displaystyle
\begin{align}
\text{(C1):} \ & u'(t) = - \nabla f (u(t)) \ \text{for}\  \forall t \in [a, b],  \\
\text{(C2):} \ & (f\circ u)'(t) \leq -\frac{1}{2} \| u'(t)\|^2 - \frac{1}{2} \| \nabla f(u(t)) \|^2  \ \text{for}\  \forall t \in [a, b].
\end{align}

proof
 
\begin{align}
& u'(t)  = - \nabla f (u(t)) \\
& \iff \| u'(t) + \nabla f (u(t)) \|  = 0  \\
& \iff \| u'(t) + \nabla f (u(t)) \|^2 = 0 \\
& \iff \| u'(t) + \nabla f (u(t)) \|^2 \leq 0 \\ 
& \iff \left\langle u'(t) + \nabla f (u(t)), u'(t) + \nabla f (u(t)) \right\rangle \leq 0 \\
& \iff \|u'(t)\|^2 + 2\left\langle u'(t) , \nabla f (u(t))\right\rangle + \|\nabla f (u(t)) \|^2 \leq 0\\
& \iff \|u'(t)\|^2 + 2 (f\circ u)'(t) + \|\nabla f (u(t)) \|^2 \leq 0 \\
& \iff (f\circ u)'(t) \leq -\frac{1}{2} \| u'(t)\|^2 - \frac{1}{2} \| \nabla f(u(t)) \|^2
\end{align}


 \|u'(t)\| は次のように書けることに注意してください:

 \displaystyle
\|u'(t)\| = \lim_{h \to 0} \left\| \frac{u(t+h) - u(t)}{h} \right\| = \lim_{h \to 0} \frac{\| u(t+h) - u(t)\|}{|h|} = \lim_{h \to 0} \frac{d\left( u(t+h), u(t)\right)}{|h|},
ここで, d はノルムから定まる距離です.

つまり, \|u'(t)\| は線形性を用いずに,距離空間の構造だけで定めることができます.
(余談ですが,上の式の最右辺の量を metric derivative と呼びます.)

以上から,条件(C1)と同値で, u'(t) についての線形性を用いない条件(C2)を導出することができました(つまり, \|u'(t)\|距離空間の構造のみで定義することができます).
あとは,(C2)内の  \nabla f の項に対処してあげれば,距離空間上でもgradient flowを定義できます.

[4] upper gradientを用いた(C2)に対する十分条件の導出

まず,upper gradient という概念を導入します.

Definition 3 (upper gradient)
微分関数  f: \mathbb{R}^n \to \mathbb{R} に対し,関数  g: \mathbb{R}^n \to [0, +\infty] が次を満たす時, g f のupper gradientであるという:
 \displaystyle
\text{(D1):}\ \|\nabla f(x) \| \leq g(x) \ \text{for}\ \forall x \in \mathbb{R}^n
.


さらに,次の事実が成り立ちます.

Proposition 4 (Equivalent condition to upper gradient)
微分関数  f: \mathbb{R}^n \to \mathbb{R} ,関数  g: \mathbb{R}^n \to [0, +\infty] に対し,以下は同値である:
 \displaystyle
\begin{align}
\text{(D1): }\ & \|\nabla f(x) \| \leq g(x) \ \text{for}\  \forall x \in \mathbb{R}^n, \\ 
\text{(D2): }\ & |(f\circ \gamma)' (t)| \leq g ( \gamma (t)) \cdot \|\gamma'(t)\| \\
& \ \text{for}\  \forall \gamma: [a, b] \to \mathbb{R}^n: \text{differentiable}\ , \forall t \in [a, b].
\end{align}

proof of (D1)  \Rightarrow (D2): 
chain ruleから,  (f\circ \gamma)' (t) = \left \langle \nabla f(\gamma(t)), \gamma'(t) \right \rangle . 
コーシー・シュワルツの不等式より,  |\langle \nabla f(\gamma(t)), \gamma'(t) \rangle| \leq \|\nabla f(\gamma(t))\| \cdot \|\gamma'(t)\|.
以上と(D1)を組み合わせて(D2)を得る.

proof of (D2)  \Rightarrow (D1): 
 \forall x \in \mathbb{R}^n を任意に1つ取る.
 \nabla f(x) = 0 の時, (D1)の不等式が成り立つことは明らか.
 \nabla f(x) \neq 0 の時, 可微分曲線  \gamma: [a, b] \to \mathbb{R}^n を次で定義する:
 \gamma(t) := x + \nabla f(x) \cdot t \ \text{for}\ t \in [a, b]. 
 \gamma(0) = x, \gamma'(0) = \nabla f(x) がなりたつことに注意して, (D2)が成り立つことを用いれば,
 g(x) \cdot \|\nabla f(x) \| \geq |(f\circ \gamma)' (0)| = |\langle \nabla f(x), \nabla f(x) \rangle| = \| \nabla f(x) \|^2 .
よって, (D1)の不等式が  x に対し成り立つことが分かる.


1つ前の章で見たように,可微分曲線の微分のノルムは距離空間の構造だけで定義できました: \displaystyle \| \gamma'(t)\| = \lim_{h\to0} \frac{d(\gamma(t+h), \gamma(t))}{|h|}
また, f\circ \gamma: [a, b] \to \mathbb{R} はEuclid空間上の関数なので,通常の微分を定義できます.
よって,upper gradientは,(D2)を定義とすれば,距離空間上でも定義することができます.
(微分可能な  \gamma を対象としているから  \gamma微分を定義できる必要があるのではないか?と思われた方のためにコメントします.
結局使っている情報は  (f\circ \gamma)' \| \gamma' \| のみなので,この2つを満たすような  \gamma を対象にすればそのような問題には対処できます.)

upper gradientを用いると,gradient flowの同値条件(C2)に対する十分条件を導出することができます.

Proposition 5 (Sufficient condition to (C2))
 f: \mathbb{R}^n \to \mathbb{R}: 可微分関数 , u: [a, b] \to \mathbb{R}^n: 可微分曲線,  g: \mathbb{R}^n \to [0, +\infty] :  f のupper gradient とする. この時,以下の条件(C3)が成り立つならば,upper gradientの条件(C2)が成り立つ:
 \displaystyle
\begin{align}
\text{(C3):}\ & (f\circ u)'(t) \leq -\frac{1}{2} \| u'(t)\|^2 - \frac{1}{2} g^2(u(t)) \ \text{for}\  \forall t \in [a, b], \\
\text{(C2):} \ & (f\circ u)'(t) \leq -\frac{1}{2} \| u'(t)\|^2 - \frac{1}{2} \| \nabla f(u(t)) \|^2 \ \text{for}\  \forall t \in [a, b].
\end{align}

proof
 g f の upper gradient なので,(D1)が成り立つ.
つまり,  \| \nabla f(u(t)) \|^2 \leq g^2(u(t)). 
よって,  -g^2(u(t)) \leq - \| \nabla f(u(t)) \|^2 .
したがって, (C2)が成り立つ.


条件(C3)では, u', \nabla f に対する  \mathbb{R}^n の線形性の使用を行なっていません.
よって,条件(C3)は一般の距離空間上でも定義することができます.
そのため,条件(C3)を距離空間上の関数・距離空間への曲線のgradient flowの定義として採用することができます.
これで,当初の目標であった「 u, f に対して  \mathbb{R}^n微分情報を用いないgradient flowの十分条件の導出」が完了しました.

おわりに

本記事では,一般の距離空間上でも定義可能なgradient flowの十分条件を不等式を駆使して導出しました.
本記事で紹介したように,定義のモチベーション自体は微積分の基本知識とノルム空間・距離空間の定義のみで理解できるかと思います.
しかし,実際に理論を構築しようとすると,上に挙げた以上の知識が必要になります.
例えば,metric derivativeが存在するような曲線はどんな曲線か?という問題を考えると,その問題への回答の1つとして絶対連続曲線を挙げることができます.
ただ,絶対連続曲線を深くまで理解しようとすると測度論の知識が必要になります.
また,gradient flowを考える距離空間の重要な具体例としてバナッハ空間があり(正確にはノルム空間ですが),バナッハ空間そのものの知識やバナッハ空間に値を持つような測度についての知識があった方が見通しが良くなります.

このように,スタート地点は単純ですが色んな数学の分野とつながりがあり,非常に味わいのある対象だなと感じます.

ここまで読んでいただきありがとうございました.
また気が向いたら自分の勉強した内容を記事にまとめようと思いますので,もしよろしければ見てみてください.

参考文献

[1] 測度距離空間のリッチ曲率と熱流, 太田 慎一.
[2] Gradient Flows In Metric Spaces and in the Space of Probability Measures, Luigi Ambrosio, Nicola Gigli, Giuseppe Savaré.

前期の振り返り〜M1編〜

はじめに

大学院に進学してM1の前期が終わったので,その間に起きた出来事や考えていたことなどを本記事にまとめて振り返りを行います.
(月日が経ったときに後で自分で見返して,「こんなこともあったな」と思い出す様のまとめになります. ですので,皆さんのためになるかは分かりませんがご容赦ください🙇‍♂️)

内容としては,以下について書きます:

  1. 大学院合格から入学まで
  2. 数学への向き合い方(勉強の仕方)
  3. セミナーの準備とセミナー本番

せっかくなので,入学までの期間から振り返ろうと思います.

大学院合格から入学まで

私が受験した時は,面接試験があったその日に合格内定者の発表がありました.
無事,合格内定をいただく事ができたので,お世話になったすうがくぶんかの講師の方々にお礼のメールをしました.
8/20付近が受験日だったのですが,8月頭あたりから全然眠れなくなってしまい,1日の睡眠時間が3時間ぐらいの日々を過ごしていました.
合格内定をいただいた当日は久しぶりに直ぐに眠りにつく事ができました.
(特に不安や緊張は感じていなかったのですが,なぜか頭が冴えてしまい全く眠れませんでした.眠れなくなる前はいつも7時間ぐらい寝ていました.合格内定を貰った日はたくさん眠れたので,もしかしたら自分では気づかずに緊張していたのかもしれません.)

翌日,朝一で先生(指導教員)にお礼と修士で取り組むテーマ(修士で読む本)相談日調整のための連絡をしました. そこから,3週間ぐらいにわたって,テーマ決めのMTGを毎週zoomでしていただきました.
(内容としては,先生から分野を紹介してもらい,それについて調べて,興味を持った内容を伝えるということを繰り返しつつ,段々分野を絞りつつ先生からいくつか本を提示してもらう感じでした.)
最終的に,先生からの提案で,読む本を Gradient Flows In Metric Spaces に決めました.

読む本を決めたので,必要な知識の勉強に移りました.
基本的な進め方は「まず本を読んでいって,知らない単語が出てきたらその分野について勉強する」という感じで進めました(今でもこの進め方です).
入学までに勉強した大まかな内容は以下になります:

  1. 測度論・ルベーグ積分 with 吉田伸夫先生の本:9月〜11月(「絶対連続」という概念が出てきたので)
  2. 関数解析 with 黒田先生の本:12月〜2月(「reflexive banach space」という概念が出てきたので)

数学の勉強以外では,入学までに少しでも貯金を増やそうと思い,退職した会社の別プロダクトでアルバイトとして雇っていただきました.
仕事内容は以下でした:

  • A/Bテストシステム開発(1から)
  • A/Bテスト勉強会をプロダクトの全員(ビジネス・エンジニア両方含め)向けに実施(A/Bをやる意義や実施するときの注意点などを説明)
  • A/Bテスト実施 & 分析 & まとめ を何回か

ありがたいことに,仕事内容に対してベストエンジニア賞(社員さんも含めエンジニアの中からいくつかの側面を考慮して決まる月次の社内表彰)をいただく事ができました.
(この表彰と作ったシステムが継続的に使われていることから,ビジネス的にある程度意味のある仕事はできたかなと思い,嬉しく思っています.)

数学への向き合い方 (勉強の仕方)

まずは自分で定義・命題を考えてみることからスタートします.
具体的には以下のように進めています:

  1. 本を見て,その章でやりたいことのみを知る(e.g. upper gradient の章なら,「関数が与えられた時にその関数の gradient のノルムを上から抑える関数という概念を定義したい.上から抑えるような関数として canonical に考えられるものが存在するから,それがちゃんと upper gradient の定義を満たすような定義にしたい」といった感じ)
  2. 1で抽出した各章のエッセンスに基づいて,自分で定義・命題を作って証明する.
  3. 2の最中にどうしても進まなくなったら,本と自分の定義・命題を照らし合わせる(定義のどこは同じか?どこは違うか?,命題の主張は同じか?仮定はどうか?などを見比べる)

基本的には,上の1~3を繰り返しながら各章を理解する形で進めています.
本に書いてある証明の細部までは追っていません(嘘なのか僕の力が足りていないのか分かりませんが,細部まで厳密に正当化しようとすると,本に書いてある証明が分からないことが多く,真面目に細かいところまで本の通りにやろうとすると時間だけが過ぎる場合が多いためです.)

上のような方法になるまでの過程

最初からこの様な方法だったわけではなく,段々とこのような方法にブラッシュアップされていった形です.
以下で,この様な方法に至るまでの過程を記載します.

本を読み始めた頃は,定義や命題を自分で考えるということは行わず,本に書いてある証明を細かいところまで追うという方法をとっていました.
しかしながら,この方法で進めるとしばしば証明が全く進まなくなる状態に陥ることがありました.
(例えば,Lemma. 1.4「絶対連続曲線ならほとんど至る所 metric derivative が1になるようなパラメータの取り替えが存在する」という主張の証明において,本の証明だと metric derivative が 0 となる点の測度が 0 より大きいような絶対連続曲線に対しては正当化できない手順が存在します).
こういう場合は,一旦諦めて先に進むということをしていました.

4月頭に初めて先生の研究室に挨拶に伺い,セミナーの頻度や形式(対面 or zoom)を相談しました.
その際に,あるremarkを読んだ方がいいのかどうかを質問しました.
(僕の中の感覚として,remarkで紹介されている内容は「本の主題からはそれるから事実として述べるにとどめる細かいお話」がほとんどという印象です.)
そのremarkは,Bochner積分における微積分の基本定理が成り立つ条件についてだったのですが,「これはこの本だと重要だから勉強した方がいい」と回答をいただきました.
さらに,「本を参照しても良いけど,せっかくだったら何も見ずに自分で定義して,命題を作って,証明を与える ということをやったら良いよ」とアドバイスをもらいました.
本を見ないで自分で考えるという発想を持っていなかったので,「なるほど,そんな方法もあるのか」と衝撃を受けた記憶があります.

翌週,質問したremarkの前に1 ~ 2個命題があったので,それを紹介する形でセミナーを行いました.
細かい部分で詰めれていない箇所がいくつか存在し,「そこはどんな定義ですか?」など質問をいただいてしっかり答えられないことがありました.
(人生初めてのセミナーだったので「まぁこんなものだろう」という気持ちはありました.どんどん良くしていけばいいかなと思っていたので.)
また,そのセミナー内で,分かっていない命題について先生に質問したところ,例えばこんな感じで証明できるのではないか?とアドバイスをいただきました.
その方法は本に載っている証明方法とは全く異なるものでした.

上に述べたような,いくつかの個々の経験やアドバイス

  • 何も見ずに自分で定義してみる
  • 定義や証明の手順で曖昧な部分をなくす
  • 本に書いてある証明以外の証明も考える

を意識しながら,セミナーや勉強を繰り返していくうちに,これらが相互に関連し合い,混ぜると良い進め方ができるということに気づき始め,今の勉強方法が確立されました.
強調しておきたいのは,初めから今の勉強方法だったわけではなく,個々の経験やアドバイスを踏まえながら,実践しては考えを繰り返した結果今の形になったという点です.(なので,これからもどんどん形は変わるかもしれません)
(この出来事は,僕の中で,「考えながら走り続けることが大切だな」と感じる一例でした)

セミナーの準備とセミナー本番

セミナーの準備

僕は先生に「セミナーは何も見ずに行います!」と初日に宣言しているので,何も見ないで行っています.
なので,準備に1週間ぐらいかかることも結構あります(話す量によりますが). 時間制限は特にないので,時間内にまとめることは特に気にしていません.話たいことが終わるまで話す感じです.(一番長かったのは,Banach空間値測度の拡張定理を紹介した回で,4時間半行いました.)

勉強した内容が存在している状態で,それをセミナー発表用にまとめることを「準備」とします.
準備の仕方は大体以下です:

  1. セミナーで話たい内容を何も見ずに書き出す(定義や命題の証明など)
    (勉強中に厳密な証明を与えているので,基本的には1回目から何も見ずに書き出すことはできます.)
  2. 1で書き出している最中に感じたことに基づいて,話す内容・言い回しをブラッシュアップする
    (e.g. 「ここの説明が冗長だな」と思ったら簡潔で分かりやすい良い言い回しを考える.証明のモチベーションやイメージで捉えられる部分はその様な説明を入れるが,その言い回しが簡潔になるようにする.定義が分かりづらい部分は具体例を入れて定義のお気持ちを捉えやすくする.)
  3. 1と2を納得いくまで繰り返す

基本的には3 ~ 4回は繰り返し行って,聞いている人が引っかかりなく理解できるような言い回し・内容になる様に仕上げていきます.

セミナー本番

準備してきた内容を話すことがベースです.
ただ,僕はセミナーのライブ感を大事にしているので,内容はそのセミナーの雰囲気によって多少変化します.
例えば,先生が何か補足情報をくれたらそれに対して知っている内容があれば自分からも補足をしたり,逆に知らなければ追加で質問したりします. また,説明しているときに反応が良くないと感じたら,言い回しを少し変えたりしてより伝わりやすい表現に調整したりもします.

個人的な感想ですが,準備中とセミナー本番をあわせて考えたとき,セミナー本番が一番良い説明ができている気がします.
(聞いてくださっている方の反応があるからかもしれませんが)

セミナーの参加者は,先生と同期の2人です.
(同期はこの方1人で,僕とは違う内容に取り組んでいらっしゃいます.僕も同期の方のセミナーに参加し勉強させてもらっています.)

話すのは日本語ですが,板書は英語で行っています.
いずれ論文を書く事を視野に入れているのもありますが,日本語より英語の方が分かりやすいと思っているからです.
(例えば,「Xはコンパクトハウスドルフ空間とする」と日本語で書くと,途中まで書いた段階では,「Xは〜である」のか「Xは〜とする」のか,結論が最後にくるので最後まで書かれるのを待たないといけません.
しかし,英語なら「Let X be a locally cpt. Hausdorff space」となるので,「とする」という結論が書き出しから分かった状態になり,理解しやすいと思っています.)

終わりに

前期終了までの出来事や考えていたことを振り返りとしてまとめました.
後で自分で見返した時に,なるべく当時の情景・心情を鮮明に思い出せるようにするために,詳細に記述したつもりです.
なので,読んでくださった方にとっては冗長かもしれませんが,そう感じていましたら申し訳ございません🙇‍♂️

今後も区切りの良いタイミングで定期的に振り返りをできたらいいなと思っております.

大学院に合格するためにやったこと

アブスト

本記事では,私が異分野大学院に合格するためにやったことをざっくりと書きます.

私は情報系の出身で,機械学習の応用系の研究室で修士号を取得したのち,データサイエンティストとして1年間働きました. その後,数学の研究をしたいと思い,退職し,大学院数学専攻に進学しました.

その際,大学院合格のために私が意識し行動したことは以下の3つです:

  1. プロに教えてもらう.
  2. 色んな人に話しかけ,積極的に情報を集めに行く.
  3. 院試に受かることを目標に,院試に出ない範囲は勉強しない.

以降,本文では以下2つの項目について,詳細を記載します.

  • どのぐらいの時期に何をしていたのか
  • 上で意識した内容に対し,具体的にどのような行動をとったのか

大学院入試までの時系列

本節では,大学院入試までに行ったことと勉強した内容を時系列に沿って紹介します.
補足:私が大学院進学を意識し始めたのは,院試がある年の3月半ばぐらいからだったのですが,その約3ヶ月前から個別指導で数学を習い始めたのが大きかったのでそこから書いております.

大まかに以下の時系列に沿って以下のようなことを行いました(12月から4月までは社会人として,平日5日間は働いておりました) .

  • 12月中頃:すうがくぶんかさんで個別指導受講開始(位相空間を習う).
    並行して,松坂先生著「集合・位相入門」を読む(基本は独学で進めて,分からなかったところを個別指導の講師の方に質問する進め方).
  • 1月:個別指導継続中.
    「集合・位相入門」を読み終わる.
  • 2月:個別指導継続中.
    難波先生著「微分積分学」に取り組み始める.
  • 3月:個別指導継続中.
    大学院に進んで,もっと数学に取り組みたいと思い始める.そこで,大学院進学にあたり,どんな情報を集めたりどんな行動をすればいいか 個別指導を担当してもらっていた講師の方に相談する.
    微分積分学」継続中
  • 4月:3週目あたりで「位相空間」についての個別指導がひと段落する.大学院進学を踏まえて「多様体」を別の講師の方に習うように調整してもらう.
    大学の先生にzoomでの面談を依頼する.微分幾何に興味を持っていたので,微分幾何の研究をしている先生方を大学のHPから探し,大体10人ぐらいにメールを送る.最終的に6人と面談させてもらう(面談させてもらわなかった先生方は直近でご退官されるとのことだった).
    大体3週目ぐらいまでで面談してもらった.
    志望校を決め,過去問を分析し,勉強する科目・範囲を絞る.例えば,ジョルダン標準形は志望校で出てなかったので勉強しないことに決めた.
    3週目あたりで「微分積分学」を読み終える.加藤文元先生著「線形代数」を勉強し始める.
    勉強に専念するため,4月末で退職する.(理由:面談した結果,院試に合格したら指導してもらえそうと感じたのと,これまでの勉強ペースから会社を辞めて勉強したら院試に間に合いそうと感じたため.ただ,今年受からなくても来年受ければいいやとも思っていた.)
  • 5月:少し間が空いて,2週目から「多様体」の個別指導を受け始める.また,選択科目の相談をし選択科目は「複素関数論」「ホモロジー」「多様体」を選ぶことに決める.
    2週目ぐらいまでで「線形代数」の勉強が終わる(大学生の時,線形代数の計算は嫌というほどやっていたので,計算系は全部飛ばして次元定理や固有ベクトルの理論などのみを勉強した).
    プリンストン複素解析学」を勉強し始める.
  • 6月:「多様体」を個別指導で継続中.
    複素関数論」を6月末ぐらいで終わらせる(これは,過去問に出てきた範囲までしかやってません).
    出願期間があったので願書を準備する.2校に出願する.異分野からの進学なので,志望動機はかなり考え,ふわふわした内容にならず具体的になるように記述した.また,進学してからの学習計画も書く必要があったが,そちらもふわふわした内容にならないように具体的に記述した(会社では新規サービス立案をしていたので,その時に培った,相手に納得してもらう伝え方・言葉遣いを活かしたつもり).
  • 7月:「多様体」を個別指導で継続中.
    6月最終週あたりから,坪井先生著「ホモロジー入門」で「ホモロジー」の勉強を始める.マイヤービートリス完全系列が使えれば院試は大丈夫と個別指導の先生と面談した大学の先生に教えてもらったので,そこまで理解することを目指した.大体3週目ぐらいまででマイヤービートリスまで到達し,2年分ほど過去問のホモロジーの問題を解いてみた.
    ただ,マイヤービートリスがいまひとつわかった気になれず,使いこなせている感じもしなかった.
    面談してもらった先生のうちの一人に「院試の問題で分からない部分があったらお気軽に質問してください」と言われたので,その言葉を信じて,厚かましく,解いた過去問についてのディスカッションを依頼する(3時間ぐらいディスカッションしていただけて本当にありがたかったです.)
    3週目あたりから,過去問の演習を始める.また,演習本も用いた.用いた演習本は以下
    • 大学院への幾何学演習
    • 詳解と演習大学院入試問題〈数学〉: 大学数学の理解を深めよう
  • 8月:3週目に院試があった.
    個別指導での「多様体」の勉強は1週目までで一通り終わり,その後,過去問の解説をしてもらう.
    過去問と上述した本を使って演習を行った.

大体上の感じで,院試まで過ごしました.
勉強量については,詳しいことは覚えていないのですが,

  • 退職する前は,仕事が終わった後と仕事が休みの日はずっと数学
  • 退職してからは,大体,起きてから寝るまで,飲食とお風呂以外は数学

こんな感じでした.

「意識した3つのこと」に対して,具体的に行った行動

この節では,アブストで記載した大学院合格のために意識したことに対して,具体的にどのような行動を取ったかを記載します.

プロに教えてもらう

具体的にとった行動は,すうがくぶんかさんで個別指導受講を始めたことです.
少し厳密に述べると,開始した当初は大学院に行こうとは考えていなかったのですが,結果的に合格するための重要な1つのファクターになったかなと考えております.
頻度としては,1回2時間で毎週受けており,受験直前の7月からは週2回に増やしておりました.
やはり,自分で考えているだけだと得られなかった視点や数学に対する取り組み方などを体験できるのでとても価値があったと思います.
受講料はかかりますが,社会人をしていたことを活用しようと考え,自分に投資しました.

色んな人に話しかけ,積極的に情報を集めに行く

大きく次の3つの行動を取りました:

  1. 大学の先生に面談をしてもらう.
  2. 大学院入試説明会に行き,積極的に質問する.
  3. twitterで志望大学の過去問を持っていそうな方にDMを送って譲ってもらう.

まず1番について,
指導していただくので自分との相性が良さそうか?丁寧に指導していただけそうか?などをみさせていただけるという点で重要だと思います.
また,私は異分野からの進学を希望していましたので,どのぐらい本気なのかを先生に伝えるという意味でも重要かなと考えてます.
特に,私にとってこの行動を取ったことで得られた1番のメリットは「異分野からの進学も歓迎してくれている」と実感できたことです. 実際にお話を聞かせてもらうと,どの先生も「真剣に取り組めばやっていける」という旨のコメントをくださりました.
また,中には,先生が最近取り組んでいる研究の内容を詳細に聞かせてくださった先生もおり,2時間ほどマンツーマンでお話しいただけました.こんな何処の馬の骨ともしれない人間に多くの時間を割いてくれたありがたさと,代数・幾何・解析が入り混じった研究内容を見てより数学の楽しさを感じ,モチベーションにつながりました.

次に2番目について,
院試は「内部生と外部生で情報の非対称性があるから外部生は不利」みたいなお話を聞いたことがあったので,院試関連の質問ができそうな機会は活用しようと思いました.
特に,院試説明会では在学生の方に質問できたので,「過去問は何年分といたか?」「その大学以外の大学院の過去問で解くといいものはあるか?」「試験当日に気をつけるべきことは何か?」など色々質問しました.
質問を重ねていくと,「院試のペーパーテストで失敗しても,ペーパーテスト翌日の口頭試問までにテストの内容を解き直していけば大丈夫」というアドバイスを得られたのはとても大きかったです(これにより,心持ちが結構軽くなりました).

最後に3番目について,
過去問は各大学院のHPで公開されているのですが,私の志望大学は数年分しか乗っていなかったので,内部生の方のTwitterを見つけてそれより前の過去問をいただきました.
HPに載っている過去問では出題されていなかった分野があったのですが,いただいた過去問では出ていたので,試験範囲の見直しが行えました.

院試に受かることを目標に,院試に出ない範囲は勉強しない

志望大学の過去問と本を照らし合わせながら,この科目のここは出る/出ないというのを調べて,出る部分のみ勉強を行いました.
その際,すうがくぶんかの講師の方にも勉強する範囲を相談しました.

「時系列」の節をご覧いただければ分かるように,大学院進学を目指した段階で,私は試験科目に対して勉強できていない科目が沢山ありました.
(具体的には,「微積」「位相」「線形代数」「複素関数論」「ホモロジー」「多様体」のうち,3月終わりでまともに終わっていたのは「位相」ぐらいです.)
なので,過去問に出る範囲に絞って勉強しないと絶対に院試に間に合いません.
数学の勉強方法として,試験範囲のみに絞って勉強するのはどうかな?とも思ったのですが,第一の目的は院試に受かることであり,院試に受かりさえすれば入学までの間で数学に取り組めるのでこのような選択をしました. (実際,面談していただいた先生方にも「まずは院試に受かることが大事です」とお声がけいただきました.)

ただ,勉強範囲は絞りましたが,勉強する必要がある対象については単に暗記するだけではなく,定理のイメージや定義のお気持ちが分かるまでじっくり考えて勉強しました.
というのも,過去の経験から,単に暗記するだけでは絶対に試験で問題が解けるようにならないという感覚があったためです.
(上の感覚を得た経緯:情報系の学部生・修士生だったとき,数学の本を読んで「定義も分かるし,定義から定理も導けるけど,なんかわかった気になれないし記憶にも残らない」という体験を3年ぐらい経験しており,どうすれば数学が見えるようになるのか,すごく悩んでいました.すうがくぶんかの講師の方から数学を学んで,定理のイメージや定義のお気持ちが分かるまで考えると,見える世界が色づいて,記憶にも残りやすいという体験をしました.この経験から,絶対に定理のイメージや定義のお気持ちは最低でも分からないと何も身につかないと考えるようになりました.)

結び

ざっくりとですが,私が大学院に合格する際に意識して行動したことについて書いてみました.
特別なことは何もやっていないと思いますが,(自分の中では)面倒だったりハードルが高い行動を実行したつもりです (例えば,私は初対面の人に話しかけるのがすごく苦手だったので,面談のメールを送るときは毎回とても緊張しましたし,最低3回はメールの内容を見直しました.) . 結果的には,これらの行動で得られた情報のおかげで,院試に対する不安は特に感じずに本番を迎えることができましたし無事合格をいただくこともできました.
やはり,上に挙げたような行動をとることが大切なのだろうなと,院試が終わってからより強く実感しました.
(上で挙げた行動を取ろうと思った経緯:私は元来あまりアクティブではないのですが,社会人として新規プロダクトの立ち上げをする中で得られた経験から,何かを成し遂げる際に重要だと感じたいくつかの項目があります.その中で,「大学院合格」のために応用できそうだと考えた項目を実行したつもりです.)

今回記述した内容が万人に当てはまるとも,絶対的な正解であるとも考えてはおりませんが,もし,この内容がどなたかの役に立てたなら幸いです.