With the algorithm of AI and post more and more popular in recent years, many developers choose to post transition from development work to the algorithm, but because we post of algorithm is not very familiar with, and their technical skills for the need of the algorithm is not very understanding, therefore, the difficulties in the process of transition, as early as six years ago I also is an Android development engineer, So today I will combine my own experience and the experience of the surrounding students to talk with you about how to transform from a development post to an algorithm post.



The advantages of developing algorithms

First of all, we first say what is the development of the gang, and where is the advantage of the development of the gang transformation algorithm. In fact, software development engineer is an indispensable position for the whole IT industry, but also a relatively comprehensive position. Because, for the current software development engineers, not only to master a variety of programming language, to know more about the database, big data, and a lot of engineering problems, even for AI related engineering problems in some companies also have to be involved, therefore, in my opinion, the software development engineer is a relatively integrated post, in fact, This is also the development of a career – changing algorithm of the advantages of the post.

A lot of people think of algorithms as models and algorithms and ai-related stuff, but I want to start by saying that this view is wrong, at least for most companies. In the enterprise, more than any algorithm is a line oriented, and all the products online, almost ran out QPS this index, is simply the concurrency value of a second, and then take our company for example, in order to make the project can be normal operation, online general QPS for single at least more than 2000, and then horizontal multi-stage expansion, make overall concurrency. For algorithm engineer, if you want to increase the concurrency value, the problem to be solved by not only is the development and optimization model and algorithm, more often than not, we also need to other business platform to provide the corresponding form and interface, at least, we need to put our model for certain packaging, make the business can call outside. This packaging process generally involves server deployment, interface development and invocation, concurrency and engineering, and a series of problems, and these are often the development engineers are good at, which is the biggest advantage of developing transformation algorithm.

In addition to the above pure model of the algorithm post, there is an algorithm post is strongly related to the business, the most intuitive is to recommend algorithm engineers and some NLP engineers. We take the example of recommendation algorithm engineer, as you all know, any business are recommended on the product, in the current Internet technology, these products usually is placed into the large data warehouses, when we do the recommendation system, also need to consider to the data of real time, therefore, for a qualified engineer recommendation algorithm, It is necessary not only to have a sufficient understanding of the recommendation algorithm itself, but also to be familiar with the surrounding knowledge and technology involved in the recommendation algorithm. For example, when we need to make real-time recommendation system, we need to understand kafka and Flink and other related technologies. When we need fast access, May also need to do some knowledge of redis and other in-memory databases, if you want to redis data landing, may also need to understand some piKA and other related knowledge. We can find that the content is recommended algorithm engineer to do, but in the engineering field and all kinds of content has a very closely linked, therefore, for this kind of business oriented algorithm engineer, in addition to pay attention to the business itself, also need to pay attention to the project content, and this is a software development engineers are good at.

In fact, the above examples can well illustrate that algorithm engineers and development engineers are in fact very closely related. Therefore, first of all, we need to confirm that it is feasible for algorithm engineers to transform into AI engineers. But how?

In fact, the essential difference between algorithm engineers and development engineers lies in the research on algorithms, which is actually a very broad content. The algorithm engineers we talk about here can generally be understood as the algorithm engineers related to AI. An AI algorithm engineer mainly needs to contain the following three abilities, which are also required courses in the development of the transformation algorithm engineer.

** Framework learning **

Currently, algorithm engineers in the FIELD of AI are generally required to have a deep understanding of deep learning and machine learning frameworks. Therefore, learning related frameworks is a hurdle that algorithm engineers must face.

Frameworks commonly used by algorithm engineers in AI are TensorFlow, Pytorch, and Keras. Nearly all algorithmic engineer recruitment requirements require proficiency in one or more of the three deep learning frameworks. In fact, at the beginning of the algorithm transformation, many people like to give up when they see many deep learning frameworks. But in fact, when we learn any kind of framework, the method is basically the same, and deep learning is no exception.

Before learning the relevant framework of deep learning, it is recommended to first understand some concepts related to deep learning and machine learning, and then take some tutorials on the official website for practice. For a language development experience of other students, I suggest you try and look at base, rather than put all concepts of machine learning and deep learning have seen it again and then to study framework of the system, and then try, so the first time will be very long, secondly, actually in the end you will find many things you can’t remember.

In my opinion, the best way to learn is:

1. Spend 2 weeks looking at the basic concepts and models of machine learning and deep learning, and follow the code if it is available;

2. Learn one of the TensorFlow or PyTorch frameworks in a systematic way. Go to some wiki sites to learn how to use it and the common functions.

3. Find some simple model implementations, such as TensorFlow version of TextCNN model, PyTorch version of RNN model and LSTM model, and study how these models are implemented using deep learning framework;

4, go to GitHub to find a few relatively complete and not very big projects, and then see how he is achieved, here if NLP, recommend text classification, intelligent customer service projects, if it is CV, suggest to see some simple image classification projects;

