RichardEvans / apperception

66 stars 13 forks source link

Questionable output on data file "predict_example.lp" #2

Open TaraPesman opened 3 years ago

TaraPesman commented 3 years ago

When running data file "predict_example.lp" in the "misc" folder, I get the following output:

Taras-Macbook:apperception-master macbook$ ~/.cabal/bin/solve misc predict_example.lp
Solving misc predict_example.lp
Generating temporary files...
Generated temp/misc_predict_example_init.lp
Generated temp/misc_predict_example_subs.lp
Generated temp/misc_predict_example_var_atoms.lp
Generated temp/misc_predict_example_interpretation.lp
Generated temp/misc_predict_example_script.sh
Calling clingo...
Processing data/misc/predict_example.lp.
-------------
Answer
-------------

Initial conditions
------------------

s(c_on,obj_sensor_a)
s(c_on,obj_sensor_b)
s(c_p3,obj_sensor_a)
s(c_p3,obj_sensor_b)

Permanents
----------

isa2(p_r,obj_sensor_a,obj_sensor_b)
isa2(p_r,obj_sensor_b,obj_sensor_b)

Rules
-----

Constraints
-----------

c_on+c_off
c_p1+c_p2+c_p3

Trace
-----

Time 1: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 2: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 3: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 4: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 5: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 6: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 7: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 8: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 9: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Time 10: 
s(c_on, obj_sensor_a)
s(c_on, obj_sensor_b)
s(c_p3, obj_sensor_a)
s(c_p3, obj_sensor_b)

Statistics
----------

Num arrow rules: 0
Num causes rules: 0
Total body atoms: 0
Num inits: 6
Total cost: 6
Total num clauses: 6

Accuracy
--------

Status: incorrect

Percentage accurate: NaN

Optimization: 10

As can be seen above, the set of rules is empty, and thus every state in the trace is equal to the initial state. This is unexpected, as the pattern in the input sensory sequence is simple and predictable: the two sensors can each be described as looping through the states on-on-off repeat.

In conclusion, I would have expected a full-blown unified interpretation as the output. Might there be a mistake in the file, or in the system elsewhere? Or is it my expectations that are incorrect?

RichardEvans commented 3 years ago

Hi Tara,

Your expectations are correct. It should generate a theory with non-empty rules. I will have a look into this strange and unsatisfactory behaviour.

On Fri, May 14, 2021 at 12:57 PM TaraPesman @.***> wrote:

When running data file "predict_example.lp" in the "misc" folder, I get the following output: `Taras-Macbook:apperception-master macbook$ ~/.cabal/bin/solve misc predict_example.lp Solving misc predict_example.lp Generating temporary files... Generated temp/misc_predict_example_init.lp Generated temp/misc_predict_example_subs.lp Generated temp/misc_predict_example_var_atoms.lp Generated temp/misc_predict_example_interpretation.lp Generated temp/misc_predict_example_script.sh Calling clingo... Processing data/misc/predict_example.lp. Answer Initial conditions

s(c_on,obj_sensor_a) s(c_on,obj_sensor_b) s(c_p3,obj_sensor_a) s(c_p3,obj_sensor_b) Permanents

isa2(p_r,obj_sensor_a,obj_sensor_b) isa2(p_r,obj_sensor_b,obj_sensor_b) Rules Constraints

c_on+c_off c_p1+c_p2+c_p3 Trace

Time 1: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 2: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 3: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 4: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 5: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 6: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 7: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 8: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 9: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b)

Time 10: s(c_on, obj_sensor_a) s(c_on, obj_sensor_b) s(c_p3, obj_sensor_a) s(c_p3, obj_sensor_b) Statistics

Num arrow rules: 0 Num causes rules: 0 Total body atoms: 0 Num inits: 6 Total cost: 6 Total num clauses: 6 Accuracy

Status: incorrect

Percentage accurate: NaN

Optimization: 10`

As can be seen above, the set of rules is empty, and thus every state in the trace is equal to the initial state. This is unexpected, as the pattern in the input sensory sequence is simple and predictable: it is similar to the one in example 9 discussed in the article "Making sense of sensory input" (2021, p.30), where the two sensors can each be described as looping through the states on-on-off repeat.

In conclusion, I would have expected a full-blown unified interpretation as the output. Might there be a mistake in the file, or in the system elsewhere? Or is it my expectations that are incorrect?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/RichardEvans/apperception/issues/2, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHCZGMHEXEH5LYHGAEKGQDTNUFZDANCNFSM444JZZNA .

TaraPesman commented 3 years ago

Another issue that I should point out, since it can also be seen from the output above, is that all data files in the folder "misc" give "Percentage accurate: NaN". I do not think this is the intention either, so maybe check into that too. Thanks in advance!

RichardEvans commented 3 years ago

Hi Tara,

I've had a look at this.

There is a data entry error in this particular example.

See https://github.com/RichardEvans/apperception/blob/master/code/ExampleTemplates.hs line 323: use_noise=True

If use_noise is true, it allows for noisy (mislabelled) input and hence finds a simpler theory that captures most but not all of the data sequence.

So try use_noise=False.

I am currently working on a new codebase, and am not actively working on the old codebase. If you want to submit changes or fixes to the old codebase, I would be happy to accept them.

On Thu, May 20, 2021 at 12:15 PM TaraPesman @.***> wrote:

Another issue that I should point out, since it can also be seen from the output above, is that all data files in the folder "misc" give "Percentage accurate: NaN". I do not think this is the intention either, so maybe check into that too. Thanks in advance!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/RichardEvans/apperception/issues/2#issuecomment-844993705, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHCZGOP6J7OAPSC7NXPQ4LTOTVONANCNFSM444JZZNA .