SBRS (Semantic Based Regularization Software)

An intelligent agent simulator to connect logic and kernel machine


The aim of the simulator is to realize a software agent that is able to connect the inductive phase (learning from perceptive stimulus) and the deductive phase (reasoning from categorical constraints). The first one is realized by a Kernel Machine (KM) while the second one is realized through the description of the world by the First Order Logic (FOL).

Main features of SBRS include:

  • Learning Procedure:
    1. different optimization algortihm (Standard Gradient Descent, Normalized Gradient Descent, Resilient Back-Propagation)
    2. Various Kernels (Gaussian, Polynomial, Linear, Hyperbolic Tangent) or pre-computed kernel matrix
    3. Several loss functions (Hinge, Bilateral Hinge, Bilateral Quadratic Hinge, Logistic, Approximate Logistic)
  • Logic and FOL clauses:
    1. Various norm for translation of quantifier part (Linf, L1)
    2. Various norm for translation of propositional part (Product T-Norm, Minimum T-Norm, Gaussians Norms, Hypercube Norms, Nearest Vertex Norm)
  • Learning / Verification of constraints:
    1. capability to learn or verify the satisfaction of the logic constraints
    2. possibility to add constraints gradually during learning process
    3. collective classification in test

For more details about Semantic-Based Regularization, you can see in Publications.



Latest Release


Release 1.*


Required libraries:

OpenMP is automatically included in the latest versions of gcc.
The software will be compiled with this feature deactivated. To activate go to:
and search this line:


put 1 to activate multithreading or 0 to deactivate it.  Then re-compile the program.
In order to use multithreading it is also necessary to set in the bash file or in the shell before command line the following line:

export OMP_THREAD_LIMIT=8 # maximum number of threads (mandatory)

It is optional to select a number of threads through the simulator input options. Default value is 2. If 1 this means that the software will select the best value, basing on actual available resources and free CPU processors.
(see ./src/src/learn.cpp for more info on how the number of threads is automatically choosen)

How to compile:

  • open a shell
  • cd to “./src/src/Train” and “./src/src/Predict” and “./src/src/Checking” directory
  • make clean
  • make all
  • copy/move the binary file “sbr_train” or “sbr_predict” or “sbr_check” respectively as you want


Execute the software:

Refer to README file in the software package.

Additional Information

Click here to download a simple tutorial.
The tutorial shows to the users through simple examples:

  • how to model a few learning problems in familiar learning representations;
  •  how to introduce the basic knowledge to the software to develop the own applications in this framework.




Authors and Acknowledgments

This software has been developed by Claudio Saccà, Salvatore Frandina and Michelangelo Diligenti at Department of Information Engineering of University of Siena. For information or help, contact us via e-mail at, or .