タグ

*programとgraphに関するsh19910711のブックマーク (48)

  • グラフ向け深層学習ライブラリDeep Graph Library (DGL)の初歩の初歩 - Qiita

    グラフ向けの深層学習ライブラリDeep Graph Library(DGL)の基的な使い方について紹介します。公式ドキュメントに事例やAPIの説明が詳細に載っていたりチュートリアルも豊富にありますが、DGLの一番基的な動作(だと個人的に思っている)ノードの特徴量のmessageとreduceという2つの処理について、丁寧に説明している記事がなかったので説明してみます。 Deep Graph Library (DGL)とは? New York UniversityとAWSが開発しているPytorch-basedの(?)グラフと対象としたDeep Learningのライブラリです。 画像や言語など従来よく研究されているデータ構造ではTensorFlow, Pytorch, Chainerなど有名なライブラリがあり、CNNやRNNなどが1つの関数(公式ではbuilding-blocksと言っ

    グラフ向け深層学習ライブラリDeep Graph Library (DGL)の初歩の初歩 - Qiita
    sh19910711
    sh19910711 2024/06/20
    "DGL: New York UniversityとAWSが開発しているPytorch-basedの(?)グラフと対象としたDeep Learningのライブラリ / ちなみにDGLのリポジトリに結構最新のモデルも実装されているので使えそう" 2019
  • GraphRAGの簡易検証 ~Azure Document Intelligence, Neo4jを用いて~ - Qiita

    GraphRAGの簡易検証 ~Azure Document Intelligence, Neo4jを用いて~rag事前学習生成AILLMDocumentIntelligence はじめに 記事の背景 Retrieval-Augmented Generation(RAG)は、クエリに基づいた情報検索を行い、その結果を基に回答を生成する技術です。これは大規模言語モデル(LLM)の活用法の一つであり、新しい知識や企業文書などに対しても効果的に利用できます。しかし、RAGにはいくつかの課題があり、特に情報の関連付けや意味的理解の不足が精度の低下につながることがあります。 通常のRAGは、主にベクトル類似性を利用して情報を検索します。これは、情報断片の表面的な類似性を評価するものであり、深く複雑な関連性を捉えることが難しいです。また、ベクトル化された情報は独立したエンティティとして扱われるため、文

    GraphRAGの簡易検証 ~Azure Document Intelligence, Neo4jを用いて~ - Qiita
    sh19910711
    sh19910711 2024/06/19
    "通常のRAGは、主にベクトル類似性を利用して情報を検索 / 表面的な類似性を評価するものであり、深く複雑な関連性を捉えることが難しい / GraphRAG: 情報の関連付けや意味的理解の課題を克服"
  • Loomを用いたグラフ・ネットワーク分析 - Qiita

    はじめに LoomはClojureのグラフ・ネットワークライブラリです。Loomは純Clojureで実装されており、基的なネットワーク分析に必要な機能がそろっています。Clojureには統計解析等に関する優秀なツールがあり、データ分析には事欠きませんが、これでネットワーク分析も行うことができるようになります。 稿では、Loomの基的な使い方の説明と、実世界のネットワークを対象とした簡単な分析を行っていきます。 基的な使い方 インストール 以下をLeiningenやBootの依存設定に追加します。

    Loomを用いたグラフ・ネットワーク分析 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "Loomは純Clojureで実装されており、基本的なネットワーク分析に必要な機能がそろっています / 一方で、Loomにはページランクなどの中心性の計算のような高度なアルゴリズムが実装されていません" 2016
  • R Shinyでネットワークグラフを可視化する方法 - Qiita

    R Shinyアプリ上でigraphで作成したネットワーク(グラフ)を可視化する方法を自分へのメモもかねて説明します。 誤りや改善点がありましたぜひ教えてください! 【背景】 ネットワーク(つまりノードとエッジでできた下記のようなグラフ)を可視化して、インタラクティブに操作できる簡易なアプリをR Shinyで作りたい。 というのも、すでに行ったRのMarkdownベースで行ったK-popのコラボネットワークの分析レポート(https://dacss.github.io/Social_Networks_Spring_2023/posts/Final_Project_Kpop_network_Erika_Nagai.html#network-overview)をより、見やすくしたかった。 Markdown上でのネットワークのプロットは動的ではないため、ズームができず、大きなネットワークになると

    R Shinyでネットワークグラフを可視化する方法 - Qiita
    sh19910711
    sh19910711 2024/06/15
    "Shinyアプリ上でigraphで作成したネットワーク(グラフ)を可視化する / visNetworkライブラリのvisNetworkOutputという関数を使う / データフレームにtitleカラムを追加 + カーソルをあてると、そのノードの名前が表示される" 2023
  • Knowledge-Graph, Ontologyについて調べてみました。 - CCCMKホールディングス TECH LABの Tech Blog

    こんにちは、CCCMKホールディングスTECH LAB三浦です。 最近Retrieval-Augmented Generation(RAG)に関する情報を見ていると、ドキュメントデータの格納場所としてVectorDBではなくKnowledge-Graphを使う手法を目にすることが多くなりました。Knowledge-Graphを用いることで、VectorDBによるRAGでは回答が難しい質問にも答えることが出来る場合があります。 今回はRAGにおけるKnowledge-Graphの活用方法から、そもそもKnowledge-Graphとはどのような概念なのか、そしてドキュメントからKnowledge-Graphをどうやって構築するのかについて色々な情報を元に調べてみたのでまとめてみたいと思います。 GraphRAG 最初に、Knowledge-GraphやRAGへの活用について興味を持ったきっか

    Knowledge-Graph, Ontologyについて調べてみました。 - CCCMKホールディングス TECH LABの Tech Blog
    sh19910711
    sh19910711 2024/06/13
    "Ontology: ある領域における概念やその概念の関係性を表現したもの + Knowledge-GraphはOntologyを具体化 / GraphRAGのブログの最後の方に"Creating LLM-generated knowledge graphs"というセクション / Knowledge-Graphの構築にLLMを使用している"
  • ベクトル検索の苦手を克服。ナレッジグラフでRAGを作る

    TL;DR ベクトル検索だと、複数のステップを踏まないと答えられない質問の検索がむずい 「TomにEmil Eifrém(Neo4jCEO)を紹介してくれる人は?」とかを検索むずい ナレッジグラフは構造化データと非構造化データをうまく扱えてベクトル検索の苦手を補える 課題はあるけどナレッジグラフは、Neo4jとLangchainで構築できるよ。 はじめに 今回はベクトル検索の苦手分野をどうしても補ってあげたいとおもっている筆者やまぐちが、ベクトル検索の苦手を補ってあげられるナレッジグラフに関してまとめていこうと思います。 少々長い記事ですが、ベクトル検索を労ってあげたいと思っている方はぜひ読んでください。 ベクトル検索の限界 以前の記事の最後にも少しだけ記載しましたが、ベクトル検索は以下の問題点があります。 必要な情報がTop Kのドキュメントには含まれていない可能性がある。 チャンクの

    ベクトル検索の苦手を克服。ナレッジグラフでRAGを作る
    sh19910711
    sh19910711 2024/06/12
    "ベクトル検索: 必要な情報がTop Kのドキュメントには含まれていない可能性 + 上記を解決するためのドキュメント数がわからない / Neo4j: ナレッジグラフで構造化データと非構造化データを扱うことができる"
  • PyG (PyTorch Geometric) で Graph Pooling Neural Network - Qiita

    グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、Graph Pooling Neural Network を使うことがテーマです。題材として、化学情報学のメインテーマの1つである、分子構造から物性を予測する問題を解いてみます。 PyG (PyTorch Geometric) インストール PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。また、コードはチュートリアルドキュメント https://pytorch-geometric.readthedocs.io/en/latest/index.html を参考にしています。 import os import torch torch

    PyG (PyTorch Geometric) で Graph Pooling Neural Network - Qiita
    sh19910711
    sh19910711 2024/06/11
    "torch_geometric.transforms.ToDense を用いて transform することで、全ての大きさの分子グラフを max_nodes x max_nodes のサイズの隣接行列として表現 / Graph Pooling を使った GNN で、graph property を目的変数とした分類問題・回帰問題" 2022
  • 書籍「グラフ深層学習」を参考にGNNのグラフ埋め込みをやってみた - Qiita

    記事の概要 GNNのグラフ埋め込みをpythonでの実装も含めてやってみたよ GNN のライブラリは使わずにやったよ 書籍「グラフ深層学習」の4章を参考にしているよ 簡単な理論とコードを載せているよ 僕と同じくGNNビギナーの方の参考になればうれしいよ モチベーション グラフニューラルネットワーク(GNN)について耳にする機会が増えたこと、また今年に入って書籍が続けて発行されたことから、GNN勉強してみたい!という人が増えているのではないでしょうか。 わたしもその一人で、独学ですが「グラフ深層学習(2023, ヤオ マー &ジリアン タン)」を読み進めています。 「グラフ深層学習」はグラフ理論の紹介から始まり、4章でグラフの特徴を抽出する グラフ埋め込み を取り上げています。 LLMなどでも使われる「埋め込み(embedding)」ですが、グラフにおいても特徴抽出の手法(教師なし学習)と

    書籍「グラフ深層学習」を参考にGNNのグラフ埋め込みをやってみた - Qiita
    sh19910711
    sh19910711 2024/05/27
    "「グラフ深層学習」の4章を参考 / タスクに応じた有用なベクトル表現を得ることが重要 / 元のグラフの情報をできるだけ保存する + その後のタスクで使用したい情報をなるべく保存できる写像が良い"
  • Rによるネットワークデータのプロット

    sh19910711
    sh19910711 2024/04/22
    "statnet: ネットワーク分析やプロットに使うパッケージが一通り入ってる / igraph: (statnetほどじゃないけど)基本的な関数はそろっている / Ggraphでも同じようなことができる" 2021
  • GraphDBの「Dgraph」の話 - Goで叩く

    こんにちは。 もう、Webの開発を何年もやってきたのになと思うのに、まだまだ理解できてなかったことがあるんだなぁと日々痛感させられてるmasamikiです。 GraphDB こないだ GoORM「ent」の話 を書かせてもらったのですが、GraphQLを使う仕事も結構でてきたなと。 さてさて、同じGraphの名を冠するGraphDBとはなんでしょうか。 Graph自体はentでMySQLに対して表現していたように、DBによらず、そのデータ構造のモデルを作ることは難しくありません。 この記事の言葉をかりると Graph DBとは、index-freeな隣接する頂点を取得できるストレージシステムなら、それをGraphDBと呼べるそうです。 もうちょっと細かい定義としては、(といっても翻訳してるだけですが) すべての要素(つまり、頂点またはエッジ)には、隣接する要素への直接のポインタがある。

    GraphDBの「Dgraph」の話 - Goで叩く
    sh19910711
    sh19910711 2024/04/18
    "Dgraph: GraphQL(っぽいクエリ)を使えるむっちゃ速いGraphDB / Neo4jでGraphQLを使うためには、Extensionが必要だったり / SlashGraphQL: Dgraphを搭載したフルマネージドGraphQLバックエンドサービス" 2020
  • ナレッジグラフを用いたRAGの改善 - Ahogrammer

    RAG(Retrieval Augmented Generation)は大規模言語モデル(LLM)の性能を改善するための手法の1つであり、質問に対する回答を生成する際に、外部知識源から情報を取り込みます。 これにより、LLM 自体で学習できる情報量に制限されることなく、より正確で詳細な回答を生成することができます。 よく使われているRAGでは、外部知識源として検索エンジンにテキストをインデックスしておき、質問に関連するテキストをベクトル検索や全文検索を用いて取得します。しかし、構造化データを扱うことには苦労するため、質問によっては回答が不十分、あるいはまったく回答できないことに繋がります。 これらの問題を克服するために、ナレッジグラフを用いたRAGが構築されることがあります。ナレッジグラフでは、エンティティとその間の関係がグラフ構造で表現されており、単純な検索を用いた場合には回答できないよ

    ナレッジグラフを用いたRAGの改善 - Ahogrammer
    sh19910711
    sh19910711 2024/03/22
    "GraphCypherQAChain: 与えられた質問に基づいたCypherクエリの生成、ナレッジグラフへの問い合わせ、問い合わせ結果を用いた回答の生成をしてくれます / 単純な検索を用いた場合には回答できないような複雑な質問にも対応"
  • bnlearnを使ってベイジアンネットワーク分析をやってみた - Qiita

    はじめに データ分析をやっていて、因果関係を知りたくなるのは世の常。特に複数の変数があって、それがお互いにどのように影響しているのか、ぱっと見ただけで分かるようなものはないのかと思って古典的ながらもベイジアンネットワーク分析をやってみました。 <環境> Windows Subsystem for Linux、Ubuntu 18.04、R 3.6.2(Jupyter Notebook) ベイジアンネットワークとは こちらのページによると、”「原因」と「結果」の関係を複数組み合わせることにより、「原因」「結果」がお互いに影響を及ぼしながら発生する現象をネットワーク図と確率という形で可視化したものです。過去に発生した「原因」と「結果」の積み重ねを統計的に処理し、『望む「結果」に繋がる「原因」』や『ある「原因」から発生する「結果」』を、確率をもって予測する推論手法ともいえます。この考え方は人がさま

    bnlearnを使ってベイジアンネットワーク分析をやってみた - Qiita
    sh19910711
    sh19910711 2024/03/12
    "複数の変数があって、それがお互いにどのように影響しているのか、ぱっと見ただけで分かるようなものはないのか / ベイジアンネットワークをさくっとやるにはpythonよりもRの方がパッケージが充実" 2020
  • Bluesky のフォロー推薦モデルを書いた - HackMD

    Social Network を活用するには自分の興味にあったアカウントをフォローすることが大事です.そのために重要な役割を果たすのが「おすすめユーザ推薦 (friend recommendation)」です.

    Bluesky のフォロー推薦モデルを書いた - HackMD
    sh19910711
    sh19910711 2024/01/21
    "次数が期待的に閾値以下になるようにサンプリング / GraphSage のサンプリングをデータセット生成時点で行っている / 与えられたグラフの (source_id, target_id) を正例,target_id をシャッフルしたものを負例 + TripletMarginLoss"
  • 大規模グラフデータの可視化:Cosmographの紹介

    テラーノベルで機械学習を中心に担当している川尻です。最近、グラフニューラルネットワーク(GNN)に注目しており、サーベイや検証をしております。以前にも以下の記事を書きました。 複雑なアルゴリズムを適用する前に、当たりをつけたり、結果を確認したりするためには、可視化が重要です。記事では、いくつかあるグラフの可視化ツールの中でも、大規模なネットワークでも簡単に使えるCosmographを紹介し、テラーノベルのデータを使って可視化してみます。 Cosmographとは グラフデータを可視化するツールはたくさんありますが、もっとも有名なのはgrapgvizです。graphvizにはsfdp[1]という大規模なデータに対応したアルゴリズムが用意されていますが、ノード数が10k以上のような大規模なグラフになると計算時間もかなりかかって、パラメータ調整も大変になります。 Cosmographは、Web

    大規模グラフデータの可視化:Cosmographの紹介
    sh19910711
    sh19910711 2023/09/07
    "Cosmograph: WebGLを使用して大規模なグラフをレンダリングできる + 100k以上のノードを持つグラフでも計算しながらレンダリング / npmパッケージとして公開されているため、自分でウェブアプリに組み込むことも可能"
  • igraph + Pythonによるネットワーク分析

    世の中の様々なシステムは、"グラフ"で表現することが可能だ。例えば、SNSにおける人の繋がりは、人を点(ノード)、人との関係を線(リンク)として、グラフが描ける。同様に、交通網、インターネット、プログラムのソースコード、脳内の神経回路なども、ノードとリンクでグラフとして表現することが出来る。 システムをグラフとして表現することで、グラフ理論の観点からシステムを解析・分析することが可能となる。その結果、何らかの新しい知見が得られる可能性がある。例えば、人の繋がりでは、最も発言力のある人間を、定量的に示すことが出来るし、交通網では渋滞などを迂回しつつ最短な経路を計算することも可能となる。 システムをグラフとして表現し、解析するためのプログラミングライブラリに、igraphがある。igraphは、2006年から開発・公開されている、C/Python/R用のグラフライブラリであり、現在、ハーバード

    igraph + Pythonによるネットワーク分析
    sh19910711
    sh19910711 2023/03/19
    2015: Python版あったのか / "igraph: 2006年から開発・公開されている、C/Python/R用のグラフライブラリ / ハーバード大学のGabor Csardi氏と、エトヴェシュ・ロラーンド大学のTamás Nepusz氏の二人によって、開発・保守が行われている"
  • メタゲノムのイケてるネットワーク解析手法、WGCNA解説 - Qiita

    メタゲノム解析でいけてる手法としてWGCNA(Weighted Gene Correlation Network Analysis)によるネットワーク解析がある 海洋微生物学だとDeLongのチームがよく使っている 例: https://www.nature.com/articles/s41564-017-0008-3 元々はマイクロアレイデータとかを念頭として作られたが、最近メタゲノム分野への応用が増えてきてる印象 論文 R実装について: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-9-559 式はこの論文から引用: https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1000117 理論の方の大元の論

    メタゲノムのイケてるネットワーク解析手法、WGCNA解説 - Qiita
    sh19910711
    sh19910711 2023/02/17
    2019 / "WGCNA: 遺伝子発現のデータやメタゲノムデータをクラスタリングする手法の一つ(ネットワーク解析の手法としても + 重み付けした相関ネットワークに基づきクラスタリング + サンプル数が多い時はかなり強力な手法"
  • PyTorch-BigGraph: A Large Scale Graph Embedding System

    Azure Arc x IoT Connect Gatewayを用いたIoTシステム / IoT Systems with Azure Arc x IoT Connect Gateway

    PyTorch-BigGraph: A Large Scale Graph Embedding System
    sh19910711
    sh19910711 2022/12/30
    2019 / "PyTorch-BigGraph: Billion-Trillionサイズのエッジを持つグラフに対してGraph Embeddings / torch.distributed.{send/recv}を利用 / SysML 19: Adam Lerer, Pytorch-BigGraph: A Large Scale Graph Embedding System"
  • RでERGMを実装したかった(が、失敗した) - SNAGeek

    このエントリは、Sansan Advent Calendar 2019 21日目の記事です。 adventar.org 基的にタイトルの通りですが、この記事では統計的ネットワーク分析のデファクトスタンダードとなっているERGMをRで実装していきます。 {igraph}以外のパッケージは使わずにできるだけスクラッチで開発します。 前もって断っておきますが、正しくパラメータ推定できるような実装には至ることができませんでした。 ERGMとは ERGM = Exponential Random Graph Model 日語では「指数ランダムグラフモデル」と訳されることが多いです。 略称は「あーぐむ」と読むようです。 概要については以下の記事で紹介されています。 qiita.com ERGMを使うと何が嬉しいのか 観測されたネットワークが、どのような構造的なメカニズムによって生成されたのかを知る

    sh19910711
    sh19910711 2022/12/27
    2019 / "ERGM: 観測されたネットワークが、どのような構造的なメカニズムによって生成されたのかを知る + ネットワーク内生的な効果を推定 / 全部入りの{statnet}というパッケージスイートがあり、こちらを導入するのが便利"
  • 1 つのグラフに対し、PyG の Sampler を利用してMini Batchによる学習を行う - Qiita

    1 つのグラフに対し、PyG の Sampler を利用してMini Batchによる学習を行う TL;DR 大きな構造のグラフをグラフニューラルネットワークで学習する場合、メモリに乗り切らない可能性があるため、サンプリングして学習する必要があります。 今回、PyG; pytorch-geometicsのSamplerを利用して、1つのグラフをサブグラフに分割し学習を行ってみました。使用するSamplerは以下の通りです。 NeighborSampler データセットはみんな大好きKarateClubを利用しています。ノードが所属するクラスを推論するタスクです。 データの準備 from torch_geometric.datasets import TUDataset, KarateClub # dataset = TUDataset(root='/tmp/ENZYMES', name='

    1 つのグラフに対し、PyG の Sampler を利用してMini Batchによる学習を行う - Qiita
    sh19910711
    sh19910711 2022/09/25
    "pytorch-geometicsのSamplerを利用して、1つのグラフをサブグラフに分割し学習を行ってみました / データセットはみんな大好きKarateClub / from torch_geometric.loader import NeighborSampler"
  • PyG (PyTorch Geometric) で MetaPath2Vec して Node2Vec と比較 - Qiita

    グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、MetaPath2Vec を使うことがテーマです。Node2Vecとの比較も行ないました。 PyG (PyTorch Geometric) インストール PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。また、コードはチュートリアルドキュメント https://pytorch-geometric.readthedocs.io/en/latest/index.html を参考にしています。 import os import torch torch.manual_seed(0) os.environ['TORCH'] = torch.

    PyG (PyTorch Geometric) で MetaPath2Vec して Node2Vec と比較 - Qiita
    sh19910711
    sh19910711 2022/08/12
    "自作ネットワークを作成して、MetaPath2Vec でノードを潜在空間にプロットしたり、 Node2Vec と比較したりしました / torch_geometric.data.HeteroData / from torch_geometric.nn import MetaPath2Vec / torch_geometric.nn.Node2Vec"