941
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
1
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
2 Motivation
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
3 ==========
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
4
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
5 Yoshua:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
6 -------
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
7
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
8 We are missing a *Theano Machine Learning library*.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
9
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
10 The deep learning tutorials do a good job but they lack the following features, which I would like to see in a ML library:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
11
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
12 - a well-organized collection of Theano symbolic expressions (formulas) for handling most of
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
13 what is needed either in implementing existing well-known ML and deep learning algorithms or
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
14 for creating new variants (without having to start from scratch each time), that is the
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
15 mathematical core,
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
16
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
17 - a well-organized collection of python modules to help with the following:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
18 - several data-access models that wrap around learning algorithms for interfacing with various types of data (static vectors, images, sound, video, generic time-series, etc.)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
19 - generic utility code for optimization
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
20 - stochastic gradient descent variants
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
21 - early stopping variants
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
22 - interfacing to generic 2nd order optimization methods
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
23 - 2nd order methods tailored to work on minibatches
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
24 - optimizers for sparse coefficients / parameters
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
25 - generic code for model selection and hyper-parameter optimization (including the use and coordination of multiple jobs running on different machines, e.g. using jobman)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
26 - generic code for performance estimation and experimental statistics
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
27 - visualization tools (using existing python libraries) and examples for all of the above
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
28 - learning algorithm conventions and meta-learning algorithms (bagging, boosting, mixtures of experts, etc.) which use them
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
29
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
30 [Note that many of us already use some instance of all the above, but each one tends to reinvent the wheel and newbies don't benefit from a knowledge base.]
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
31
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
32 - a well-documented set of python scripts using the above library to show how to run the most
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
33 common ML algorithms (possibly with examples showing how to run multiple experiments with
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
34 many different models and collect statistical comparative results). This is particularly
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
35 important for pure users to adopt Theano in the ML application work.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
36
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
37 Ideally, there would be one person in charge of this project, making sure a coherent and
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
38 easy-to-read design is developed, along with many helping hands (to implement the various
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
39 helper modules, formulae, and learning algorithms).
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
40
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
41
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
42 James:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
43 -------
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
44
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
45 I am interested in the design and implementation of the "well-organized collection of Theano
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
46 symbolic expressions..."
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
47
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
48 I would like to explore algorithms for hyper-parameter optimization, following up on some
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
49 "high-throughput" work. I'm most interested in the "generic code for model selection and
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
50 hyper-parameter optimization..." and "generic code for performance estimation...".
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
51
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
52 I have some experiences with the data-access requirements, and some lessons I'd like to share
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
53 on that, but no time to work on that aspect of things.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
54
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
55 I will continue to contribute to the "well-documented set of python scripts using the above to
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
56 showcase common ML algorithms...". I have an Olshausen&Field-style sparse coding script that
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
57 could be polished up. I am also implementing the mcRBM and I'll be able to add that when it's
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
58 done.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
59
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
60
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
61
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
62 Suggestions for how to tackle various desiderata
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
63 ================================================
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
64
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
65
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
66
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
67 Functional Specifications
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
68 =========================
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
69
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
70 Put these into different text files so that this one does not become a monster.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
71 For each thing with a functional spec (e.g. datasets library, optimization library) make a
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
72 separate file.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
73
|