NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
NeuralEngine::MachineLearning::RBFKernel< Scalar > Class Template Reference

Radial basis kernel function. More...

#include <FgRBFKernel.h>

Inheritance diagram for NeuralEngine::MachineLearning::RBFKernel< Scalar >:
Collaboration diagram for NeuralEngine::MachineLearning::RBFKernel< Scalar >:

Public Member Functions

 RBFKernel ()
 Default constructor. More...
 
 ~RBFKernel ()
 Destructor. More...
 
void ComputeKernelMatrix (const af::array &inX1, const af::array &inX2, af::array &outMatrix)
 Computes the kernel matrix of the kernel. More...
 
void ComputeDiagonal (const af::array &inX, af::array &outDiagonal)
 Calculates only diagonal elements of K. More...
 
void LogLikGradientX (const af::array &inX, const af::array &indL_dK, af::array &outdL_dX)
 Computes dL/dX for full fit GP. More...
 
void LogLikGradientX (const af::array &inXu, const af::array &indL_dKuu, const af::array &inX, const af::array &indL_dKuf, af::array &outdL_dXu, af::array &outdL_dX)
 Computes dL / dX and dL / dXu for sparse approximation GP. More...
 
void LogLikGradientParam (const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dParam)
 Computes the gradient of the kernel parameters. More...
 
virtual void LogLikGradientCompundKfu (const af::array &indL_dKfu, const af::array &inX, const af::array &inXu, af::array *outdL_dParam, af::array *outdL_dXu, const af::array *dlogZ_dv=nullptr, af::array *outdL_dX=nullptr) override
 
virtual void LogGradientCompoundKuu (const af::array &inXu, const af::array &inCovDiag, af::array *outdL_dParam, af::array *outdL_dXu) override
 
void GradX (const af::array &inX1, const af::array &inX2, int q, af::array &outdK_dX)
 Computes dK/dX. More...
 
void DiagGradX (const af::array &inX, af::array &outDiagdK_dX)
 Derivative of diagonal elemts of K w.r.t X. More...
 
void DiagGradParam (const af::array &inX, const af::array &inCovDiag, af::array &outDiagdK_dParam)
 Derivative of diagonal elemts of K w.r.t kernel parameters. More...
 
void SetParameters (const af::array &param)
 Sets the parameters. More...
 
virtual void SetLogParameters (const af::array &param) override
 Sets log parameters. More...
 
af::array GetParameters ()
 Gets the parameters. More...
 
virtual af::array GetLogParameters () override
 Gets log parameters. More...
 
void Psi1Derivative (const af::array &inPsi1, const af::array &indL_dpsi1, const af::array &inZ, const af::array &inMu, const af::array &inSu, af::array &outdL_dParam, af::array &outdL_dXu, af::array *outdL_dX=nullptr)
 PSI statistics.
 
- Public Member Functions inherited from NeuralEngine::MachineLearning::IKernel< Scalar >
 IKernel (KernelType type, int numParameters)
 Constructor. More...
 
virtual ~IKernel ()
 Destructor. More...
 
virtual int GetNumParameter ()
 Gets number of parametes of the kernel. More...
 
virtual KernelType GetKernelType ()
 Gets kernel type. More...
 
virtual void ComputeKernelMatrix (const af::array &inX1, const af::array &inX2, af::array &outMatrix)=0
 Computes the kernel matrix of the kernel. More...
 
virtual void ComputeDiagonal (const af::array &inX, af::array &outDiagonal)=0
 Calculates only diagonal elements of K. More...
 
virtual void LogLikGradientX (const af::array &inX, const af::array &indL_dK, af::array &outdL_dX)=0
 Computes dL/dX for full fit GP. More...
 
virtual void LogLikGradientX (const af::array &inXu, const af::array &indL_dKuu, const af::array &inX, const af::array &indL_dKuf, af::array &outdL_dXu, af::array &outdL_dX)=0
 Computes dL / dX and dL / dXu for sparse approximation GP. More...
 
virtual void LogLikGradientX (const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dX)
 Computes dL / dX for sparse approximation GP. More...
 
virtual void LogLikGradientParam (const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dParam)=0
 Computes the gradient of LL w.r.t. the kernel parameters. More...
 
virtual void LogLikGradientParam (const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dParam, const af::array *dlogZ_dv)
 Computes the gradient of LL w.r.t. the kernel parameters. More...
 
virtual void LogLikGradientCompundKfu (const af::array &indL_dKfu, const af::array &inX, const af::array &inXu, af::array *outdL_dParam, af::array *outdL_dXu, const af::array *dlogZ_dv=nullptr, af::array *outdL_dX=nullptr)
 
virtual void LogGradientCompoundKuu (const af::array &inXu, const af::array &inCovDiag, af::array *outdL_dParam, af::array *outdL_dXu)
 
