「詭弁」と「論理学」①|ロジカルシンキングを学ぶ #1

f:id:lib-arts:20200301203354g:plain

今日世の中の至る所で様々な議論が繰り広げられていますが、首を傾げるような主張を聞いたり見かけたり、またそれを納得する人がいたりと様々なケースがある印象です。
その中でロジカルシンキングというのは普段は意識しないですが、実は非常に重要なのではないかということで、新シリーズとしてロジカルシンキングについて取り扱っていければと思います。
演繹的な論理学から入ると導入としては抽象的で難しいものになりそうなため、#1では「詭弁」と「論理学」ということで、ロジカルシンキングがうまくいっていない例を見つつ、それを論理学的に回避するにはという視点で見ていければと思います。
以下目次になります。
1. 「詭弁」とは何か、「詭弁」と「誤謬」の違い
2. 「詭弁」の具体例①
3. 論理学に基づいた「詭弁」の整理①
4. まとめ


1. 「詭弁」とは何か、「詭弁」と「誤謬」の違い
1節では「詭弁」とは何かについて取り扱います。

f:id:lib-arts:20200301203750p:plain

f:id:lib-arts:20200301203803p:plain

詭弁 - Wikipedia

上記がWikipediaの記述の冒頭ですが、詭弁(sophism)は、「命題の証明の際に説得を目的として、実際には誤っている論理展開が用いられる推論で、誤っていることを正しいと思わせるように仕向けた議論である」とされています。ここでポイントとしては、(1)説得を目的としている、(2)実際には間違った内容を正しいと思わせる、の2点を意識しておくと良いと思います。また、「誤謬」との違いとしては、「詭弁」も「誤謬」もどちらとも間違っているという意味で(2)にはあてはまりますが、「誤謬」は意図的でないため、(1)にはあてはまらないということです。

f:id:lib-arts:20200301204330p:plain

英語でsophismとされているのは、古代ギリシアソフィストを語源としており、修辞学や哲学、公教育としても実施されているなど肯定的な意味を持つこともあり、日本語の「詭弁」と必ずしも一致するものではないとされています。また、sophisticated(洗練された)もソフィストが語源のため、この辺は英語のニュアンスと日本語のニュアンスの違いについては注意が必要のようです。今回は「詭弁」について取り扱うので、肯定的なニュアンスについては考慮しないものとします。

f:id:lib-arts:20200301204809p:plain

「詭弁」の解説としては、論理展開が(1)明らかに間違っている場合、(2)一見正しいように見える場合、の2つあり、(2)の正しいように見える場合は論理的には違反しているものの、間違った結論でも説得力が増してしまうとされています。このため、上記については、説得や交渉、プロパガンダ、マインドコントロールのテクニックとして用いられれることがあるとされています。

概要については概ね抑えられたので、1節はここまでとし、2節では具体的な例をご紹介していきます。


2. 「詭弁」の具体例①
2節では「詭弁」の具体例についてご紹介していきます。Wikipediaには29の具体例が挙げられているので、今回は最初の9項目について取り扱います。

f:id:lib-arts:20200301205456p:plain

1つ目としては、前件否定の虚偽(denying the antecedent)が紹介されています。数学における論理として考えた際には、命題の「裏」を論証なく用いることを意味しています。命題が真であることは命題の「対偶」が真であることと同義ですが、「逆」と「裏」は命題の真偽とは必ずしも一致しないことに注意が必要です。

f:id:lib-arts:20200301210125p:plain

2つ目としては、後件肯定の虚偽(affirming the consequent)が紹介されています。1つ目の前件否定の虚偽では命題の「裏」について着目していましたが、後件肯定の虚偽では命題の「逆」について着目しています。

f:id:lib-arts:20200301210612p:plain

3つ目としては、媒概念不周延の虚偽(fallacy of the undistributed middle)について紹介されています。これはZがXの部分集合でないと成り立たない論理です。

f:id:lib-arts:20200301211125p:plain

4つ目としては、早まった一般化(hasty generalization)が紹介されています。少ない例から普遍的結論を導こうとする論述で、帰納的に導いた結論を普遍的な結論として用いるのは間違っているとされています。生存バイアスがかかった議論などが同様な結論に行き着きやすいので、注意が必要だと思われます。

f:id:lib-arts:20200301211530p:plain

5つ目としては、合成の誤謬(fallacy of composition)が紹介されています。「全体に対しての部分」にのみ着目して誤った結論に至るという点が特徴とされています。

f:id:lib-arts:20200301211832p:plain

6つ目としては、分割の誤謬(fallacy of division)が紹介されています。5つ目の合成の誤謬の反対のパターンであると考えておけば良さそうです。

f:id:lib-arts:20200301212209p:plain

7つ目としては、媒概念曖昧の虚偽 (fallacy of the ambiguous middle)が紹介されています。「S->M->PだからS->Pである」と論じているが、Mの使い方に一貫性がないため、論理的に破綻しているとされています。この辺は言葉の定義の明確化に気をつけた方が良さそうです。

f:id:lib-arts:20200301212530p:plain