5, then repeat step 4, always maintain good code ability, practice makes perfect;

** Mathematical foundation **

Mathematics can be said to be an algorithm engineer’s required course, development background determines how far you go, and mathematics background determines how deep you do.

When we read papers, we often meet a lot of very complicated mathematical formulas. For some people who just want to understand the model or use the model in this paper, the requirements of mathematics are not very important. But when your needs change from use to change, math becomes even more important.

In many cases, we can understand the overall derivation process through the formula in the paper, and have a deeper understanding of the definition of many parameters in the paper. Generally speaking, for those students who need to produce research results, they need to study every detail of this very fine, need to deduce all kinds of logical relations and mathematical formulas, and even through their own optimization, to improve the performance of the model, and these are in fact need mathematical foundation.

In the field of AI algorithms, the mathematics we commonly use are mainly linear algebra, probability theory and higher mathematics.

Most of the algorithms in AI algorithms are related to matrices, while linear algebra is actually a discipline specifically for matrix research. Therefore, learning linear algebra well is helpful for the in-depth study of matrix and tensor in the future. Probability theory is also an essential part of deep learning, in which there are various algorithms related to probability theory, such as naive Bayes algorithm. Advanced mathematics is generally used in mathematical derivation, all kinds of integral derivation need to use the knowledge of advanced mathematics, the most common is BP algorithm.

In addition, HERE I want to tell you a book, is “concrete mathematics” this book, this book is actually used in the computer mathematics has a more in-depth summary, of course, this book is very difficult to read.

** Paper reading and code reproduction ability **

Engineers compulsory reading paper is, as it were, algorithm, algorithm is the biggest difference between engineers and development engineers, algorithm engineer need through repetition of a lot of paper, to determine the ultimate plans to choose model, improvements or used directly, and then for the repetition of paper, usually we just need to be able to read papers.

Recently, for example, our time doing image super-resolution content in this field, so we do the first step is to find the recent two or three years at the top of the outstanding super-resolution related papers, and then to find paper making corresponding official code to verify our thoughts, but sometimes, We may need to specify a specific development framework (such as TensorFlow), but there is no such framework in the open source code, only the PyTorch version of the code, in which case we have to use TensorFlow to manually implement, in this case, we need to understand the paper, so that we can better reproduce the code.

Therefore, the paper reading ability is the process of developing the algorithm must be prepared, here, English is an essential link. Generally, we can prepare through the following steps:

1. Find a relatively simple paper (e.g. on text classification) and try to read it (mainly on network structure)

2. Find the relevant recurrence code of the paper and understand it;

3. Try to reproduce it yourself in other frames;

4. Repeat steps 1 to 3 above

** French thinking **

Students who develop algorithms actually have quite different logical thinking. For the development of the students, mainly to solve the problem as a starting point, for the algorithm of classmate, generally the way to solve the problem there will be many, but must choose a fast and good way, is this algorithm engineers need to have ability, for this is also need a long-term process of accumulation in the process of transformation.

Algorithm students generally encounter two kinds of problems, the first is that you already have the code, to optimize it. Now, for example, when we do the recommendation system often used to an algorithm called collaborative filtering, if the item based collaborative filtering, using normal collaborative filtering algorithm when the data volume increase, will cause memory overflowing, actually we can through the optimization of the symmetric matrix in collaborative filtering, to reduce the time complexity and space complexity, so as to solve the problem, And the ability to solve problems is actually the ability and thinking that algorithm engineers must have. To put it bluntly, it is to find points in the code that can be optimized, and then optimize them to achieve the ultimate goal. Many students who have made the transition from development often suffer in this respect, because most of the time, they just use the traditional development ideas to solve problems, and do not pay attention to the complexity of time and space. Therefore, this point should be paid attention to.

In the second case, we don’t have the code yet, but we have a requirement to implement. For example, when we do image super-resolution, the Internet is generally a super-resolution model for three-channel large images, but if the business needs 4-channel small-resolution images for super-resolution, what do we need to do to solve this problem? As a student of development, the general approach is to find a similar solution, and then put on, constantly trying to solve the problem; But by the algorithm of duty, in fact, there will be another train of thought, that is, I’ll study related papers, then go to the paper for retrieval, then see what point of improvement can be used on their own needs, and then their own data sets in, and try to do model changes, so as to complete the whole demand. In fact, this situation is often encountered by development engineers in transformation algorithm engineers.

Therefore, algorithmic thinking is particularly important for developing algorithms.

 

Developing algorithms is both easy and difficult. The above is my summary of a few points, I hope that through my summary, can help you, you are also welcome to leave a message in the following comment area.

Finally, I wish you a successful transition!

END

Machine learning online manual for Machine learning Deep Learning Notes album for AI Basics download (PDF update25Set) Machine learning basics of Mathematics album get a discount website knowledge planet coupon, copy the link directly open: HTTPS://t.zsxq.com/yFQV7am site QQ group 1003271085, join wechat group please scan code like articles, click a look
Copy the code