1628856000

As a developer, you have the power to change the world! You can write programs that enable new technologies. But that’s not the only way. Whatever you do, it has the potential to impact the community who use it.

#algorithm #data

1621986060

If I ask you what is your morning routine, what will you answer? Let me answer it for you. You will wake up in the morning, freshen up, you’ll go for some exercise, come back, bath, have breakfast, and then you’ll get ready for the rest of your day.

If you observe closely these are a set of rules that you follow daily to get ready for your work or classes. If you skip even one step, you will not achieve your task, which is getting ready for the day.

These steps do not contain the details like, at what time you wake up or which toothpaste did you use or did you go for a walk or to the gym, or what did you have in your breakfast. But all they do contain are some basic fundamental steps that you need to execute to perform some task. This is a very basic example of algorithms. This is an algorithm for your everyday morning.

In this article, we will be learning algorithms, their characteristics, types of algorithms, and most important the complexity of algorithms.

Algorithms are a finite set of rules that must be followed for problem-solving operations. Algorithms are step-by-step guides to how the execution of a process or a program is done on a machine to get the expected output.

- Do not contain complete programs or details. They are just logical solutions to a problem.
- Algorithms are expressible in simple language or flowchart.

No one would follow any written instructions to follow a daily morning routine. Similarly, you cannot follow anything available in writing and consider it as an algorithm. To consider some instructions as an algorithm, they must have some specific characteristics :

**1. Input:** An algorithm, if required, should have very well-defined inputs. An algorithm can have zero or more inputs.

**2. Output:** Every algorithm should have one or more very well-defined outputs. Without an output, the algorithm fails to give the result of the tasks performed.

**3. Unambiguous:** The algorithm should be unambiguous and it should not have any confusion under any circumstances. All the sentences and steps should be clear and must have only one meaning.

**4. Finiteness:** The steps in the algorithm must be finite and there should be no infinite loops or steps in the algorithm. In simple words, an algorithm should always end.

**5. Effectiveness:** An algorithm should be simple, practically possible, and easy to understand for all users. It should be executable upon the available resources and should not contain any kind of futuristic technology or imagination.

**6. Language independent:** An algorithm must be in plain language so that it can be easily implemented in any computer language and yet the output should be the same as expected.

**1. Problem:** To write a solution you need to first identify the problem. The problem can be an example of the real-world for which we need to create a set of instructions to solve it.

**2. Algorithm:** Design a step-by-step procedure for the above problem and this procedure, after satisfying all the characteristics mentioned above, is an algorithm.

**3. Input:** After creating the algorithm, we need to give the required input. There can be zero or more inputs in an algorithm.

**4. Processing unit:** The input is now forwarded to the processing unit and this processing unit will produce the desired result according to the algorithm.

**5. Output:** The desired or expected output of the program according to the algorithm.

Suppose you want to cook chole ( or chickpeas) for lunch. Now you cannot just go to the kitchen and set utensils on gas and start cooking them. You must have soaked them for at least 12 hours before cooking, then chop desired vegetables and follow many steps after that to get the delicious taste, texture, and nutrition.

This is the need for algorithms. To get desired output, you need to follow some specific set of rules. These rules do not contain details like in the above example, which masala you are using or which salt you are using, or how many chickpeas you are soaking. But all these rules contain a basic step-by-step guide for best results.

We need algorithms for the following two reasons :

**1. Performance:** The result should be as expected. You can break the large problems into smaller problems and solve each one of them to get the desired result. This also shows that the problem is feasible.

**2. Scalability:** When you have a big problem or a similar kind of smaller problem, the algorithm should work and give the desired output for both problems. In our example, no matter how many people you have for lunch the same algorithm of cooking chickpeas will work every single time if followed correctly.

Let us try to write an algorithm for our lunch problem :

1. Soak chickpeas in the night so that they are ready till the next afternoon.

2. Chop some vegetables that you like.

3. Set up a utensil on gas and saute the chopped vegetables.

4. Add water and wait for boiling.

5. Add chickpeas and wait until you get the desired texture.

6. Chickpeas are now ready for your lunch.