8つ目としては、連続性の虚偽 (Continuum fallacy)が紹介されています。「砂山」や「高額」などの言葉の定義が量に関して曖昧であることが指摘されています。例えば3kg以上を「砂山」と定義することで、この議論は回避することができます。

f:id:lib-arts:20200301212909p:plain

9つ目としては、未知論証 (ad ignorantiam)が紹介されています。命題の「否定」が成立しないことを理由に命題が成立するとする論法になっています。

 

3. 論理学に基づいた「詭弁」の整理①
2節では9つの「詭弁」についてご紹介しました。これらを回避するにはどうしたら良いのでしょうか。今回だけで9つもあり、全部で29個も把握するとなると大変です。そこで、2節で取り扱った9つについて分類してみようと思います。

・命題(仮定と結論)についての論理や集合論
-> AならばBであるや、AはBであるための必要条件であるなどの論理で表現できる問題です。命題が真の場合、「対偶」も真ですが、「裏」と「逆」は真とは言えません。また、これらについては集合の含む含まれるなどを用いて全て表現できます。複雑な場合はベン図などを用いて図示すると良いです。これらの考え方を用いているのが1、2、3、7、9です。

帰納法を証明せずに結論として用いる
-> 帰納法を用いた際にその結論を普遍的な結論として取り扱う際は、必ず証明をする必要があります。数列などと関連して数学的帰納法の話が出ていた際は、必ず証明した上で結論を使っていたことを思い出していただけたらこの辺はしっくりくるのではと思います。この考え方を用いているのが4、5、6です。

・言葉の定義をずらす
-> 言葉の定義を曖昧にしてずらしているのが7、8です。7は言葉の定義を曖昧にした上で命題にあてはめているので、ここでもあてはまっています。

このように、2節で紹介しただけだと多くありそうに見えた「詭弁」の例ですが、このようにいくつかの視点に着目することでグルーピングを行うことができます。


4. まとめ
#1では「詭弁」の概要についてと、「詭弁」の例、また論理学の知見を背景にそのグルーピングを行いました。
#2では引き続き「詭弁」の例を見つつ、裏側の論理学について考察を進めていければと思います。

Deep Q-Networkを通して学ぶ、強化学習超入門|電子テキスト紹介 #3

f:id:lib-arts:20200301184424p:plain

当ブログの内容を元に電子テキストやその印刷版を、技術書典やnoteやboothなどのプラットフォームで販売を行なっているのですが、あまり内容について紹介してこなかったのでちょっとした宣伝も兼ねてご紹介していくシリーズです。
#1では「高校数学の演習から理解する、機械学習アルゴリズム」について、#2では「Python実装を通して学ぶ、統計モデリング入門」についてご紹介しました。

高校数学の演習から理解する、機械学習アルゴリズム|電子テキスト紹介 #1 - Liberal Art’s diary

https://lib-arts.hatenablog.com/entry/e-book2
#3では、機械学習について学ぶにあたってボトルネックになりやすい強化学習についてなるべくわかりやすく取り扱った、「Deep Q-Network を通して学ぶ、強化学習超入門」についてご紹介します。

以下目次になります。
1. 作成にあたってのコンセプト
2. 簡単な内容の紹介
3. 今後のアップデート予定について
4. まとめ


1. 作成にあたってのコンセプト
こちらのテキストを作成するに至った背景やテキストのコンセプトですが、機械学習の大枠については一通り掴んだものの、強化学習についてゼロベースで気軽に勉強したいとなった時に推奨できる本がなかったというのがあります。

O'Reilly Japan - scikit-learnとTensorFlowによる実践機械学習

上記の「scikit-learnとTensorFlowによる実践機械学習」の16章の記載は比較的良かった印象ですが、その他となると日本語では記述がいい加減か難しすぎるかの両極端であまり良いのがありません。

https://www.andrew.cmu.edu/course/10-703/textbook/BartoSutton.pdf

英語で探すなら上記のSutton本の第2版が非常にわかりやすく、おすすめなのですが、初版は和訳されているものの第2版は英語しかないため、最初に読むには少々大変かと思います。
そこである程度機械学習の基本的な内容について把握した方を対象にした、強化学習の入門書を用意できればということで、こちらのテキストの作成に至りました。どちらかというと大体理解できたというレベルを目指すため、細部の記述についてはSutton本の第2版をご確認いただけたらと考えています。むしろ、英語で書かれたSutton本の敷居を下げるために、日本語で簡単な導入を記したという認識でいます。
また、トピックの中心としては、2013年にDeepMindが発表したDeep Q-Networkを中心に、理論の大枠の流れやmodel-free強化学習の分類、PyTorchを用いたDeep Q-Networkの実装、また2019年のR2D2やR2D3までのトレンドをまとめた内容になっています。
そのため、基本的な原理を抑えつつ、最近の研究の流れについても追える、そういった内容にできているかと思います。


2. 簡単な内容の紹介
2節では簡単に内容についてご紹介します。

f:id:lib-arts:20200301185953p:plain

