Thursday, October 29, 2009
Languages and analogies
Its always interesting to hear about the cultural information, particularly some of the expressions present and examine how different they are from your primary language. Recently this topic came up elsewhere and I remembered an example that I noticed years ago. Consider music in which there is singing. The rhythm of words fit nicely with the song and contribute to the overall sound of it. Since words may sound radically different between languages, there might be places where a word simply wouldn't fit in English, because of length for example. Even this aside, the complete meaning of words is also usually very different. Translation from one language to another requires some parsing of meaning, then reconstruction in the target language. Literal translation almost never works. (Though it makes for some pretty funny constructions usually. ;)
Naturally, meaning is required for the expression of analogies, and so this operates on a higher level than single words. Analogies are about the link between concepts, not necessarily the concepts themselves. I wonder if, since the meanings of words are different, their structure and distribution and everything, that analogies suffer from the same sort of problems as words in literal translations? (I never stop blabbering about how stuff like this would be cool to see expressed in other languages, and examine the mappings and such, but honestly, its really cool, I think.)
Beyond the structure of the language, how does it influence the way people think? Does that cause them to inherently make different sorts of analogies? I'd assume so. Where does this put bilingual people though? Do they think differently than people who only speak one of their two languages? Do the languages mesh well, in terms of analogies, for the individual?
Is there even a way of measuring something like this yet?
A short ramble about perception
Naturally, cognitive processes like attention allow us to make sense out of what we want (or need) and then discard the rest (or perhaps not discard). Is this throttling or is it simply the construction of higher-level perception? Its natural to think that perhaps between low level perception and higher tiers that some sort of construction and perhaps a little interpretation takes place. Building blocks, or objects (in mind of course) are then passed along, parsed by each individual mechanism or interpreter before, somewhere down the line, they become some higher level concepts. Interestingly enough, a higher level interpretation of some sensory input will yield much more information about something than perhaps a lower one would. This is because of abstract representations that we are somehow able to juggle or even pick up from other sources.
I suppose I have to apologize first. So far this entry has just been a rant about a mixture of what I believe I understand about perception and the information contained in the beginning of the chapter. As before, perception and the representation of things we perceive is remarkable. The crafting of analogies is no small feat either, of course. In light of the transition from low level to high level, the ability to effortlessly craft an analogy brimming with meaning seems near magic. Its reflexive sometimes when we try to express something we've learned to someone else. Computers cant do all this yet, of course. But as Hofstadter has been showing us that there are some interesting models.
Wednesday, October 21, 2009
Wishful Thinking
We don't know nearly enough about the human mind, so how can we move on to create mechanical ones, let alone anything approaching super-human AI? It seems like people are just waiting for the day we develop true AI, but that day is a long way down the road. For that matter, we haven't sufficiently developed systems that model some of the more complex cognitive features of ourselves. Hofstadter is on the right track with his models of mental mechanisms. Even if they make no steps toward an ultimate solution, they allow us to think of the problem in a different light. Are they really making no progress just because they are models? Is it how we think about the problem, or is it about real, concrete evidence or results? I guess it depends on who you ask. The models are great, but what do they really accomplish? What sort of tool are they? They've gotten me to think of a lot of things differently... is that their intended effect or is it a happy by-product? For another generation of people doing work similar to Hofstadter, even the latter can inspire vast progress in my opinion. (Perhaps an interesting thought here: For us to achieve AI, we first have to change the way we think about what we think.)
So far, popularization isn't helping much at all, I think. Is another totally arbitrary work of fiction going to help us make advances in how we understand the questions about how(why, when) we think? Not that art can't contribute to the respective studies, but I wonder what people really think about Cognitive Science in respect to the creative work about AI the media produces.
Another thought:
(When people ask me what my major is (Outside your standard academic environment, of course.) I tell them that I have two. Computer Science is one; Cognitive Science is the other. Computer Science gets the “Oh, thats cool.” response usually, while Cognitive Science has always gotten the “...what exactly is that?” response. I guess a lot of things contribute to this sort of general knowledge/public perception (or lack thereof) ... though I wish I could get the same response for both of them.)
Thursday, October 8, 2009
Behind the curtains
The attractiveness of data here is evaluated by a particular class of codelet. A piece of data’s attractiveness isn’t relevant to itself, only to the system. With lack of interactivity and the passage of time, attractiveness decreases. Is this also a codelet or is it some automated background process that regularly occurs? While important to the function of Numbo, it seems to me this would pollute the Coderack with maintenance functions. Furthermore, since this action occurs regularly it seems to be exempt from the Coderack’s probabilistic choice algorithm.
Temperature seems to be a function of how many individual parts are floating around in the cytoplasm. Temperature seems like a different sort of process from the attractiveness maintenance.
Consider the Coderack itself. The rack is drawn from by this choice algorithm and codelets that get activated from it may queue more actions. Is there a bound to the size of this Coderack or is it boundless? Once all the data is used up and only one large glom exists, what happens to all the queued actions? If the glom, in the case of Numbo, is correct the program simply completes its run and exits. If the result is not correct, Numbo backtracks in the form of dissolving codelets. I’d imagine the non-applicable codelets simply fizzle as Hofstadter suggested when discussing Jumbo. What if, by chance, a codelet from several building/decomposition cycles ago activates? Is there some process that scans the rack for outdated codelets at some point?
These are just some things that occurred to me while reading about Numbo.
Tuesday, October 6, 2009
Enter the Numbo
One of the first things that occurred to me about this type of problem was the human ability to approximate results. It’s mentioned in the text that one particular method of approaching the problem was to group numbers together that have a result that is close in proximity to the target number. I found myself doing this on several occasions. Naturally there are other strategies mixed in with this. The exact details are up to the player and their choice for grouping or particular operations.
It’s worth mentioning that solutions derived from raw computation via a machine are sometimes counter-intuitive when reviewed by a human. The most efficient or succinct configuration of an equation is probably not reached when done by a human, though there’s no guarantee that a machine will find one matching these criteria either. So it appears that humans have a certain preference when it comes to solving these. Even more interesting is that most humans tend to apply the same rules on similar problems. Is it that there’s a common way of thinking among humans or that certain operand/operation configurations are naturally attractive? Maybe a better question is: should we show a machine how to prefer the things we do?
More on Jumbo
Randomness is another issue in this. It goes without saying, perhaps, that the exclusion of randomness would make the construction of gloms much more deterministic and one sided. Perhaps the program itself would cease to function as intended entirely if randomness were omitted. The same gloms would be made out of the same character groupings repeatedly, and the configurations would only really change if other characters with interfering preferences were inserted. But then, the program is actually intended to model cognitive processes, so the idea of a random-less Jumbo is moot. If nothing else, it makes one appreciate the fact that a higher priority action doesn’t always win out when it comes to order.
Having a program evaluate possible outcomes of operations is an interesting topic to apply to other sorts of problems. Self-observation in this context is actually something I’d have liked to hear more about. There’s always this slight notion of self-monitoring within applications, but it usually doesn’t usually take place outside of severely constrained situations. (null checking for example)
Thursday, September 24, 2009
Jumbo and results
That said, the descriptions of the processes applied by Jumbo are quite poetic. It’s hard not to appreciate the way it works. I wish I could actually see the code for it. Regardless, I think that the whole thing would be an interesting concept to apply to other problems. If nothing else, I’m interested in playing with some of the concepts myself. To clear up some of the vagaries here, I’m talking about the idea of individual chunks of data having “preference” as to which other things they’re glommed with. Off the top of my head, I’m not entirely sure what other sorts of data you can apply this to.
On a total side note, I’d be interested to see the sort of thing Jumbo does be applied to other languages with separate rules. Can you make a framework that accepts some table of preferences for the individual characters and then lead it to construct actual pseudo-words? What about the languages that don’t use things similar to our idea of an alphabet? (Chinese/Japanese?)
I must think more on this.
Tuesday, September 22, 2009
spatial manipulation
The ability to rearrange mental objects is important for us. Is this a core part of our ability to problem solve? This topic is somewhat familiar to me in regards to computer science. I tend to draw, when confronted with some arbitrary project assignment, lots of directed graphs to illustrate the interrelationships of different modules. This, of course, goes hand in hand with manipulating them mentally. Drawing them in a procedural way helps simplify and perhaps impose some order on the mental juggling. (I probably don’t realize now exactly how many little example trees I scribbled in my notebook when I had to write my first B-Tree.) Sometimes it can be revealing if two people share their own directed graphs; the differences in perspective can help solve or convey the solution to the problem.
In any case, maybe this goes back to the conceptual spheres from last time. Why does visualizing things in some spatial sense help us understand relations? Words have a simple spatial component. Then there are path-finding problems which obviously rely on spatial skills. We seem to encounter this problem all the time and we manage to solve it reflexively in most cases. This is a bit removed from how Hofstadter described the tossing up and rearrangement of letters though. The striking point with that idea is that it comes to us so naturally. So naturally its overlooked most of the time. Its just not one of those things you usually think about and its hard to catch in the first place if you’re not looking for it.
Thursday, September 17, 2009
visualization
Some other ideas that come to mind with the idea of conceptual spheres is the abstract space they reside in. The term itself got me to think of three dimensional space (If this relation wasn’t intended from the start.). Visualize some different conceptual “spheres”. How far apart are they? What does the distance represent? Do they overlap? When does something, when moving from one sphere to another by way of variation, start appearing more like one thing than another? Do the spheres have boundaries? ( … in reference to Hofstadter’s blurry line between ideas.) Think of bringing new ideas into this space. One concept can overlap an infinite amount of others and connect previously unrelated things. (Maybe change other places between spheres or concepts permanently. Does this describe a large change in perspective for the individual?) If you can add spheres, can you take them away?
Maybe I’m too far off topic or have taken a simple term far too literally. Its fun stuff to think about in any case. :)
Tuesday, September 15, 2009
malleability and self modification
I guess you can’t have the best of all of the methods very easily, if at all.
Hofstadter talks about the inflexibility of programs or instructions in programs. Hard coded determinism is a difficult medium with which to describe a mental process. He mentions constructing templates which are flexible or modifiable. This reminded me of the idea of self modifying code (SMC?). I can’t say I’m particularly knowledgeable about the subject, but it does bring to mind some ideas. It’d be incredibly dangerous if code were just allowed to be modified anywhere on the fly, of course. Think of it in the terms Hofstadter puts it though – with regards to templates. Malleability is key in representing the mind I think. This seems to be a fundamental sort of flaw in converting between fluid things like thoughts and some rigid, procedural sort of thing like a program. Hofstadter, in this section, continues to point out the difficulties in translating exactly how we evaluate a sequence into the applicable computing concepts. This problem seems similar in some way to natural language translation. There are always concepts that don’t carry over well. Some have to be modified (heavily) before being transferred to the target language. Others just don’t work at all.
Thursday, September 10, 2009
Knowledge and Traps
A great deal of people notice these things in retrospect but then of course its somewhat too late. As before though, one benefits from well documented processes. The author makes note that there is more to be gained from notes that detail the processes rather than the steps to the solution. And what isn't better in drafts? The first attempt at anything, even pattern recognition algorithms should provide valuable insights to the process.
It seems to be difficult to program in a general sort of way. That is. with thought processes in mind. Most programming goals are mundane in that they lack much usefulness outside of a specific application. This tailor-made approach, however, might have its place with the compartmentalized view of the mind in some disciplines. The idea of modularization in computing and the mind seem somehow similar.
So, with this, one should ultimately be able to improve programs that attempt to do things we can do with some thought about ourselves. I'm not personally sure how much thought is given to this while people think about different algorithms to use. It only makes sense that everyone that produces code should think about it. The machine's strengths are somewhat obvious when compared to us, I think. So the idea seems to be to use the machine's positive characteristics and imprint our own methods on it – even if only partially. Now heres the question of usefulness with expert systems versus those who are not knowledge based. Is the question actually “Which is better: to know vast amounts or to be able to learn?”
Tuesday, September 8, 2009
Turning thoughts against themselves
If you think about this borrowing process from a perspective that considers evolution – why not engage in mimicry? There are thousands of years of trial and error backing the method up, so it ought to be pretty good. Of course that's not saying that there wont be a better method out there, but in general, translating a natural process for a program will result in something that's functional at the very least.
In the case of a game program, for example, this results in a bit of irony. One could assume that at some point someone had to sit and think about the processes that go on in our heads when someone plays chess. This ends up being turned against a human of course, and so we're playing with machines pretending to do things as we do. But then, thats the whole point anyway. We're challenged by something thats imitating us... on some constrained playing field, on our terms. So theres quite a bit to take into account in mirroring just one facet of our cognitive ability.
And so it seems that understanding the process is greater than simply finding the solution. Its the path to the solution and the solution itself. Teaching a machine to recognize patterns isn't as important as figuring out how exactly we do it. The former couldn't properly exist for us without the latter. So in this regard, the challenge is only partially complete once a solution is found. Then we turn our thoughts to ourselves for better understanding.