Giter VIP home page Giter VIP logo

graphicalmodellearning.jl's People

Contributors

ccoffrin avatar frapac avatar juliatagbot avatar lokhov avatar marc-vuffray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

graphicalmodellearning.jl's Issues

Sampler Name

Is Gibbs the correct name for the samplers that we have implemented? They look more like brute force enumeration to me.

Proposal for Graphical Model Data Structure

For now we assume discrete models. (something) indicates that something is optional, everything else is required.

A Julia data-structure that can be serialized to JSON as follows,

{
"order":<int>,
"variable_count":<int>,
"alphabet":[<int>,<int>,...,<int>],
"symmetric":<bool>,
("variable_names":[<string>,<string>,...,<string>],)
"terms":[
  {"weight":<float>, "variables":[<int>, <int>,...,<int>]},
  ...
]
}

All values in alphabet should be unique. For now we will require the alphabet to be [-1, 1].

The arrays variable_names must be the same length that is specified by variable_count. The length of variables should be less than or equal to the value of order.

if symmetric is true, then the values in variables should be increasing. All non-increasing orders can be added to the increasing one. Similarly, multiple references to the same variable can be collapsed into lower order terms.

Inside of Julia, it would be nice if the weights could be accessed using a multidimensional array syntax (gm[1,2,4,8]).

Inverse ising formulations test

Use the value of gibbs_test_samples to correctly set the settings of isapprox on inverse ising formulations regression test.

Correctness Thresholds

In testings can correctness thresholds be set programmatically based on the number of samples?

Code for Generating Permutations

I think this does the right thing. One question is when generalizing to higher dimensions, are (1,1,2) and (1,2,1) symmetric? Also maybe the logic of the asymmetric flag is revered...

permutations(items, order::Int; asymmetric::Bool = false) = sort(permutations([], items, order, asymmetric))

function permutations(partical_perm::Array{Any,1}, items, order::Int, asymmetric::Bool)
    if order == 0
        return [tuple(partical_perm...)]
    else
        perms = []
        for item in items
            if !asymmetric && length(partical_perm) > 0 
                if partical_perm[end] < item
                    continue
                end
            end
            perm = permutations(vcat([item], partical_perm), items, order-1, asymmetric)
            append!(perms, perm)
        end
        return perms
    end
end

Proposal for Sample Data Structure

For now we assume discrete models. (something) indicates that something is optional, everything else is required.

A Julia data-structure that can be serialized to JSON as follows,

{
"variable_count":<int>,
"alphabet":[<int>,<int>,...,<int>],
("variable_names":[<string>,<string>,...,<string>],)
"samples":[
  {"count":<int>, "assignment":[<int>, <int>,...,<int>], ("value":<float>)},
  ...
]
}

All values in alphabet should be unique. For now we will require the alphabet to be [-1, 1].

The arrays variable_names, alphabet and assignment must all be the same length that is specified by variable_count. All values in assignment should be members of the alphabet.

value can be used to store an evaluation of the given assignment (e.g. the energy in a d-wave sample).

Parametric Regularizers

Figure out a clean way to make regularizers parametric, for example
regularizer*sqrt(log((num_spins^2)/0.05)/num_samples).

Generic GMLFormulation

Consider adding a generic GMLFormulation, which includes functions that plug into the bigger JuMP model. Then RISE, logRISE, RPLE would be specific instances of this generic formulation.

Handleing Symmetrization Option

Instead of having symmetrization in the formulation flag, all learning methods can return a DiHypergraph then calling a symmetrize function could turn them into FactorGraph. Consistent return types helps the compiler optimize the code.

RISE with multi-interactions

The branch multi-interactions now contains the method multiRISE() that reconstruct binary models with arbitrary interactions. The ouptut is a dictionary of reconstructed interactions from each node perspective e.g. (1,2,3), (2,1,3), (3,1,2) are the reconstruction of the 3 body interaction between 1,2,3 from the perspective of node 1, 2 and 3 respectively.

The option for symmetrizing the output is still not implemented.

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.