home >
Research&Insights >
Introductory Guide to Artificial Intelligence

The main goal of this guide is to provide intuition about theory, techniques and applications for people who want to learn AI. It consists of brief descriptions and links to explanatory articles and lectures. Each section contains basic materials to get the idea how it works. In the last section you can find additional books, courses, podcasts and other materials. You may also check out Playground to play with interactive examples. And, lets begin!

Contents:

Origins

Prerequisite Mathematics

No Free Lunch Theorem

Methods and Algorithms

Development

Real-world Applications

Additional Resources

Origins

Artificial Intelligence was born in attempts to imitate human intelligence. Take a look at it’s brief history. It’s not yet clear whether it is possible to mimic human mind, but we can definitely re-create some of it’s functions. At the same time the whole field of Cognitive Sciences received broad attention.

At the same time it raised a lot of concerns in society. Problems with machines taking over the world are somewhat overblown, but job displacement is a real concern right now. Take a look at Artificial vs Natural Intelligence to get a better idea in which dimensions computers are superior to us.

In a sense, all computers and even calculators represent a kind of AI. As one of the founders of the field said:

“As soon as it works, no-one calls it AI anymore.” ―John McCarthy

As computers become faster and methods advance AI is going to get smarter. Recent studies suggest that up to 50% of jobs are threatened in the next 5–10 years. Regardless of whether we can fully simulate our minds or not, AI will have significant impact on our lives.

Prerequisite Mathematics

In fact math is not strictly required, but you’ll need it to gain a deeper understanding of the methods. I would recommend to gain at least basic intuition in each subsection before going further. I assume that you are already familiar with school algebra. If not, you may take a look at this guide or find free high-quality textbooks on openstax.

First of all it is worth noting that Classical logic, to which we are all accustomed, could not represent most modern techniques. Thereby, you should understand the ideas of Fuzzy logic.

Second important topic is Graphs. This gentle introduction will help you understand the main ideas.

Linear Algebra

Linear algebra expands concepts and operations from common algebra to collections of numbers. They usually represent inputs, outputs and operation parameters. I recommend to start with this guide.

Next thing is Tensor. Tensor is a generalization of scalars, vectors and matrices to higher-dimensional objects. This video will give you an intuitive explanation of this concept.

Probabilities

Since we usually do not have accurate information about anything, we have to deal with probabilities. This post explains the very basics, while this series will give you a more complete understanding of probabilities, statistics and Bayesian logic. I recommend to go through at least the first three parts of this series.

Target Functions

Which are also called Objective, Cost or Loss functions. They represent the main purpose of our methods. Usually target function measures how well our algorithm is doing it’s job. Further, by optimizing this function we can improve our algorithm.

The most important ones are Mean Squared Error and Cross-Entropy. You can find a description of MSE and Mean Absolute Error in this post, and a description for Cross-Entropy and Kullback-Leibler divergence in this one.

Sometimes we cannot compute objective function directly and need to evaluate the performance of the algorithm in action. But those evaluations serve the same goal.

Optimization

After we built the target function we need to optimize it parameters to improve the performance of our algorithm. The common approach to optimization is Gradient Descent. You can pick up the intuition here and a more detailed description here.

There are many types of GD. One of them is Stochastic Gradient Descent, which takes only a subset of training data to compute loss and gradients at each iteration. Another important class of GD algorithms includes Momentum, which forces the parameters to move more in a common direction.

No Free Lunch Theorem

I’ve devoted a distinct section about it because this theorem conveys a very important idea: there is no universally effective AI method. In short, this theorem states that every problem-solving procedure has some computational cost for each task, and none of these procedures is better on average than others. While this theorem has not yet been proved in the most general case, practice has shown it’s significance.

Some methods may look particularly wonderful, but you still can’t eat them :)

So, we must choose the appropriate methods for each problem.

Common Methods and Algorithms

The main purpose of each method is to construct a good input-to-output mapping model for a specific problem. Furthermore, their combinations lead to even better solutions. Techniques like parallel search, stacking and boosting are helping to construct better models using mixtures of simpler ones.

While search methods usually require only problem specification, most Deep Learning algorithms need huge amounts of data. Therefore available data play an important role in the choice of methods.

I will describe the principal classes of techniques in a roughly historical order of development.

Classic Programming

Although programming is not considered as AI tech anymore, it was many years ago. A single program may perform simple addition of it’s inputs, which may not look like an intellectual activity. However, it may control the robot’s movements and perform complex operations.

You heard me right. Even HTML pages are a kind of AI.

Interpretable and strict specifications of this approach allow to combine hundreds and even thousands of different programs in one structure. However, this approach fails in most complex real-world scenarios. It is extremely hard to anticipate all possible input-output combinations in complex systems.

Rule-based and Expert Systems

