13
$\begingroup$

I am a software engineering student and I am complete beginner to AI. I have read a lot of articles on how to start learning AI, but each article suggests a different way. I was wondering if some of you experts can help me get started in the right way.

A few more specific questions

  1. Which language should I focus on? A lot of articles suggest Python, C++ or Lisp for AI. Can I use Java instead of any of the other languages mentioned?

  2. What kind of mathematical background should I have? During the first year, I did discrete mathematics, which included the following topics: sets, matrices, vectors, functions, logic and graph theory (They taught these topics briefly). Are the are there any more topics that I should learn now? For example, calculus?

If possible, I would appreciate any resources or books I could use in order to get started, or maybe you guys can give me a detailed procedure I can follow in order to catch up with to your level.

Note: For now I would like to focus on neural networks and machine learning. After I that I would like to explore robotics and natural language processing.

$\endgroup$
14
$\begingroup$

Artificial Intelligence is a very broad field and it covers many and very deep areas of computer science, mathematics, hardware design and even biology and psychology. As for the math: I think calculus, statistics and optimization are the most important topics, but learning as much math as you can won't hurt.

There are many good free introductory resources about AI for beginners. I highly recommend to start with this one: http://aiplaybook.a16z.com/ They also published two videos about the general concepts of AI, you can find them on Vimeo: "AI, Deep Learning, and Machine Learning: A Primer" and "The Promise of AI"

Once you have a clear understanding of the basic AI terms and approaches, you have to figure out what your goals are. What kind of AI software do you want to develop? What industries are you interested in? What are your chances to get involved in projects of big companies? It's easier to pick up the right tools when you know exactly what you want to achieve.

For most newcomers to AI the most interesting area is Deep Learning. Just to make it clear, there are many areas of AI outside of Machine Learning and there are many areas of Machine Learning outside of Deep Learning. (Artificial Intelligence > Machine Learning > Deep Learning) Most of recent developments and hyped news are about DL.

If you got interested in Deep Learning too, you have to start with learning about the concepts of artificial neural networks. Fortunately it's not too difficult to understand the basics and there are lots of tutorials, code examples and free learning resources on the web and there are many open-source frameworks to start experimenting with.

The most popular such Deep Learning framework is TensorFlow. It's backed by Google. Love it or hate it, it's a Python based framework. There are many other Python based frameworks, as well. Scikit-learn, Theano, Keras are frequently mentioned in tutorials too. (A tip: if you use Windows you can download WinPython that includes all of these frameworks.)

As for about Java frameworks, unfortunately there are not so many options. The most prominent Java framework for DL is Deeplearning4j. It's developed by a small company and its user base is much smaller then the crowd around TensorFlow. There are fewer projects and tutorials for this framework. However, industry specialists say Java based frameworks eventually integrate better with Java based Big Data solutions and they may provide a higher level of portability and easier product deployment. Just a sidenote: NASA's Jet Propulsion Laboratory used Deeplearning4j for many projects.

If you decide to go with the flow and want to start learning more about TensorFlow, I recommend you to check out the YouTube channels of "DeepLearning.TV", "sentdex" and "Siraj Raval". They have nice tutorials and some cool demos. And if you decide to take a deeper dive, you can sign up for an online course at udacity or coursera.

