Github user bgreeven commented on the pull request:
https://github.com/apache/spark/pull/1290#issuecomment-61749598
Let's discuss a bit more about making the optimiser, updater, gradient, and
error function customizable.
Notice that for the current LBFGS algorithm, the error function is used
both for the gradient (as the error function is minimized), which is used in
the updater and optimizer. Hence for a pluggable error function, the gradient
needs to be pluggable.
I think there would be value in making the "updater" and "optimizer"
pluggable too. For the optimizers we have already seen the candidates LBFGS and
SGD, both with their pres and contras. Also, there may be other optimizers that
use something else than the gradient. Since the updater currently depends on
the gradient, I suggest to make it pluggable too. (I played around a bit with a
genetic optimizer - doesn't work very well but is an example of an optimizer
that doesn't use the gradient.)
Maybe we can start with making the "optimizer", "gradient" and "updater" in
the ArtificialNeuralNetwork class vars instead of vals. Then we can create a
different ANN object for each "optimizer", "gradient" and "updater"
combination, e.g. "ArtificialNeuralNetworkWithLBFGS". We also need to remove
the convergenceTol from the ArtificialNeuralNetwork constructor, since that is
LBFGS specific.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]