Networkベースのグラフembedding手法の紹介TweetPocketこんにちは、次世代システム研究室のA.Zです。はじめにグラフの構造や理論は多く分野に応用されています。SNSは人と人のつながりは巨大なグラフで表現することできます。通信ネットワークの構造やルート自体は根本的にグラフになっています。modelに変換し、量子コンピュータに実行させます。networkにも不可欠になっています。最近、グラフを応用した機械学習の技術や研究は増加しています。networkや機械学習を応用するグラフの研究の論文は100件以上超えています。networkにグラフデータの応用は注目され始めていると思います。networkにおけるグラフデータの応用について紹介したいと思います。networkに、グラフデータを利用するには一番一般的な手法はグラフデータをvectorに変換することです。Embeddingと呼ばれます。embeddingは基本的に2つやり方があります。embeddingをPre-Processingの処理のステップで行います。こちらのアプローチは本題の学習モデルから、embeddingの処理は完全に切り離します。embeddingの処理は基本的に前処理(Pre-Processing)の段階で行い、その結果は本題の学習モデルにフィーチャーとして入れます。こちらアプローチのメリットはグラフembeddingのアルゴリズムは本題の学習モデル完全に独立のため、利用するアルゴリズムは自由に選択できます。デメリットはembedding処理と本題学習モデルは連携できず、同時にembeddingと本題の学習モデルの最適化ができません。それぞれの最適化が必要のため、効率が悪いです。Network構造の中に行います。こちらのアプローチは本題の学習モデルの中に、embedding処理を組み込みされます。このアプローチのメリットは本題の学習モデルが最適化されてたら、自動的にembeddingの部分も最適化されるので、効率が良いです。embeddingと他のfeatureが同時に学習するため、グラフの構造情報だけではなく追加情報も利用されるので、全体のモデル精度的に(1)より良いです。networkモデルに依存するため、embedding手法は限られています。グラフのコンポネントから、どれかをembeddingするかによって、大きく2つの種類があります。embeddingこちらはある問題やタスクドメインを一つのグラフの表現し、グラフの中にあるnodeの関連性考慮しをvectorに変換することです。embeddingこちらは全体的なグラフをvectorに変換することです。こちらのアプローチはグラフレベルの予測やグラフ全体をfeature化したいときに使います。生物の分野であるタンパク質(protein)の様々性質の構造は一つグラフとして表現し、embeddingするときに、そのグラフをembeddingします。embeddingは一番良く使われています。embeddingの中に、いくつかのアルゴリズムがあります。walk応用したembedding手法(node2vec)が紹介されました。Embedding(SDNE)のembeddingを紹介したいと思います。networkに、そのまま組み込みできます。embedding手法です。proximity)を保つすることができます。ノードとノード間に繋がっていれば、基本的にその二つのノードが似ています。二つのノードの間に、似たような近所情報持っていれば、その二つのノードが似ています。その二つの条件を満たすために、SDNEは以下のようにネットワーク構造で、構成されています。紫の部分はdecoderになっています。vectorを生成し、その結果をdecoderにinputし、元のinputデータを再現できるようにという処理です。学習自体はedge単位で行い、そのedgeに構成される各ノードが同時にautoencoderに入れます。matrix)になっています。各の同時学習行うことで、ネットワークの重みパラメータは共有可能になり、各ノードの近所情報は学習できます。proximity)を維持することができます。Loss2)は以下に定義されています。errorになっています。bの値は基本的に近所の情報の差の部分だけをもっとpenaltyの重みを大きくするように調整します。こちらのloss関数を利用すれば、ノードの近所の情報は維持することができます。上記の式の中にsはedgeの重みになっています。iとjのembedding結果です。学習処理で、Loss1とLoss2を組み合わせて、最適化すればノード間の情報とノードの近所情報と維持できるグラフembeddingが実現できます。コンセプト自体はそんなに難しくないが精度が良い為、応用しやすいではないかと思う理由に、こちらの手法を選びました。実験データセットについて今回の実験で利用しているデータセットはIMDB-BINARYのデータセットになっています。データセット自体は以下のURLからダウンロードできます。https://ls11-www.cs.tu-dortmund.de/staff/morris/graphkerneldatasetsIMDB-BINARYはIMDBの映画のデータから、同じ映画で出てきた俳優のグラフを表しています。各ノードは俳優を表し、同じ映画で、出たら、その俳優のノードがつながっています。こちらのデータは二つのカテゴリ、アクションとロマンスから作成されたものです。データの詳細内容(nodeの数、edgeの数など)は上記のURLで確認できます。tensorflowの利用し、実装しました。今回の実験の実装コードは以下のrepositoryをベースし、実装行います。グラフのedge重みのlossのパラメータ。今回は重みグラフを使っていないので、結果が影響がない。alpha])結果こちらの実験の目的はSDNEのembeddingの結果を直感的に調査すること。基本的に、同じカテゴリのグラフはvectorに変換するときに、近く集まっていまる。embeddingした結果、2次元のT-SNEでplotしてみました。上記の結果からみると、T-SNEの次元不足の影響で、きれいに別れていないところありますが、赤い点と青い点はなんとなく分類はできているかと思います。実際に100次元の空間になると、分類精度はもっと良いではないかとおもいます。以下のようになっています。上記から、epochをもっと増やすと、まだlossが下がりそうだと思います。精度がまだ改善できると思います。tuningすれば、精度はもっと改善できるではないかと思います。networkにグラフembedding様々なアプローチや種類を紹介いたしました。グラフembeddingの手法中に、SDNEという手法について紹介いたしました。実験した結果から、精度は期待できると思います。アルゴリズム自体はシンプルで、応用しやすいと思います。networkモデルに組み込み、end-to-endモデルも試してみたいと思います。networkにグラフデータを応用する研究のテーマは荒削という印象がありましたが、昨年より、このテーマかなり注目され、これからは展開し、もっと流行するではないかと思います。最後に次世代システム研究室では、ビッグデータ解析プラットホームの設計・開発を行うアーキテクトとデータサイエンティストを募集しています。ご応募をお願いします。