Interface RandomVariableDifferentiable

All Superinterfaces:
RandomVariable, Serializable
All Known Implementing Classes:
RandomVariableDifferentiableAAD, RandomVariableDifferentiableAD

public interface RandomVariableDifferentiable extends RandomVariable
Interface providing additional methods for random variable implementing RandomVariable allowing automatic differentiation. The interface will introduce three additional methods: Long getID() and Map<Long, RandomVariable> getGradient() and Map<Long, RandomVariable> getTangents(). The method getGradient will return a map providing the first order differentiation of the given random variable (this) with respect to all its input RandomVariableDifferentiables. The method getTangents will return a map providing the first order differentiation of all dependent random variables with respect to the given random variable (this). To get the differentiation dY/dX of Y with respect to a specific object X using backward mode (getGradient) use Map gradient = Y.getGradient(); RandomVariable derivative = Y.get(X.getID()); To get the differentiation dY/dX of Y with respect to a specific object X using forward mode (getTanget) use Map tangent = X.getTangent(); RandomVariable derivative = X.get(Y.getID()); Note: Some implementations may allow limit the result of the gradient to leave nodes or the result of the tangent to terminal nodes.
Version:
1.0
Author:
Christian Fries
  • Method Details

    • getID

      Long getID()
      A unique id for this random variable. Will be used in getGradient.
      Returns:
      The id for this random variable.
    • getGradient

      default Map<Long,RandomVariable> getGradient()
      Returns the gradient of this random variable with respect to all its leaf nodes. The method calculates the map \( v \mapsto \frac{d u}{d v} \) where \( u \) denotes this.
      Returns:
      The gradient map.
    • getGradient

      Map<Long,RandomVariable> getGradient(Set<Long> independentIDs)
      Returns the gradient of this random variable with respect to the given IDs. The method calculates the map \( v \mapsto \frac{d u}{d v} \) where \( u \) denotes this.
      Parameters:
      independentIDs - Set of IDs of random variables \( v \) with respect to which the gradients \( \frac{d u}{d v} \) will be calculated. If null, derivatives w.r.t. all known independents are returned.
      Returns:
      The gradient map.
    • getTangents

      default Map<Long,RandomVariable> getTangents()
      Returns the tangents of this random variable with respect to all its dependent nodes. The method calculated the map \( u \mapsto \frac{d u}{d v} \) where \( v \) denotes this.
      Returns:
      The map of all tangents .
    • getTangents

      Map<Long,RandomVariable> getTangents(Set<Long> dependentIDs)
      Returns the tangents of this random variable with respect to the given dependent node IDs (if dependent). The method calculated the map \( u \mapsto \frac{d u}{d v} \) where \( v \) denotes this.
      Parameters:
      dependentIDs - Set of IDs of random variables \( u \) with respect to which the differentials \( \frac{d u}{d v} \) will be calculated. If null, derivatives w.r.t. all known dependents are returned.
      Returns:
      The map of differentials.
    • getCloneIndependent

      default RandomVariableDifferentiable getCloneIndependent()
      Returns a clone of this differentiable random variable with a new ID. This implies that the random variable is a leaf node and independent from all previous calculations.
      Returns:
      A clone of this differentiable random variable with a new ID.