Contextually Adaptive Confidence Decay
PLN is all about uncertain truth values, yet in itself, there is an important kind of uncertainty it doesn't handle explicitly and completely in its standard truth value representations: the decay of information with time.
PLN does have an elegant mechanism for handling this: in the <s,d> formalism for truth values, strength s may remain untouched by time (except as new evidence specifically corrects it), but d may decay over time. So, our confidence in our old observations decreases with time. In the indefinite probability formalism, what this means is that old truth value intervals get wider, but retain the same mean as they had back in the good old days.
But the tricky question is: How fast does this decay happen?
This can be highly context-dependent.
For instance, 20 years ago I learned that the electric guitar is the most popular instrument in the world, and also that there are more bacteria than humans on Earth. The former fact is no longer true (keyboard synthesizers have outpaced electric guitars), but the latter is. And, if you'd asked me 20 years ago which fact would be more likely to become obsolete, I would have answered the former — because I knew particulars of technology would likely change far faster than basic facts of biology.
On a smaller scale, it seems that estimating confidence decay rates for different sorts of knowledge in different contexts is a tractable data mining problem, that can be solved via the system keeping a record of the observed truth values of a random sampling of Atoms as they change over time. (Operationally, this record may be maintained in parallel with the SystemActivityTable and other tables maintained for purposes of effort estimation, attention allocation and credit assignment.) If the truth values of a certain sort of Atom in a certain context change a lot, then the confidence decay rate for Atoms of that sort should be increased.
This can be quantified nicely using the indefinite probabilities framework.
For instance, we can calculate, for a given sort of Atom in a given context, separate b-level credible intervals for the L and U components of the Atom's truth value at time t-r, centered about the corresponding values at time t. (This would be computed by averaging over all t values in the relevant past, where the relevant past is defined as some particular multiple of r; and over a number of Atoms of the same sort in the same context.)
Since historically-estimated credible-intervals won't be available for every exact value of r, interpolation will have to be used between the values calculated for specific values of r.
Also, while separate intervals for L and U would be kept for maximum accuracy, for reasons of pragmatic memory efficiency one might want to maintain only a single number x, considered as the radius of the confidence interval about both L and U. This could be obtained by averaging together the empirically obtained intervals for L and U.
Then, when updating an Atom's truth value based on a new observation, one performs a revision of the old TV with the new, but before doing so, one first widens the interval for the old one by the amounts indicated by the above-mentioned credible intervals.
For instance, if one gets a new observation about A (L_new, U_new), and the prior TV of A (L_old, U_old) is 2 weeks old, then one may calculate that L_old should really be considered as:
(L_old - x, L_old+x)
and U_old should really be considered as:
(U_old - x, U_old + x)
so that (L_new, U_new) should actually be revised with:
(L_old - x, U_old + x)
to get the total:
for the Atom after the new observation.
Note that we have referred fuzzily to "sort of Atom" rather than "type of Atom" in the above. This is because Atom type is not really the right level of specificity to be looking at. Rather — as in the guitar vs. bacteria example above — confidence decay rates may depend on semantic categories, not just syntactic (Atom type) categories. To give another example, confidence in the location of a person should decay more quickly than confidence in the location of a building. So ultimately confidence decay needs to be managed by a pool of learned predicates, which are applied periodically. These predicates are mainly to be learned by data mining, but inference may also play a role in some cases.
The ConfidenceDecay MindAgent must take care of applying the confidence-decaying predicates to the Atoms in the AtomTable, periodically.
The ConfidenceDecayUpdater MindAgent must take care of:
- forming new confidence-decaying predicates via data mining, and then revising them with the existing relevant confidence-decaying predicates.
- flagging confidence-decaying predicates which pertain to important Atoms but are unconfident, by giving them STICurrency, so as to make it likely that they will be visited by inference.
As an example of the above issues, consider that the confidence decay of:
Inh Ari male
should be low whereas that of:
Inh Ari tired
should be higher, because we know that for humans, being male tends to be a more permanent condition than being tired.
This suggests that concepts should have context-dependent decay rates, e.g. in the context of humans, the default decay rate of maleness is low whereas the default decay rate of tired-ness is high.
However, these defaults can be overridden. For instance, one can say "As he passed through his 80's, Grandpa just got tired, and eventually he died." This kind of tiredness, even in the context of humans, does not have a rapid decay rate. This example indicates why the confidence decay rate of a particular Atom needs to be able to override the default.
In terms of implementation, one mechanism to achieve the above example would be as follows. One could incorporate an interval confidence decay rate as an optional component of a truth value. As noted above one can keep two separate intervals for the L and U bounds; or to simplify things one can keep a single interval and apply it to both bounds separately.
Then, e.g., to define the decay rate for tiredness among humans, we could say:
ImplicationLink_HOJ InheritanceLink $X human InheritanceLink $X tired <confidenceDecay = [0,.1]>
or else (preferably):
ContextLink human InheritanceLink $X tired <confidenceDecay = [0,.1]>
Similarly, regarding maleness we could say:
ContextLink human Inh $X male <confidenceDecay = [0,.00001]>
Then one way to express the violation of the default in the case of grandpa's tiredness would be:
InheritanceLink grandpa tired <confidenceDecay = [0,.001]>
(Another way to handle the violation from default, of course, would be to create a separate Atom:
and consider this as a separate sense of "tired" from the normal one, with its own confidence decay setting.)
In this example we see that, when a new Atom is created (e.g. InheritanceLink Ari tired), it needs to be assigned a confidence decay rate via inference based on relations such as the ones given above (this might be done e.g. by placing it on the queue for immediate attention by the ConfidenceDecayUpdater MindAgent). And periodically its confidence decay rate could be updated based on ongoing inferences (in case relevant abstract knowledge about confidence decay rates changes). Making this sort of inference reasonably efficient might require creating a special index containing abstract relationships that tell you something about confidence decay adjustment, such as the examples given above.