virtual void GradX (const af::array &inX1, const af::array &inX2, int q, af::array &outdK_dX)=0
 Computes dK/dX. More...
 
virtual void DiagGradX (const af::array &inX, af::array &outDiagdK_dX)=0
 Derivative of diagonal elemts of K w.r.t X. More...
 
virtual void DiagGradParam (const af::array &inX, const af::array &inCovDiag, af::array &outDiagdK_dParam)=0
 Derivative of diagonal elemts of K w.r.t kernel parameters. More...
 
virtual void SetParameters (const af::array &param)=0
 Sets the parameters. More...
 
virtual void SetLogParameters (const af::array &param)
 Sets log parameters. More...
 
virtual af::array GetParameters ()=0
 Gets the parameters. More...
 
virtual af::array GetLogParameters ()
 Gets log parameters. More...
 
virtual void InitParameters (Scalar inMedian)
 
Initializes the parameters based on the median of the distances of /f$\mathbf{X}/f$. More...
 
virtual void ComputePsiStatistics (const af::array &inXu, const af::array &inMu, const af::array &inS, af::array &outPsi0, af::array &outPsi1, af::array &outPsi2)
 PSI statistics. More...
 
virtual void PsiDerivatives (const af::array &indL_dPsi0, const af::array &inPsi1, const af::array &indL_dPsi1, const af::array &inPsi2, const af::array &indL_dPsi2, const af::array &inXu, const af::array &inMu, const af::array &inS, af::array &outdL_dParam, af::array &outdL_dXu, af::array &outdL_dMu, af::array &outdL_dS, const af::array *dlogZ_dv=nullptr)
 Psi derivatives. More...
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, unsigned int version)
 

Private Attributes

Scalar dVariance
 
Scalar dInvScale
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Protected Member Functions inherited from NeuralEngine::MachineLearning::IKernel< Scalar >
 IKernel ()
 Default constructor. More...
 
- Protected Attributes inherited from NeuralEngine::MachineLearning::IKernel< Scalar >
KernelType eType
 
int iNumParam
 
af::dtype m_dType
 
Scalar sDegree
 
af::array afGHx
 
af::array afGHw
 
af::array afXs
 
bool bCacheK
 

Detailed Description

template<typename Scalar>
class NeuralEngine::MachineLearning::RBFKernel< Scalar >

Radial basis kernel function.

Kernel function constructed as follows:

\[k(\mathbf{x}, \mathbf{x}') = \gamma_1 \exp\left(-\frac{1}{\gamma_2} |\mathbf{x} - \mathbf{x}'|^2 \right).\]

Nick Admin, 5/24/2017.

Definition at line 33 of file FgRBFKernel.h.

Constructor & Destructor Documentation

◆ RBFKernel()

template<typename Scalar >
NeuralEngine::MachineLearning::RBFKernel< Scalar >::RBFKernel ( )

Default constructor.

Nick Admin, 5/24/2017.

◆ ~RBFKernel()

Destructor.

Nick Admin, 5/24/2017.

Member Function Documentation

◆ ComputeKernelMatrix()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::ComputeKernelMatrix ( const af::array &  inX1,
const af::array &  inX2,
af::array &  outMatrix 
)
virtual

Computes the kernel matrix of the kernel.

Nick Admin, 5/23/2017.