Typical Expert System consists of knowledge base as a set of if-then rules and an inference mechanism. This tutorial will give you the general idea. Modern Knowledge Graphs are usually used for question-answering and natural language processing in general. You may get intuitive explanation of them here. While those methods are still used today, popularity of expert systems is falling steadily.

Search

In cases when you can define the space of possible solutions, search will help you to find a good one. This demonstrative introduction will give you the intuition behind the common search algorithms and how they are applied in game development. In addition, this tutorial will provide a more formal description. Despite the apparent simplicity, these methods can achieve excellent results in many domains when used properly.

Genetic Algorithms

Genetic or Evolutionary algorithms are a kind of search inspired by biological evolution. This post will help you understand the idea.

Machine Learning

In general, ML methods also use a kind of search, usually Gradient Descent, to find a solution. In other words they use training examples to learn/fit parameters. There are actually dozens of ML algorithms, but most of them rely on the same principles.

Regression, Support Vector Machines, Naive Bayes and Decision Trees are among the most popular and widely used.

Remaining subsections will describe the most prominent fields of Machine Learning.

Probabilistic Graphical Models

Those models learn statistical dependencies between variables in the form of a graph. This post will provide the general idea of PGMs. Nowadays they are actively replaced by Neural Networks in real-world applications, but still useful for the analysis of complex systems.

Deep Learning

In short, Deep Learning is a subset of ML methods which include many layers of representations. This post provides the general overview. One of the most beautiful properties of NN is that you can stack different layers in any combination. A high-level description of the constituent layers is usually called Architecture of the network.

Essential types of Neural Networks:

Feedforward

Recurrent

Convolutional (and different types of convolutions)

Among more specialized blocks, the Neural Attention mechanism is showing great results in many applications. Other plug-and-play blocks like Long Short-Term Memory or this one for Relational Reasoning are giving a lot of flexibility in architecture design. In this way you can easily create Recurrent Convolutional Network with Attention and other stuff.

Restricted Boltzmann Machines is a popular example of unsupervised learning networks.

Some techniques are designed to improve Generalization of neural nets and other ML models, which in turn positively affects the accuracy. The most popular of them are Dropout and Batch Normalization.

Other successful class of networks is Autoencoders. Their most famous application?—?Word2Vec. In addition, they are used to create representations for documents, knowledge graph entities, images, genes and many other things.

Another interesting example is Generative Adversarial Network, which can learn to produce convincing images, videos and any other type of data.

Many other types of NN are popular in literature but have relatively few real applications: Self-Organizing Maps, Boltzmann Machines, Spiking Neural Networks, Adaptive Resonance Networks and others.

Reinforcement Learning

Intuition behind RL was inspired by behavioral psychologists who observed that animals learn how to behave from rewards. This led to the development of methods that search for policy that leads to the maximization of rewards. This post contains the general overview of Reinforcement Learning.

A lot of RL methods were developed in the course of history. Among state-of-the-art techniques are Evolution Strategies, Deep Reinforcement Learning, Asynchronous Advantage Actor-Critic (A3C) and others.

Development

Since most modern systems use more or less the same hardware(GPUs and TPUs), in this section I will focus on software development.

Basics

Python is probably the best programming language for beginners. Is is quite universal for current AI methods and has many similarities with first successful AI language Lisp. Python has intuitive syntax and a huge community with tons of packages, tutorials and training materials.

I recommend to start with these courses by University of Toronto: Part 1 and Part 2. They cover topics from the very basics of programming to best practices in Python.

Data Science

Because AI methods are highly dependent on data, you need to be able to analyze and manipulate it.

This Data Analysis with Python and Pandas series will help you get a deeper understanding of datasets, while this Numerical Linear Algebra for Coders course will help you master important operations.

These Cheat Sheets contain descriptions of the frequently used functions for the popular Python libraries. It’s very convenient to have those while coding.

Machine Learning

I strongly recommend to start with Machine Learning course by Andrew Ng. It covers all the necessary math and basic methods: Linear and Logistic Regressions, Support Vector Machines, Principal Components Analysis, simple Neural Networks and others. The only important thing that is missing in this course is Decision Tree. This Decision Trees tutorial and more advanced Gradient Boosted Trees tutorial will fill this gap.

Now you can move deeper. This Practical Deep Learning for Coders course teaches how to use state-of-the-art DL techniques. In addition, this Deep Reinforcement Learning course from Berkeley will introduce you modern RL methods.

There are also ways to automate Machine Learning models design. But to get good results AutoML needs much more resources than manually constructed models, so it’s not widespread yet. In addition, while working on AI project you should consider possible safety issues.

Going through courses and tutorials is great, but to really understand the whole process you should take some real-world data and work with it. These resources will help you start:

Open-Source Projects

Some interesting simple examples to learn from:

Data Science IPython Notebooks?—?large collection of DS, ML, DL and other examples

