Introducing Feedback

Getting this balance just right

Feedback is the very simple idea that you can control a complex system through the constant application of small corrections, which are applied to “nudge” the system towards its ideal operating point.

This idea is at the same time obvious and strangely at odds with common practice—and for good reason. On the one hand, it is obvious: monitor what the system is doing, and then keep nudging it back if it is beginning to go astray. That’s what human operators do: if you are driving your car, you constantly apply small steering corrections to keep the car on the road, and you keep adjusting the speed, in relation to the vehicle ahead of you and the speed limit.

Yet it is surprisingly difficult to teach a machine how to do that! Cruise control in your car is feedback-driven (because it constantly adjusts the accelerator setting based on the deviation of the actual speed from the target speed), but it is an optional device, and can be fickle in practice. Why is that?

The problem is that it is not so easy to decide how large a correction to apply when a deviation from the target value is noticed. Consider the case of the car’s cruise control: let’s say the actual speed deviates by 5mph from the desired value. How much should the accelerator be changed? The change has to be just large enough to reduce the “tracking error” within a few seconds. If it is any larger, the passengers are in for a bumpy ride! But if the change is too small, then the deviation from the desired speed will persist for a long time, so that in effect the automated speed control does not actually work.

It’s a fine balance that needs to be struck, and one can imagine that it depends on external circumstances, too: the current weight of the car, the target speed, and of course on the strength of the engine, and so on.

Getting this balance just right (a process known as the “tuning” of a control system) is difficult, and can seem impossible if the nature of feedback systems is not properly understood. Fortunately, all these problems have been worked out in the past. Unfortunately, applying them to actual systems can be challenging.

Going forward, I will introduce the feedback principle, the nature of feedback loops and controllers, discuss applications of feedback principles to computer systems, and the proper techniques to build and tune well-performing feedback systems. Stay tuned!

Related

Sign up for the O'Reilly Programming Newsletter to get weekly insight from industry insiders.
topic: Programming