How ordinary programmers turn to AI

Abstract: AI, or artificial intelligence, does not only include machine learning. Whereas symbols and logic were once considered key to the realization of artificial intelligence, today statistics-based machine learning dominates. The recently hot deep learning is just a sub-item of machine learning. At present, it can be said that learning AI is mainly learning machine learning.

  At present, artificial intelligence has become an increasingly popular direction. How ordinary programmers turn to artificial intelligence is a question on Zhihu. This article is an archived version of one of my answers to this question. Compared with the original answer, the content has increased.

1. Purpose The purpose of
  this article is to give a simple, smooth, and easy-to-implement learning method to help "ordinary" programmers step into the AI ​​field. Here, my definition of ordinary programmers is: have undergraduate knowledge; usually busy with work; the data that they can obtain is limited. Therefore, this article is more like a "from the scratch" AI introductory tutorial.

2. Introduction to the field of
  AI AI, that is, artificial intelligence, does not only include machine learning. Whereas symbols and logic were once considered key to the realization of artificial intelligence, today statistics-based machine learning dominates. The recently hot deep learning is just a sub-item of machine learning. At present, it can be said that learning AI is mainly learning machine learning. However, artificial intelligence is not the same as machine learning, which must be clearly recognized when entering this field. For an introduction to the history of the development of the AI ​​field, it is recommended to read "Introduction to Machine Learning" written by Mr. Zhou. The following question is: Is the door of AI easy to cross? It's actually pretty bad. Let's take machine learning as an example. In the learning process, you will face a large number of complex formulas, and in actual projects, you will face the lack of data and difficult parameter adjustment. If it is just because you think this direction will be "hot" in the future, then these difficulties will easily make people give up. Considering the characteristics of ordinary programmers, is there no way to learn such a difficult subject? the answer is negative. Just make the right way to learn.

3. Learning methods

  The setting of the learning method is simply to answer the following questions: What do I want to learn? How do I study? How do I go about studying? These three questions can be summed up as: learning objectives, learning policies and learning plans. The learning goal is relatively clear, that is, to step into the field of AI. This goal is not large, so it is relatively easy to achieve. "Going too big is when you find enough reason to abandon it later." The learning policy can be summarized as "interest first, practice and learning combined". Simply put, it is to cultivate interest first, and then interspersed with practice in learning, and spirally improved. This way of learning is effective, and it is not easy for people to give up. Once you have a study policy, you can develop a study plan, also known as a study route. The following is an introduction to the learning route.

4. Learning Route The learning route

  I recommend is as follows, as shown in the figure below:
673793_20161231214342351_287617336

Figure 1 Learning Roadmap in the AI ​​Field

  This learning route is designed as follows: first understand the field, establish a comprehensive vision, cultivate sufficient interest, and then start to learn the basics of machine learning. Here, choose a course from shallow to deep to learn, and the course preferably has enough The experiments can be carried out in practice. After the foundation is laid, you have a sufficient understanding of machine learning, and you can use machine learning to solve a practical problem. At this point, machine learning methods can still be treated as a black box. After accumulating practical experience, you can consider continuing to study. At this time, there are two options, deep learning or continuing machine learning. Deep learning is currently the hottest machine learning direction, and some of these methods are already different from traditional machine learning, so they can be studied separately. In addition to deep learning, machine learning also includes practical methods such as statistical learning, ensemble learning, etc. If the conditions are sufficient, both can be learned at the same time, and some laws are common to both. After the study, you already have a strong knowledge reserve and can enter the more difficult actual combat. At this time, there are two choices. Those in the industry can choose to look at open source projects and read the code for the purpose of changing the code; those in the academic world can look at papers in specific fields and want to publish papers to solve problems. No matter which one, it requires strong knowledge and strong coding ability, so it is very good to test and exercise the level. After this stage, it can be said that it is the door to enter the field of AI. "The master leads the door, and the practice is in the individual." After that, the road will go by itself.

  The following is a specific introduction to each stage:

  0. Domain understanding 

  Before learning any knowledge, the first step is to understand what this knowledge is? What can it do? Where is its value? If you don’t understand these, then learning itself is a boat without direction. You don’t know where to go, and you are at risk of sinking. After understanding these issues, you can develop interest, interest is the best guide, and the motivation and stamina to learn can enable you to cope with the next stages. About what machine learning is, what it can do, its relationship with deep learning and artificial intelligence, you can read my blog about machine learning:

  1. Knowledge preparation 

  If you have been out of school for a long time, or feel that the foundation is not strong, it is best to do some preparation and review work in advance. "If a worker wants to do a good job, he must first sharpen his tools." The following preparations are not much, but they are sufficient for the later stages of learning.

