HaskellNN-0.1: src/AI/Signatures.hs
---------------------------------------------------------
-- |
-- Module : AI.Network
-- License : GPL
--
-- Maintainer : Kiet Lam <ktklam9@gmail.com>
--
--
-- This module provides the signatures for needed
-- functions in a neural network
--
--
---------------------------------------------------------
module AI.Signatures (
ActivationFunction,
DerivativeFunction,
ErrorFunction,
CostFunction,
CostDerivative,
GradientFunction
) where
import Data.Packed.Matrix
import Data.Packed.Vector
import AI.Network
-- | Type that represents the activation function
type ActivationFunction = Double -> Double
-- | Type that represents the derivative of the activation function
--
-- NOTE: The derivative can be non-trivial and must be continuous
type DerivativeFunction = Double -> Double
-- | Type that represents the error function
-- between the calculated output vector
-- and the expected output vector
type ErrorFunction = Vector Double -- ^ The calculated output vector
-> Vector Double -- ^ The expected output vector
-> Double -- ^ Returns the error of how far off
-- the calculated vector is from the
-- expected vector
-- | Type that represents the function
-- that can calculate the total cost of the neural networks
-- given the neural networks, the input matrix and an expected output matrix
type CostFunction = Network -- ^ The neural networks of interest
-> Matrix Double -- ^ The input matrix, where the ith row
-- is the input vector of a training set
-> Matrix Double -- ^ The expected output matrix, where the
-- ith row is the expected output vector
-- of a training set
-> Double -- ^ Returns the cost of the calculated output vector
-- from the neural network and the given
-- expected output vector
-- | Type that represents the cost function derivative.
-- on the output nodes
type CostDerivative = Network -- ^ The neural networks of interest
-> Matrix Double -- ^ The matrix of inputs where the ith row
-- is the ith training set
-> Matrix Double -- ^ The matrix of calculated outputs where the
-- ith row is the ith training set
-> Matrix Double -- ^ The matrix of expected outputs where the
-- ith row is the ith expected output of
-- of the training set
-> Matrix Double -- ^ Returns the matrix of the derivatives
-- of the cost of the output nodes
-- compared to the expected matrix
-- | The type to represent a function that
-- can calculate the gradient vector
-- of the weights of the neural network
--
-- NOTE: Must be supplied a function to calculate the cost, the
-- cost derivative of the output neurons, the neural network
-- the input matrix, and the expected output matrix
type GradientFunction = CostFunction -- ^ The cost function
-> CostDerivative -- ^ The cost derivative
-> Network -- ^ The neural network
-> Matrix Double -- ^ The input matrix
-> Matrix Double -- ^ The expected output matrix
-> Vector Double -- ^ Returns the gradient vector
-- of the weights