Simple Message Passing on Graphs

Поділитися
Вставка
  • Опубліковано 30 тра 2024
  • Join my FREE course Basics of Graph Neural Networks (www.graphneuralnets.com/p/bas...! This video discusses the adjacency matrix and how it can be used to implement basic message passing on graphs. A simple example is given using Python.
    Code: github.com/zjost/blog_code/bl...
    Mailing List: blog.zakjost.com/subscribe
    Discord Server: / discord
    Blog: blog.zakjost.com
    Patreon: / welcomeaioverlords
    Graph Convolutional Networks paper by Kipf and Welling: openreview.net/pdf?id=SJU4ayYgl
    Thumbnail icon made by Freepik from Flaticon.

КОМЕНТАРІ • 34

  • @Christian-ty5vn
    @Christian-ty5vn 3 роки тому +1

    Thanks! :) Enjoyed the video. Well explained and great examples.

  • @RaynerGS
    @RaynerGS 2 роки тому +4

    Thanks so much for your class; I am a Ph.D. student, and your channel is helping me - way to go and Salute from Brazil.

  • @leandrostival4326
    @leandrostival4326 2 роки тому

    Great explanation!

  • @maryamalizadeh4984
    @maryamalizadeh4984 3 роки тому

    great explanation . Thanks

  • @RalphDratman
    @RalphDratman Рік тому

    Excellent! Thanks very much. That's outstandingly clear.
    The resulting system implements diffusion with conservation of total, um, node stuff.

  • @pavelpopov9712
    @pavelpopov9712 Рік тому

    It’s a great video, one thing (if I understood correctly) is to take different values for nodes features vector instead of nodes initial range positions. I didn’t catch that from the first time

  • @rupjitchakraborty8012
    @rupjitchakraborty8012 3 роки тому

    Loving your channel. Too few likes for such a good video.

  • @moustafa_shomer
    @moustafa_shomer Рік тому

    great video, thank you so much

  • @arp_ai
    @arp_ai 3 роки тому +6

    I enjoyed the video. Thank you! Would be awesome to mention example applications of message passing.

    • @welcomeaioverlords
      @welcomeaioverlords  3 роки тому +2

      Thanks Jay! This is relevant whenever information is gathered over a graph neighborhood. Graph neural network techniques and Label Propagation are examples. I hope this helps. A follow up video will expand on this to show how this same approach is used by Graph Convolutional Networks.

    • @arp_ai
      @arp_ai 3 роки тому

      @@welcomeaioverlords wonderful! Thanks for the answer! Looking forward to it!

  • @ThyRiki
    @ThyRiki 3 роки тому +2

    Great video! Very clear.

  • @jevoncharles8680
    @jevoncharles8680 3 місяці тому

    Brilliant

  • @leo.y.comprendo
    @leo.y.comprendo 2 роки тому +1

    Great video!! I am currently working on an algorithm that builds an adjacency matrix from features extracted on a convolutional layer for a set of images (deep features). However, the formula just states that A is softmax(F)@softmax(F).T. This leaves me with an adjacency matrix with real numbers. Is this valid for message passing algorithms? I could imagine that it is some sort of “weighted edges”? Thanks!

  • @TheMarcosVerissimo
    @TheMarcosVerissimo Рік тому +1

    Wonderful video! Pity that it looks like you have stopped making them. If that were part of a Udemy course, I'd definitely take it.

    • @welcomeaioverlords
      @welcomeaioverlords  Рік тому +2

      I have this free course: www.graphneuralnets.com/p/basics-of-gnns, and this paid course: www.graphneuralnets.com/p/introduction-to-gnns.
      And I hope to start making videos again, but needed a little (or not so little) break :)

    • @TheMarcosVerissimo
      @TheMarcosVerissimo Рік тому

      @@welcomeaioverlords Thanks for the reply! I read the video description later, and I have already enrolled. Would you have any plans of making the also the full course self-paced? I have a project that will involve GNNs but I'm on a postdoc that involves learning a lot of things, and that leaves me little room for separating a few months to practically only take the course.

  • @hayleecs4223
    @hayleecs4223 3 роки тому +2

    Great video, but that t-shirt tho!
    edit: seriously, thanks for the animations as well!

  • @736939
    @736939 2 роки тому +1

    7:35 I didn't get this: so why, when we sandwich "A", between D^(-1/2) A D^(-1/2) we know that "D" on the right side is related to the destination node?

    • @welcomeaioverlords
      @welcomeaioverlords  2 роки тому +3

      Because if it's on the right, it multiplies the columns of A and if it's on the left, it multiplies the rows of A. To see this, do it by hand. It will also make it easier to recall that D only has non-zero entries along the diagonal.

    • @736939
      @736939 2 роки тому

      @@welcomeaioverlords Thanks a lot. I think that I will buy your course, because I saw the content and you provide a good GNN explanation, also I thought that GNN's propagation is done by BFS algorihm, but you show the "waterdrop" approach, where did you read it? I tried to find good, readable GNN sources, but I saw only difficult-to-read scientific articles.

  • @robmarks6800
    @robmarks6800 2 роки тому

    Even though I’ve almost finished my master’s, the generalization of simple scalar arithmetic such as multiplication and division to vectors still surprise me. For example going from a/d to the inv(D)*A formula. Which seems even harder to comprehend if D wouldnt be diagonal.
    Can anyone help me/point to any respurces that explain(not define) these fundamental matrix operations?

    • @welcomeaioverlords
      @welcomeaioverlords  2 роки тому +2

      D is always diagonal by construction. I'm not sure this is what you're asking, but I'm not claiming that element-wise division can always be straight-forwardly expressed by an inverted matrix. In this particular case, since D is diagonal and we have the definition: D*D_inv = 1, I think it's straightforward to see (do it by hand for an example) that the inverse of a diagonal matrix is simply 1/elements of that matrix.

  • @seyitahmetozturk721
    @seyitahmetozturk721 2 роки тому +1

    I couldn't understand why you changed degree of each node (1,2,3,1,1) to (1,2,3,4,5). Maybe I missed some point but I am curious to answer.

    • @keremcomert4239
      @keremcomert4239 Рік тому +1

      (1,2,3,4,5) is irrelevant to the node degrees, the degrees stay as they are. (1,2,3,4,5) was just an arbitrary assignment of values to each node, to demonstrate node features. You might as well assign any other value to each node, the idea is that when you perform the matrix multiplication, for each node in a row only the neighbors of that node are able to propagate its feature value.

  • @arjunashok4956
    @arjunashok4956 3 роки тому +1

    Why wouldn't message passing work without scaling with respect to the destination, and without the square root? i.e. just by using the initial formulation(D * A) with self-loop edges in A (and hence accounted in D), why can't I do the message passing?

    • @welcomeaioverlords
      @welcomeaioverlords  3 роки тому +4

      It’s not that it wouldn’t work. It might work as well or better, depending on the problem. Sometimes no normalization is better (i.e. just a sum of messages). But the paper used this parameterization because it aided in the derivation and is numerically stable.

    • @arjunashok4956
      @arjunashok4956 3 роки тому

      Thanks a ton! You're awesome! :)

  • @milandoshi7640
    @milandoshi7640 2 роки тому

    Is it possible to create a adjacent matrix from an image of a molecule or from just coordinates without knowng which components are connected ?. Thanks in advance.

    • @welcomeaioverlords
      @welcomeaioverlords  2 роки тому +1

      You might dig into "Latent Graph Learning".

    • @xabiergarciaandrade2656
      @xabiergarciaandrade2656 2 роки тому

      In order to derive an adjacency matrix from a coordinate file you would need to define pairwise bond lengths as threshold

  • @vishnusureshperumbavoor
    @vishnusureshperumbavoor Рік тому

    I didn't understood the part 1,2,3,1,1
    @ 4:57

    • @rafael_l0321
      @rafael_l0321 Рік тому

      As explained in 3:01 - node 1 has degree 1, node 2 degree 2, node 3 degree 3, node 4 degree 1, node 5 degree 1