Concepts - TeamCohen/ProPPR GitHub Wiki
(page in progress)
Contents:
Glossary
- Logic Program -
- A set of if-then statements defining the conditions under which certain relations between variables are true. ProPPR adds the ability to label each statement with one or more features, which can be used in machine learning.
- The set of files required to execute (i), including (i) itself plus any facts the program needs to look up.
- Query
- Rule
- Goal
- Feature
- Parameter - A feature in the context of the parameter vector, the learned set of weights that optimizes performance of the logic program.
- Hyperparameter - A tunable setting of the ProPPR machinery.
- Example
- Label
- Logic Program State
- Proof Graph - a directed graph rooted at the query whose nodes are logic program states and whose edges are labeled with the features assigned to the rule used to transition from the source node to the destination node. Successful terminal paths represent solutions to the query.
- Personalized PageRank - The algorithm used to rank query solutions based on the proof graph.
- Power Iteration - The implementation of PageRank used in PprProver and most SRW classes. Very accurate but can be slow depending on the graph size.
- PageRank-Nibble - The implementation of PageRank used in DprProver and DprSRW. Accurate to epsilon (hyperparameter) and is much faster for large graphs.
File formats
Ground format:
Last updated: 7 August, 2015
*.grounded:
query,queryId,[posId],[negId],#nodes,#edges,#labelDependencies,{srcId->dstId:[featureId@featureWt]}
*.grounded.features:
featureName
where ,
is a tab, [list]
is a comma-delimited list, {list}
is a tab-delimited list, and *Id
is a 1-indexed integer.
labelDependencies
is the total number of values in dM, and is equal to the sum over, for each node, the total number of outgoing features (on any edge) times the number of outgoing edges. However, I think the current version of the code ignores the number in the file and recomputes it, so you can probably just put -1 and be okay.
LightweightStateGraph.serialize()
and LearningGraph.deserialize()
have more details on how everything is computed.