Math: Review the basics below. Linear Algebra: Matrix Multiplication; High Numbers: Derivatives; Probability Theory: Conditional and Posterior Probabilities. Some other knowledge can be supplemented as needed in the later learning process;
English: Always keep an online English dictionary, such as Aipower, to be able to read some English information pages without difficulty;
FQ: You can go to Google anytime, anywhere, this is A very important tool. It's not that you can't read Baidu's search, but in many cases, the information found by Google is more effective than the dozens of pages of information searched by Baidu, especially when searching for English keywords. Saving time is a very important improvement in learning efficiency;
  2. 

  Machine learning The first course of machine learning is Andrew Ng's machine learning. This course has the following characteristics: moderate difficulty, and enough practical examples at the same time, it is very suitable for people who are learning for the first time. I do not recommend this course cs229 here, why, and the reasons are as follows:

Time: The time of cs229 is too early, some knowledge has not kept up with today's development, and the most popular neural network has been covered in one stroke. And the neural network on Cousera took two class hours to talk about! And it is very detailed;
teaching: Ng's teaching in cs229 was a little green, which may be the reason for facing online teaching. There are a lot of questions that he hasn't explained clearly, and the questions from the people below are actually very annoying, and you often don't care about those people's questions. This has been obviously improved on Coursera. You will find that Ng's teaching level has been greatly improved. He will guide you in good faith, teach you from the simple to the deep, and will call you when you encounter words and terms that you don't understand. Don't worry, more importantly, the derivation and charts should not be too perfect, very detailed and clear, which is really strongly recommended;
subtitles: The subtitle quality of cs229 is a bit worse than that on Coursera. The Chinese subtitle translation on Coursera has been checked by many people, and the quality is guaranteed;
Homework: cs229 has no homework, although you can do some, no one will read it. This is far from the kind of assignments on Coursera that have deadlines every week, and each assignment is graded. More importantly, each assignment has practical examples, allowing you to practice hands-on, and you can see your own results, full of sense of accomplishment!
  3. Practice and do 

  projects After completing the basic courses, you will have a preliminary understanding of machine learning. Using them now is no problem, you can treat the machine learning algorithm as a black box, put data in it, and you will have results. In actual combat, you need to care more about how to obtain data and how to adjust parameters. If you have time, it is best to do a simple hands-on project yourself. Here you need to choose an application direction, whether it is image (computer vision), audio (speech recognition), or text (natural language processing). It is recommended to choose the image field here. There are many open source projects, and the entry is relatively simple. OpenCV can be used for development, and machine learning algorithms such as neural network and SVM have been implemented. After the project is completed, it can be open sourced to Github, and then continuously improved. After the actual project is completed, you can continue to study further. At this time, there are two options, deep learning and continuing machine learning;

  4. Deep learning

  Deep learning: Deep learning is currently the hottest research direction. It has the following characteristics: the knowledge is updated quickly, it is relatively fragmented, and there is no systematic explanation of the book. Therefore, the resources for learning are relatively scattered. The following are some resource introductions. The non-recommended part does not mean it is bad, but it is not suitable for this beginner stage:

Recommended, UFLDL: A very good DL basic tutorial, also written by Andrew Ng. There are very detailed derivations, there are translations, and the translation quality is very high;
recommended, Deep learning (paper): The paper on Nature in 2015, written by three big cows in the deep learning field, read the whole paper, and give people a good idea , at a glance, the feeling of small mountains is highly recommended. If you can only read one paper to learn about deep learning, I recommend this one. This paper has a Chinese translation of the same name;
Recommended, Neural networks and deep learning: The author of this book is very good at expressing profound truths in simple language. Although there is no translation, it is not difficult to read;
Recommended, Recurrent Neural Networks: Combined with a practical case to tell you what RNN is, After the whole tutorial is finished, you will have a clear understanding of how RNN works, and this effect is not even seen in a few related papers;



not recommended, Neural Networks for Machine Learning - University of Toronto | Coursera: The biggest problem with the course taught by the founder of deep learning is that it is too difficult, and the old man's articulation is sometimes not very standard;
not recommended, Deep Learning (book): It is also a book written by a deep learning expert, but it feels It's like the second author, the one written by his students. A lot of content has been said, but I don't feel that I have said anything. I just tell you that it comes from that paper. In this case, it may be more appropriate to read the paper directly.
Not recommended, cs231n: Li Feifei's course is very famous, specializing in CNN. But the biggest problem with this course is that there are no subtitles. Although there are automatic translation subtitles for youtube, it is better to have no subtitles.
  5. Continue machine learning 

  Deep learning may not be a certain mainstream in the future, at least some big cows think so. Traditional machine learning has the following characteristics, knowledge is systematic, and there are relatively classic books. Among them, statistical learning (representing SVM) and ensemble learning (representing adaboost) are techniques that are used a lot in practice. Here are related resources:

