Imagine we have a HTM using two layers. Layer one (Low-Level-Hierachie) learns patterns like AABBAA and CCBBCC. Layer two is going to see a very similar input over a longer periode of time due to a constant prediction of layer one. Let AABBAA be P in Layer two and CCBBCC be Q in Layer two.
Layer two will see PPPPPP as Input while AABBAA is active. Each P will be represented differently because of the previous context. That means there is no hierachial compression and the output of layer two will not be more stable than the output of Layer one.
Did I miss something? Has this problem already be addressed?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
From my understanding of the cortical learning algorithm, multiple cells per column are used to represent the same input in different contextes without confusing the HTM. Jeff Hawkings describes this in his talk (http://www.youtube.com/watch?feature=player_detailpage&v=qZM9JREjnp4#t=2583s) using the example "There are too many two two's to count".
Now if multiple A's in a row will be presented to a layer, the temporal pooler is going to form sequences. It is going to use random cells in the columns to form a prediction. This means that only the predicted cell is going to become active (an unexpected feed forward activation of the column would activate all cells in the column) giving a context to following predicitions. HTM is pretty hard to understand, so please correct and forgive me if I understood something wrong.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not so "expert" but this is how I think it works..
First, I think unexpected input should occur in relatively low precentages after learning is done.
If you have unexpected input without possible predictions, then yes, the unexpected input will feed directly to the top region and this is how you would call it "a static output".
If you have already learnt the sequence or anything else that links to the same column, then you will have a prediction. both the current state and the prediction is feed forwarded to the top region. so as you go up the hiearachy you would see predictions of further time ahead.
like this :
Low region : "There"
high region : "There"
low region : "are"
high region : "are
low region "too"
high region : "too"
but in the next time the same sentence would play, after learning the sequence
low region "There" + prediction("are")
high region : "There are" + prediction("too many")
low region : "are" + prediction("too")
high region : "are too" + prediction("many two")
and so forth..
Last edit: Itay 2013-04-01
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The question is for now theoretical as we assume a the CLA is working as we wish. I think itay is correct in what he says, so let's think it through: supposed the sequence AABBAA (CCBBCC) is already recognized as you said. I will make this table first to illustrate what i guess you think happens:
0, A, P, learning
1, A, P, learning
2, B, P, X
3, B, P, X
4, A, P, X
5, A, P, X
6, C, Q, learning
7, C, Q, learning
8, B, Q, Y
9, B, Q, Y
10, C, Q, Y
11, C, Q, Y
In this case output of region2 would be that of region1. that is not the case because region 2 is now learning the sequences of sequences. If AABBAA and CCBBCC happen in some order, which htm should recognize, the output of region 2 after learning will be:
The time sorta overlaps between regions, if your recording 1234, then youll get 1234, 2345, 3456, then on the next region, its 123456, 234567, 345678, then on the layer after , 123456789, 23456790, 345678901, just getting a longer and longer word as you go.
note you have to sit it there for ages for it to find these longer segments, they dont appear in it straight away.
thats my theory anyway, i figure if you predict on the last region, and feedback from there youll get a running motion video.
so you are compressing something, the later word sizes are build ups of previous constructs, so you store long sequences with less ram.
No lie, itll separate different word sizes and time lengths from each other, they will all store at a single symantic.
If the symantic(segment of space and time, of any shape or duration) is long, it stores in the highest region, if the symantic is short, it stores in the lowest region, thats all, the only thing im not sure about is how much you can streak time without blowing the space pool. (it wont playback anymore)
the limits of what you can store is easily seen by the amount of columns, thats the amount of distinct symantics you can store, no more.
Last edit: Magnus Wootton 2013-05-17
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Imagine we have a HTM using two layers. Layer one (Low-Level-Hierachie) learns patterns like AABBAA and CCBBCC. Layer two is going to see a very similar input over a longer periode of time due to a constant prediction of layer one. Let AABBAA be P in Layer two and CCBBCC be Q in Layer two.
Layer two will see PPPPPP as Input while AABBAA is active. Each P will be represented differently because of the previous context. That means there is no hierachial compression and the output of layer two will not be more stable than the output of Layer one.
Did I miss something? Has this problem already be addressed?
Why you say that
It is like showing an static input to the first layer (assume just A) which will cause static output.
From my understanding of the cortical learning algorithm, multiple cells per column are used to represent the same input in different contextes without confusing the HTM. Jeff Hawkings describes this in his talk (http://www.youtube.com/watch?feature=player_detailpage&v=qZM9JREjnp4#t=2583s) using the example "There are too many two two's to count".
Now if multiple A's in a row will be presented to a layer, the temporal pooler is going to form sequences. It is going to use random cells in the columns to form a prediction. This means that only the predicted cell is going to become active (an unexpected feed forward activation of the column would activate all cells in the column) giving a context to following predicitions. HTM is pretty hard to understand, so please correct and forgive me if I understood something wrong.
Not so "expert" but this is how I think it works..
First, I think unexpected input should occur in relatively low precentages after learning is done.
If you have unexpected input without possible predictions, then yes, the unexpected input will feed directly to the top region and this is how you would call it "a static output".
If you have already learnt the sequence or anything else that links to the same column, then you will have a prediction. both the current state and the prediction is feed forwarded to the top region. so as you go up the hiearachy you would see predictions of further time ahead.
like this :
Low region : "There"
high region : "There"
low region : "are"
high region : "are
low region "too"
high region : "too"
but in the next time the same sentence would play, after learning the sequence
low region "There" + prediction("are")
high region : "There are" + prediction("too many")
low region : "are" + prediction("too")
high region : "are too" + prediction("many two")
and so forth..
Last edit: Itay 2013-04-01
The question is for now theoretical as we assume a the CLA is working as we wish. I think itay is correct in what he says, so let's think it through: supposed the sequence AABBAA (CCBBCC) is already recognized as you said. I will make this table first to illustrate what i guess you think happens:
t(imeStep),InRegion1,OutRegion1/InRegion2, OutRegion2
0, A, P, learning
1, A, P, learning
2, B, P, X
3, B, P, X
4, A, P, X
5, A, P, X
6, C, Q, learning
7, C, Q, learning
8, B, Q, Y
9, B, Q, Y
10, C, Q, Y
11, C, Q, Y
In this case output of region2 would be that of region1. that is not the case because region 2 is now learning the sequences of sequences. If AABBAA and CCBBCC happen in some order, which htm should recognize, the output of region 2 after learning will be:
t(imeStep),InRegion1,OutRegion1/InRegion2, OutRegion2
12, A, P, Z
13, A, P, Z
14, B, P, Z
15, B, P, Z
16, A, P, Z
17, A, P, Z
18, C, Q, Z
19, C, Q, Z
20, B, Q, Z
21, B, Q, Z
22, C, Q, Z
23, C, Q, Z
If you now compare the three columns, you will see a temporal stability emerging.
The time sorta overlaps between regions, if your recording 1234, then youll get 1234, 2345, 3456, then on the next region, its 123456, 234567, 345678, then on the layer after , 123456789, 23456790, 345678901, just getting a longer and longer word as you go.
note you have to sit it there for ages for it to find these longer segments, they dont appear in it straight away.
thats my theory anyway, i figure if you predict on the last region, and feedback from there youll get a running motion video.
so you are compressing something, the later word sizes are build ups of previous constructs, so you store long sequences with less ram.
No lie, itll separate different word sizes and time lengths from each other, they will all store at a single symantic.
If the symantic(segment of space and time, of any shape or duration) is long, it stores in the highest region, if the symantic is short, it stores in the lowest region, thats all, the only thing im not sure about is how much you can streak time without blowing the space pool. (it wont playback anymore)
the limits of what you can store is easily seen by the amount of columns, thats the amount of distinct symantics you can store, no more.
Last edit: Magnus Wootton 2013-05-17