まず第1章では強化学習の問題設定を理解するにあたって、逐次的意思決定問題(Sequential Decision Making Problem)についてご紹介しています。この問題は系列モデリング(時系列の問題)の延長として考えることができるので、1-2節では株価のようなオーソドックスな時系列分析、音声認識、言語処理などに関連して系列モデリングの概要や立式について記述を行なっています。また1-3節では意思決定問題をどのようについて考えるかについて記述し、第2章の内容につなげています。

f:id:lib-arts:20200301190714p:plain

f:id:lib-arts:20200301190731p:plain

次に第2章では、Deep Q-Networkの原理を説明するにあたって、まずベースとなっているQ-learningについて解説を行なっています。

f:id:lib-arts:20200301191118p:plain

Q-learningはmodel-freeの強化学習の一つで、model-freeの強化学習は大まかには上記のように整理できます。Deep Q-Networkは図の右下のQ-learningがベースとなっています。Q-learningについて把握した後は、Deep Q-Networkで問題として取り扱うAtariの説明やネットワークの構造について紹介したのちに、2-3節でDeep Q-Networkの工夫であるexperience replayとTarget Networkについて紹介しています。

f:id:lib-arts:20200301191518p:plain

続いて第3章では、PyTorch実装を元にDeep Q-Networkの実装について解説を行なっています。3-1節と3-2節で簡単にPyTorchの基本について解説したのちに、3-3節では実装を読み解くにあたっての戦略について紹介を行なっています。それを受けて3-4節でPyTorchチュートリアルのサンプルコードの読解と、関連の事項の解説を行なっています。

f:id:lib-arts:20200301191826p:plain

第4章では、深層強化学習の研究トレンドを簡単に把握できるように、DeepMindの研究について色々とまとめました。4-1節でDeep Q-Network[2013/2015]、4-2節でRainbow[2017]、4-3節でApe-X[2018]、4-4節でR2D2[2019]、4-5節でR2D3についてそれぞれ概要のご紹介や全体を通しての位置付けの解説を行なっています。


3. 今後のアップデート予定について
現状のところ、テキストはDeep Q-Network関連のアルゴリズムを中心にmodel-freeのアルゴリズムをご紹介しています。一方でAlphaZero[2017]やMuZero[2019]のようにmodel-base関連のアプローチも理解しておく方が理解の幅が広がります。

モンテカルロ木探索(MCTS; Monte Carlo Tree Search)の概要 - Liberal Art’s diary

AlphaZero[2017]やMuZero[2019]に加え、model-baseのアプローチの中心の処理として用いられるモンテカルロ木探索(MCTS; Monte Carlo Tree Search)については上記にまとめているので、こちらについての記載を中級編として別途リリースする予定です。


4. まとめ
#3では、強化学習について初心者向けとして取り扱った、「Deep Q-Network を通して学ぶ、強化学習超入門」についてご紹介しました。
#4では、DeepLearning関連の論文を原文で読む際の手引きとしてまとめた、「DeepLearning 関連論文の読み方手引き (上巻)」についてご紹介します。

Survey論文の確認②(Introduction)|3D Point CloudsとDeepLearning #2

f:id:lib-arts:20200228012528p:plain

点群(Point Clouds)の基本的な内容については以前の記事で取り扱いました。

点群に対しても近年DeepLearningの導入が検討されており概要を掴むにあたって、下記のSurvey論文を元に読み進めています。

[1912.12033] Deep Learning for 3D Point Clouds: A Survey

#1ではAbstractを確認し、全体の大枠を掴みました。
https://lib-arts.hatenablog.com/entry/point_clouds_dl1
#2ではIntroductionについて取り扱っていきます。
以下目次になります。
1. Introduction(Section1)
2. まとめ


1. Introduction(Section1)
1節ではSection1のIntroductionについて確認します。以下パラグラフ単位で確認していきます。

f:id:lib-arts:20200229225050p:plain

第一パラグラフでは、3D情報の取得にあたっての技術の急速な発展によって、3Dセンサー技術がどんどん利用が可能になってきていることについて述べられています。センサーの例としては3Dスキャナーや、KinectApple depth camerasのようなRGB-Dカメラなどが挙げられています。また、2次元の画像と組み合わせることによって、3Dデータはより周りの状況を反映したものになり、自動運転やロボティクス、リモートセンシング、治療、デザイン業界など幅広い応用が紹介されています。

f:id:lib-arts:20200229230440p:plain

第二パラグラフでは、3D dataの形式について色々と紹介されています。まず3D dataの形式として、画像の深度(depth image)、点群(point clouds)、メッシュ(meshes)、volumetric gridsなどが紹介されています。また、画像や音声、言語などの分野におけるDeepLearningの発展と点群データの取り扱いの難しさについて触れた上で、このサーベイではDeepLearningを用いた3Dの点群の処理の分析にフォーカスするとしています。

f:id:lib-arts:20200229231426p:plain

DeepLearningを用いた点群データの処理はここ5年ほどで注目が集まっており、いくつかの公開データセットが利用可能になったとされています。具体的には、ModelNet、ShapeNet、ScanNet、Semantic3D、KITTI Vision Benchmark Suiteなどが紹介されています。また、問題のカテゴリとして、3D shape classification、3D object detection、3D point cloud segmentationなどが紹介されています。上記を受けてこのサーベイでは点群データにおけるDeepLearningの導入についての研究をまとめたとされています。また、分類(taxonomy)としてはFig 1にまとめたとされています。

