comparison doc/v2_planning/API_formulas.txt @ 1174:fe6c25eb1e37

merge
author pascanur
date Fri, 17 Sep 2010 16:13:58 -0400
parents 42ddbefd1e03
children
comparison
equal deleted inserted replaced
1173:a0f178bc9052 1174:fe6c25eb1e37
1 .. _v2planning_formulas:
2
3 Math formulas API
4 =================
5
6 Why we need a formulas API
7 --------------------------
8
9 Their is a few reasons why having a library of mathematical formula for theano is a good reason:
10
11 * Some formula have some special thing needed for the gpu.
12 * Sometimes we need to cast to floatX...
13 * Some formula have numerical stability problem.
14 * Some formula gradiant have numerical stability problem. (Happen more frequently then the previous ones)
15 * If theano don't always do some stability optimization, we could do it manually in the formulas
16 * Some formula as complex to implement and take many try to do correctly.
17 * Can mimic the hierarchy of other library to ease the migration to theano
18
19 Having a library help in that we solve those problem only once.
20
21 What is a formula
22 -----------------
23
24 We define formulas as something that don't have a state. They are implemented as
25 python function that take theano variable as input and they output theano
26 variable. If you want state, look at what the others commities will do.
27
28 Formulas documentation
29 ----------------------
30
31 We must respect what the coding commitee have set for the docstring of the file and of the function.
32
33 * A latex mathematical description of the formulas(for picture representation in generated documentation)
34 * Tags(for searching):
35 * a list of lower level fct used
36 * category(name of the submodule itself)
37 * Tell if we did some work to make it more numerical stable. Do theano do the optimization needed?
38 * Tell if the grad is numericaly stable? Do theano do the optimization needed?
39 * Tell if work/don't/unknow on gpu.
40 * Tell alternate name
41 * Tell the domaine, range of the input/output(range should use the english notation of including or excluding)
42
43 Proposed hierarchy
44 ------------------
45
46 Here is the proposed hierarchy for formulas:
47
48 * pylearn.formulas.costs: generic / common cost functions, e.g. various cross-entropies, squared error,
49 abs. error, various sparsity penalties (L1, Student)
50 * pylearn.formulas.regularization: formulas for regularization
51 * pylearn.formulas.linear: formulas for linear classifier, linear regression, factor analysis, PCA
52 * pylearn.formulas.nnet: formulas for building layers of various kinds, various activation functions,
53 layers which could be plugged with various costs & penalties, and stacked
54 * pylearn.formulas.ae: formulas for auto-encoders and denoising auto-encoder variants
55 * pylearn.formulas.noise: formulas for corruption processes
56 * pylearn.formulas.rbm: energies, free energies, conditional distributions, Gibbs sampling
57 * pylearn.formulas.trees: formulas for decision trees
58 * pylearn.formulas.boosting: formulas for boosting variants
59 * pylearn.formulas.maths for other math formulas
60 * pylearn.formulas.scipy.stats: example to implement the same interface as existing lib
61
62 etc.
63
64 Example
65 -------
66 .. code-block:: python
67
68 """
69 This script defines a few often used cost functions.
70 """
71 import theano
72 import theano.tensor as T
73 from tags import tags
74
75 @tags('cost','binary','cross-entropy')
76 def binary_crossentropy(output, target):
77 """ Compute the crossentropy of binary output wrt binary target.
78
79 .. math::
80 L_{CE} \equiv t\log(o) + (1-t)\log(1-o)
81
82 :type output: Theano variable
83 :param output: Binary output or prediction :math:`\in[0,1]`
84 :type target: Theano variable
85 :param target: Binary target usually :math:`\in\{0,1\}`
86 """
87 return -(target * tensor.log(output) + (1.0 - target) * tensor.log(1.0 - output))
88
89
90 TODO
91 ----
92 * define a list of search tag to start with
93 * Add to the html page a list of the tag and a list of each fct associated to them.
94 * move existing formulas to pylearn as examples and add other basics ones.
95 * theano.tensor.nnet will probably be copied to pylearn.formulas.nnet and depricated.
96