Class NeuralNetworkModel

java.lang.Object
org.apache.solr.ltr.model.LTRScoringModel
org.apache.solr.ltr.model.NeuralNetworkModel
All Implemented Interfaces:
org.apache.lucene.util.Accountable

public class NeuralNetworkModel extends LTRScoringModel
A scoring model that computes document scores using a neural network.

Supported activation functions are: identity, relu, sigmoid, tanh, leakyrelu and contributions to support additional activation functions are welcome.

Example configuration:

 {
   "class" : "org.apache.solr.ltr.model.NeuralNetworkModel",
   "name" : "rankNetModel",
   "features" : [
     { "name" : "documentRecency" },
     { "name" : "isBook" },
     { "name" : "originalScore" }
   ],
   "params" : {
     "layers" : [
       {
         "matrix" : [ [ 1.0, 2.0, 3.0 ],
                      [ 4.0, 5.0, 6.0 ],
                      [ 7.0, 8.0, 9.0 ],
                      [ 10.0, 11.0, 12.0 ] ],
         "bias" : [ 13.0, 14.0, 15.0, 16.0 ],
         "activation" : "sigmoid"
       },
       {
         "matrix" : [ [ 17.0, 18.0, 19.0, 20.0 ],
                      [ 21.0, 22.0, 23.0, 24.0 ] ],
         "bias" : [ 25.0, 26.0 ],
         "activation" : "relu"
       },
       {
         "matrix" : [ [ 27.0, 28.0 ],
                      [ 29.0, 30.0 ] ],
         "bias" : [ 31.0, 32.0 ],
         "activation" : "leakyrelu"
       },
       {
         "matrix" : [ [ 33.0, 34.0 ],
                      [ 35.0, 36.0 ] ],
         "bias" : [ 37.0, 38.0 ],
         "activation" : "tanh"
       },
       {
         "matrix" : [ [ 39.0, 40.0 ] ],
         "bias" : [ 41.0 ],
         "activation" : "identity"
       }
     ]
   }
 }
 

Training libraries:

Background reading:

  • Constructor Details

  • Method Details

    • createLayer

      protected NeuralNetworkModel.Layer createLayer(Object o)
    • setLayers

      public void setLayers(Object layers)
    • validate

      protected void validate() throws ModelException
      Description copied from class: LTRScoringModel
      Validate that settings make sense and throws ModelException if they do not make sense.
      Overrides:
      validate in class LTRScoringModel
      Throws:
      ModelException
    • score

      public float score(float[] inputFeatures)
      Description copied from class: LTRScoringModel
      Given a list of normalized values for all features a scoring algorithm cares about, calculate and return a score.
      Specified by:
      score in class LTRScoringModel
      Parameters:
      inputFeatures - List of normalized feature values. Each feature is identified by its id, which is the index in the array
      Returns:
      The final score for a document
    • explain

      public org.apache.lucene.search.Explanation explain(org.apache.lucene.index.LeafReaderContext context, int doc, float finalScore, List<org.apache.lucene.search.Explanation> featureExplanations)
      Description copied from class: LTRScoringModel
      Similar to the score() function, except it returns an explanation of how the features were used to calculate the score.
      Specified by:
      explain in class LTRScoringModel
      Parameters:
      context - Context the document is in
      doc - Document to explain
      finalScore - Original score
      featureExplanations - Explanations for each feature calculation
      Returns:
      Explanation for the scoring of a document