Machine learning experience for computer engineers

Robert Heinlein published a book called "A Door into summer" in the mid-1950. In his book, skilled mechanical engineer hooked up some "Thorsen hoses" for pattern matching memory and some "side circuits to include decision making" and generated an entire industry of intelligent robots. In other to make the story more imaginable, in 1970 it was set well into the future. These robots are involved in tasks like washing dish illustrated to them and then repeat the process entirely. 


I don’t think I have to inform you, but it didn't happen in the right way. It may have seemed believable in 1956, but in 1969 it was apparent that it wouldn't turn out in 1970. Every ten years the capability for an average engineer to build a synthetically intelligent machine seemed to be impossible as time passed. As technology gets better, the enormous complexity of the problem became evident as different layers of complexity were discovered.

The major setback was not that the machine learning wasn’t solving the problems, it was. For instance, in the mid-90s all credit card transactions were scanned using neural networks to avoid fraud. In the late 90’s Google was investigating the web for highly developed signals to support search. Unfortunately, your day to day computer engineer did not have the opportunity of building such system expect if they go back to school for a Ph.D. and meet a group of like-minded friends that would do the same thing. Machine learning was hard, and every new domain required breaking massive amount of new ground. Even the most outstanding researchers could not crack hard problems like image credit in the real world.

I am excited to say that this condition has changed significantly. I don’t imagine that anybody will want to found an auto-magical, Heinlein-style and all-robotic engineering company in the future. But it is easy for a software engineer without any advanced training to build systems that do remarkable things. The amazing part is not that computers could do all these things. But it has been identified since 1956 that this would be possible anytime! The most surprising thing is how far we have come in the last decade. The time taken to do a Ph.D. research for ten years is now a simple project for a weekend.

Machine learning is getting accessible (or more available)

In our latest book on “Machine Learning Logistics” Ellen Friedman, and I explained a system known as TensorChicken. It was built as a fun home project by our software engineer friend, Ian Downard. The problem to be solved was the blue jays that usually enter our friend’s chicken area to peck the eggs.  He decided to build an automated vision system that could detect a blue jay so that some necessary action could be taken to prevent the pecking.

After learning an in-depth learning presentation by Google engineers from the TensorFlow group, Ian followed the guidelines and built a similar system. He started with a partial model called Inception-v3 and training it to the task of blue jay detecting a thousand images taken by a webcam in his chicken area. The final result was deployed on Raspberry Pi, but plausibly quick response time requires a bit beefier like Intel Core i7 processor.

During the research, Ian was with different sorts of people, many of them are not qualified data scientists or building exceptional bots to all sorts of things. Also, many numbers of developers started working on a selection of different machine learning projects when they discovered that the learning machine and deep learning have become more available. Many developers have started to occupy different positions as data engineers in a "data operations" mode of work, where data-focused skills (data scientist, data engineering, and architect) are combined with a expand approach to build things like machine learning systems. 

It is interesting that a computer can easily be trained to detect a blue jay, using an image detection model. In some cases, regular folks meet and do this and a whole lot more besides. All that is required is a few pointers for proper technique, and a bit of rest in your frame of mind, especially if you are familiar with software development.

Building models are different from building regular software. It is data-driven rather than design-driven. You need to check the system from an empirical perspective and depend little on the experimental proofs of the function instead of the careful implementation of a good design that comes with unit and integration tests.  Also, always remember that the difficult domains where machine learning has become straightforward.

Right next door, are situations that are still hard and that usually require more complicated data science expertise with more calculations. So, you need to test and prototype your answer. Make sure you set up your farm or hen house when you know that the problem is not hard. Don't even expect the farm after it seems to work for the first time. You must be suspicious of good results just like any good data scientist.

Necessary data knowledge for machine learning beginners

The remaining article explained some of the tactics and abilities that developers require to use machine learning efficiently.

Let the data prove it

You can quickly think of a design, build your software and authenticate the correctness of your solution independently and directly in a sound software engineering. Most times, you can even show that your software is correct. The real world does intrude a bit, mainly when humans are involved, but if you have proper specifications, you can implement a right solution.