The real-world example that we just discussed is a very close example of the algorithm. You cannot just start with step 3 and start cooking. You will not get the desired result. To get the desired result, you need to follow the specific order of rules. Also, each instruction should be clear in an algorithm as we can see in the above example.

#algorithms in data structure #data structure algorithms #algorithms

1624970880

As more data, better algorithms, and higher computing power continue to shape the future of artificial intelligence (AI), reliable machine learning models have become paramount to optimise outcomes. OpenAI’s meta-learning algorithm, Reptile, is one such model designed to perform a wide array of tasks.

For those unaware, meta-learning refers to the idea of ‘learning to learn by solving multiple tasks, like how humans learn. Using meta-learning, you can design models that can learn new skills or adapt to new environments rapidly with a few training examples.

In the recent past, the meta-learning algorithm has had a fair bit of success as it can learn with limited quantities of data. Unlike other learning models like reinforcement learning, which uses reward mechanisms for each action, meta-learning can generalise to different scenarios by separating a specified task into two functions.

The first function often gives a quick response within a specific task, while the second function includes the extraction of information learned from previous tasks. It is similar to how humans behave, where they often gain knowledge from previous unrelated tasks or experiences.

Typically, there are three common approaches to meta-learning.

- Metric-based: Learn an efficient distance metric
- Model-based: Use (recurrent) network with external or internal memory
- Optimisation-based: Optimise the model parameters explicitly for fast learning

For instance, the above image depicts the model-agnostic meta-learning algorithm (MAML) developed by researchers at the University of California, Berkeley, in partnership with OpenAI. The MAML optimises for a representation θ that can quickly adapt to new tasks.

On the other hand, Reptile utilises a stochastic gradient descent (SGD) to initialise the model’s parameters instead of performing several computations that are often resource-consuming. In other words, it also reduces the dependency of higher computational hardware requirements, if implemented in a machine learning project.

#developers corner #how reptile works #meta learning algorithm #meta-learning algorithm #algorithm

1624449420

We all know Machine Learning is a rapidly expanding field and new techniques are being created, seemingly, by the minute. While it is often best to begin with the fundamentals of the field before jumping into these new, and often advanced, papers, a question often arises for those who are new to the field:

How do I learn all of the various algorithms in the field, and how do I learn them well?

If you are new to the field, the best way to develop a firm understanding of the fundamentals is quite simple. Simply put, while you are learning the algorithm, attempt to build it from scratch in your favorite programming language. Allow me to explain…

When learning a new concept in this highly technical field, I believe that building things from scratch not only strengthens your programming skills but also allows you to get a bottom-up and fundamental understanding of how the algorithm actually works. One thing to remember is that in Machine Learning, everything we do is inherently mathematical. If you do not understand the mathematics behind the algorithm, you will not be able to efficiently deliver the key insights of the results to those who are non-technical — who, might I add, you deal with just as much as those who **are** technical.

While this should be common sense, let me raise a little disclaimer from now: you building the algorithm from scratch **should not** replace highly optimized libraries to do the specific task. Rather, you building out the algorithm should act as a complement to learning the mathematics and seeing it solve in real-time, step by step. If you have never built a neural network before, you will likely not be able to understand the underlying mechanisms of the API calls within the libraries of PyTorch or TensorFlow.

I truly believe that if you are learning a new algorithm, learning about how it works is a great first start, but learning how to build it yourself really allows you to get lost in the beauty of ***why***it works, which in my opinion, is where most of the fun can be found in this field.

#algorithms #data-science #programming #machine-learning #algorithm in machine learning

1626872040

What Is Model & Algorithm In Machine Learning | Machine Learning Tutorials | Python | Ml Python

#python #machine learning #algorithm #model & algorithm #machine learning tutorials

1598891580

Recently, researchers from Google proposed the solution of a very fundamental question in the machine learning community — What is being transferred in Transfer Learning? They explained various tools and analyses to address the fundamental question.

The ability to transfer the domain knowledge of one machine in which it is trained on to another where the data is usually scarce is one of the desired capabilities for machines. Researchers around the globe have been using transfer learning in various deep learning applications, including object detection, image classification, medical imaging tasks, among others.

#developers corner #learn transfer learning #machine learning #transfer learning #transfer learning methods #transfer learning resources