Skip to content
This repository was archived by the owner on Oct 31, 2023. It is now read-only.

Commit

Permalink
Adding noise type kernel
Browse files Browse the repository at this point in the history
  • Loading branch information
rmcantin committed Jan 17, 2018
1 parent 4b9d322 commit 9102f65
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 2 deletions.
3 changes: 3 additions & 0 deletions include/kernel_functors.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ namespace bayesopt
virtual double gradient( const vectord &x1, const vectord &x2,
size_t component ) = 0;

// Only kernels with noise modify them.
virtual double getNoise(){ return 0.0; };

protected:
size_t n_inputs;
};
Expand Down
18 changes: 18 additions & 0 deletions include/kernels/kernel_const.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,24 @@ namespace bayesopt
{ return 0.0; };
};

class NoiseKernel: public AtomicKernel
{
public:
void init(size_t input_dim)
{ n_params = 1; n_inputs = input_dim; };

double operator()(const vectord &x1, const vectord &x2)
{ return 0.0; };

double gradient(const vectord &x1, const vectord &x2,
size_t component)
{ return 0.0; };

double getNoise()
{ return params(0); }
};


//@}

} //namespace bayesopt
Expand Down
3 changes: 2 additions & 1 deletion src/kernel_functors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ namespace bayesopt
KernelFactory::KernelFactory()
{
registry["kConst"] = & create_func<ConstKernel>;
registry["kNoise"] = & create_func<NoiseKernel>;
registry["kLinear"] = & create_func<LinKernel>;
registry["kLinearARD"] = & create_func<LinKernelARD>;

Expand Down Expand Up @@ -169,7 +170,7 @@ namespace bayesopt
corrMatrix(ii,jj) = (*mKernel)(XX[ii], XX[jj]);
corrMatrix(jj,ii) = corrMatrix(ii,jj);
}
corrMatrix(ii,ii) = (*mKernel)(XX[ii],XX[ii]) + nugget;
corrMatrix(ii,ii) = (*mKernel)(XX[ii],XX[ii]) + nugget + mKernel->getNoise();
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/kernelregressor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ namespace bayesopt
{
const vectord lastX = mData.getLastSampleX();
vectord newK = computeCrossCorrelation(lastX);
newK(newK.size()-1) += mRegularizer; // We add it to the last element
newK(newK.size()-1) += mRegularizer + mKernel.getKernel()->getNoise(); // We add it to the last element
utils::cholesky_add_row(mL,newK);
precomputePrediction();
} // updateSurrogateModel
Expand Down

0 comments on commit 9102f65

Please sign in to comment.