I have read some articles which state that basic algorithms such as dynamic programming , graph algorithms etc are not required int machine learning fields such as deep learning , reinforcement learning etc. Is it true that learning basic algorithms is not necessary for learning machine learning concepts ?
I would say that machine learning is a part of computer science.
Machine learning is defined by Tom Mitchell:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.
This means that an algorithm on a defined task (e.g. classification, regression) on which you define a measure (e.g. accuracy, mean squared error) is a machine learning algorithm when it improves with more data.
Which algorithms are used?
- Deep learning: This is machine learning with neural networks. There is much more in machine learning than neural networks, but currently they give the most astonishing results and a lot of progress is happening with neural networks. Neural networks are trained with gradient descent; a numeric optimization algorithm known for a long time.
- Dynamic programming: A very simple way to classify is by comparing a new pattern with all known patterns. For time series, there is an algorithm called "dynamic time warping" which calculates the minimum distance to map a series of points to another series of points. So DP is used in machine learning.
- Graph algorithms: Clustering is a machine learning task. CLARANS is a clustering algorithm which operates on a virtual graph. Good luck understanding this algorithm without knowing what a graph is. Or in automatic speech recognition beam search.
- Sorting: There are fancy approaches like Neural Turing Machines which are able to learn to sort. In fact, they are theoretically(!) able to learn any algorithm just by data. However, they are MUCH worse in any respect than simple quicksort. We don't even talk there about Timsort.
- A lot more. And a general knowledge of algorithms and datastructures is very important. Machine learning is awesome if you have really complicated problems where you can't find a solution analytically. Many computer vision tasks, automatic speech recognition, translation, some control problems are examples for this task. However, there are many more tasks which can be solved in an optimal way without machine learning. Knowing about algorithms and when to apply which approach is crucial if you want to design good software.