(整理予定)言語処理道一合目

対話システム・言語処理についてぼちぼち頑張るブログ

GNN実装・超入門 -小話:有効グラフと無効グラフの定義-

最近GNNに惹かれてます.

現在も,自分のシステムの機構の一部にR-GCNを使っているのですが,きちんと理解しようと以下で勉強し直しています.


・グラフニューラルネットワーク: PyTorchによる実装

https://amzn.asia/d/aCG2SGY

 

PyG公式ドキュメント

pytorch-geometric.readthedocs.io

 

今日は地味につまった,PyGによる有効グラフと無効グラフの定義についです.

公式ドキュメントによると無効グラフの定義ってこれなんですが,

import torch
from torch_geometric.data import Data

edge_index = torch.tensor([[0, 1, 1, 2],
                           [1, 0, 2, 1]], dtype=torch.long)
x = torch.tensor([[-1], [0], [1]], dtype=torch.float)

data = Data(x=x, edge_index=edge_index)
>>> Data(edge_index=[2, 4], x=[3, 1])

 

「ん,,この定義の仕方↓って有効グラフじゃないの???方向あるじゃん,,」と疑問に思い,地味に進めませんでした.

edge_index = torch.tensor([[0, 1, 1, 2],
                           [1, 0, 2, 1]], dtype=torch.long)

 

結論,PyGでは「エッジの両端を入れ替えたものは同じエッジとして扱われるため、この定義の仕方で無効グラフとして扱われる」ようです(間違っていたらご指摘ください)

諸々確認してみました.

◎無効グラフの場合

import torch
from torch_geometric.data import Data

edge_index = torch.tensor([[0, 1, 1, 2],
[1, 0, 2, 1]], dtype=torch.long)
x = torch.tensor([[-1], [0], [1]], dtype=torch.float)

data = Data(x=x, edge_index=edge_index)

#エッジ数の確認と,有効グラフかどうかの判定
print(data.num_edges)
print(data.is_directed())

>>2
>>False

 

おお,確かに,エッジ数が重複が削除されて4→2,そして,無効グラフであることを示すFalseになっています.

 

◎有効グラフの場合

edge_index = torch.tensor([[0, 1, 1, 2], [1, 2, 3, 4]], dtype=torch.long)
x = torch.tensor([[-1], [0], [1], [1]], dtype=torch.float)
data = Data(x=x, edge_index=edge_index)

#エッジ数の確認と,有効グラフかどうかの判定
print(data.num_edges)
print(data.is_directed())

>>4
>>True

 

有効グラフの場合はエッジ数がそのまま4で,きちんと表示もTrueです.

 

少しつまったので,記しておきます.

私はアホだから。

私はアホだから、

効率よくやるための戦略と手法についてを考え続ける。

ありとあらゆる手段をなんだってやる。

もう二度とあんな失敗はしたない。

繰り返したくない。

研究に、数学に、英語に、数学に、コードに全てをかける

前回の失敗はトライエラーあまりにも遅すぎたこと。

学習環境の最適解はできた。

あとは学習獲得と、学習速度の最適解を目指すだけだ。

・とにかく1000時間ストップウォッチ。
・仕事表の印刷
・研究室のデスクの最適化
をやろう。

あと土曜日のタイムマネジメント

絶対に研究する



本当にこのままじゃダメだなぁと思う。

ようやく手にした2年間のチャンス。
このままだと絶対にダメだなぁと思う。

何もかもが遅すぎるし効率が悪すぎるのがダメだ。


本当に遅すぎるし、効率が悪すぎるし、戦略なさすぎるし

もっと早く効率よくするにはどうしたらいいのかちゃんと考えろ。

 

工夫して研究しろ。本気で研究しろ。弓道の先輩もそう言っとった

強制力をうまく使おう

結局辛いこと、えっちらほっちら頑張らんと何も身につかんから

授業の強制力を利用すべし!

①授業の履修登録をする→やらないとGPAが下がる危機感

②授業はリアルが一番捗る→リアルの先生の前でやることで、緊張感。やっぱりネット授業だとなんか身につかんなぁ。予習復習大事!授業内で全て理解するイメージ。

■やること・やらないことリスト■


やること・やらないことリスト


目的:研究
私の目的は研究すること、私はアホだからその一点に特化する。

 

方針:

・研究、数学、英語、コード力 以外は全て排除!徹底排除!削除削除削除おおおおおお!

・真面目にやらない

・無駄に半分真面目だから、超絶ハイパースーパー真骨「効率重視」!!!!どうすれば効率よくできるか、早くできるかを徹底追及。効率忘れない。

 

やること

・研究
NLP100本ノック
・競プロ
bookreading真面目にやる(数学)

・授業時間内に課題を終わらせる

 

やらないこと

・出席する必要のない授業は出ない。お家が一番捗る。月曜日と火曜日は学校に行く

・とにかく授業はいかに短時間で単位を取るかのみに特化する。

学習スピードの最適解

f:id:hootate:20201106085500j:plain

学習環境の最適解は見つけたけど、学習速度の最適解を見つけねばと思う

 

本当遅い。

 

学習環境、

 

候補、

1横着しないで丁寧にやる

2サイトを乱読

3本を乱読

4それでも分からなかったら人に聞く

 

とにかくスピード重視!!!!!!

 

学習環境の最適解

f:id:hootate:20201117183915j:plain

 

自分なりの学習環境の最適解は

 

オンライン自習室 + 快適な自室が最強

なぜなら自室だと、
・【大事!】好きな時間に仮眠ができる
・勉強する前に疲れない
・朝の時間を全部勉強に投入できる
・リラックスできる
・好きに飲み物や食べ物を食べられる