In my experiments, I've been trying to get NARS to decide that <canary
--> nofly> is an over-generalization, but haven't been able to. So far,
NARS is more confident of <canary --> nofly> than of <canary --> fly>,
since introducing these compound terms gives NARS many more ways to be
convinced of the "wrong" conclusion. I'd be happier if I could find
what further evidence I can give to NARS for it to be less confident of
the "wrong" conclusions. But I can't find it.
You mean, it is still the case after you added several flying canaries
as examples?
Pei
If you give the system the same number of flying canaries and
nonflying penguins, the system's confidence on <canary --> fly>
shouldn't be lower than that of <canary --> nofly> --- after all, the
latter involves more steps. If it is not the case, then something is
wrong. Send me your testing case if that happens.
> To me, it is a matter of falsifiable conclusions, especially when NARS
> gives a frequency of 1.0. Induction is OK, because if NARS concludes
> <bird--> nofly>. %1.0000;0.4475%
> then I can ask NARS why. It says "I have experience of something that
> is a bird and that nofly, therefore all birds nofly". If I want to
> decrease the frequency of this conclusion, I can supply an example of
> a bird that flies.
> But when NARS concludes
> <canary --> nofly>. %1.0000;0.4475%
> then I can ask NARS why. It says "I have experience of something that
> is a penguin and that nofly, therefore all canaries nofly". Even when
> NARS examines all its experience, it can still conclude this, and
> there is no new experience I can add to decrease the frequency of this
> conclusion. That is why I'm worried.
Understand, but it shouldn't happen --- you should be always able to
decrease the frequency of a conclusion by providing more negative
evidence.
Pei
If the problem is still there, try the following changes in
nars.inference.TruthFunctions:
static TruthValue implying(TruthValue v1) {
return implying(v1, w2c(1));
}
static TruthValue implied(TruthValue v1) {
return implied(v1, w2c(1));
}
They should solve the problem, though I'm afraid that the role of
analytical truths may be reduced too much for other examples. Anyway,
it doesn't hurt to try.
Pei
If the problem is still there, try the following changes in
nars.inference.TruthFunctions:
static TruthValue implying(TruthValue v1) {
return implying(v1, w2c(1));
}
static TruthValue implied(TruthValue v1) {
return implied(v1, w2c(1));
}
Sorry for the delay. Finally got some time this weekend.
The input does have the same number of flying canaries and nonflying penguins. It is the input given in issue 17.
http://code.google.com/p/open-nars/issues/detail?id=17
You are correct that the frequency for <canary --> nofly> is lower than <canary --> fly>, but the confidence is higher. Here are the results. (Full derivations are attached below.)
<canary --> fly>. %1.0000;0.6183%
<canary --> nofly>. %0.4214;0.7368%
Interestingly, before reaching the higher confidence solution for <canary --> nofly>, NARS has an intermediate solution:
<canary --> nofly>. %1.0000;0.5241%
which means that it fairly confident than not that <canary --> nofly> is true. However this is replaced by a higher confidence solution with a lower frequency.
You suggested adding more penguins and canaries. The problem is that I don't think NARS is trying all the solutions, even after running for a long time. With the same input sentences as above, but listed in a different order, NARS does not find the higher confidence result
<canary --> nofly>. %0.4214;0.7368%
but gets "stuck" on what I assume is an intermediate result:
<canary --> nofly>. %0.0000;0.6182%
Even though this is what I "want", I imagine that with enough resources and time, NARS would find the higher confidence result with non-zero frequency if the search algorithm were allowed to find it. So I don't trust the results I'm getting with more canaries and penguins: If I were to give the same input sentences in the right order, NARS would find higher confidence results than I have seen so far. This is why I would like a way to compute the solution with the "theoretical" highest confidence value.
Here are the results from the same input as issue 17, but with the revised truth value functions:
If the problem is still there, try the following changes in nars.inference.TruthFunctions: static TruthValue implying(TruthValue v1) { return implying(v1, w2c(1)); } static TruthValue implied(TruthValue v1) { return implied(v1, w2c(1)); }
<canary --> fly>. %1.0000;0.6183%
(the same as before)
<canary --> nofly>. %0.0812;0.6380%
This still has higher confidence than <canary --> fly> so the new truth values don't solve that problem. But the frequency is much lower, which is nicer.
In section 3.1 of the NAL spec, you describe a truth value with a complete subset relation (basically a frequency of 1.0) as "perfect". So I've been experimenting with code where the ConceptWindow not only shows the "present belief" (the highest confidence) but also the "perfect belief" (the highest confidence where the frequency is 1.0 or 0.0).
You suggested adding more penguins and canaries. The problem is that I don't think NARS is trying all the solutions, even after running for a long time. With the same input sentences as above, but listed in a different order, NARS does not find the higher confidence result
<canary --> nofly>. %0.4214;0.7368%
but gets "stuck" on what I assume is an intermediate result:
<canary --> nofly>. %0.0000;0.6182%
Even though this is what I "want", I imagine that with enough resources and time, NARS would find the higher confidence result with non-zero frequency if the search algorithm were allowed to find it. So I don't trust the results I'm getting with more canaries and penguins: If I were to give the same input sentences in the right order, NARS would find higher confidence results than I have seen so far. This is why I would like a way to compute the solution with the "theoretical" highest confidence value.
Yes, this is a problem. The control mechanism is still too rough, and sometimes misses the desired results, that is why I haven't tried many large examples yet. I'm sure there are many modifications to be made in the control part, though given my limited time, I'd rather spend it to finish the logic part first --- as I mentioned before, almost any change in the logic will have an effect on the control, while there is no dependency on the other direction, since the logic doesn't depends on the details of the control. For now, you may also want to test the logic in a more step-by-step way, rather than expect the control mechanism to produce all desired results.
In section 3.1 of the NAL spec, you describe a truth value with a complete subset relation (basically a frequency of 1.0) as "perfect". So I've been experimenting with code where the ConceptWindow not only shows the "present belief" (the highest confidence) but also the "perfect belief" (the highest confidence where the frequency is 1.0 or 0.0).
Good idea. As far as in this form <canary --> fly> has a higher confidence than <canary --> nofly>, I don't worry if the mixed conclusion has a even higher confidence.
For testing purposes, I'm thinking of adding a control that will allow the user to select the concept, task link and term link for the next step, instead of using the "takeOut" functions. Any ideas on how you would like to see this? I'm thinking it could be (yet another) button "Select" in the ConceptWindow since that way we would know that it is a valid concept. Clicking "Select" would bring up another window to allow selecting the task link and term link (or to cancel).
I committed the code to display "perfect" belief and created an issue for you to review.
In section 3.1 of the NAL spec, you describe a truth value with a complete subset relation (basically a frequency of 1.0) as "perfect". So I've been experimenting with code where the ConceptWindow not only shows the "present belief" (the highest confidence) but also the "perfect belief" (the highest confidence where the frequency is 1.0 or 0.0).
Good idea. As far as in this form <canary --> fly> has a higher confidence than <canary --> nofly>, I don't worry if the mixed conclusion has a even higher confidence.
- Jeff
On Sun, Oct 11, 2009 at 2:15 PM, Jeff Thompson <jef...@gmail.com> wrote:
For testing purposes, I'm thinking of adding a control that will allow the user to select the concept, task link and term link for the next step, instead of using the "takeOut" functions. Any ideas on how you would like to see this? I'm thinking it could be (yet another) button "Select" in the ConceptWindow since that way we would know that it is a valid concept. Clicking "Select" would bring up another window to allow selecting the task link and term link (or to cancel).
That can be done, though may be quite complicated. Usually if you only feed the system the minimum tasks needed for a certain step, you'll get the desired result --- see my examples, such as http://code.google.com/p/open-nars/wiki/ProceduralLearning
I committed the code to display "perfect" belief and created an issue for you to review.
Thank! I'll take a look.
Pei Wang wrote:Can I use this approach to get a multi-line derivation like the ones I've been attaching? I also want to see the correct "base" input experience in the stamp. If I just enter intermediate results with the intermediate truth values, then stamp will be all different.
On Sun, Oct 11, 2009 at 2:15 PM, Jeff Thompson <jef...@gmail.com> wrote:
For testing purposes, I'm thinking of adding a control that will allow the user to select the concept, task link and term link for the next step, instead of using the "takeOut" functions. Any ideas on how you would like to see this? I'm thinking it could be (yet another) button "Select" in the ConceptWindow since that way we would know that it is a valid concept. Clicking "Select" would bring up another window to allow selecting the task link and term link (or to cancel).
That can be done, though may be quite complicated. Usually if you only feed the system the minimum tasks needed for a certain step, you'll get the desired result --- see my examples, such as http://code.google.com/p/open-nars/wiki/ProceduralLearning