Parameters
inX1[in,out] First n times q matrix of latent points.
inX2[in,out] Second m times q matrix of latent points (X').
outMatrix[in,out] Resulting kernel matrix.< / param>

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ ComputeDiagonal()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::ComputeDiagonal ( const af::array &  inX,
af::array &  outDiagonal 
)
virtual

Calculates only diagonal elements of K.

Nick Admin, 5/24/2017.

Parameters
inX[in,out] Nxq matrix X.
outDiagonal[in,out] The out diagonal.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ LogLikGradientX() [1/2]

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::LogLikGradientX ( const af::array &  inX,
const af::array &  indL_dK,
af::array &  outdL_dX 
)
virtual

Computes dL/dX for full fit GP.

Nick Admin, 5/23/2017.

Returns
The method returns the gradients of the latent points of type ILArray<Scalar>.
Parameters
inX[in,out] Nxq Matrix of latent points.
indL_dK[in,out] Derivative of the loglikelihood w.r.t kernel matrix K.
outdL_dX[in,out] Derivative of the loglikelihood w.r.t latent points.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ LogLikGradientX() [2/2]

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::LogLikGradientX ( const af::array &  inXu,
const af::array &  indL_dKuu,
const af::array &  inX,
const af::array &  indL_dKuf,
af::array &  outdL_dXu,
af::array &  outdL_dX 
)
virtual

Computes dL / dX and dL / dXu for sparse approximation GP.

Nick Admin, 5/23/2017.

Parameters
inXu[in,out] kxq Matrix of latent subset points.
indL_dKuu[in,out] Derivative of the loglikelihood w.r.t subset kernel matrix Kuu.
inX[in,out] Nxq Matrix of latent points.
indL_dKuf[in,out] Derivative of the loglikelihood w.r.t the kernel matrix K.
outdL_dXu[in,out] Derivative of the loglikelihood w.r.t latent subset points Xu.
outdL_dX[in,out] Derivative of the loglikelihood w.r.t latent points X.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ LogLikGradientParam()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::LogLikGradientParam ( const af::array &  inX1,
const af::array &  inX2,
const af::array &  indL_dK,
af::array &  outdL_dParam 
)
virtual

Computes the gradient of the kernel parameters.

Nick Admin, 5/23/2017.

Parameters
indL_dK[in,out] Derivative of the loglikelihood w.r.t the kernel matrix K.
outdL_dParam[in,out] Gradient of kernel parameters.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ LogLikGradientCompundKfu()

template<typename Scalar >
virtual void NeuralEngine::MachineLearning::RBFKernel< Scalar >::LogLikGradientCompundKfu ( const af::array &  indL_dKfu,
const af::array &  inX,
const af::array &  inXu,
af::array *  outdL_dParam,
af::array *  outdL_dXu,
const af::array *  dlogZ_dv = nullptr,
af::array *  outdL_dX = nullptr 
)
overridevirtual

◆ LogGradientCompoundKuu()

template<typename Scalar >
virtual void NeuralEngine::MachineLearning::RBFKernel< Scalar >::LogGradientCompoundKuu ( const af::array &  inXu,
const af::array &  inCovDiag,
af::array *  outdL_dParam,
af::array *  outdL_dXu 
)
overridevirtual

◆ GradX()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::GradX ( const af::array &  inX1,
const af::array &  inX2,
int  q,
af::array &  outdK_dX 
)
virtual

Computes dK/dX.

Nick Admin, 5/23/2017.

Parameters
inX1[in,out] First n times q matrix of latent points.
inX2[in,out] Second n times q matrix of latent points (X').
qThe latent dimension to process.
outdK_dX[in,out] dK/dX.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ DiagGradX()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::DiagGradX ( const af::array &  inX,
af::array &  outDiagdK_dX 
)
virtual

Derivative of diagonal elemts of K w.r.t X.

Nick Admin, 5/23/2017.

Parameters
inX[in,out] The in x coordinate.
outDiagdK_dX[in,out] Derivative of diagonal elemts of K w.r.t X.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ DiagGradParam()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::DiagGradParam ( const af::array &  inX,
const af::array &  inCovDiag,
af::array &  outDiagdK_dParam 
)
virtual

Derivative of diagonal elemts of K w.r.t kernel parameters.

Nick Admin, 5/23/2017.

Parameters
inX[in,out] Nxq matrix of Latent points X.
inCovDiag[in,out] Diagonal of kernel matrix K.
outDiagdK_dParam[in,out] Derivative of diagonal elemts of K w.r.t kernel parameters.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ SetParameters()

template<typename Scalar >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::SetParameters ( const af::array &  param)
virtual

Sets the parameters.

Nick, 26.06.2018.

Parameters
paramThe parameter.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ SetLogParameters()

template<typename Scalar >
virtual void NeuralEngine::MachineLearning::RBFKernel< Scalar >::SetLogParameters ( const af::array &  param)
overridevirtual

Sets log parameters.

Hmetal T, 06/11/2020.

Parameters
paramThe parameter.

Reimplemented from NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ GetParameters()

template<typename Scalar >
af::array NeuralEngine::MachineLearning::RBFKernel< Scalar >::GetParameters ( )
virtual

Gets the parameters.

Nick, 26.06.2018.

Returns
The parameters.

Implements NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ GetLogParameters()

template<typename Scalar >
virtual af::array NeuralEngine::MachineLearning::RBFKernel< Scalar >::GetLogParameters ( )
overridevirtual

Gets log parameters.

Hmetal T, 06/11/2020.

Returns
The log parameters.

Reimplemented from NeuralEngine::MachineLearning::IKernel< Scalar >.

◆ serialize()

template<typename Scalar >
template<class Archive >
void NeuralEngine::MachineLearning::RBFKernel< Scalar >::serialize ( Archive &  ar,
unsigned int  version 
)
inlineprivate

Definition at line 188 of file FgRBFKernel.h.

Friends And Related Function Documentation

◆ boost::serialization::access

template<typename Scalar >
friend class boost::serialization::access
friend

Definition at line 185 of file FgRBFKernel.h.

Member Data Documentation

◆ dVariance

template<typename Scalar >
Scalar NeuralEngine::MachineLearning::RBFKernel< Scalar >::dVariance
private

Definition at line 183 of file FgRBFKernel.h.

◆ dInvScale

template<typename Scalar >
Scalar NeuralEngine::MachineLearning::RBFKernel< Scalar >::dInvScale
private

Definition at line 183 of file FgRBFKernel.h.


The documentation for this class was generated from the following file: