Archive for the ‘Author: Alexandre Linhares’ category

Analogy at the core of the financial meltdown

October 26, 2008

People in my research group are tired of hearing the phrases that either meaning is constructed out of experience, or it is constructed out of analogies.  Over and over they have heard the phrase: “consider DNA: DNA is like a zipper, computer code, etc…” (I think I can safely assume readers of this blog know the drill.).  Right after the DNA thing:  I ask, now, what’s this thing called a collateralized debt obligation that’s just bringing the whole financial meltdown?  And we get astonished faces as nobody has any good analogy (or anchors in semantic space–a rather technical name for it).

But now the fun has been spoiled.  Check this out:

Crisis explainer: Uncorking CDOs from Marketplace on Vimeo.

Here are more: The credit crisis as Antartic expedition, & untangling credit default swaps. These are very worth of your time, unless you happen to be the George Soros amongst our readers.

Finally, here’s a link Anna’s just pointed out: The Metaphor Observatory.

Advertisements

Questo…

August 6, 2008

é belissimo.

Capyblanca is now GPL’d

July 9, 2008

In 1995, Douglas Hofstadter wrote:

“A visit to our Computer Science Department by Dave Slate, one of the programmers of Chess 4.6, at that time one of the world’s top chess programs, helped to confirm some of these fledgling intuitions of mine. In his colloquium, Slate described the strict full width, depth-first search strategy employed by his enormously successful program, but after doing so, confided that his true feelings were totally against this type of brute-force approach. His description of how his ideal chess program would work resonated with my feelings about how an ideal sequence-perception program should work. It involved lots of small but intense depth-first forays, but with a far greater flexibility than he knew how to implement. Each little episode would tend to be focused on some specific region of the board (although of course implications would flow all over the board), and lots of knowledge of specific local configurations would be brought to bear for those brief periods.”

That was, of course, many years before I would meet Doug.

How do chess players make decisions? How do they avoid the combinatorial explosion? How do we go from rooks and knights to abstract thought? What is abstract thought like? These are some of the questions involving the Capyblanca project. The name, of course, is a blend between José Raoul Capablanca, and Hofstadter’s original Copycat Project implemented by Melanie Mitchell, which brought us so many ideas. Well, after almost 5 years, we have a proof-of-concept in the form of a running program, and we are GPL’ing the code, so interested readers might take it to new directions which we cannot foresee. Some instructions are in the paper, and feel free to contact me as you wish.

The manuscript is under review in a journal, and a copy of the working paper follows below. Interested readers might also want to take a look at some of my previous publications in AI and Cognitive Science:

(i) Linhares, A. & P. Brum (2007), “Understanding our understanding of strategic scenarios: what role do chunks play?”, Cognitive Science, 31, pp. 989-1007.

(ii) Linhares, A. (2005), “An active symbols theory of chess intuition”, Minds and machines, 15, pp. 131-181.

(iii) Linhares, A. (2000), “A glimpse at the metaphysics of Bongard Problems”, Artificial Intelligence, 121 (1-2), pp. 251-270.

Any feedback will be highly appreciated!

–Alex

Capyblanca paper under reviewUpload a Document to Scribd
Read this document on Scribd: Capyblanca paper under review

I, for one, welcome our new übergeek overlords!

June 23, 2008

Slashdot, my favorite L337 geek hangout, is discussing an interview with DugHof.  The discussion is actually pretty cool, the long mentions of “the singularity that is Kurzweil” notwithstanding.

Though Doug usually dismisses hacker culture, I don’t, and I think we should really welcome our new slashdot overlords.  Two basic reasons here, beyond the whole power to the people cliché:  first, some /. discussions are really worthwhile, and some participants really bring very insightful analysis in their comments–actually, a great way for learning about all things technical is, right after the obvious wikipedia lookup, by googling “site:slashdot.org whatever you’re after, dude” and catching up with the discussions.  And who knows?  Maybe one day this blog will even be slashdotted.  That would be nice for our pagerank and world domination plans–which bring me to the second reason.