f:id:lib-arts:20200229232112p:plain

Fig 1では上記のように分類(taxonomy)をまとめています。3D shape classification、3D object detection、3D point cloud segmentationの三つのタスクに関して紹介しており、それぞれSection2〜Section4で取り扱うとされています。

f:id:lib-arts:20200229232338p:plain

第四パラグラフでは、このサーベイの主要なcontributionsについてまとめられています。論点は4つとされており、それぞれ、(1)点群データの主要タスクに対するDeepLearningの手法を包括的にまとめた、(2)他の3Dデータではなく3Dの点群データにフォーカスした、(3)当該分野の研究の最新情報や発展の過程をまとめた、(4)公開されているデータセットを用いた既存の手法の包括的な比較を行った、の4点が挙げられています。

f:id:lib-arts:20200229232938p:plain

f:id:lib-arts:20200229232924p:plain

第五パラグラフでは、このサーベイの全体構成について言及したのちに、更新情報のリンクについても記しています。全体構成についてはFig 1で書かれているように、Section2で3D shape classification、Section3で3D object detection、Section4で3D point cloud segmentationを取り扱うとしています。
また、下記のGitHubで諸々のアップデートを行っているとされています。

GitHub - QingyongHu/SoTA-Point-Cloud: Deep Learning for 3D Point Clouds


2. まとめ
#2ではサーベイ論文のIntroductionについて確認しました。
#3では引き続き、Section2の3D Shape Classificationについて確認していきます。

サーベイ論文の確認と追加調査⑩(Future Directions & Conclusion)|Graph Neural Networkの研究を俯瞰する #10

f:id:lib-arts:20200209171324p:plain

グラフ理論やCNNをグラフ理論に応用したグラフ畳み込みネットワークについては下記で以前に簡単に取り扱いました。

ベースライン論文におけるGraphのCNN学習アルゴリズム|ベースから理解するGraph Convolutional Networks #2 - Liberal Art’s diary

もう少し俯瞰的に取り扱えればということで簡単に調べてみたのですが、2019年のサーベイ論文を見つけましたのでこちらを読み進めつつ必要に応じて追加調査を行えればと思います。

[1901.00596] A Comprehensive Survey on Graph Neural Networks

#1ではAbstractについて、#2ではIntroductionについて、#3ではBackground & Definition(Section2)について、#4ではCategorization and Frameworks(Section3)について、#5ではRecurrent graph neural networksについて(Section4)、#6ではConvolutional Graph Neural Networks(Section5)について、#7ではGraph AutoEncoders(Section6)について、#8ではSpatial-Temporal Graph Neural Networks(Section7)について、#9ではApplications(Section8)について取り扱いました。

サーベイ論文の確認と追加調査②(Introduction)|Graph Neural Networkの研究を俯瞰する #2 - Liberal Art’s diary

サーベイ論文の確認と追加調査④(Categorization and Frameworks)|Graph Neural Networkの研究を俯瞰する #4 - Liberal Art’s diary

サーベイ論文の確認と追加調査⑦(Graph AutoEncoders)|Graph Neural Networkの研究を俯瞰する #7 - Liberal Art’s diary

サーベイ論文の確認と追加調査⑧(Spatial-Temporal Graph Neural Networks)|Graph Neural Networkの研究を俯瞰する #8 - Liberal Art’s diary

#10ではSection9のFuture DirectionsとSection10のConclusionについて取り扱っていきます。
以下目次になります。
1. Future Directions(Section9)
2. Conclusion(Section10)
3. まとめ


1. Future Directions(Section9)
1節ではSection9のFuture Directionsについて取り扱います。

f:id:lib-arts:20200223140709p:plain

冒頭部の記載ではgraph dataの学習におけるGNNs(Graph Neural Networks)の影響は大きくなってきているものの、グラフの複雑性のため課題がまだまだ多く、それに対してSection9ではGNNsの将来の4つの方向性について記載するとしています。

f:id:lib-arts:20200223141147p:plain

1つ目の方向性はモデルの深さ(Model depth)に関してです。(画像処理などの分野における)DeepLearningの成功はResidual block(ResNet etc)などによる深い構造にあるという研究が多いです。しかしながらConvGNNにおいて層を深くすると精度は大きく下がるとされています。したがって、graph dataの学習にあたって層を深くすることは依然として良い戦略なのかどうかについて検討する必要があるとされています。

f:id:lib-arts:20200223141921p:plain

2つ目の方向性としてスケール性のトレードオフ(Scalability trade-off)に関して紹介されています。GNNsのスケール性はgraphの完全性を代償にすることで得ることができるとされています。サンプリング(Sampling)やクラスタリング(Clustering)を用いることでモデルはgraphの情報を失うとされています。サンプリングではnodeは影響力の大きい近隣のノードを失うかもしれないし、クラスタリングでは特徴的な構造のパターンを奪われるかもしれないとされています。

f:id:lib-arts:20200223142621p:plain

