[From Bill Powers (971008.0725 MDT)]
Chris Cherpas (971006.0938 PT)--
I've been studying PCT for over a year now, learning
about new (to me) aspects, finding out misconceptions
I'd developed along the way, and gradually seeing myself
getting to the point where I could apply it to computer-based
educational technology.
An effort that is well-appreciated from this end, Chris.
I just read Powers' (1988) "An Outline of Control Theory"
in _Living Control Systems_. I found this piece to be
exceptionally effective. There are a few points I'd like
to be able to get clearer on:
1. Amplification
Bill Powers (1988, pp267-268)--
"If we compare two control systems with greatly
different error sensitivities, our first guess might be that
the system with the greater error sensitivity, all else being
equal, would produce the greater amount of action. What actually
happens is that the system with the greater error sensitivity
contains the smaller error signal, and its action is essentially the
same as what the other system produces."
As is noted in this article and other places, one intuitively
thinks that amplifying the output would be like trying to
kill a fly with a sledge-hammer (caution: my metaphor), but
in fact, this is not the case, especially since one adds a
slowing factor. I'm not clear how this is derived, though.
I find myself thinking that this is a surprising phenomenon
that is critically important, but sense that I should be able
to see why, rather than just "that's the way it works out."
Let's take the second problem first. The slowing factor is the simplest way
to introduce physical time into the control system equations. By this I
mean that it represents the fact that no physical variable can jump
instantly from one state to other: it must pass through all values between
the starting and ending values. In every real control system there is at
least one variable in the loop that is subject to this physical constraint.
To see what happens when you leave out physical time, just consider the
algebraic equations representing a control system:
e = r - p (error equals reference minus perception)
o = gain*e (output equals gain times error)
p = ff * o (perception = feedback factor times output)
This is a bare-bones representation of a control loop, leaving out all
complications (the input function is just a unity multiplier).
Now solve the equations for the perceptual signal p:
1. p = ff*o
2. p = ff*gain*e
3. p = ff*gain*(r - p) = ff*gain*r - ff*gain*p
Since p appears on both sides of the equation, we add ff*gain*p to both sides:
4. p + ff*gain*p = ff*gain*r
5. p*(1 + ff*gain) = ff*gain*r
ff*gain*r
6. p = ----------
1 + ff*gain
If we now let the product ff*gain become very large with respect to 1, we
get the approximation
7. p = r.
The perceptual signal p equals the reference signal r. To see how close
this approximation is, just use the actual values of ff and gain.
That's the right answer. However, we haven't said anything about how the
perceptual signal gets from its initial value to the final value. We might
try to work this out by using the above equations as a simulation, solving
them one at a time, over and over, using actual numbers. Let's say that ff
= 1 and gain = 100. The exact result would be p = 100*r/101. If r = 100, p
should become equal to about 99, but let's see what we get by solving the
equations serially.
Start with p = 0. Since r = 100, e = 100 - 0 or 100. The gain is 100, so
the output is 10,000. The feedback factor is 1 so p becomes 10,000. The
next value of the error signal is 100 - 10,000 or -9,900. The next value of
the output is gain*e or 100*(-9900) or -990,000, which is also the next
value of the perceptual signal p. The next value of the error is ....
Obviously something is wrong. The error is getting 99 times larger every
time we go around, reversing its sign each time. What's the matter?
The matter is that we have left out the fact that physical variables can't
change from one value to another instantly. To fix the problem in the
easiest possible way, we can put a slowing factor into the output process,
as follows.
In the first step above we said e = r - p = 100. The next step says that
the output should become gain*e or 10,000. But let's say that the output o
can actually change by only 1/S of the way to the final value during a
single iteration. We start with the initial value, o. Then we calculate the
change in o as the calculated new value minus the starting value: gain*e -
o. Dividing this by S, we get the amount of change that can happen in a
single iteration, (gain*e - o)/S. And finally, we add that allowed amount
of change to the initial value of o to find the actual new value of o at
the end of one iteration:
o(new) = o(old) + (gain*e - o(old))/S.
If you set S to 200, and substitute the above expression for o = gain*e in
the above series of equations, after two or three times around the loop you
will see that the perceptual signal is now approaching the reference value
of 100 very rapidly -- a few more times around and it will come to
equilibrium at the right value of about 99. Now the simulation converges to
the same final answer you get with the algebraic solution. As long as S is
larger than about 100, you'll see convergence; it will be slower as S gets
larger, but you'll eventually get to the right answer for any value of S
greater than 100.
I recommend actually going through the numerical calculations by hand, with
a pocket calculator, to watch this work. You could write a program to see
the same thing happening much faster, but if you do the calculations
hands-on you'll get a much better feel for what's going on. If you want to
_understand_ control, there's no better way than playing with the numbers.
You might guess that there is an optimum value of S (about 100), and that
it is related to the loop gain, ff*gain (it is). The least value of S for a
monotonic approach to the final value is (1 + ff*gain). In simulating a
real system, we would have to use much larger values of S, because
generally the real system will not be able to change its output to the
final value in a single iteration. In fact, we pick an S that makes the
simulated system behave as much like the real system as possible. Assuming
that we're using a fairly rapid iteration rate, we might have to set S to a
value 10 or 20 times the minimum value to make the simulation behave as
slowly as the real system behaves.
Now we can consider the first part of your question about amplifiction. In
the above equations, we're putting all the amplification in the output
function, in the form of the gain factor. When we do that (leaving out ff
because it's just 1), we find that
gain
p = ----------*r
1 + gain
Obviously, if the gain is some low number like 2, p = (2/3)*r, with an
error of 1/3 r (r - 2/3 r = 1/3 r). If the gain is 10, we have p = (10/11)
r and the error is 1/11 r. A gain of 1000 gives us p = (1000/1001)*r and
error = (1/1001)*r. As the gain gets larger, p gets closer to r and the
error shrinks toward zero as a fraction of the reference signal. Of course
if we were simulating this control system, we would have to use larger and
larger values of the slowing factor S to keep the wild oscillations from
occurring. But there would always be some value of S that would stabilize
the system, making the above solutions valid.
If you want to experience the joy of discovery, I suggest that you solve
the above equations for the error signal, using the same simulation
strategy with S set equal to (1 + gain), but now adding a disturbance d
with a value of 10 or 20 or so: the equations with the disturbance are
e = r - p;
o = o + (gain*e - o)/S
p = o + d;
If you like, you can first solve the equations algebraically, writing them as
e = r - p
o = gain*e
p = o + d
... and solving by sucessive substitutions as above. If you solve for the
output as well as for the error, you will learn something about how the
output relates to the disturbance.
But then set up the simulation and spend 15 minutes actually writing down
numbers. The result is quite beautiful.
I feel that playing with the equations would make it clearer,
but I also want to see if there's some obvious qualitative/contingent
aspect I'm missing before simply proving to myself enough times
that the quantitative/tautological form simply "works."
By all means play with the equations, and use actual numbers. I guarantee
that you's come out of it with a vastly increased understanding.
2. Russell's types
I'd be interested in any amount of elaboration, however speculative,
on the relationship between Russell's types and the orders of HPCT,
whether you are speaking of the nature of "typing" or the specific
types themselves.
My reference to Russell's theory of types was a bit of youthful
pretentiousness; I know no more about it than you do. The point was that
each new level introduces a new type of perception, not just a combination
of existing types. Russell was trying to solve the "barber" paradox (the
barber shaves everyone who does not shave himself: does the barber shave
himself?). This boiled down to a question about the class of all classes
that are not members of themselves. I'm not sure how the theory of types
solves this paradox, but I know how I solved it: by going up a level. The
barber can shave anyone he pleases, including himself. The logical problem
is irrelevant when you look at it that way; the barber is not constrained
by a silly logical rule that contradicts itself, unless he decides that he
can't shave anyone until he solves it. Somewhere in here I realized that
logical thinking is not the highest level. It's more like a good place to
get stuck.
3. Reference signals skipping orders
Bill Powers (1988, p277)--
"...there are arguments against reference signals skipping orders
on the way down in a control hierarchy (such signals would be treated
as disturbances and canceled)."
Perhaps I should have included more of the context of this
statement, since the passage is about the relationship of
first and second order perceptions, but my question is whether
you are saying that reference signals don't directly connect
to anything lower than the next level down in general. I thought
I had this straightened out, but, if you don't mind playing it
again, I'd appreciate it. Actually, the diagram on p278 is
very instructive, but whereas the "pipeline" that runs up the
hierarchy suggests skipping levels on the way up, there don't
appear to be any obvious downward pipelines that skip over
levels (I mean orders, but who can resist saying levels?).
A reference signal can skip levels only if there is no control system
active at an intermediate level. The reason is obvious: if the reference
signal results in a perceptual signal changing at a lower level, the
intermediate level system will see an unwanted change in its own
perception, and will change its output to the lower level to correct the
change. In doing so it will cancel or partly cancel the effect of the
higher level's output, leading to conflict.
Example. Suppose you're driving along while thinking about physical
mechanics. There's an intermediate-level system keeping the car on the road
by operating the steering wheel. In the course of your musings, it occurs
to you that a rotation of the steering wheel by the width of one of its
spokes would probably cause a measurable sideward acceleration. To test
this idea, you specify a rotation of the wheel of that amount, which the
lower systems operating the wheel would normally bring about. However, the
immediate result is that the car heads into oncoming traffic, and the
system that's trying to keep the car in its lane immediately reacts against
this movement of the wheel. If you're lucky, it will win.
Have fun with the numbers.
Best,
Bill P.