Deep Learning Courses
developer.nvidia.com
developer.nvidia.com
In the strict sense, deep learning refers to neural networks with more than one hidden layer. The depth of neural networks is equal to the longest path between input and output nodes. "Shallow" networks like a simple autoencoder might have two layers. They're not considered deep or part of deep learning. But if you stack them together, you have a deep net; e.g. many restricted Boltzmann machines form a deep-belief network. [1]
As @paulsutter mentioned, one aspect of having several hidden, or intermediate, layers in a neural network is that you can combine relatively simple, granular features (like individual pixels or words) into more complex combinations. Neural networks recombine simple features automatically, and then learn which groupings should be lent significance as signals through the backpropagation of error.
They're attracting all this hype because they actually do something amazing, albeit through brute force computation. Many in AI scoff at neural networks because they've been around a long time and have no particular elegance, but we're now in a historical moment where we have the hardware to make them work, and they're breaking records in almost every data type; e.g. images, sound, time series, etc.
So no, it's not a rebranding, it's a thing. We can now replicate the human faculty of perception with machines in many domains, and that's going to make the future quite weird.
[1] http://deeplearning4j.org/restrictedboltzmannmachine.html
The features can be layered. For example, speech recognition could have layers something like phonemes, morphemes, words, concepts, etc. building such featursets by hand is challenging, in deep learning the system learns useful features by detecting patterns.
Interesting that the most challenging technical task is among the first to be replaced by an algorithm ;)
Everything else is some subset of "machine learning" of which "deep learning" is also a subset.
Andrew Ng's course still contains fundamental knowledge necessary to understand the motivations and reasoning behind deep learning (along with a lot of background ML knowledge that isn't needed), though, so I think its a good resource to link.
But I think the rebranding makes some sense because it calls attention to a common characteristic shared by all the techniques that fall under the brand: They tend to learn their own feature transformations, which is cool because it means you don't have to put nearly so much effort into figuring out how to curate the input.
Are there openCL equivalents to the popular GPU-accelerated NN frameworks/libraries?
You only need to convince people when they have another choice.
Unfortunately, the focus at the Montreal lab that has a huge influence on its development seems to be (a) 'blocks' for a high-level DNN environment (which is very cool) and (b) CUDA-to-the-max (which is understandable, given Nvidia actively seeds research labs with freeby cards, and -- as evidenced by the article -- is putting a lot of effort into supporting deep learning).
rant start:
It's a shame that OpenCL doesn't get more love. Just the other day there was a cool Clojure GPU project (based on OpenCL) announced on HN. One of the comments was 'will you be building this for CUDA too?'. Rather than pressure open source writers to support closed systems, it would be better to pressure Nvidia to provide up-to-date OpenCL drivers. Newer Nvidia cards are at OpenCL 1.2. And the (somewhat old) OpenCL drivers are always there in an Nvidia install. But does Nvidia ever talk about that : No. It's entirely in Nvidia's interest to encourage everyone to talk CUDA-only. But on a GFLOPs/$ basis, and for the cause of Free, CUDA isn't the right way to go.
rant end.
Here's the current work being done on opencl: https://github.com/deeplearning4j/nd4j/tree/master/nd4j-jocl...
We'd love to get this finished. Bit more to do yet though...definitely looking for contributors here. You'll get opencl neural nets for free.
Looking forward to running these ourselves after our opencl support kicks in (only the kernels are written =/)
I plan on basing the work for open cl on our cuda work which is fairly well established at this point (mainly doing optimizations not much change in architecture)
I wouldn't be surprised if this turned out not to be accidental. I mean, it wouldn't work against NVidia for OpenCL to continue to be seen as the "slower option". So I'm sure their efforts to improve their OpenCL implementation aren't considered as important from a business point of view.
AMD cards are a lot cheaper, would be good to be able to use them for deep learning too - https://www.reddit.com/r/linux/comments/2zgpj8/15000_nvidia_...
And new fast, low power FPGA's from Altera support OpenCL. https://www.altera.com/products/design-software/embedded-sof...
Yeah, I think this is the previously mentioned float performance thing.