Now the second reason is a serious one.  As progress in FARG architectures evolves, we will need more and more lookups in the most cutting edge stuff, such as GPGPU or reflection.  A general FARG framework is essentially an operating system, from the inside and from the outside.  From the inside it packs application and problem loaders, various types of memory management (external, working memory, semantic memory, episodic memory, etc), task allocation and scheduling, and parallel multiprocessing.  From the outside, it is also like an operating system, enabling new kinds and types of “FARG apps”.  This is, in fact, the coolest operating system to be working with, and I am astonished that companies like Microsoft or Sun or IBM just plainly do not know what this is all about.  We could have some serious long-term contributions to computer science, yet, sometimes, it feels that even with all geekdom love that Doug eventually gets, the word in FCCA and later works is yet to be spread.

Or, to put it in /. terms, I feel that FARG==new (PARC).  If you don’t agree, then; seriously, You must be new here.

Open sourcing a slipnet viewer!

April 19, 2008

(This page will be updated with further details as soon as soon as possible; I am setting up the repository asap)

Hello world!

After reading this fantastic book and playing with this, I think one good way to proceed is to open-source some parts of a FARG framework which are not at its core, but are extremely useful and everyone could benefit from them.

I’m thinking first about a slipnet viewer. A java class that receives a list of nodes and links, and creates a nice view of the ongoing slipnet at any point in time. A node might consist of its activation levels and a bitmap to display inside the node (sometimes we may want to display something other than a string), while a link might include just the nodes it connects, (perhaps) a direction, and a string (to show up distances and for those with IS-A beliefs). It is a good tool for debugging and for propaganda purposes.

The class would get this information and create another bitmap, now with a beautiful view of the current slipnet: close nodes appear close to each other, distant nodes appear distant, and their activity levels are displayed. From my past life in combinatorial optimization, I have a hunch that this is NP-hard, so we may be resorting to some heuristic that works.

It should be in java, to run in everybody’s machine, and also because everyone knows java and could either make a call to it from their own weirdo language or rewrite the code for their project.

In this initial stage, no windows or anything fancy should be done. Just get the data in and output a bitmap with the slipnet. But if our collaboration works, we could go bigger, triggering a window in a new thread and having a great display running in true parallel style. That would, I think, be a first step that everyone would benefit from.

This is small stuff, of course, but it’s annoying to redo it everyday in every single project. It takes some time to do, and distracts from the core issues. Our productivity will rise. So, as Micheal Roberts once said, instead of having “obsessive geniuses” working under the basement, we should finally stop doing the same things over and over again. We should finally start collaborating like a small research group.

Or as a start-up company.

The Bonnie & Clyde Microdomain

April 6, 2008

In rereading parts of Harry’s thesis, I came up with what I think is a rather interesting domain to make first experiments with the ongoing framework… I’m calling it “the Bonnie & Clyde Microdomain” for obvious reasons.

Can you spot the two outliers? What is the justification for their outlier status? Here are some problems:
==
Problem 1
1
1
1
0
1
1
1
1
1
1
1
0

==
Problem 2
222
99
132
1
128
76
4
54
68
302
298
305

==
Problem 3
9
5+5
5×2
100/10
13-3
8+4
101-99+8
18×2-26
1+2+3+4
1x2x3+4
10-6+2×2
9+7-6

==
Problem 4
6/2
10/5
20/2
18/6
99/3
17/17
0/5
3/0
4/2
28/0
1/1
9/3

==
Problem 5
1+1+1
2x2x2
7/7-6
3×2+4
2+2
4+6-1
8x8x8
9-1×7
3×4+7
(40/5)/2
3x3x4x1
1+2+3

==
Problem 6
5+1
2/20
1+5
16×3
9+4
1-0
3+1
3×16
5×8
4+9
8×5
20/2

==
Problem 7
10+3
28/2-1
3+1+9
11+1+1
13×1+0
28/2-1
6×2+1
30/3+3
3×3+3+3/3
3×3+3
2x4x2
4×3+1

==
Problem 8
9-4
16×2
7+8
5+18
8+7
4-9
2×16
18+5
23×8
1+4
8×23
4+1

==
Problem 9
5+(3x(2+1))
5+(3x(2-1))
(5+3)x(2-1)-3×3
3x(8+(2x(3-2)))
17x(9/(6-3))
4+(4x(2+2))
2x(5-(2×2))
7+(2x(2+3))
64/(2x(15+17))
2x(1/(19/19))
9×9-8×7
5x(2/(9-7))

