The master's program in AI I was referring to is only available in French (Laval University, Québec City).
The chip design expertise is provided by most electrical engineering departments, with courses usually named VLSI design, FPGA/ASIC development or microelectronics.
If you apply for a master's degree (in AI, for example), you can often mix-and-match speciality classes and ask for those chip design courses to be added to your cursus.
If you are a hands-on person curious about the matter, you can buy an FPGA (~50$ for entry-level) and follow a Verilog or VHDL tutorial online. Quickly put, an FPGA is a chip that can be "rewired" at will, very useful to learn or prototype before building a production chip.
In my university, both machine (and deep) learning and FPGA + chip design are specialties of the electrical engineering department. We just launched earlier this year an industry-oriented AI masters degree. Taking your extra classes in chip design would give you a solid foundation to perform this.
As a complement of information, the question of colorization was recently revisited using deep learning methods [1]. All very interesting work!
[1] Zhang, Richard, Phillip Isola, and Alexei A. Efros. "Colorful image colorization." European Conference on Computer Vision (2016) http://richzhang.github.io/colorization/
Human vision works well because our brain has an incredible quantity of priors to guide it, that is similar past experiences that explain most of what we are seeing. When your eyes see something, only a small amount of information is passed to your brain (like motion, for example). Your brain "fills up" the missing pieces with what he's used to. That's why we don't see the blind spot created by our optical nerve entrance in the eye and often miss things that are hiding in plain sight without motion.
Illusions are due to the deception of our vision priors. Our brain expects something, makes you see something this way, but it's not what is happening in reality (maybe because it was engineered to deceive those expectations, as the images in this thread link). This is because the mental model we have of a standard "sight" doesn't model well those examples, our brain was not trained to work this out, I guess because it has no advantages in doing so (in terms of evolution or learning as a kid). Our brain is only trained to extract information efficiently on "plausible images" (lit by sun-like light, taken on the earth, etc.), you can't feed it random noise or it will try to explain it with things it knows (which is called Pareidolia).
In machine learning vision, we re-learn, usually from scratch (or fine-tune), at each experiment. This generates (or modify) the priors learned. Think of the priors as the "default(s)" image (in terms of complex internal representation, not in terms of pixels) that helps you think about the problem at hand. If you have a motion detection/tracking problem, this optimal default information representation will be different from the default information most useful for classifying or segmenting.
What I want to say with those examples is that machine learning computer vision is prone to illusions, that is images that defeat (are too far away, or not well explained by) its internal representation space and/or default representation. Also, each algorithm (let it be neural networks, SVM, or anything, really) has a different internal representation, so different images will be illusions for them. An illusion for one model won't necessarily be an illusion for another one.
The thing is, we are far from mastering advanced machine learning, in the sense that we don't have optimality proofs for capacity, architecture and filters on deep neural networks for a given task, for example. There's a lot of recent research on those illusions--for example, adversarial examples or networks. It seems to indicate that those illusions are far from human vision illusions and seems to be due to the mathematical nature of machine learning, for example adding small noise (sometimes with a lower magnitude than the smallest representable value by standard images formats!) to a correctly classified image can result in a wrong and very certain prediction. The most proeminent viral example of this on the internet was the school bus becoming with high certainty an ostrich after some small noise was added to the image. Other examples can be found in the introduction of [1].
The best answer I can provide is: The code is there. There are no heuristics in it. Everytime you run it, you get different results (because of random initialization seeds and the stochastic nature of EA). It may find the (a - (x >> 1)) equation on a specific execution, or not. Over the runs I made, this equation (or similar) was the most popular and nothing come close to it. In fact, it finds a lot of other optimizations; either less accurate or way more complex. I remember getting tens and tens of operations in equations with "bof" accuracies.
That is the exact goal of the post. I arrived to the algorithm through evolution with random initialization. I enforced absolutely no heuristic to make it converge to this equation.
Everything is on default from Blogspot. I only put the Gist source code displayer and the LaTeX math javascript.
If anyone is offering a new design, I would gladly take it... As long as I can concentrate on the content and not the container.
This is really interesting. I'll be sure to include these references in my next blog post on the subject.
The goal of the post was to find the equation from scratch, though. As it can be seen, the constant optimization was less the spotlight of the post.
It's javascript that loads the Gist into the page. You may have NoScript or similar that prevents the loader to fetch the code.
The first code is the one from the Wikipedia page (fast inverse square root) and the second is this one:
https://gist.github.com/soravux/9673839
We are currently using ZeroMQ in our distributed task framework in Python, SCOOP (http://scoop.googlecode.com).
ZeroMQ was chosen as the communication library because it simply works and isn't bloated. No need to implement the state-machines for common patterns in our sockets, ZMQ does it and fast. It doesn't replace a standard socket, though, it only add a layer of functionalities over it.
While using it, we found some minor negative point such as delays needed by the socket upon shutdown, which require sleeps between unit tests, or the random port connector that is not random... But overall, ZMQ is a tool that saved us much developing time and should not be overlooked by distribution systems.
The chip design expertise is provided by most electrical engineering departments, with courses usually named VLSI design, FPGA/ASIC development or microelectronics.
If you apply for a master's degree (in AI, for example), you can often mix-and-match speciality classes and ask for those chip design courses to be added to your cursus.
If you are a hands-on person curious about the matter, you can buy an FPGA (~50$ for entry-level) and follow a Verilog or VHDL tutorial online. Quickly put, an FPGA is a chip that can be "rewired" at will, very useful to learn or prototype before building a production chip.