機械学習2022.03.20前回に引き続き、今回もグラフ機械学習についてです。今回から、グラフデータに対する機械学習(グラフ機械学習)について取り上げます。グラフ機械学習はややマニアックですが、SNS分析などに威力を発揮するツールです。この連載では、グラフ機械学習の理論の基礎とPythonを使った実装について紹介...engineeeer.com2022.03.13教科書はこちらです。algorithms本書を読み終える頃には、グラフ理論の基本的な概念と、機械学習アプリケーションを成功させるためのアルゴリズムとテクニックをすべて習得していることでしょう。Amazon今回は特に、グラフにおける表現学習について紹介します。一般に表現学習とは、(機械学習を用いた)予測器を構築する際に有用な情報を抽出しやすくするためのデータの表現を学習することです。表現学習で使われる損失関数グラフの表現学習グラフ機械学習では、グラフという(画像や音声データと比較して)複雑な構造に対して検知や潜在パターンの解釈を行います。その前段の処理として、グラフを数値化(ベクトル化)したいわけですが、下図のようにどのインスタンス(ノード、エッジ、グラフ自体)を対象としたいかによって、ベクトル化には様々なパターンが存在します。learning(表現学習)や(network)embedding((ネットワーク)埋め込み)[2]この手続によって得られた特徴ベクトルをembeddingと呼んだりもします。この手続きを図にすると、以下のようになります。https://static.packt-cdn.com/downloads/9781800204492_ColorImages.pdfより引用グラフがベクトル化されているのが分かりますね。embeddingのためのアルゴリズムは4つのカテゴリに大別できます。[3]書籍では以下のようにカテゴリが大別されてますが、この章は説明が非常に少なく、今の段階ではよく分からなくて普通です。入力インスタンスに対して、行列分解やWord2vec的なことをやる手法。学習したデータのembedding(ベクトル表現)のみをそのまま返す。[4]この手法のみ、学習した関数を使って未知のインスタンスに対する埋め込みベクトルを生成することができない。入力インスタンスをベクトル表現に変換するのではなく、より一般的な写像関数を学習する手法。グラフの内部構造だけでなく、そのノードに付与される属性情報も考慮した埋め込み空間を構築できる手法。[5]例えば、構造が似ていてノードの性質が異なるグラフを識別することができる埋め込み空間を持つことができる。上記3つと異なり、グラフ正則化に基づく手法は入力としてグラフを持たなず、その代わりに正則化するために特徴の相互作用を利用し、特徴の集合から表現を学習する手法。[6]よく分からない説明になってしまっていますが、詳細は4章で説明されます。4章の説明を読んでもあまりよく分かりませんでしたが...。Graph2vec)をPythonコードと共に紹介しています。GitHub.github.com表現学習で使われる損失関数(以下はややこしめの話なので、とりあえず無視して大丈夫です。)グラフ表現学習では、以下のような2項の損失関数が一般的に使われます。入力グラフ$G$とエンコーダ・デコーダで得られた$\hat{G}$のエラーを表す単純なクラス予測のエラーだけではなくて、入力グラフとそれを圧縮して復元した結果のグラフのエラーも考慮されていて、グラフの表現学習に使えそうな雰囲気が漂ってますね。今回の説明は以上になります。詳しい説明はこちらの本をご参照ください。algorithms本書を読み終える頃には、グラフ理論の基本的な概念と、機械学習アプリケーションを成功させるためのアルゴリズムとテクニックをすべて習得していることでしょう。↩2この手続によって得られた特徴ベクトルをembeddingと呼んだりもします。↩3書籍では以下のようにカテゴリが大別されてますが、この章は説明が非常に少なく、今の段階ではよく分からなくて普通です。↩4この手法のみ、学習した関数を使って未知のインスタンスに対する埋め込みベクトルを生成することができない。↩5例えば、構造が似ていてノードの性質が異なるグラフを識別することができる埋め込み空間を持つことができる。↩6よく分からない説明になってしまっていますが、詳細は4章で説明されます。4章の説明を読んでもあまりよく分かりませんでしたが...。今回から、グラフデータに対する機械学習(グラフ機械学習)について取り上げます。グラフ機械学習はややマニアックですが、SNS分析などに威力を発揮するツールです。ICLR2018word2vecやGloVeなどの単語分散表現の精度を向上させる後処理を提案。バッチサイズとかエポックとかイテレーションとかニューラルネットワークの解説記事なんかで目にするバッチサイズとかエポックという単語で混乱したので調べました。これについて、こちらの記事*1の以下の説明で疑問が晴れました。ための深層学習』を一通り読みました。難しくて理解できない箇所もありましたが、自然言語処理×ディープラーニングの話が網羅的に学べてよかったです。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。研究所で働くエンジニアのブログ.。