5 Guidelines for Building a Neural Network Architecture

opinion
Jan 5, 20174 mins

istock 529479605 p5
Credit: istock

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

peter_varhol
Writer

Peter Varhol is a well-known writer and speaker on software and technology topics, having authored dozens of articles and spoken at a number of industry conferences and webcasts. He has advanced degrees in computer science, applied mathematics, and psychology. Currently he has his own consulting company, Technology Strategy Research. His past roles include technology journalist, software product manager, software developer, and university professor.

matt _heusser
Managing Director, Excelon Development

As the Managing Director of Excelon Development, Matt Heusser, consults, trains, and does software delivery while helping others do it. Probably best known for his writing, Matt is the lead editor of "How to Reduce The Cost of Software Testing" (Taylor and Francis, 2011), editor for Stickyminds.com, and recipient of the 2015 Most Popular Online Contributor to Agile at the Agile Awards. A 2014 recipient of the Most Influential Agile Test Professional Person Award (MAITPP) in Potsdam, Germany, Matt also served as the lead organizer of the Software Testing World Cup. He is a former member of the board of directors of the Association for Software Testing and creator of Lean Software Testing family of methods.

More from this author