3つ目の方向性としては、グラフの異質性(Heterogenity)について記載されています。既存のGNNsに関する研究はhomogeneous graphsを前提としており、現状のGNNsのアプローチをそのままheterogeneous graphに適用するのは難しいとされています。そのため、heterogeneous graphsを取り扱うための新たな手法を開発する必要があるとされています。

f:id:lib-arts:20200223143147p:plain

4つ目の方向性としては、グラフの動的性質(Dynamicity)について記載されています。graph dataは本来的に動的なものであり、ノードやエッジは出現したり消えたりするし入力は時間ごとに変わったりします。これから新規で出てくるグラフ畳み込みについてはグラフの動的性質の取り扱いについて可能であることが求められます。このグラフの動的性質#8で取り扱った、STGNNs(Spatial-temporal graph neural networks)を用いることで部分的には取り組まれているものの、dynamic spatial relationsの状況においてグラフ畳み込みがどのように機能するかはほとんどの研究で考慮されていないとなっています。


2. Conclusion(Section10)
2節ではSection10のConclusionについて取り扱います。

f:id:lib-arts:20200223152432p:plain

上記では、Graph Neural Networksについての包括的な外観(comprehensive overview)についてまとめたことをこのSurveyの総括としています。具体的には、四つの研究トピックの分類として、RecGNNs(Recurrent Graph Neural Networks)、ConvGNNs(Convolutional Neural Networks)、GAEs(Graph AutoEncoders)、STGNNs(Spatial-Temporal Graph Neural Networks)を挙げたことや、手法、応用、さらに将来研究の四つの方向性についてまとめたことについて言及しています。


3. まとめ
#10ではSection9のFuture DirectionsとSection10のConclusionについて取り扱いました。
#11以降では今回のSurveyで俯瞰した内容について気になった点などをそれぞれ論文などを参照しながら確認していければと思います。

Python実装を通して学ぶ、統計モデリング入門|電子テキスト紹介 #2

f:id:lib-arts:20200229195349p:plain

当ブログの内容を元に電子テキストやその印刷版を、技術書典やnoteやboothなどのプラットフォームで販売を行なっているのですが、あまり内容について紹介してこなかったのでちょっとした宣伝も兼ねてご紹介していくシリーズです。
#1では高校数学の演習と基本的な機械学習アルゴリズムについて取り扱った、「高校数学の演習から理解する、機械学習アルゴリズム」についてご紹介しました。

高校数学の演習から理解する、機械学習アルゴリズム|電子テキスト紹介 #1 - Liberal Art’s diary

#2では、Pythonを用いた「統計モデリング」について取り扱った、「Python実装を通して学ぶ、統計モデリング入門」についてご紹介します。

以下目次になります。
1. 作成にあたってのコンセプト
2. 簡単な内容の紹介
3. 今後のアップデート予定について
4. まとめ

 

1. 作成にあたってのコンセプト
こちらのテキストを作成するに至った背景やコンセプトですが、初心者〜中級者向けの「統計モデリング」の本として有名な「データ解析のための統計モデリング入門」が概要を掴むにあたって非常に良本な反面、細かい記述に違和感を感じたり読み返す際にどこに何が書いてあったか探しずらかったりなどがあったためです。

データ解析のための統計モデリング入門 - 岩波書店

他の人に薦めたり解説などで用いたりするにあたって、どうしてもミスリードを生む点などもありその辺を解消できたらということで、補助としても用いることができるように書いてみました。
「データ解析のための統計モデリング入門」の中で気になった点をまとめておくと下記になります。

・GLMのパラメータ導出に関して
-> MCMC法が書かれているものの、勾配降下法との関連やサンプリングの文脈などが触れられておらず、全体像がつかみにくい形となっていました。

・リンク関数の設定について
-> 書き方が唐突のため、少し理解にあたって戸惑いました。

ベイズ関連の記述について
-> 階層ベイズモデルについて書かれていたものの若干違和感を感じる内容となっていました。また、パラメータの事前分布の導入などについての記述が少々わかりづらい印象でした。

・Rの実装があるものの、ライブラリの使い方が中心である
-> 理論の理解にあたってはライブラリの使い方よりも、計算過程の実装の方が気になるところです。

上記を踏まえて、本書ではこれらについての疑問の解消となるように諸々記述を試みています。


2. 簡単な内容の紹介
2節では簡単に内容についてご紹介します。

f:id:lib-arts:20200229202128p:plain

f:id:lib-arts:20200229202146p:plain

まず第1章ではベースとなる事項として確率分布と最尤法について取り扱っています。この確率分布と最尤法は統計的なモデリングにおいては非常に重要な基本事項なのですが、どちらも意外と抜けがちです。理由としては、確率分布や最尤法は入門書においては難しいトピックである一方で、専門書として書くには初歩的なトピックになっており、しっかりと解説してあるケースが少ないというのが考えられるのではと思います。

f:id:lib-arts:20200229202645p:plain

そこで本書では上記のように確率分布の直感的なイメージから入り、確率分布の数式や最尤法について紹介するようにしています。

f:id:lib-arts:20200229202911p:plain

また、最尤法については具体的な問題の解法を通して、数式展開のイメージをつかんでいただけるようにしています。

