While power tools and libraries, such as Apache Spark and Intel’s Trusted Analytics Platform, make it possible to quickly design, implement, train, and test neural network applications, it is the algorithm (and the choices involved in designing it) that will make or break the accuracy of the decision engine.
Those decisions often have to do with the number of nodes, the number of layers, and the nature of the algorithms used in processing data at each node. While many neural networks use at least three layers of processing, and the algorithms tend to be fairly straightforward, the network designer has a lot of complex options that interact, and a lot of no-so-straightforward decisions to create a system that processes data in a meaningful way.
So how is a designer supposed to deal with what are literally thousands of options for the network architecture? Here are some guidelines for novice neural network engineers.
1. KISS; yes, keep it simple. Even if your problem domain appears nonlinear, a series of linear equations may be sufficient to model it. Don’t automatically think that you need a high level of complexity in the network. Instead, start simple and add complexity if it seems required based on results. For example, if the results seem “wrong,” then attempt the non-linear model and compare the results. That might mean a little more work on this project, but you can take the learning to help decide how to model future problems.
2. Build, train, and test for robustness rather than preciseness. Yes, it would be great to have both. But if you are seeking to model your training data precisely, you risk not getting good results once it becomes part of a production application.
3. Don’t over-train your network. You want it to be capable of making decisions with ambiguous data, or at least data that isn’t as clean as your training data. While you might get incrementally better results with your training data, that may affect how it behaves in the real world.
4. Keep track of your results with different network designs to see which characteristics work better for your problem domain. Try several different types of architectures, including different algorithms, numbers of nodes, and levels of processing. Look at what combinations are giving you better results on your training data, and hone in on those combinations to refine the design.
5. Monitor your results in production. You may or may not know for certain if your results are consistently accurate, but you should have production metrics that give you a ballpark on how well the network is doing.
Look here for still more guidelines for building the best networks, straight out of NIPS 2016. Many experienced neural network engineers have what almost seems to be an intuitive feel for their problem domain and training data, and likely do at least some of this naturally based on their past experiences. Less-experienced engineers have to follow some heuristics before they develop that feel.
Analytics play an important role in the process of learning about your algorithms and tradeoffs. As you generate data on the accuracy of your network designs, you have to evaluate that concept in some way. The ability to take what could be hundreds of thousands of data points and develop measures of accuracy and robustness can only be accomplished with comprehensive analytics facilities such as Intel’sData Analytics Acceleration Library. Engineers who understand what works and what doesn’t in a quantitative sense provide a huge advantage in building the network.
Now it’s easier than ever to write your code to run in parallel - Try Intel® Parallel Studio XE for free for 30 days