Hacker News new | past | comments | ask | show | jobs | submit | aria's comments login

I'll try! I've got a full time management job so this was a fun way to code again. The library is pretty small and I think easy to follow if you want to learn


Definitely doing the standard back-prop algorithm. Check out the code, it's pretty straightforward and the whole lib is about 2,500 lines


Author here, happy to answer any questions!


Thinks for your great lib in both great Clojure and ML. Do you know whether this Clojure lib can do Dynamic net: https://github.com/thinktopic/cortex? you didn't compare it in your blog.


Yes this does dynamic nets, the model is the same as PyTorch, you build a graph for each input(s). I think Cortex is in the Keras-style of model (only layer abstractions and not "dynamic" in the sense we talk about neural nets) and isn't dynamic, but I could be missing something. The examples seem to all be in that mold: https://github.com/thinktopic/cortex/blob/master/examples/ca...


Author here. This is coming up. Will do OpenCL first and then CUDA.


Author here, happy to answer questions and hopefully convince someone to give the library a try.


What browser are you in? It just using MathJax and appears to work in WebKit and Firefox.


Firefox 33.1.1 on Mac OS 10.10.1. Initially it would get stuck looking like: http://imgur.com/DhXAmI7

After refreshing the page a few times, all the formulae rendered correctly. In Safari things rendered correctly immediately.


Author here, happy to answer any questions.


I hate to be that guy, but "Raphson", not "Rhapson" (http://en.wikipedia.org/wiki/Joseph_Raphson). It's also worth noting that no one ever actually forms the inverse of H, even if H is dense. At worst you would compute some factorization of H and use that to solve for the update d.


Typo is fixed, thanks!

I think that's explicitly mentioned in the Quasi-Newton section that you only need to implicitly multiply and not form the matrix.


I still see it misspelt throughout.


Want to try a refresh, I think it ought to be fixed now. Thanks


Is it typical to interface to Newton's method via a function that computes the inverse Hessian? I've never seen that. Typically, people claim it is numerically unstable to explicitly invert the Hessian, and that it would be better for the interface to take the Hessian itself, and then call a subroutine to do a linear solve.


In practice you only need to do $H^{-1} g$; L-BFGS stores the {s_k} and {y_k} vectors which allow you to do the $H^{-1} g$ directly rather than needing to ever form the hessian or its inverse. There are techniques that aren't BFGS-based which approximate the hessian rather than the inverse and in that case you'd be better off solving.


What I mean is that, if just doing regular Newton, I'm not sure I've ever seen an example using the interface you show. I think that the vast majority of Newton's method implementations pass H rather than H^-1, and get the search direction via "solve_H_g(H,g)" rather than "solve_iH_g(iH,g)". It takes cubic time to compute H^-1 from H (after which you can compute (H^-1)g) and it takes cubic time to solve for x such that H*x=g, but the rather is said to be more stable, and so preferred.

I know this is irrelevant to the main part of the post, which is to explain LBFGS, I'm just genuinely interested if there are applications where its better to pass the inverse of H rather than H itself for some reason.


The interesting part of BFGS is that it directly approximates H^{-1} rather than H.


Question 1: What is the first bit in your unique 33-bit string? Question 2: What is the first bit in your unique 33-bit string? ...


I'm pretty sure you didn't mean what you wrote! But maybe I'm whooshing?


Author here. Happy to answer any questions!


Could you please also post the slides in PDF? The current download is probably for Keynote, which works only for Mac/Keynote users.


Also the .key file only seems to include the first 7 slides, so it's a bit hard to follow the talk. Very interesting presentation though, thanks!


Thanks! I definitely have personally run into the issue a lot and our Clojure teams at Prismatic struggled with commenting discipline. We find schemas are easier to maintain and apply, plus they save a lot of time during dev and testing.


Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: