As software engineers, we should live and learn and keep abreast of evolving frameworks, standards, and paradigms. At the same time, but also live to learn and use, in the work of using the most appropriate tools, in order to improve work efficiency. As machine learning finds a place in more applications and more programmers join the FIELD, what skills do you need to work in the field?

How hot is ARTIFICIAL intelligence?

I believe that the reason why you can read this article also indirectly explains the popularity of artificial intelligence in recent years. Since the algorithm based on deep learning technology won the ImageNet competition in 2012, deep learning first swept the entire academic world, and then spread in the industry, all of a sudden, every major enterprise without AI departments are embarrassed to advertise. In BAT, Baidu announced “All In AI”, Alibaba established Dharma Institute and AI Lab. Tencent also announced “AI In All” at a recent meeting, and has Tencent Youtu, AI Lab and wechat AI Lab. On July 20, 2017, The State Council issued the Development Plan for a New Generation of ARTIFICIAL Intelligence, which raised artificial intelligence to a national strategy, made strategic deployment for China’s ARTIFICIAL intelligence industry, made a clear analysis of key tasks, grabbed major opportunities, and built a first-mover advantage in China’s artificial intelligence development.

Technology development tends to follow a predictable pattern of budding, hype, disillusionment, a steady climb as the technology matures, and finally a peak in adoption. Every year Gartner puts out a hype cycle report that analyzes emerging technology trends. Recently, Gartner released its 2017 Hype cycle report on emerging technologies. The report focused on three trends in front end, back end and platform development, and proposed that AI will be ubiquitous (ARTIFICIAL intelligence), experiences will be transparent and immersive (AR, VR), and platforms will be fully digital (blockchain). It is recommended that enterprise architects and those pursuing technology innovation actively explore and pay attention to these three trends to understand their future impact on their companies and their careers. In short, these three trends correspond to the familiar words I’ve highlighted in brackets. As you can see from the graph, the Internet of Things, virtual assistants, deep learning, machine learning, driverless cars, nanoelectronics, cognitive computing and blockchain are at the peak of hype. In fact, AR and VR belong to computer vision as well as artificial intelligence. Therefore, artificial intelligence will be everywhere in the future.

Gartner lists deep learning, reinforcement learning, conventional artificial intelligence, unmanned vehicles, cognitive computing, drones, conversational user interfaces, machine learning, intelligent dust, intelligent robots, intelligent working environment and other AI technologies. Many AI technologies are currently at the height of their hype, fuelled by attention-grabbing activities such as man-machine wars. Examples include deep learning, machine learning, cognitive computing, and driverless cars. A comparison of the hype cycle curve in 2016 shows that some concepts that were too far ahead of their time, such as smart dust, remain uncool. Some concepts have rapidly entered the phase of disillusionment due to excessive hype. Commercial drones, for example, were in the trigger phase last year and are on the verge of disillusionment this year. In contrast, deep learning and machine learning technologies, currently at the height of hype, are expected to reach technical maturity and model maturity within two to five years.

In addition to the popularity of artificial intelligence, we should pay more attention to software engineers, especially mobile developers, that is, mobile deep learning has gradually become a new research trend of deep learning. In the future, there will be more and more mobile applications based on deep learning. As developers, we understand that deep learning will help us develop excellent applications, improve our own capabilities, and actively seize opportunities to cope with various changes in the future.

What is Machine Learning (ML)?

The foundation of deep learning is machine learning. In fact, deep learning is only a branch of machine learning. So if we want to get into deep learning, we need to know some basic knowledge of machine learning. At its most basic, machine learning uses algorithms to parse data, learn from it, and then make decisions and predictions about real-world events. Unlike traditional software programs that are hard-coded to solve specific tasks, machine learning takes large amounts of data and “trains” them, using algorithms to learn from the data how to perform a task.

Someone once gave a very vivid example of when you wake up with voice recognition on your phone, have you ever thought about the whole internal process of implementing this feature? Most of the computer programs we interact with on a daily basis can be implemented using the most basic commands, but machine learning-based programs are not so simple. Imagine writing a program that responds to wakeup words like “Okay,Google,” “Siri,” and “Alexa.” What would you do if you wrote this program using only the most basic instructions in a room with just yourself and the code editor? Think about it… The problem is very difficult. You might imagine the following program:

ifinput_command==’Okey,Google’:run_voice_assistant()

But really, all you get is the raw speech signal picked up by the microphone, which is probably 44,000 sample points per second. How can we recognize speech content? Or, more simply, determine whether the signal contains a wake word.

If you’re stumped by this question, don’t worry. That’s why we need machine learning.

We don’t know how to tell a machine to convert a speech signal into a corresponding string, but we can. In other words, even if you don’t know how to program a machine to recognize the wakeup word “Alexa,” you can recognize the word “Alexa” yourself. Thus, we can collect a huge dataset containing a large number of speech signals and whether each speech model corresponds to the wakeword we need. With machine learning, instead of designing a system to accurately identify wakewords, we write a flexible program with lots of parameters. By tweaking these parameters, we can change the behavior of the program. We call such programs models. In general, our model is simply a machine that, in some way, transforms inputs into outputs. In the example above, the input of the model is a speech signal, and its output is a reply {yes, no} that tells us whether the speech signal contains a wakeword.

If we choose the right model, there must be a set of parameters that trigger a yes response every time it hears “Alexa.” There is also another set of parameters that trigger YES for “Apricot”. We want this model to recognize both “Alexa” and “Apricot” because they are similar tasks. As you can probably guess, if we randomly set these parameters, the model would not recognize “Alexa”, “Apricot”, or even any English word. In most deep learning, learning refers to the behavior of updating the model (by adjusting parameters) during training.

In other words, we need to train the machine learning model with data, usually as follows:

Initialize a model that does almost nothing

Grab some labeled data sets (such as audio passages and whether they are labeled wakeword or not);

Modify the model so that it can perform tasks more accurately on captured data sets;

Repeat steps 2 and 3 above until the model looks good.

What are machine learning algorithms? Essentially, machine learning takes algorithms that can learn from and predict data. These algorithms are often derived from statistics, ranging from simple regression algorithms to decision trees.

What are machine learning models? In general, it refers to model artifacts created after training machine learning algorithms. Once you have a trained machine learning model, you can use it to make predictions based on new inputs. The goal of machine learning is to properly train machine learning algorithms to create such models.

Machine learning has been widely used in data mining, computer vision, natural language processing, biometric recognition, search engines, medical diagnosis, detection of credit card fraud, securities market analysis, DNA sequencing, speech and handwriting recognition, strategy games and robotics. While the development of deep learning technology has also boosted the development of speech and text, the most significant change has been in computer vision. In addition, as the author is engaged in computer vision, there is no way to introduce too many details in the field of speech and natural language processing. Instead, I will briefly introduce the technical development and related applications in the field of computer vision. In the following experimental links, most of the image applications based on deep learning will be the main part.

Four elements of machine learning

For the task of wakeword recognition, we put speech fragments and labels together to form a data set. Then we train a machine learning model to predict the labeling of a given speech. This way of predicting annotations for a given sample is just a form of machine learning called supervised learning. There are many different approaches to deep learning, which we will discuss in a later chapter. Successful machine learning has four elements: data, a model to transform the data, a loss function to measure how good the model is, and an algorithm to minimize the loss function by reweighting the model.

Data (Data)

The more, the better. In fact, data is central to the resurgence of deep learning, because complex nonlinear models require more data than other machine learning.

Model (Models)

Often, the numbers we get are nowhere near what we want. For example, to know if someone in a photo is happy, we want a model that translates thousands of low-level features (pixel values) into a highly abstract output (happiness). Choosing the right model is not simple, and different models fit different data sets. In this book, we will focus primarily on deep neural network models. These models are called deep learning because they involve multiple layers of continuous transformation of top-down data. Before we discuss deep neural networks, we will also discuss some simple, superficial models.

Loss Functions

We need to compare the error between the output of the model and the real value. The loss function measures how well the output compares to the real data. For example, we trained a model to predict a patient’s heart rate based on images. If the model predicts a patient’s heart rate of 100 beats per minute when it is actually only 60 beats per minute, then we need some way to bring up the model.

Similarly, if a model predicts spam by scoring E-mail, we need a way to determine whether the model’s results are accurate. A typical machine learning process involves minimizing the loss function. Typically, a model contains many parameters. We “learn” these parameters by minimizing the loss function. Unfortunately, minimizing losses does not guarantee that our model will perform well when we encounter (unseen) test data. Therefore, we need to track two items of data:

Training Error: This is the error of the model on the data set used for training. Similar to the grades we get on the practice paper before the exam. Has certain directivity, but does not necessarily guarantee the real test score.

Test error: This is the error of the model on new data that has not been seen and can be very different from the training error (known as overfitting in statistics). It is similar to getting high marks in the mock exam, but failing in the actual test.

Optimization Algorithms

Finally, we need an algorithm that takes into account both the model itself and the loss function, searches for parameters, and minimizes the loss gradually. The most common neural network optimization uses gradient descent as an optimization algorithm. In short, change the parameters slightly to see how the loss of the training set moves. Then adjust the parameters in the direction of loss reduction.

What is deep learning?

This is a sub-field of machine learning that has shown great potential in recent years. It involves algorithms for the structure and function of neurons in the brain. Andrew Ng used the following figure to illustrate the characteristics of traditional machine learning algorithm and deep learning algorithm. As can be seen from the figure, with the increase of data, the performance of the deep learning algorithm will be significantly better than that of the traditional machine learning algorithm when it reaches a certain amount.

One of the most exciting features of deep learning is its performance in feature learning. The algorithm is particularly good at detecting features from raw data. A good example of this is using deep learning to recognize wheels in pictures of cars. The following chart illustrates the difference between typical machine learning and deep learning:

In the part of feature selection in machine learning generally need intervention of prior knowledge to design a good feature extraction method, such as a person know a wheel is round, generally appear in the transport, such as tires, wheel parts, based on the prior knowledge, people can select suitable wheels feature extracting method, to design a classifier to identify the wheels. Deep learning usually consists of multiple layers. They typically combine simpler models and build more complex models by passing data from one layer to another. Through the training of a large amount of data, a wheel recognition model is automatically obtained without the need for manual design of feature extraction. This is one of the main reasons that deep learning outperforms other learning algorithms as the amount of data increases.

With the development of deep learning, many companies open source excellent deep learning frameworks for the convenience of algorithm personnel to train models and adjust parameters. So far, the main deep learning frameworks are shown in the figure below. At present, Caffe and TensorFlow are widely used in the industry. Caffe is mainly used in computer vision. TensorFlow is open source by Google, with good related documents, a wide range of application, based on Python voice, and easy to get started. It is recommended that beginners choose TensorFlow. However, these are only the platform framework of deep learning. What really matters is to learn the theory of deep learning well. With the theory, all kinds of platforms are not a problem.

TensorFlow profile

TensorFlow is a Python library for fast numerical computation designed specifically for machine learning. It is open-source by Google and aims to bring deep learning to more researchers and developers around the world. In order to accelerate the development of deep learning field, On November 9, 2015, Google released the deep learning framework TensorFlow and announced open source. Within a year, TensorFlow has become the most popular deep learning project on GitHub.

TensorFlow is widely used in computer vision, speech recognition, recommendation systems and natural language processing. Tenforflow has only been open source for a year, but it is seeping into everyday life at a rapid rate. It supports Linux, Windows, Mac, and even announced plans to release a mobile platform. Secondly, TensorFlow provides very rich APIS related to deep learning. It can be said that among all current deep learning frameworks, it provides the most comprehensive APIS, including basic vector matrix calculation, various optimization algorithms, realization of basic units of convolutional neural network and cyclic neural network, and auxiliary tools for visualization, etc.

You can install TensorFlow by following the official tutorial, and once installed, you can train your machine learning model with the various apis it provides. Specific tutorial can reference TensorFlow website http://www.tensorflow.org/, can also don’t want to see English reference TensorFlow Chinese community (http://www.tensorfly.cn/).

While TensorFlow is the most popular machine learning library, there are several other great options, such as Torch(used by Facebook), Caffe(from the Berkeley AI Institute’s deep learning framework), and more. Caffe is the first open source deep learning framework widely used in the industry and the most popular of the first generation of deep learning frameworks. It is also used by many enterprises and researchers.

Learning materials

Once you know the basics, you should know which aspects of machine learning you are interested in, whether you want to use machine learning in an application, or whether you want to study machine learning. Here are some excellent references to help you learn systematically.

books

Deep learning technology is evolving fast, platforms and frameworks are evolving fast, and it’s hard to recommend books about it. I only recommend two books here:

The first book is Vernacular Deep Learning and TensorFlow, which is very easy to understand without much introduction of theoretical knowledge. It is basically the basic knowledge of deep learning and related routines of TensorFlow. It is suitable for those who do not have the foundation of deep learning and want to start deep learning.

The second book is “Deep Learning” written by Ian Goodfellow from The United States. There is a Chinese translation of “Deep Learning”, but this book is basically about Deep Learning theory, it is difficult to understand without basic knowledge, but the translator provides a PDF on GitHub, you can download it if you want to read it: https://github.com/exacity/deeplearningbook-chinese

Network resources

For starters, I find many online manuals, tutorials and blogs are great. This article is aimed at zero-based people who want to learn about Deep Arning. It is not recommended for the time being because it is too complex and professional. Here are some basic resources for getting started.

DeepLearning online course: this is the first course of deepplearning. ai after founding the online education website deeplearning. ai, netease cloud classroom introduced, you can learn some engineering, and relevant certificates. http://mooc.study.163.com/smartSpec/detail/1001319001.htm.

Don’t worry about Python: This is a Chinese PhD student in Australia who will be teaching Python and deep learning tutorials with videos. Python is basically a must-know language for deep learning now, if you like, you can go here to learn. https://morvanzhou.github.io/about/

Taiwan professor Li Hongyi online courses: http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html, there is one more than 300 pages of PPT, comparison system, also the most easy to understand: http://www.slideshare.net/tw_dsconf/ss-62245351.

TensorFlow Chinese community: http://www.tensorfly.cn

Want to learn caffe framework, also can reference Xu Qihua blog: http://www.cnblogs.com/denny402/tag/caffe/

conclusion

“The whole world is a big data problem” — Andrew McAfee

Mastering machine learning is like taming a beast. However, if you have it figured out, it can be a very valuable resource on your side. That’s all I can think of for the moment. May we all make progress together…

P.S.

Xiaobian has collected many learning materials related to artificial intelligence to help you understand and explore the industry. I also hope to help programmers find their own way of learning.

Long press to identify the QR code, follow FlyAI(FlyAIWX), background reply keyword learning access resources.

End