Recommendation, machine learning (Zhou Zhihua): In the past, the classic textbook on machine learning was the first to recommend PRML, but now that Mr. Zhou's book comes out, this is no longer the case. First of all, I recommend reading Mr. Zhou's book. A feature of this book is that no matter how difficult it is, it can be expressed in simple and refined language. As Mr. Zhou famously said: "The place that reflects your level is to make difficult things easy, not to make easy things difficult. It's too easy to make a thing difficult";
not recommended, Pattern Recognition And Machine Learning: Not recommended at this stage. PRML looks at many machine learning methods from a Bayesian point of view, which is also a major feature of it. But for beginners, this view is not really necessary. Moreover, this book has no Chinese translation, and it is easy to give up at the current stage;
  

  6. Open source projects 

  When the knowledge reserve is relatively sufficient, the learning can be transferred to the practical stage again. At this time, the practice can still be divided into two steps, learning classic open source projects or publishing high-quality papers. The learning of open source projects should be aimed at optimization as much as possible, and the effect of learning only for reading code is often not good. Good open source projects can be searched in Github. Here is an example of deep learning. There are many excellent open source libraries for deep learning, such as torch, theano, etc., here are two of them:

Recommended, DeepLearnToolbox: an earlier deep learning library, written in matlab language, which is more suitable for transferring from the newly learned course to learning . It is a pity that the author no longer maintains it;
recommended, tensorflow: Google's open source library, up to now, it has more than 40,000 stars, which is amazing and supports mobile devices;
  7. Conference papers 

  The better courses will recommend you some papers. Some well-known technologies and methods are often born in some important conferences. So, looking at conference papers from previous years is the way to go deep. At this point, the content of some papers will drive you to study parts of mathematics that you are not good at. Sometimes you feel that your mathematical knowledge is not enough, so you often need to study some supplementary courses. After you have read enough papers, at this stage, if you are a student, you can choose a certain topic to study and research for the purpose of publishing papers. Generally speaking, a dissertation is a product of work. Sometimes an experiment-based paper will require you to write code or be based on an open source project. Therefore, there is a correlation between the study of open source projects and the work of conference papers. Both can be studied at the same time. Regarding where to read papers, you can take a look at the CCF recommendation rankings to find out which excellent conferences are in this field. The following are two famous top conferences in the field of image and machine learning:

CVPR: together with the other two conferences ICCV and ECCV, they are called the three major conferences in the field of computer vision. Note that the homepage of the conference changes every year, so the search needs to add the year;
Conference on Neural Information Processing Systems: NIPS for short, a lot of important work is published on it, for example, an important paper about CNN is published on it;
  8. Free learning 

  Free learning: here, it can be said to enter this door. The following is free to learn according to interest. The learning resources that were not recommended in the previous stage can also be learned at will. The following are comments:

cs229: The lecture notes written by Ng are very good, and the derivation part about SVM is very clear. I want to learn SVM recommendation;
Neural Networks for Machine Learning: Daniel's perspective and People are different, and seeing what Hinton thinks about neural networks will often give you a sense of the original. In fact, reading this course is equivalent to reading a paper, because almost every class has a paper in the reference materials for you to read;
CS231n: Convolutional Neural Networks for Visual Recognition: Up-to-date knowledge, with detailed assignments. There should be a team in China who have translated the subtitles, you can look for them;
PRML: As a classic machine learning book, it is necessary to read it, and it will give you another perspective on machine learning;
5. Summary of

  this article The purpose is to help students who do not have a deep understanding of the AI ​​field but want to enter this door. I only talk about stepping in here because it is very difficult to specialize in this field and requires years of accumulation and hard work. It is very important to fully understand one's own characteristics and formulate an appropriate learning method before undertaking field study. First of all, you must have a full understanding of this field and cultivate your interest. When learning, keep a step-by-step learning policy, don’t rush to learn too difficult resources; combine learning and practice with complementary strategies, don’t just read only, you will have a sense of achievement when you actually do it. When learning a certain resource, there must be a sufficient purpose, not to read code to learn open source projects, but to read open source projects; not to write papers to publish papers, but to write papers to do things. If a learning resource is too difficult for you, it does not necessarily mean that it is your problem, it may be the problem of the speaker or writer of the learning resource. Those who can explain difficult problems simply are those who are truly skilled. So, be sure to learn high-quality resources, not indiscriminate learning. Finally, remember to learn with interest. The learning time is very long and the process is very difficult, and only interest is the best help for you to persevere and overcome difficulties.

Reprinted at http://www.cnblogs.com/subconscious/p/6240151.html

If you find any content suspected of plagiarism in this community, please send an email to: [email protected] to report and provide relevant evidence , once verified, this community will immediately delete the allegedly infringing content.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326343977&siteId=291194637
Recommended