Zero to Deep Learning with Scala
Day 0 — Premise
From ancient Greek mythos and science fiction, humans have long thirsted for machines that are capable of cognitive thought. Since the advent of modern computing people have conjectured that machines may become intelligent. Today the field of artificial intelligence fits snugly into a myriad of applications including medical diagnosis, stock trading, robot control, image and audio processing, scientific discovery and even toys. Funnily enough, some of the stuff that meatbags find difficult can be described by a list of formal, mathematical rules — which computers kick ass at.
This series is about finding a solution to the more difficult to describe elements of cognition, the stuff that comes from intuition. Just think about your everyday life, the amount of knowledge required about the world in order to operate is immense. On top of this, a vast majority of this same knowledge is subjective and difficult to articulate. Think about the question “What is a chair?”, you are fully capable of recognizing if something is a chair but quantifying an all encompassing description of a chair is something quite difficult.
“A chair is something that you sit on.” I can sit on a table, is a table a chair?
“A chair is a thing made or used for sitting on.” A beanbag is a thing made or used for sitting on, are beanbags chairs?
Which chair are we talking about? Perhaps we mean the person in charge of a meeting or of an organization.
Throughout the series we will cover a hierarchy of concepts that allow the computer to learn complicated ideas by building a series of byte size concepts. If we were to plot these concepts, we would have a graph with an astounding number of layers, this approach in AI is called Deep Learning. Victor Weisskopf (physicist and teacher, at MIT) said that ”it is better to uncover a little than to cover a lot”. We’ll try to follow this philosophy, beginning with the basic mathematical prerequisites including programmatic implementation. This enables us to build the required knowledge base necessary to begin tackling the problem domain that is Deep Learning.
Who should read this series?
Whilst the series can be useful for a variety of readers, I am writing this series with two main audiences in mind. The first of which is undergraduate university students, particularly with some programming experience that wish to learn about machine learning. The other is Software Engineers lacking statistical background or machine learning experience that wish to rapidly apply Deep Learning to their existing product or platform.
Scala has a huge number of resources, including The online class Functional Programming Principles in Scala, available on coursera.
For more, checkout the scala websites getting started pages. http://www.scala-lang.org/documentation/getting-started.html
Throughout the series we will be using:
The installation guides on the above sites are significantly more comprehensive than anything I could write here. We use activator as our build tool for development activities later in the series. Addition Tools will be covered upon use.
Personally, the IDE I use for Scala Development is Intellij, however use whatever you are comfortable with.
The next section in the series begins to introduce the mathematical components needed to achieve sufficient comprehension of material going forward. Kicking off with Linear Algebra, and its programmatic implementations. In closing, I am looking forward to this series and I’ll be doing a release every week or so. Stay tuned!