f:id:lib-arts:20200229203046p:plain

次に第2章では、一般化線形モデル(GLM; Generalized Linear Model)について解説を行なっています。

f:id:lib-arts:20200229203840p:plain

「データ解析のための統計モデリング入門」では用いる確率分布である指数型分布族(exponential family)についての解説が少ない印象だったので、上記のように指数型分布族の定義に関連して諸々書くようにしました。

f:id:lib-arts:20200229203915p:plain
また、パラメータ導出にあたって、MCMCよりも勾配法を用いる方がDeepLearning系との関連性も見えるのではということで今回は今回は勾配降下法(Gradient Descent)を用いてモデルのパラメータ推定を行ってみました。

f:id:lib-arts:20200229203936p:plain

実装についても上記のように繰り返し演算によってパラメータ推定を行う過程がわかりやすいような実装にしました。

f:id:lib-arts:20200229204059p:plain

f:id:lib-arts:20200229204118p:plain

続いて第3章では、最尤法とベイズ統計モデリングについて記述しています。ベイズの定理をパラメータの推定などに導入し、事前分布などを用いることで正則化(regularization)の方法として知られているリッジ回帰を導出したり、データが少ないケースにおける頑健性を高めるにあたって予測分布の導出などを行っています。こちらについては「データ解析のための統計モデリング入門」には記載がなかったのですが、PRMLの数式をなるべく簡単にして記述するように努めました(3.4だけ導出過程をわかりやすく記述できていないのですが、こちらについては第2版時に改訂できればと考えています)。

f:id:lib-arts:20200229204626p:plain

最後に第4章では、最適化の枠組みでMCMC法について包括的にまとめています。こちらについてはある程度はしっかりとまとめられていると思うのですが、サンプリングについての文脈がまだ反映しきれていないので、こちらについても第2版の際に改訂したいと考えています。

 

3. 今後のアップデート予定について
1節で述べた「データ解析のための統計モデリング入門」の気になった点についての解消としてこちらのテキストは作成しましたが、2節でご紹介した内容だと、MCMCをサンプリングの文脈での記述や、ベイズ線形回帰については軽く触れただけで階層ベイズモデルまでまとめきれていないというのが現状であります。また、予測分布の導出についてもPRMLの記述をもう少し簡単にした記述も加筆したいところです。
こちらについては第2版の改訂の際に追加できればと考えています。

とはいえ現段階の内容だけでも、統計的なモデリングを行うにあたっては回帰分析からさらに一歩進んだ視点で考察することができると思いますので、ここまでご理解いただけたら様々なシーンにおける考察において役に立つのではないかと思います。


4. まとめ
#2では、Pythonを用いた「統計モデリング」について取り扱った、「Python実装を通して学ぶ、統計モデリング入門」についてご紹介しました。
#3では、機械学習について学ぶにあたって最初学ぶ際にネックになりやすい強化学習について解説を行った、「Deep Q-Network を通して学ぶ、強化学習超入門」についてご紹介します。

サーベイ論文の確認と追加調査⑨(Applications)|Graph Neural Networkの研究を俯瞰する #9

f:id:lib-arts:20200209171324p:plain

グラフ理論やCNNをグラフ理論に応用したグラフ畳み込みネットワークについては下記で以前に簡単に取り扱いました。

ベースライン論文におけるGraphのCNN学習アルゴリズム|ベースから理解するGraph Convolutional Networks #2 - Liberal Art’s diary

もう少し俯瞰的に取り扱えればということで簡単に調べてみたのですが、2019年のサーベイ論文を見つけましたのでこちらを読み進めつつ必要に応じて追加調査を行えればと思います。

[1901.00596] A Comprehensive Survey on Graph Neural Networks

#1ではAbstractについて、#2ではIntroductionについて、#3ではBackground & Definition(Section2)について、#4ではCategorization and Frameworks(Section3)について、#5ではRecurrent graph neural networksについて(Section4)、#6ではConvolutional Graph Neural Networks(Section5)について、#7ではGraph AutoEncoders(Section6)について、#8ではSpatial-Temporal Graph Neural Networks(Section7)について取り扱いました。

サーベイ論文の確認と追加調査②(Introduction)|Graph Neural Networkの研究を俯瞰する #2 - Liberal Art’s diary

サーベイ論文の確認と追加調査④(Categorization and Frameworks)|Graph Neural Networkの研究を俯瞰する #4 - Liberal Art’s diary

サーベイ論文の確認と追加調査⑦(Graph AutoEncoders)|Graph Neural Networkの研究を俯瞰する #7 - Liberal Art’s diary

サーベイ論文の確認と追加調査⑧(Spatial-Temporal Graph Neural Networks)|Graph Neural Networkの研究を俯瞰する #8 - Liberal Art’s diary

#9ではSection8のApplicationsについて取り扱っていきます。
以下目次になります。
1. Applications(Section8)
1-1. Data Sets(Section8-A)
1-2. Evaluation & Open-source Implementations(Section8-B)
1-3. Practical Applications(Section8-C)
2. まとめ


1. Applications(Section8)
1節ではSection8のApplicationsについて取り扱います。

