How does a complete beginner get into AI development? What learning resources does he/she use along the journey to learn about artificial neural networks, the basic AI algorithms, the simplest machine learning models and all that?
“How important is a solid math background?” "And what programming language should I learn/deepen my knowledge of?”
Here's a step-by-step guide for a complete beginner to AI, that should put you on the right track, so can you get started with AI software development... the right way:
1. A Solid Background in Mathematics Is Just... Crucial
Just think about it:
- machine learning comes down to... linear algebra
- you need at least some basic knowledge of calculus for training neural networks
And there are a few more topics that you should add to the list:
- probability and statistics
- various algorithms
Learn as much math as you can before you jump into the best courses and other learning resources on AI that you can find.
It will greatly help you...
2. Narrow Your Focus: What Do You Want to Build?
Clearly articulate your goal, make it fit into one simple sentence:
"To develop an algorithm that predicts a person's blood pressure", for instance.
It's only then that you'll be able to:
- break your task/problem down into smaller parts
- narrow your focus (for AI is a discouragingly broad term)
- identify the specific resources that you'll need
3. Learn By Doing: Try to Solve a Simple Problem for a Start
In other words: try writing a simple neural net first, then gradually focus on more complex ones.
As a start, tackle an easy problem. Experiment with multiple approaches for harnessing algorithmic decision-making while trying to solve it.
Get into AI software development by finding the quickest solution to a given problem:
Train a simple machine learning algorithm and evaluate its performance.
Next, level up your knowledge by optimizing your basic solution. Experiment with upgrading various components and monitor the resulting change.
Try your hand at:
- building your own simulator
- writing the AI code for games like Sudoku or Tic Tac Toe
- developing code for pattern recognition
4. Get Started with Deep Learning: Learn About Artificial Neural Networks
As a newcomer, you must be particularly interested in deep learning, am I right?
Now, if you want to explore this machine learning method, you'll need to get familiar with the basics of artificial neural networks.
In this respect, you might find this online resource here on Deep Learning enlightening enough.
As for the open-source framework to use for testing the newly acquired skills you have:
- Google-powered TensorFlow, by far one of the most popular ones; a Python-based one
- Theano, Scikit-learn, Keras, all Python-based frameworks, as well
- Deeplearning4j, a Java framework
5. Choose Your Programming Language: Consider Performance and Libraries Availability
“What programming language should I learn to get started with AI development?”
Actually, choosing the language is not that important.
Go for a mainstream language (although you can still do ML/AI with lesser popular languages, as well). One that:
- provides you with lots of tools and high-quality libraries
- stands out in terms of performance
So, it could be either Python or C++, either Java or C or Octave. Each one has its own strengths and limitations when it comes to performance and libraries availability.
6. Learn Computational Learning Theory to Get into AI Development
And this is particularly important when you delve deep into the field of Natural Language Processing.
7. Build a Powerful Computing HardWare or Use a Cloud-Based One
Expect some significant hardware requirements for running artificial intelligence and implementing machine learning.
A powerful hardware system, using a bundle of CPUs and high-performing GPUs is a must if you're thinking:
- considerably big models; you'll be testing lots of alternative models before you decide on the final one
- more and more complex experiments that involve harnessing the power of AI
And here, you have 2 options:
- you either put together your own powerful enough supermachine
- you go with a cloud-based alternative
Speaking of the latter, here are 2 cloud computing platforms to consider:
- Cloud TPU: a Google-powered hardware custom designed specifically for carrying out tensor operations in a more efficient way than a GPU or CPU
- Google CoLab: a Jupyter notebook environment that doesn't need any setup; you get quick access to the cloud-based GPU for running your scripts to
8. Get Familiar with Most Machine Learning Algorithms
If you're determined to get into AI development you should be/get comfortable with:
- support vector machines (SVM)
- recurrent neural networks (RNN)
- deep learning (DL)
- a whole lot of other decision trees and random forests
There's no shortcut here!
9. Enter a Kaggle Competition
Put your newly acquired skills to the test!
Commit to solving the problems that other AI developers are working on by participating in a Kaggle competition.
Test out multiple approaches and go with the most effective solution.
Not only that you will get to test your skills in AI software development but your collaboration skills, as well:
You'd be joining a large community, asking questions on an AI-focused forum whenever you get stuck while learning artificial intelligence, you'd be sharing your groundbreaking ideas and so on.
10. 2 Free Online Courses to Try Your Hand At
One of the questions at the beginning of this post has been:
“ What learning resources does he/she use along the journey to learn...”
So, here I am now, ready to give you 2 recommendations:
- Stanford University – Machine Learning: Google Brain's founder, Andre NG, is teaching this course; it's loaded with real-time examples of AI-driven technologies, with valuable information that will help you gain a better understanding of how neural networks learn...
- Learn with Google AI: a Google-powered project including a machine learning course for newcomers (incorporating the TensorFlow library as well)
Sure hope these 10 tips will help you grow more confident and eager to get into AI development.