With the help of machine learning, you don't have a rigid specification. Some data represents the experience with a system, and you have to build a system that will work in the future. To detect if your system is working correctly, you have to measure performance in practical situations. In regards to the data-driven, the specification-poor approach of development can be complicated, but it is an essential step if you want to build systems with machine learning inside.

Learn to detect the better model

It is easy to compare two numbers. If the numbers are valid values, it is easier to spot the more significant value and you are done. When it involves the correctness of a machine learning model, it is not simple. There are many results for the models you are want to compare, and there is no precise answer. However, the most fundamental skill in building machine learning systems is the capability to check the history of the decision of two models that were made and determine the model that is better for your situation. This result requires basic techniques to check the values that have an entire cloud of values instead of a single value. Also, you need to be able to visualize data as well. Histograms scatter plots, and many other related techniques will be required.

Be apprehensive of your results

Along with the ability to decide which variant of a system is doing a good job, it is important to be wary of your results. Are your conclusions a statistical fluke that will go against your data? Has the world changed ever since your assessment, thus varying the better system?

Building a system with machine learning means that you will need to monitor the system to ensure that it is doing what you thought it was doing, beginning with. This doubtful nature is needed when you are dealing with unclear comparisons in a changing world.

Build various models to throw away

It is a maxim in software development that you have to build one version of your system in other to throw away. The idea is that until you develop a working system, you will not recognize the problem adequately to build that system well. You can build one version to learn and then make use of that learning to design and build the real system.

With the machine learning process, the condition remains constant. Also, instead of building one throwaway system, you must be ready to create many of variants. Many of these variants can make use of different learning technologies or different settings for the learning engine. Many other variants might be entirely different restatements of the problem or the data that you make use to train the models. For example, you might detect a surrogate signal that you can use to train the models if the signal is not really what you desire or expect. This can give you ten times data to train with efficiently. Or you can restate the problem in a manner that will make it easier to solve.

The world can change as well. This is possible, for example, when you are building models to detect fraud. After creating a successful system, you will have to change in the nearest future. The hackers will identify your countermeasures, and they will modify their behavior. You will need to respond to new counteractions.

However, for successful machine learning, decide to build many models to throw away. Don't wait for a golden model that will provide the solution forever.

Don’t be frightened to change the condition

Firstly, the question that you try to solve with machine learning is typically not the right one. Often it is usually the wrong one. The answer of asking the wrong question can be a model that is not possible to train or training data that is difficult to gather. Or it might be a situation where a model that provides the best answer still has little or no value.

 Recasting the problem can give you a condition where a simple model will build higher value. I had difficulty once that was deals with the recommendation of sale items. Getting even small gains with some appealing heavy techniques was tough.

As it happens, the high-value problem was to check when good items went on sale. It becomes trivial when you identify the issue of which products to recommend because there are many good products to recommend. At the wrong times, there was nothing to recommend anyway. Modifying the question made the problem easier to access.

You can start small

It is valuable to be able to deploy your innovative system in case of any single sub-problem. This will allow you to stay focus on your effort, learn more within your problem domain and get support in your company as you build models.

After, start big 

Ensure that you get adequate training data. If it is possible, you can get ten times more than you need or think.

Domain skills is required

In machine learning, finding out how a model can easily decide or predict is needed. Also, if you have more understanding in the domain, you are likely to ask the right questions and be able to integrate machine learning into a workable product. Domain knowledge is essential to find out where a sense of judgment is required to be included and where it might reasonably be added.

Coding knowledge are important

There are many tools out there that will allow you to build machine learning models using simple drag-and-drop tools. The fact is, the majority of the work in making a machine learning system does not have anything to do with models or machine learning. All that is required is to gather training data and to build a system to make use of the model's output. This provides good coding skills that are extremely valuable. However, there is a different tactic to code that is written to manipulate data, but that is not difficult to pick up. So the fundamental skill of a developer is to make useful skills in many varieties of machine learning.

Most new techniques and tools are readily accessible, and it helps practically any software engineer to build systems that make use of machine learning to do some incredible things. Fundamental software engineering skills are precious in building these systems, but you have to supplement them with a little of data focus. The best method to choose these new skills is to begin today in building something exciting.
Machine learning experience for computer engineers Machine learning experience for computer engineers Reviewed by thanhcongabc on June 10, 2018 Rating: 5

No comments:

Powered by Blogger.