YutaroOgawa / causal_book

書籍「作りながら学ぶ! PyTorchによる因果推論・因果探索」の実装コードのリポジトリです
MIT License
113 stars 32 forks source link

p133のLinGAMの導出部分について質問させてください。 #28

Closed KENJI-JIN closed 3 years ago

KENJI-JIN commented 3 years ago

第3版の P 133の3行目で

すなわち対角成分が非ゼロです。よって A-1 icaの対角成分の絶対値はできるだけ大きくしたい です

と書かれていますが、非ゼロだから対角成分の絶対値を大きくしたい という部分の繋がりがよく分かりませんでした。

私の感覚的には A-1 icaの対角成分を1に近づけるためにはA-1 icaの対角成分の絶対値はできるだけ大きくする必要がある ということかと思ったのですが、そういう理解で大丈夫でしょうか?

お手数をおかけしますが解説いただけると助かります。

YutaroOgawa commented 3 years ago

@KENJI-JIN さま

本書丁寧に誠にありがとうございます。

感覚的なご理解で合っています。

正確に補足しますと、

[1] A^-1_icaの絶対値行列の逆数をとった行列の対角成分の和を最小にしたい [2] A^-1_icaの対角成分の絶対値はできるだけ大きくしたい [3] その後、A^-1_icaの行の順番と大きさを調整し、対角成分が1になるようにする [4] こうして求めたA^-1を利用し、B=I-A^-1を求める

という操作がp.133からp.134にかけて続きます。

きちんと数学的な理解をするには、やはり、本書でも紹介しているLinGAMの原著や元論文を読む必要があります。

ただ本書のレベルの範囲で理解していただくには、

[3] で行の順番を入れ替えてから、対角成分で割り算をしています。 対角成分で割り算をするので、この対角成分が0や、小さな値ですと、計算が不安定になってしまいます。

そのため、A^-1_icaの対角成分は大きな値になるように、p.134で順番を調整します。

となります。

どうぞよろしくお願いいたします。

KENJI-JIN commented 3 years ago

ご丁寧な説明ありがとうございます。理解できました。