Deep learning libraries, defining the terms.
My first steps into the world of A.I.
Intro
In part 1, I began learning some basic libraries for computer vision, (OpenCV, Numpy) in the hopes that it will help me transition into my company’s workflow. After becoming familiar with the environment, it was clear that my next steps were to start some practice with other libraries related to deep learning.
In particular, TensorFlow. This is because it has been growing in popularity recently and has gathered a visible amount of documentation as well as a community. For a beginner like me, there’s no better way to begin my research
Tensorflow is a library developed by Google, with a focus on simplifying the streamlined process of Deep Learning. The most shocking thing I heard when researching this library was the fact that you could finish the streamline in about 7 lines of code.
As easy and simple as that sounds, I could only imagine the amount of tear and sweat that went into compressing all those calculation into a single line. Empathetically, I salute you, the professional developers of this field.
At the same time, I realized that it might seem easy visually, but the underlying principles that drive the core concept were much more complex.
Relatively, this is a very new and young library. However, their official tutorials are quite complete and provide some great examples to practice with.
There is a dataset called MNIST often used for introduction and testing purposes in Machine Learning, it is referred to as the equivalent of “Hello World” in traditional programming. The dataset contains several sets of images of written digits, they are labelled data for training and validation. Without collecting the data personally and having it organized already in a convenient format meant that the rest of the process really didn’t seem hard. The library came with built-in models and activation functions out of the box, none of which looked like any sort of funky math.
Threes and Branches
Before anything else, I felt that I have to first understand the difference and relationship between these terms: “Machine Learning”, “Deep Learning”, and “Artificial Intelligence”.
Simply put, they are all part of the same tree, but different branches. The largest and most broad of these is “Artificial Intelligence” or A.I as it basically describes the state of most modern technology. The concept of A.I. has actually been around for quite some time, if anything other than a living organism can display individual or a set of intelligent traits, it can be classified as A.I. For example, humans rely on basic skills such as decision-making, learning, and planning, which indicate intelligence. In the scenario that a robot can also exhibit one or more of these traits, then it may be called artificial intelligence.
Inside the tree of A.I., there is one branch called “Machine Learning”. This branch focuses on the ability of machines to learn. Similar to how humans learn, machines require some input data to process, and that in turn transforms into some type of knowledge and is stored in memory. When a problem appears and one machine has a viable solution in memory, whereas compared to a machine that has never seen a problem like it before, will be able to produce the answer faster.
At its core, Machine Learning is very simple and straightforward, it is the machine spending time to “Study” a group of data and then answering certain questions with what it learned. When the machine answers a question, we rate the correctness of the answer by how far it is from the actual right answer, the measure is referred to as the “Error”. We then provide feedback to it by making the right adjustment so that the next error is smaller.
There is a certain subset of Machine Learning which focuses on improving the “Study” aspect by creating many neural layers, where many algorithms are stacked together to help the machine learn more efficiently, this is called “Deep Learning”.
It’s often hard to define Machine Learning and Deep Learning separately because they are actually reasonably similar and work under the same principles.
In Deep Learning, it is common that the machine processes the same batch of data multiple times before moving onto the next batch. In many ways, this is a method to help the machine notice complex patterns inside huge chunks of data.
The most notable difference between Machine Learning and Deep Learning is their learning capabilities. While they both rely on trial and error over time to become experienced, a Deep Learning machine is able to check with itself if the produced result is correct, and then make adjustments without human intervention.
Deep Learning is especially popular for purposes such as image recognition and is associated with another branch called “Natural Language Processing”.
The process which lets the machine learns from a large amount of data is often referred to as “Training”. As the machine begins training itself, it will start passing the input data into the initial neural layers, and once those layers are done with the data, they pass it to the next, and so on.
This stack of neural layers combines to form what’s known as a “Neural Network”, which serve as the basis for a Deep Learning computational model.
The overall composition and building of this model are actually quite complex, but there is a high-level API called “Keras” which focuses on the construction of deep learning models and specializes in training neural networks. Keras, when used together with Tensorflow is the industry standard of a “Universal toolset” for Deep Learning.
That’s it for this part, please look forward to the next!