f:id:lib-arts:20200221221212p:plain

f:id:lib-arts:20200221221231p:plain

冒頭部の記載では、グラフ構造のデータ(graph-structured data)は偏在する(ubiquitous)ものであるため、GNNsは幅広い応用を持つとされています。また、Section8ではgraph data setsのベンチマーク(Section8-A)や評価手法、オープンソース実装(Section8-B)などを取りまとめたとしています。


1-1. Data Sets(Section8-A)
1-1節ではSection8-AのData Setsについて取り扱います。

f:id:lib-arts:20200221221957p:plain

記載としては、Data setsは、それぞれ引用ネットワーク(citation networks)、生物化学的なグラフ(biochemical graphs)、ソーシャルネットワーク(social networks)、その他(others)の四つのグループに分類したとされています。

f:id:lib-arts:20200221222332p:plain

データセットの詳細な分類は上記のようにTable6で行なったとされています。


1-2. Evaluation & Open-source Implementations(Section8-B)
1-2節ではSection8-BのEvaluation & Open-source Implementationsについて取り扱います。

f:id:lib-arts:20200221222624p:plain

冒頭部の記載では、RecGNNsとConvGNNsのパフォーマンスを測定するための一般的なタスクとして、Node ClassificationとGraph Classificationがあると紹介されています。また、Node Classificationの記載としては、Cora、CiteseerPubmedPPIRedditなどを含むベンチマークのデータセットがあるとされています。評価にあたっては、テストデータにおける複数回検証(multiple runs)における平均正答率(average accuracy)やF1スコアを用いるとしています。

f:id:lib-arts:20200221223602p:plain

Graph Classificationについては、しばしば10-fold CV(cross validation)をモデルの評価に用いるとされています。とはいえ10-fold CVはデータの分割が極端になるため、代替案としてdouble cv methodなども紹介されています。

f:id:lib-arts:20200221224153p:plain

上記ではオープンソースの実装に関していくつか紹介されています。PyTorch GeometricやDeep Graph Library(DGL)などのGraph Neural Networksを実装するためのライブラリがいくつか紹介されています。


1-3. Practical Applications(Section8-C)
1-3節ではSection8-CのPractical Applicationsについて取り扱います。

f:id:lib-arts:20200221224452p:plain

冒頭部の記載では、GNNsの実用的な応用例として、Node Classification、Graph Classifiction、Network Embedding、Graph Generation、Spatial-Temporal Graph forecasting、link predictionなどが挙げられています。

f:id:lib-arts:20200221225256p:plain

(中略)

f:id:lib-arts:20200221225319p:plain

上記ではGNNsのComputer visionへの応用について、シーングラフ生成(Scene Graph Generation)、点群分類(Point Clouds Classification)、行動識別(action recognition)などが紹介されています。また、human-object interaction、few-shot image classification、visual reasoningなどの応用についても範囲が広がっているようです。

f:id:lib-arts:20200221225952p:plain

(中略)

f:id:lib-arts:20200221230006p:plain

上記ではGNNsの言語処理(Natural Language Processing)についての応用について記載されています。一般的な応用としてテキスト分類が挙げられた上で、様々な研究が紹介されています。

以後Traffic、Recommender systems、Chemistry、Othersなどについても紹介されていますが、全体の概要を掴むのが目的のためここでは省略します。


2. まとめ
#9ではSection8のApplicationsについて取り扱いました。
#10では引き続きSection9のFuture DirectionsとSection10のConclusionについて取り扱います。 

「国際法の歴史」と「集団安全保障」|法と国家を考える #4

f:id:lib-arts:20200223172013j:plain

当シリーズでは「法」と「国家」を考えるというテーマで色々と議論をしていきます。#1では連載の経緯に加え、最初に簡単に注意事項についてまとめた上で、「法」や「国家」の言葉の意味の整理を行いました。

引き続き、#2では「法の精神」と「三権分立」について、#3では「自由権」と「公共の福祉」について取り扱いました。

https://lib-arts.hatenablog.com/entry/law_state3
#4では「国際法の歴史」と「集団安全保障」について取り扱います。
以下目次になります。
1. 「国際法」の概要
2. 「国際法の歴史」の概要について
3. 「集団安全保障」について
4. まとめ


1. 「国際法」の概要
1節では「国際法」の概要について簡単に抑えます。

f:id:lib-arts:20200228202622p:plain

国際法 - Wikipedia

上記が「国際法」の概要ですが、国際法(International Law)は「国際社会(the international community)を規律する法であり、条約、慣習国際法、法の一般原則が国際法の存在形式とされる」と記載されています。

f:id:lib-arts:20200228203009p:plain

国際法は条約(成文化されたもの)と慣習法(慣習によって成り立つ不文のもの)と法の一般原則によって成り立っており、主に国家や国際機構の行動が規律されるとなっています。

f:id:lib-arts:20200228203705p:plain

上記は条約の記述ですが、条約は「一定の国家や国際組織などの国際法主体が同意を元に形成する、加盟当事者間において拘束力を有する規範をいう」とされています。二国間条約の他に多数国間の条約があり、多数国の間での条約では条約成立後に各国が自国内の議会や首相によって認可する批准の手続きが取られることが多いとされています。

