the Oracle
[DISCLAIMER: this's got nothin to do with Oracle the corporation or the product.. nor is this a How to on horoscopes or numerology or anythin such.. so hit the back button now if googlin gave u a wrong(?) result :D]
remember the Oracle from The Matrix? how hard do u think it could b to build one like her?
theoretically, it shud be quite simple ;)
well, here's an idea.. scraped directly off the Adaptive Signal Processing theory.. now just for those who dunno, it talks abt making blocks which dynamically adapt to a particular pattern of input and output..
here's a lil block diagram.. might not help much without a lil explanation :D [skip till next image if you're not interested in Adptive Signal Processing theory (or, if u're allergic to any badly explained theory for that matter ;) )]
the idea is that you have an input signal and you do some processing on it to get an output signal.. you want the output to be like something, which's your desired signal.. but the processing block deviates the output signal from the desired one while processing.. the difference between the output and the desired is the error signal.. now don't tell me that you're thinkin of directly sending the desired signal to the output, coz it doesn't exist :D.. if it did, then we'd have been spared of a subject :))
k.. the simplest case would be to add the error signal back to the input n you'll get the desired signal at the output.. simple math isn't it? but it aint so straightforward coz the processing system needn't be linear, or rather needn't be like the one producing the desired one.. so it's passed back to the processing system after being passed thru an adaptive algorithm which, I suppose, accounts for the nonlinearity..
[for more details on the subject refer to the Adaptive Signal Processing book by Bernard Widrow and Samuel D. Stearns.. Or try googling]
simple enuf? k.. here're some applications of such an adaptive system.. Oracle wud be the one in fourth quadrant..
the Oracle is supposed to predict a system.. which's basically telling what's comin up before it happens :)
but to achieve it with an adaptive system, I need a desired signal.. and as you might guess, I don't have one, coz if I did, I wouldn't be writin all this (don't argue abt the horoscopes plz :D).. so I start off with some seed input, which I expect to come out as is after a while.. that's like sayin I'll tell you today what's gonna happen tomoro, n you'll tell the same back to me tomoro..
what's a good seed input? how bout the good old sayin that tomoro's weather's gonna b the same as today's.. of course with 70% accuracy, which's no good.. so I slightly change my input..
I'll tell the Adaptive Filter, both what happened yesterday and what happened today.. the job of the Adaptive Filter is to adapt itself to give me today given yesterday.. sounds more like lookup doesnt it? I guess, it's okay for it to be a lookup to start with.. it'd later evolve towards pattern recognition.. (or simply towards an efficient way to lookup a humongous hash table :D) finally it shud end up learning enuf to be the smart oracle which tells you exactly what's gonna happen tomoro (or the next minute if u wish :D) by doing what could be called a dumb n brainless job of matching today against a looooooooooottttttt of yesterdays :D
theoretically, it's a possiblity since you keep accumulating a lot of yesterday's.. so many of them that your today shud match at least one of the yesterdays.. and once it matches, your tomoro shud be the next day of the matched yesterday..
hmm.. how bout a lil zap of reality? there's one major hurdle that I can think of.. representation of the information.. how'd you tell to the system what happened today? NLP? Audio? Video? it'd be a lil hard to process any of those, at least for now considering the current (pathetic?) situation of software where things like Voice Recognition are still considered among the cutting edge technologies and technical luxuries after all these years of software evolution..
and the next hurdle, which's kinda tied-in to the problem of representing the information.. the programming language of choice.. can't think of any for now which'd allow me to build such a system easily without by itself being an obstacle to my thinking.. Ruby? Prolog? or somethin else.. haven't tried Prolog yet.. hope it has some way to express this kinda information n also allow me to infer things based on that without makin me worry too much abt variable types and such silly issues..
this reminds me of Smith, according to whom we shud already have the right kinda programming language.. but well, he doesn't exist and his existence would've proved that he's right.. so let's wait till we see either a Smith or an Oracle :D..
[DISCLAIMER: this's got nothin to do with Oracle the corporation or the product.. nor is this a How to on horoscopes or numerology or anythin such.. so hit the back button now if googlin gave u a wrong(?) result :D]
remember the Oracle from The Matrix? how hard do u think it could b to build one like her?
theoretically, it shud be quite simple ;)
well, here's an idea.. scraped directly off the Adaptive Signal Processing theory.. now just for those who dunno, it talks abt making blocks which dynamically adapt to a particular pattern of input and output..
here's a lil block diagram.. might not help much without a lil explanation :D [skip till next image if you're not interested in Adptive Signal Processing theory (or, if u're allergic to any badly explained theory for that matter ;) )]
the idea is that you have an input signal and you do some processing on it to get an output signal.. you want the output to be like something, which's your desired signal.. but the processing block deviates the output signal from the desired one while processing.. the difference between the output and the desired is the error signal.. now don't tell me that you're thinkin of directly sending the desired signal to the output, coz it doesn't exist :D.. if it did, then we'd have been spared of a subject :))
k.. the simplest case would be to add the error signal back to the input n you'll get the desired signal at the output.. simple math isn't it? but it aint so straightforward coz the processing system needn't be linear, or rather needn't be like the one producing the desired one.. so it's passed back to the processing system after being passed thru an adaptive algorithm which, I suppose, accounts for the nonlinearity..
[for more details on the subject refer to the Adaptive Signal Processing book by Bernard Widrow and Samuel D. Stearns.. Or try googling]
simple enuf? k.. here're some applications of such an adaptive system.. Oracle wud be the one in fourth quadrant..
the Oracle is supposed to predict a system.. which's basically telling what's comin up before it happens :)
but to achieve it with an adaptive system, I need a desired signal.. and as you might guess, I don't have one, coz if I did, I wouldn't be writin all this (don't argue abt the horoscopes plz :D).. so I start off with some seed input, which I expect to come out as is after a while.. that's like sayin I'll tell you today what's gonna happen tomoro, n you'll tell the same back to me tomoro..
what's a good seed input? how bout the good old sayin that tomoro's weather's gonna b the same as today's.. of course with 70% accuracy, which's no good.. so I slightly change my input..
I'll tell the Adaptive Filter, both what happened yesterday and what happened today.. the job of the Adaptive Filter is to adapt itself to give me today given yesterday.. sounds more like lookup doesnt it? I guess, it's okay for it to be a lookup to start with.. it'd later evolve towards pattern recognition.. (or simply towards an efficient way to lookup a humongous hash table :D) finally it shud end up learning enuf to be the smart oracle which tells you exactly what's gonna happen tomoro (or the next minute if u wish :D) by doing what could be called a dumb n brainless job of matching today against a looooooooooottttttt of yesterdays :D
theoretically, it's a possiblity since you keep accumulating a lot of yesterday's.. so many of them that your today shud match at least one of the yesterdays.. and once it matches, your tomoro shud be the next day of the matched yesterday..
hmm.. how bout a lil zap of reality? there's one major hurdle that I can think of.. representation of the information.. how'd you tell to the system what happened today? NLP? Audio? Video? it'd be a lil hard to process any of those, at least for now considering the current (pathetic?) situation of software where things like Voice Recognition are still considered among the cutting edge technologies and technical luxuries after all these years of software evolution..
and the next hurdle, which's kinda tied-in to the problem of representing the information.. the programming language of choice.. can't think of any for now which'd allow me to build such a system easily without by itself being an obstacle to my thinking.. Ruby? Prolog? or somethin else.. haven't tried Prolog yet.. hope it has some way to express this kinda information n also allow me to infer things based on that without makin me worry too much abt variable types and such silly issues..
this reminds me of Smith, according to whom we shud already have the right kinda programming language.. but well, he doesn't exist and his existence would've proved that he's right.. so let's wait till we see either a Smith or an Oracle :D..