TensforFlow Examples?—?TF tutorial with examples for beginners

Kaggle Kernels?—?thousands of open notebooks for Kaggle competitions

Datasets

You can use these open datasets to train your skills with different kinds of data:

Kaggle Datasets?—?700+ open datasets

Awesome Public Datasets?—?400+ open datasets

DeepMind Open Datasets?—?unique datasets used in DeepMind’s research

Real-world Applications

This section is mainly intended to provide inspirational demonstrations for developers. You can check out how AI systems are changing the world right now and which directions will be particularly relevant in the near future: Medicine, Military, Education, Science, Physics, Economics and many others.

Additional Resources

Everything listed below is free of charge, unless otherwise indicated. In addition, most courses offer paid certificates for students and workers which usually cost around 50–100$.

Google is always your best assistant. Also, Quora is an excellent place to find answers. For example, here people have suggested a lot of materials for the study of AI.

Book List

Artificial Intelligence: A Modern Approach by Stuart Russel and Peter Norvig (Not free!)?—?leading AI textbook

Artificial Intelligence: Foundations of Computational Agents by David L. Poole and Alan K. Mackworth?—?just great AI textbook

Deep Learning Book (in pdf, mobi and epub) by Ian Goodfellow, Yoshua Bengio and Aaron Courville?—?best DL textbook

AI Playbook by Andreessen Horowitz?—?practice-oriented AI book

Neural Networks and Deep Learning by Michael Nielsen?—?NN-focused book

Machine Learning Yearning by Andrew Ng?—?a book about how to build a production-ready ML project

The Emotion Machine by Marvin Minsky (Not free!)?—?great AI & CogSci book with an emphasis in theory by one of the fathers of AI field

You can also find additional ebooks on Machine Learning in this repository.

Online Courses

As the first courses in AI I would recommend Machine Learning by Andrew Ng and Artificial Intelligence by Ansaf Salleb-Aouissi.

Intro to Artificial Intelligence by Peter Norvig and Sebastian Thrun?—?fundamentals of AI

Intro to Machine Learning by Katie Malone and Sebastian Thrun?—?introduction to ML algorithms in Python

Deep Learning by Andrew Ng?—?specialization of 5 courses on neural networks and their applications in real projects

Deep Learning by Vincent Vanhoucke and Arpan Chakraborty?—?introduction to DL algorithms in Python

Neural Networks for Machine Learning by Geoffrey Hinton?—?comprehensive theory-oriented course on Neural Networks

Practical Deep Learning for Coders by Jeremy Howard?—?practice-oriented DL course

Cutting Edge Deep Learning For Coders by Jeremy Howard?—?2nd part of this course on state-of-the-art in DL

Convolutional Neural Networks for Visual Recognition by Andrej Karpathy?—?Stanford lectures (spring 2017) on

Convolutional Networks

Deep Natural Language Processing, Oxford 2017?—?comprehensive course on Deep Learning in Natural Language Processing

Deep Learning Summer School, Montreal (2016, 2017)?—?lectures on many Deep Learning topics

Creative Applications of Deep Learning with TensorFlow by Parag Mital?—?course on applications of DL in art

Deep Learning for Self-Driving Cars, MIT 2017?—?introductory course to the practice of deep learning for self-driving cars

Blogs

OpenAI Blog?—?focused on safety issues of AI

DeepMind Blog?—?“Solve intelligence. Use it to make the world a better place.” is a motto of DeepMind

Google Research Blog?—?latest news on research at Google

Facebook Research Blog?—?latest news on research at Facebook

Microsoft Next Blog?—?latest news on tech and research at Microsoft

The BAIR Blog?—?Berkeley AI Research platform

Intuition Machine?—?Deep Learning patterns, methodology and strategy

LAB41 Blog?—?findings, experimental results, and thoughts on data analytics research

Distill?—?the most clear Machine Learning research journal

Channels and Podcasts

sentdex?—?all kinds of tutorials with Python

DeepLearning.TV?—?simplified Deep Learning

Siraj Raval?—?learning DL with fun

Two Minutes Papers?—?short overviews of the latest research

The AI Podcast?—?podcast on different topics by NVIDIA

This Week in Machine Learning & AI?—?interesting interviews every week

By Egor Dezhic

