Sign in to follow this  

rambling about htm

Recommended Posts

rouncer    294
I'm renting a computer for $60 a week, its a bargain, because I know what I can do with this beast.
My plan is a 32x32 pixel 1 bit vision cortex.
The idea, is you group the pixels that appear at the same time, if you allow enough room for every possible group you exponentially expand to impossible proportions, but I have a theory that eventually, grouping collections to singletons, you eventually contain it and it begins to shrink making it possible.
It will be gpu programming, I've had enough practice now to code anything in parallel.  Do nothing know nothing idiots argue with me, but I can code anything with 
my video card
Feynman knew too, with a bit of practice one starts to think more parallel about ideas, it doesn't take long before one can even code something seemingly sequential like a
diamond fill even in parallel.
It's like the brain?
Well a collection of pixels at the same time is a coincidence in time, and if you store coincidences of near time you also collect time together as a single "idea" many things that happen at similar time become a single thing.
I have no idea if we use "temporal glue" like that to form our relations database upstairs, but its the best theory to date.
You also can take fuzzy data, or similar data, and say what its "most like" and that's the secret of getting it interactive (say I wanted to turn star wars into a video game, just by inserting the movie into it) maybe that's not possible, but it almost is, I can then flip motor bits and it'll bring up the fuzzily similar visual readout for the changed motor bits, that's how it can make games, that look like movies.
(and then maybe more people would at least be interested in it as a funny little side show game, you hide in the corner- that is in fact wholly remarkable, but people care little in that way.)
"pick the most similar screen, with the novel motor as a constraint."
The way it works is, it learns the most "successful groups" successful in as in arised the most often (just groups of pixels, I shit you not)  it'll collect together the pixels of a  little segment in time that arised most often, it must be a variable amount of time and a variable amount of space, to do it properly, it must "carve the space and time" to make the proper puppet out of it.
Jeff Hawkins blew my insignificant little mind, but its down to my own work now to finish it off.   numenta, his company has stopped educating the idea now, he's told us
the main ideas, and I guess it's down to us to nut out the final details, fair enough jeff.
once the first groups are made, then yes, you make groups of those groups, then groups of those, the only way this thing could ever fit into ram is eventually you run out
of groups to make, hence the 7 layers in our brain (so I read)  I figure all coincidences have been drawn and there's no more work to do, or its impossible to do further work
on the data.
I want "infinite store"  that's the main thing I'm going for. and that'll take the full power of both GTX's.
So I can say, I can fit anything 32x32 in motion into this little eye and it'll keep on remembering more and more.
* infinite store (well infinite for 32x32, thats the catch your brain isn't infinite, it can just store everything in the space provided)
* feedback POSSIBLE.  the problem with Jeff's version, is it has lossy feedback, we must get over this problem and i think it IS possible.
* inference POSSIBLE.  once one has fixed feedback, then inference is then screwed.  so inference and feedback must work in unison to make each other possible, inference is "give me similar old result from novel input"
* symantics (clever name for pixel group) should have varying time duration and space take up that triggers them to make them more closer to a word database triggered by sense data.
and they say us ai guys are getting nowhere!! We are actually nearly there.
After all this, what have we got?
A coincidence database that has no idea itself what it means inside it, except maybe it's trial and error linking emotions to it or something, I don't know.
Things I'm a bit iffy about, is connecting together polymorphic objects to a single word, and creating hierarchies of objects that don't appear together often, but we can
group them, there may be more to coincidence making than just what you see at similar time is the same thing.
* movie games
* non variant response to differing perspectives (iding)
* it can turn a still into a motion picture. (oracling)
* it works on bits, so it can work on any sense imaginable
* multisense linkage
That's what you get straight out of coding it, what else it needs I'm not sure.
You see, it actually doesn't generalize ENOUGH, I think its problem is.
and because of that, it misses things, because it should have glued together things it didn't, screwing up further learning.
Jeff has an id product and an oracle product, its pretty cool.
so I couldn't be more excited about it.
Edited by jbadams
Removed unnecessary line breaks and did some basic grammar correction.

Share this post

Link to post
Share on other sites
IADaveMark    3731

Can't help but visualize this on a piece of narrow paper with a manual typewriter going "ding" and him whacking the carriage back over. After all, that's the only reason that he wouldn't use the full column width in the 21st century.


I didn't even read the post because I can't take seriously someone who hits enter this many times.

Share this post

Link to post
Share on other sites
jbadams    25674

rouncer: You're not going to get any useful responses if no-one can read your post.  Please don't manually insert line-breaks into your posts to create a tiny column width -- it makes it really hard to read your already complicated post  on a monitor with a decent resolution.  I've edited your original post to remove the line breaks.  You should also put at least some basic effort into typing properly -- you didn't even bother with capitalising the first letter of each sentence -- I also fixed this for you.  They're small problems, but they add up to make your post much more difficult to read than it should be, and the result is that people don't really read it.

Share this post

Link to post
Share on other sites
alvaro    21246
jbadams: I think your well-intentioned editing is a disservice to the community. I read about half of the message, and its formal flaws were a perfect match for the confused thinking it expressed.

I will try to be constructive here: I don't know what the purpose of the post was, but people will be much more likely to pay attention to an idea if it has been developed to the point of having a demo. In the case of machine learning, there are standard data sets on which you can test the performance of your method. If you can show impressive results in some of those data sets, you'll have everyone's attention. In the meantime... yawn!

Share this post

Link to post
Share on other sites
rouncer    294

hehe, I did call it "rambling about htm"  but seriously, the things I said are scientific facts.


Ill get a demo done, then you can see the process of it working, Ive got tonnes of tips for people on the subject of HTM's.

You know if the HTM is working if your getting enough "prediction hits" per frame, if your predicting novel data, which is quite astounding... it must be working.

Edited by rouncer

Share this post

Link to post
Share on other sites
rouncer    294
Ok, imagine this, you start off with a small eye, its 32x32 and its either on or off, no greyscale.
Then call this a "sheet"  and its nodes reading the sheet in segments, the first nodes are 2x2 sized (so theres 16x16 of them, 2x2 each reading a 32x32 sheet) then in the next level 2x2 again, then it goes to 3x3 twice, then 4x4 twice, then 5x5 twice, then 6x6 twice, (you wind up with about 15 layers) and you keep growing, it means you slowly read more of the input per node but you always output 4x4 every node for 16 different identities, each node detects 16 different things only.   2x2 actually makes 16 different permutations, but you are allowed to grow because it naturally becomes invariant (theoretically) and you always only need 16 different things even for the larger input nodes.  this way youll collapse to a smaller output sheet, and collect larger parts of the screen that were segmented before, but now together.    this is like for id'ing larger parts of the screen.
just imagine after youve processed every black box (or node) they make a 4x4 output per node, so say after the first 16x16 nodes on the first level update, they will make a 16*4  (64x64) output sheet, to be processed by the next level.  so if you notice, itll actually grow a bit until the node size increase takes over then itll reduce the output sheet to 1x1 after enough levels.  every node updates the same way, just they read a variable input segment of the previous output sheet, depending on how far up the contraction we are.
updating the nodes is very simple.
1. first pick id (of 16 id's) for the input, only pick exact matches to the internal store of the node, if the node is 2x2 the id's are all 2x2, if there is no id overwrite least used id.
2. then looking at the last frame, link the cell in the old frame to the new frame, if the same cell is on twice add a predict myself one more time to it. u have so many cells for each id, to store context, overwrite the least used cell, always.
3. then make prediction, you do that by taking the output pixel of the 4x4 output segment (the id) and then finding the next 4 cells that follow and light them up. this formulates the output sheet with space and time pressed together.
and this way, you can feedforward learn, feedforward "poke" and feedback reconstruct all the motion video that went into it, and you can constrain some parts of the sheet, for say forcing motor control onto it.
If youd like to feedback (reconstruct its innards), it would be a matter of poking with some kind of fuzzy error allowance (to grab similarities), then feeding back from there, and rolling predictions on the final layer that moved (that didnt just roll to itself)   poke, feed, poke, feed, and thatll cycle out whats inside it, and the more error you add the more itll think everything is the same thing, and could be interesting to watch.
its simple, when i get my computer ill do it, hopefully itll run on a couple of gtx 690's. smile.png
Counting all ids throughout the nodes with 16 nodes per id, it can store about a million id's representing parts and wholes throughout the layers, I wonder if thats enough for everything?
Edited by rouncer

Share this post

Link to post
Share on other sites
rouncer    294

so well use mipless textures, this way they can be non sizes of 2.
DATA REQUIRED (10 textures per layer, 3 reusable vertex buffers)   -> approx size <-
input/output sheet texture                        R8_UNORM (one for each layer) small
prev. frame in/out sheet                                    R8_UNORM "                      small
integer conversion texture                                   R32_UINT "                      small
outputid texture                                                     R8_UINT "                       small
idusage texture                                                     R32_UINT "                     small
internal state texture                                            R32G32_UINT "               small
internal state prediction state                                R8_UINT "                      medium
volume prediction texture                                 R8G8B8A8_UINT "               large
volume connection usage texture                            R32_UINT "                  large

nodeid buffer vertex small
vertexidoutput buffer vertex                 (just one reusable and reallocatable) small
vertexprediction buffer vertex                                 "                                      small


ok. pick id.

1. first pick id for the input, if there is no id overwrite least used id.

1. (quick load)

take the input sheet, and develop an unsigned integer texture. this is just making an integer out of on and off values for each input segment.
predictive state pixels are 1.0f, non predictive state are 0.5f and off pixels are 0.
just sum the pixels with powers of 2 relevant to their position, and you wind up with a number that stands for a pattern of pixels for each input segment.
make a vertex list for every node in the level.
Compare input integer with the internal id integers and find which id is the same as the input, if none are mark it as a -1.
then take this new vertex list outputted and if you find a -1 you write the input integer to the internals texture at the least used id.
you need yet another texture for how often each id is used.
and then we then decrement and increment these.
the internal state must be able to distinguish between predictions and non predictions, non predictions override predictions, this way
we can reconstruct data, without it we cant. (in my theory so far, which is pretty loose to tell the truth.)
so there needs to be either "im not a prediction" or "i am a prediction" with every pixel in the id. this will take another texture to keep.

2. temporal and prediction.
2. (medium load)

for every node make a single vertex at the corresponding id's location (one column in the output 4x4 segment is actually active, from the input) and look up its column
You must access the volume texture to do this, so its a lot of samples,
you must pick the most least used cell, starting from 0 going to DEPTH. if a cell is in predictive state from the previous frame you needent scan, and just activate this cell, and mark its use as a more valid a prediction. we do this using the previous output sheet.
then from this single vertex, develop future predictions using the prediction volume. (which is always 4x4xNODESxDEPTH)


PROB - the main problem is i have to sample all the way up the column, ill keep thinking for better solution.
but cleverly using the vertex list here is not all columns will be relevant.
in fact ive just figured out a solution,  bust the column with a vertex list, and read off the usage values, then pick the least on cpu? one thing on cpu? dunno.

3. formulate output sheet.
3. (quick load)
mark the new prediction marks on the volume texture, using the previous output sheet, and adjust uses.

formulate the output sheet, youll have a sparse representation plus prediction, predicted values MUST BE MARKED AS PREDICTIONS.

just got to get over this non integer problem, and get my computer, then off i go.

then you just got to do it for all 15 layers, and if its running 60fps eat my dust.

When poking you pick closest result to id instead of just picking exacts while learning, this will give you inference abilities you dont have whilst learning, which works
with exacts only. I think that will work but im not sure, im trying it that way first.

Edited by rouncer

Share this post

Link to post
Share on other sites
jbadams    25674

Additionally, if you haven't tried this then no matter how sound your logic may or may not be it's really all just theoretical at this point.  Unfortunately given your rambling, often poorly formatted and hard to understand writing style it's unlikely many people will be interested unless you can show that your technique a) actually works, and b) does something interesting/noteworthy/useful.  As it is, you're basically sharing instructions for a technique that may or may not even work, and for which you haven't properly explained the potential applications if it does work.


You keep mentioning that you're planning on trying this out, but it would seem you haven't done so yet for whatever reason -- why don't you try it out and then share once you have actual results?  I'm sure people would be much more likely to be interested if you could show a working technique that actually does something interesting.  Plus, if it turns out not to work, all this rambling will have been for nothing -- why not avoid that and find out?

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this