==
Problem 10
10
3x(5×2)
20/(5+5)
30/(8+2)
7/(3+4)
20/(20/2)
9x(9+1)
9x(9+2)
9+100/10
2×60/6
8x(6+4)
20/(3+7)

==
Problem 11
1+1+1
1x1x1
2x4x2
2x7x9
9x8x5
7x7x7
9-2×3
4x2x7
8x6x2
6x6x6
2x4x8
5x2x1

==
Problem 12
1+1+1+1+1+1+1+1
4+6+3+2
1+1
2+2
6+2+5+8+3+5+2
1×1
7+7+3
10+10
35-5
7+2+1
4+4+2+4
9+8

==
Problem 13
1+2+3
1x2x3
3+2+1
(1/1)+(4/2)+(9/3)
(1)+(1+1)+(1+1+1)
(((8/2)/2)/2)+(((8-2)-2)-2)+((8/2)-(2/2))
(17/17)+(56536/28268)+((17/17)+(56536/28268))
(3/3)+(3-(3/3))+3
(2/2)+2+(2+(2/2))
(4-3)+(4-2)+(4-1)
(6/6)+(6/3)+(6/2)
(1×1)+(1×2)+(1×3)

==
Problem 14
2×100+22
9×10+9
6×10+4
15×10+1
1×1+1
12×10+8
10×17+6
3+3x3x3
42×10
31×11
29×10+8
66

==
Problem 15
222
99
131
4
128
56
0
44
48
300
298
301

==
Problem 16
452
217
111
245
362
64
329
837
757
939
637
1223

==
Problem 17
222
99
131
1
128
76
4
54
68
302
298
305

NOTE: I’ll keep updating this page with small corrections and new problems. For example, Doug got the original problem 2 right on, but most answers I received weren’t on spot. That was because the original problem would only give you a vague ‘feeling’ for the outliers–and most people would not trust that feeling and go for something completely different. Doug is a Bongard problem solver and designer, of course, so his view is very sharp about ‘vague’ feelings (if this makes sense to you). I remember a BP he designed with “kind-of-small-but-not-really-small triangles versus kind-of-large-but-not-really-large triangles”. If we’re later going to test these on people, most people won’t find the “only true” outliers and suggest something crazy. (The original problem 2 is now problem 15.)

I think this domain might help us to develop slipnets that self-adjust without having to define IS-A links, or handcoded distances between links (see, for instance, chapter 6 of Harry’s thesis).

I would love (tentative) answers (with a brief justification); and perhaps suggestions of new problem sets?

By the way, one of the problem sets is, in itself, an outlier. And another has two clear answers, even though people focus on only one. Can you spot them?

That’s some distributed temperature right there, Dude!

March 31, 2008

I’ve been thinking about massively parallel FARG, distributed temperature, and distributed coderacks:

Now, whenever a codelet is about to change something up, why add it to the global, central, unique, coderack? I don’t see a good reason here, besides the “that’s what we’ve always done” one. If a codelet is about to change some structures in STM, why not have (i) a list (or a set, or a collection, etc.) of structures under question & (ii) create a list-subordinated coderack on the fly? Instead of throwing codelets into a central repository, they go directly to the places in which they were deemed necessary. There are multiple repositories for codelets, multiple coderacks.

I argued that I liked the idea because (i) it enables parallelism of the true variety, (ii) it helps us to solve the stale codelets issue, and (iii) programming can (in principle) be done gradually, still in simulated parallel.

Now, I was wrong about temperature all along. Here’s a new idea:

Imagine that each of the coderacks has the following behavior: Get a RANDOM codelet, then run it.

That’s massively parallel temperature right there. Have a nice day. Thanks for stopping by.

Unconvinced? Think about this: some coderacks will start to become really small (as Abhijit pointed out in the comments previously), with one or two codelets, then being emptied and destroyed. That means that at that particular point (or thing) in STM, temperature is really low. However, other coderacks will be full of stuff waiting to run; which means that there, temperature is running high.  Distributed temperature with high randomness in hot spots, low randomness in cool spots.

Maybe this has to be coupled with some information about concepts, but I’m not sure anymore. I think that it just might be one of those wonderful, marvelous, emergent effects we take so much pleasure in playing with.