f:id:lib-arts:20200228204517p:plain

慣習国際法は不文ではあるが条約と同等の効力を有する法源であり、もはや慣習国際法として成立したとされれば国際法として国家を拘束するとされています。

f:id:lib-arts:20200228205359p:plain

具体的な例がある方がわかりやすいのと3節で「集団安全保障」について確認するので、国連憲章51条の「自衛権」について簡単に見ておきます。国連憲章51条で「自衛権(self-defense)」は、個別的自衛権(individual self-defence)や集団的自衛権(collective self-defense)がともに「固有の権利」として規定されています。このように国家間における規範として条約や慣習国際法が積み重なった全体を国際法としていると考えておくと良さそうです。

大体の概要については把握できたので1節はここまでとします。


2. 「国際法の歴史」の概要について
2節では「国際法の歴史」について取り扱います。

f:id:lib-arts:20200228210200p:plain

上記では実定国際法の成立について記載されています。16世紀〜17世紀のヨーロッパにおける宗教戦争三十年戦争のことを主に指しており、キリスト教におけるルターの宗教改革によって生じた「プロテスタント派」と従来ながらの「カトリック派」との対立からこの戦争は起きたらとされています。この三十年戦争講和条約として締結されたのが1648年のウェストファリア条約(ヴェストファーレン条約も読み方が違うが同義である)で、このウェストファリア条約が近代における国際法発展のきっかけとなり、近代国際法のベースになったとされています。ウェストファリア条約以降は、対等な主権を有する諸国家(主権国家)が、勢力均衡の中で国益をめぐり合従連衡を繰り返す国際秩序が形成され、この条約によって規定された国際秩序はヴェストファーレン体制と呼ぶとされています。

f:id:lib-arts:20200228211201p:plain

f:id:lib-arts:20200228211401p:plain
次に上記では、国際法の対象を主権国家だけではなく、個人も国際法上の権利、義務の主体として位置づけられるようになったことについて記載されています。

少々記載がざっくりしていたので詳細については、スペイン継承戦争(〜1713)の講和条約としてのユトレヒト条約ナポレオン戦争(〜1815)の終結にあたってのウィーン会議第一次世界大戦後(〜1918)のヴェルサイユ条約などに関しても考察しながら抑えておくのが良さそうです。

大体の概要についてつかめたので2節はここまでとします。


3. 「集団安全保障」について
3節では「集団安全保障」について取り扱います。

f:id:lib-arts:20200228213324p:plain

集団安全保障 - Wikipedia

まず上記では、集団安全保障は「潜在的な敵国も含めた国際的な集団を構築し、不当に平和を破壊した国に対してはその他の国々が集団で制裁するという国際安全保障体制の一種である」とされています。

以下、「国際法」と話を絡めるにあたって「集団的自衛権」について見ていきます。

f:id:lib-arts:20200228213031p:plain

集団的自衛権 - Wikipedia

上記がWikipediaの「集団的自衛権」の記述の冒頭ですが、集団的自衛権は「ある国家が武力攻撃を受けた場合に直接に攻撃を受けていない第三国が協力して共同で防衛を行う国際法上の権利である」とされています。

f:id:lib-arts:20200228214042p:plain

次に「集団的自衛権」の権利の性質について見ていきます。国家の自衛権は長らく議論されてきた国際慣習法である一方で、集団的自衛権国連憲章に現れるまで、国際慣習法上の権利として論じられたことがないものであったとされています。

f:id:lib-arts:20200228214258p:plain

集団的自衛権の取り扱いとして有名なのが、1986年のニカラグア事件であり、この判決において、集団的自衛権の行使のためには個別自衛権を行使するにあたって必要となる必要性と均衡性に加え、武力攻撃を受けた国が「攻撃を受けた旨の表明」と「援助要請」を行うことが必要になるとされています。

日本ではこの「集団的自衛権」の話と日本国憲法9条の「平和主義」に関して、これまで多くの議論がなされてきています。また、自衛隊についての議論についても多いです。詳細の論評についてはここでは避けますが、各論や感情論が多過ぎる印象で、「平和主義」とは何かについてもっと議論するべきなのではないかと思います。法律とは歴史から学んだ知見であり、国際法は国内法に比べて拘束力が弱いと言われることもありますが、法であり歴史を反映したものとなっています。議論にあたって二元論が多過ぎてどれも極端です。「平和」とは何かについてもっと国家全体で議論していく必要があるのではないでしょうか。

「国際平和」とは何かについて学ぶにあたっては、世界史とそれに付随して発展してきた「国際法」に目を向けながら客観的に議論すると良いのではと思います。現状のメディアについては色々とミスリードが多い印象なので、「国際法」に関する教養を一般教養として皆が身につけられると良いのではと思いました。難しい内容まで理解しなくとも、基本を抑えるだけでもっと冷静で客観的な議論ができるのではないかと思います。


4. まとめ
#4では「国際法の歴史」と「集団安全保障」について取り扱いました。
#5では古代中国における「法家」と「秦」について以前の記事も踏まえて考えてみたいと思います。