北海|
永州|
察哈尔右翼中旗|
朝阳|
永定|
金秀|
中环|
涠洲岛|
冷水滩|
蓝田|
保德|
吉兰太|
务川|
清水河|
邵东|
即墨|
独山|
藁城|
太和|
西沙|
阿拉尔|
竹溪|
黄平|
泰来|
五指山|
沿河|
越西|
宜宾县|
富蕴|
野牛沟|
漠河|
邵武|
中牟|
阿拉善右旗|
屯昌|
亳州|
子长|
邓州|
宜宾农试站|
宁晋|
兰溪|
邵东|
金山|
川沙|
梅河口|
景洪|
海伦|
潮阳|
乐东|
耒阳|
北川|
当涂|
呼图壁|
增城|
鹤壁|
汪清|
天柱|
宁强|
资溪|
沙河|
内乡|
九寨沟|
耿马|
白云鄂博|
象山|
新建|
余姚|
天台|
武宁|
互助|
东明|
喀左|
德昌|
和静|
清原|
阜阳|
舍伯吐|
黑山头|
盐都|
乡城|
乌伊岭|
汕头|
台北市|
平潭|
秭归|
阿拉山口|
石首|
铜川|
玉山|
新民|
康定|
单县|
梧州|
桓台|
昭觉|
唐海|
原阳|
景德镇|
长顺|
南丹|
阿尔山|
师宗|
赤峰|
徐家汇|
汉川|
渠县|
万安|
秦安|
华县|
汪清|
蓬安|
武邑|
赤峰|
涞水|
屯溪|
宁都|
德钦|
贺州|
福贡|
华县|
杜蒙|
依安|
井冈山|
泰兴|
白云|
高州|
大武口|
庆元|
张北|
莱州|
柏乡|
利川|
铜梁|
赞皇|
浑源|
定西|
永城|
宁都|
眉山|
汇川|
红柳河|
澄城|
保定|
炉山|
中心站|
博山|
遵化|
铜陵|
河曲|
平潭海峡大桥|
荣昌|
化州|
方城|
兴国|
林口|
蛟河|
罗定|
龙口|
眉县|
阿鲁科尔沁旗|
富蕴|
中山|
晋城|
德格|
金塔|
土默特左旗|
宜章|
新都|
沁源|
响水|
昌平|
河津|
北镇|
曲沃|
奇台|
阿合奇|
遂宁|
阿克苏|
盈江|
梨树|
眉山|
闻喜|
鲁山|
唐海|
武冈|
通许|
绥中|
引水船|
璧山|
龙南|
蓬莱|
金山|
临夏|
苍南|
桓仁|
祁连|
尚义|
峨眉|
惠来|
草河口|
德清|
淄博|
嘉禾|
铁干里克|
内乡|
肥乡|
峰峰|
唐海|
南昌|
成山头|
深圳|
新干|
淮安|
苍溪|
泾川|
铁岭|
阿拉善左旗|
海门|
得荣|
崇明|
兴国|
马龙|
乌拉特后旗|
峨眉|
仙游|
巨野|
平遥|
东沙岛|
宁安|
纳溪|
尚义|
余江|
松原|
铁卜加寺|
阳春|
泰兴|
常州|
防城港|
燕尾港|
雷山|
东沙岛|
滑县|
茌平|
莎车|
泸县|
融水|
马尔康|
勐腊|
头道湖|
巴盟农试站|
任丘|
惠东|
荣成|
云梦|
庆云|
安阳|
洪江|
华容|
桦甸|
土默特右旗|
蒙山|
东阳|
浪卡子|
麻阳|
松溪|
吕泗渔场|
平潭|
中牟|
晋洲|
淮南|
洋县|
樟树|
五营|
靖安|
峨边|
沂南|
武冈|
高雄|
绥棱|
隆子|
仙桃|
绥阳|
襄垣|
垣曲|
双辽|
西丰|
吕泗|
海口|
万安|
天峻|
麻栗坡|
根河|
忻城|
焉耆|
鲁山|
溧水|
万宁|
宣化|
达州|
会泽|
新丰|
曲麻莱|
平坝|
达川|
瑞丽|
怀宁|
库伦旗|
商河|
秀山|
沂源|
昌吉|
石渠|
胡尔勒|
庄河|
义乌|
易县|
宜兴|
龙口|
吴江|
涡阳|
台儿庄|
宾川|
丽江|
红河|
顺义|
六库|
红原|
贵德|
本溪|
三穗|
黄陵|
内邱|
河池|
贵德|
罗甸|
海丰|
额敏|
九仙山|
华安|
伊春|
广河|
永城|
沙雅|
黄石|
塞罕坎|
古丈|
上川岛|
唐山|
罗甸|
平台|
揭阳|
英吉沙|
繁昌|
芒康|
平山|
泸州|
千阳|
六安|
安宁|
漯河|
赫章|
仁和|
莱芜|
炎陵|
石浦|
通江|
深圳|
双阳|
揭西|
射阳|
黎城|
根河|
遂宁|
淮滨|
龙泉|
临泽|
草河口|
民丰|
英山|
扶绥|
红河|
浦江|
汉寿|
建平县|
额济纳旗|
正阳|
夏河|
峰峰|
巴音布鲁克|
青河|
高雄|
南江|
景泰|
筠连|
恩施|
西峡|
平利|
雷山|
新沂|
沁县