module MachineLearning.NeuralNetwork.Regularization
(
Regularization(..)
, forwardReg
, backwardReg
)
where
import MachineLearning.Types (R, Matrix)
import qualified Numeric.LinearAlgebra as LA
import MachineLearning.Regularization (Regularization(..))
forwardReg :: Regularization -> [(Matrix, Matrix)] -> R
forwardReg RegNone _ = 0
forwardReg (L2 lambda) thetaList = 0.5 * lambda * (sum $ map LA.norm_2 $ snd $ unzip thetaList)
backwardReg :: Regularization -> Matrix -> Matrix
backwardReg RegNone _ = 0
backwardReg (L2 lambda) w = w * (LA.scalar lambda)