It also may be interesting to you to know that there are other Deep Learning frameworks for the Java Virtual Machine with alternative languages, for example Clojure. ( Clojure is a dialect of LISP and it was invented by John McCarthy, the same computer scientist who coined the term "artificial intelligence". In other words there are more modern and popular programming languages and tools, but it's still possible /and kinda cool/ to use the language for AI that was originally designed for AI. ThinkTopic in Boulder and Freiheit in Hamburg are two companies that use Clojure for AI projects. And if you want to see something awesome to get inspiration to use Clojure in AI and robotics, I recommend you to check out the YouTube video "OSCON 2013: Carin Meier, The Joy of Flying Robots with Clojure". (Mentioning Clojure in this answer was just an example to show you there is life outside of the bubble of Python-based AI frameworks.)

(+++ Anybody feel free to correct me if I said anything wrong. +++)

$\endgroup$
  • $\begingroup$ Since there is less frameworks for Java, is it possible to write my own frameworks for it, which I can use as a substitute for TensorFlow? Thanks $\endgroup$ – aspire29 May 25 '17 at 18:26
  • $\begingroup$ Creating your own framework to study the basic concepts is a very good idea. On the other hand, TensorFlow is developed by a huge community and a lot of very talented professionals. Honestly I don't think any homemade framework can successfully compete with it. Btw, I don't understand why there are so few Java AI frameworks... considering it's still the no.1. programming language and JVM is just about everywhere. I guess AI is still rather about research than production. $\endgroup$ – akopacsi May 25 '17 at 19:41
5
$\begingroup$

You'll find that both Calculus and Linear Algebra have some application in AI/ML techniques. In many senses, you can argue that most of ML reduces to Linear Algebra, and Calculus is used in, eg. the backpropagation algorithm for training neural networks.

You'd be well served to take a class or two in probability and statistics as well.

Programming language choice is less important, IMO. You can do AI/ML in pretty much any mainstream language, and plenty of non-mainstream languages. The biggest difference involve performance, and availability of libraries / tools. C++, for example, is usually going to outperform Java or Python and it lets you get "close to the metal" to really maximize the capabilities of your hardware. Python, however, has a really good FFI, and is often used in conjunction with C or C++. Python, C++, Java, R, Octave/Matlab and a few other languages tend to have lots of high quality libraries available, which may be important to you depending on what you want to do.

That said, you probably don't want to try and do ML / AI in, say, COBOL or PL/I or RPG/400 or something. Stick to something at least reasonably popular. Poke around mloss.org and look at what libraries / toolkits are available in different languages and that should help guide your choice.

$\endgroup$
4
$\begingroup$

When I got interested in AI, I started with the most basic things. My very first book was Russell&Norvig's Artificial Intelligence- A modern Approach. I think that's a good place to start, even if you're mostly interested in Deep Nets. It treats not just the basic AI concepts and algorithms (expert systems, depth-first and breadth-first search,knowledge representation,etc.) but also the fundamental mathematics (Bayesian reasoning, First Order Logic, NL n-grams, etc.) and some commonly known problems (as Traveling salesman problem for example).

It may also be a good idea to learn statistics, since you are particularly interested in ML. After the mentioned book, you should also have a good idea about what to learn next.

  • Don't care too much about the programming language.

It's much more important to understand programming itself and the related techniques. Learn something about data structures, algorithms, and the different programming paradigms (like OOP, Functional Programming, etc.). Try to understand the logic behind programming and not just a particular language. After all, learning a new language isn't that hard once you understand how to program (then learning a new language is just more or less syntactic sugar).

$\endgroup$
  • 1
    $\begingroup$ I did a slight edit for readability and added a link to the textbook. Good advice, especially re: programming languages. (Look to the coders who work in "any language with syntax" :) Really comes down to what is most optimal or convenient for a given project or task. $\endgroup$ – DukeZhou Mar 9 '18 at 19:04
2
$\begingroup$

To start AI first of all understand what is AI. Why MNIST's accuracy increase rapidly after 2012. Why machine learning need AI to increase its accuracy.

To start and build Application on Machine learning with AI you didn't need maths or some kind of rocket science. You are late my bro people build shortcuts for all machine learning problems like a wrapper. You just need to pass data to a method and method will do all shit. Start with MNIST's problem its exciting. Read about MNIST's history use basic algorithm on it. Try Linear Regression, Logistic Regression,Kmean clusting, KNN . Tools for Machine learning Skite learn (python lib) or Tensorflow ( python lib)tflearn(higher level api of Tensorflow like a wrapper) Both are open source. Examples are available on GitHub . Start searching on GitHub. You found a great example. For both lib. Use kaggel to solve problem participate in comptition.

When you complete all above algorithm try to focus on your your error. Now AI came in roll . Try to figure out how neural network help you to decrease error and increase accuracy. Then try some basic neural network like sigmoid , relu and cnn. Don't forget to use dropout in your neural network. You can use Tensorflow or keras or Tensorflow with keras

Side by side check 3 Blue 1 Brown's Linear algebra video's to improve your maths. once a day but everyday one video.

And now focus on maths behind the logic(any algorithm) You can try andrew ng machine learning course.

Use Tensorflow for building Android app,IOS app, RaspPi Check Tensorflow dev summit 2016/2017.

Or if you need crash course then check this https://youtu.be/u4alGiomYP4

$\endgroup$
  • 1
    $\begingroup$ Let's get clear, AI is not all about reading html book and u start programming,lets get clear here,! OP needs to consult professors from Oxford,harvad etc $\endgroup$ – quintumnia May 26 '17 at 19:08
  • $\begingroup$ I never say its just like to read html books. Why open source community develope tools like skite learn ,tflearn for direct complimentation. If someone start from these tools then he can't learn anything. You have to understand algorithm to learn things. And everything start with zero . After doing all shit if someone think AI is amazing then he should start research or else he move with something else . $\endgroup$ – evalsocket May 26 '17 at 20:25
2
$\begingroup$

Before getting into Artificial Intelligence, one should be done with the prerequisites. There is not a solid list, but a good knowledge of various algorithms is compulsory. Apart from that you should be comfortable with at least one programming language, like C++ or Java. I won’t suggest you to dive into Artificial Intelligence if you are completely new to Computer Science. Some experience with programming prior to diving into Artificial Intelligence will be a plus point for you.

Start reading (blogs, papers, scholar articles, etc.) about Artificial Intelligence. Like what it is, its applications, current status and other stuff that you can find. Start making AI codes for small games like Tic Tac Toe, Sudoku, Reversi (Othello), etc. for the start. You can create your own simulator and build a code that solves Rubik cube. Similarly, make codes for Pattern Recognition and Machine Learning. Nothing is better than learning by doing. Languages like LISP and python will be very helpful. Here are two answers that will help you, ans1 and ans2.

If you are a person likes like to read and learn from books (like me), then you can buy Artificial Intelligence: A Modern Approach (Peter Norvig and Stuart Russell). The book is very good and works well for the intermediate and advanced level. Try to solve the exercise problems given in the book. The solution pdf of the books is available online. For Machine Learning two books that I recommend is Pattern Recognition and Machine Learning (Christopher M. Bishop) and Programming Collective Intelligence (O’Reilly).

For the start, there is a very good article on Artificial Intelligence and Technological Singularity.

The article is long and divided into two parts. I strongly recommend you to read this article if you are serious about Artificial Intelligence. It will give you some good insights.

Knowledge of Computational Theory will greatly help you. Especially when you are working in the field of Natural Language Processing. Other sub-fields of AI that might interest you will be Machine Learning, Evolutionary Computing, Genetic Algorithms, Reinforcement Learning, Deep Learning etc. The list goes on. Better your knowledge of Statistics, better it will be for Artificial Intelligence. Stay tuned to recent goings in the field via forums, websites, etc. Open AI website is also a very good source.

$\endgroup$
2
$\begingroup$

Here are some resources I have found useful to get to know the basics of AI

Andrew Ng is a visiting professor at Stanford, founder of Coursera and currently the head of research at Alibaba. The above videos should give you (all) the basics you need about AI.

$\endgroup$

protected by DukeZhou Mar 9 '18 at 21:50

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.