Ask HN: What is the skillset for programmers at AI startups?
* OpenCV
* Neural networks
* R
* Machine learning
* CUDA
* something else?
* OpenCV
* Neural networks
* R
* Machine learning
* CUDA
* something else?
If you have a company that is doing genuinely interesting AI work, it's likely that they are somehow on the forefront of research, pushing existing tools to do things that they can only barely do. If you find yourself in an AI role (typically only some roles actually do AI, of course -- systems need to stay up, great UIs need to be built, etc.), I would guess that you'll need to familiarize yourself with their particular toolsets and methods rather than assuming that there are universally correct things to go learn.
* The Python scientific stack for prototyping, data manipulation, etc. (Ipython, matplotlib, numpy, scipy, pandas, scikit-learn).
* Tensorflow for training NNs.
* Everything gets ported to C++ once it's ready to be integrated into the codebase.
* I work on the automated interpretation of EEGs, so I use our software (Persyst) to actually visualize the EEGs and see what's going on in the data at the ground level.
My boss is a big fan of Statistica for data manipulation and NN training. I've been learning it, but I have a natural affinity for Python.
I think you'll find that the tools you need will be pretty dependent on what you're doing, though. I deal with relatively small datasets (~100 EEG records, ~dozens GB total) and the NNs need to be well understood. So we use small NNs and spend a lot of time poking and prodding them to make sure that they're behaving the way we expect them to. If you're working on much larger datasets and are more willing to tolerate the NN acting as a black box you'd have to use a different set of tools (bigger NNs, more complicated NN architectures, GPUs for training, etc.).
* Epileptogenic spikes
* Seizures
* Eyeblink artifacts
* Muscle artifacts
* Movement artifacts
* Electrode artifacts
* QRS complexes
We are working on many more features:
* Sleep staging
* Other artifacts
* Bringing seizure detection to human-level performance
* K-complexes, sleep spindles and other features of sleep
The ultimate goal is to analyze and mark an EEG record the same way that an expert neurologist woul neurologist would.
It's a little tricky in practice because EEG interpretations aren't always cut-and-dried. Some neurologists will mark a section as a seizure and others won't, or they'll mark the starting times and ending times differently, so you have to score the seizure with a "perception index" that varies from 0 to 1 instead of just being a binary yes/no. Sometimes a record has a very large number of spikes, so the neurologists will often miss a lot of them, so you also don't want to penalize your NN for catching real spikes that were mislabeled, etc. We have to spend a fair amount of time thinking about the specific cost function we want to optimize.
* So obviously Java, Scala, Clojure, and lower-level languages like C++, C and CUDA.
* Since deep learning needs very large datasets to train on, our engineers need experience with open-source libraries used in production environments, such as Hadoop, Spark, Kafka. We also work with Lagom, Nifi, etc.
* A lot of the same math underpins many machine learning and deep learning algorithms. So a high degree of comfort with linear algebra, calculus and probability is a plus.
* A general knowledge of the strengths and weaknesses of various algorithms -- neural networks, reinforcement learning, etc. -- their combinations and applications is helpful.
The Github repos are here if you're curious:
If you want to start with CUDA, you can buy EC2 instances with GPUs and pay for time used.
If you want to start with deep learning, you don't need GPUs or CUDA. All the popular frameworks work fine on CPUs. GPUs are not guaranteed to accelerate all deep learning use cases; sometimes the time taken to transfer data to and from GPU dominates the time taken to process that data.
If you want to start with deep learning using an AMD GPU, Theano has support for OpenCL which is an alternative to CUDA. But as I understand, this support still remains limited and incomplete.
OpenCL library to train NN. This could be an alternative to Theanos.
I don't know how it's progressing (as I haven't checked it's status for a while), though, but some [2-3] GitHub issues might be worth checking out.
[1]: http://deeplearning.net/software/theano/tutorial/using_gpu.h... [2]: https://github.com/Theano/Theano/issues/2936 [3]: https://github.com/Theano/Theano/issues/1471
Also, we're in Montreal and we're hiring :)
The current AI boom is led by the fact that deep learning works.