Uncommon Descent Serving The Intelligent Design Community

Dawkins’ WEASEL: Proximity Search With or Without Locking?

Categories
Darwinism
Evolution
Informatics
Share
Facebook
Twitter/X
LinkedIn
Flipboard
Print
Email

On pp. 47-48 of THE BLIND WATCHMAKER, Richard Dawkins gives two runs of his WEASEL program (note that there were typos in both initial seeds — one had 27 characters, the other 29 whereas they should have 28; I’ve corrected that). Here are the two runs using the Courier typeface, which assigns equal width to each character (spaces are represented by asterisks):


WDL*MNLT*DTJBKWIRZREZLMQCO*P
WDLTMNLT*DTJBSWIRZREZLMQCO*P
MDLDMNLS*ITJISWHRZREZ*MECS*P
MELDINLS*IT*ISWPRKE*Z*WECSEL
METHINGS*IT*ISWLIKE*B*WECSEL
METHINKS*IT*IS*LIKE*I*WEASEL
METHINKS*IT*IS*LIKE*A*WEASEL

Y*YVMQKZPFJXWVHGLAWFVCHQXYPY
Y*YVMQKSPFTXWSHLIKEFV*HQYSPY
YETHINKSPITXISHLIKEFA*WQYSEY
METHINKS*IT*ISSLIKE*A*WEFSEY
METHINKS*IT*ISBLIKE*A*WEASES
METHINKS*IT*ISJLIKE*A*WEASEO
METHINKS*IT*IS*LIKE*A*WEASEP
METHINKS*IT*IS*LIKE*A*WEASEL

These runs are incomplete. The first, according to Dawkins, required 43 iterations to converge, the second 64 (Dawkins omitted the other iterates to save space).

As you can see, by using the Courier font, one can read up from the target sequence METHINKS*IT*IS*LIKE*A*WEASEL, as it were column by column, over each letter of the target sequence. From this it’s clear that once the right letter in the target sequence is latched on to, it locks on and never changes. In other words, in these examples of Dawkins’ WEASEL program as given in his book THE BLIND WATCHMAKER, it never happens (as far as we can tell) that some intermediate sequences achieves the corresponding letter in the target sequence, then loses it, and in the end regains it.

Thus, since Dawkins does not make explicit in THE BLIND WATCHMAKER just how his algorithm works, it is natural to conclude that it is a proximity search with locking (i.e., it locks on characters in the target sequence and never lets go).

Interestingly, when Dawkins did his 1987 BBC Horizons takeoff on his book, he ran the program in front of the film camera:

www.youtube.com/watch?v=5sUQIpFajsg (go to 6:15)

There you see that his WEASEL program does a proximity search without locking (letters in the target sequence appear, disappear, and then reappear).

That leads one to wonder whether the WEASEL program, as Dawkins had programmed and described it in his book, is the same as in the BBC Horizons documentary.

In any case, our chief programmer at the Evolutionary Informatics Lab (www.evoinfo.org) is expanding our WEASEL WARE software to model both these possibilities. Stay tuned.

Comments
Joseph Well said, thanks. GEM of TKIkairosfocus
March 24, 2009
March
03
Mar
24
24
2009
11:06 AM
11
11
06
AM
PDT
So little time... Part of the Marks/ Dembski paper discusses a “partitioned search”. To illustrate a partitioned search they refer to the book “The Blind Watchmaker” and the use of the “weasel” program. In TBW Dawkins uses “weasel” to illustrate cumulative selection. “Cumulative” means “increasing by successive additions”. INCREASING BY SUCCESIVE ADDITIONS. “Ratchet” means to “move by degrees in one direction only”. Increasing by additions means to move by degrees in one direction only. Dawkins NEVER mentions that one or more steps can be taken backward. He never says anything about regression. Therefor cumulative selection is a ratcheting process as described and illustrated by the “weasel” program in TBW. That is once a matching letter is found the process keeps it there. No need to search for what is already present. Translating over to nature this would be taken to mean once something useful is found it is kept and improved on. IOW it is not found, lost, and found again this time with improvements. By reading TBW that doesn’t fit what Richard is saying at all. And he never states that he uses the word “cumulative” in any other way but “increasing by successive additions”. How can a process be “cumulative” and at the same time allow you to keep losing what you have? We would call that the "yo-yo" selection process. And then no one would infer it is a partitioned search.Joseph
March 24, 2009
March
03
Mar
24
24
2009
10:22 AM
10
10
22
AM
PDT
Atom Thanks. I suspect we pretty well know what to expect already. (And, the fact that it is EIL that is providing the "roll yer own" version of Weasel should more or less tell us where that will most likely point.] GEM of TKIkairosfocus
March 24, 2009
March
03
Mar
24
24
2009
10:08 AM
10
10
08
AM
PDT
Hi Atom. Yes, I'm interested in the question of which would be simpler to implement. I have gotten interested in this because of the math and logic involved. I had never paid any attention to this Weasel program until the subject came up here. I taught simple BASIC and Pascal programming back in the mid '80s, about the same time Dawkins was writing Weasel, but have done no programming in any more complicated languages and have not thought about programming for years. So I'd like to explore your comment that implementing a rule would be simpler than not implementing a rule, or even more basic, what the difference would be in the two situations. You write,
It was actually easier to write Partitioned Search than it was to write the Proximity Reward Search (non-latching Weasel.) The latter required arrays of offspring, more user interface components, functions for mutating strings, and of course a fitness function. Partitioned Search required minimal UI components, a single string to check against, and a single random letter function. (Which the mutate strings function above uses anyway.)
I don't think I see why some of what you say is true. Let's look at each part. 1. As you say, each type requires the a mutation function a. Partitioned (using your term for a latching rule in place) requires that you look at a letter, see if it is correct, which requires checking it with either the target itself or a previously stored bit of information flagging that it is correct, and then, if it is incorrect, subjecting it to a possible mutation based on the mutation rate being used. b. Proximity (no latching rule in place) requires that you just subject each letter to a possible mutation based on the mutation rate being used. Seems clear to me that the mutation function is simpler for Proximity. 2. Each type requires a fitness function. In both cases you have to check the child (the phrase being evaluated) against the target string, and in both cases you have to add up the number of correct letters so that you can later decide which child in the generation is the most fit. And in both cases, you are going to have to go through the child phrase letter by letter. a) In Proximity, all you have to do is decide whether the letter is correct, increment the correct letter counter if it is, and store (temporarily) the number of correct letters. Basically the routine would be For each letter, • check the letter against the target letter * if they match, increment the correct letter counter b. In Partitioned, you could do exactly the same thing. Or, in Partitioned, you conceivably could use the previous information stored in the child as to whether a letter was correct or not, and only check those that had been incorrect, but you still have to add up the number of correct letters. Here the routine would be something like For each letter, * check to see if the letter has already been marked as correct * if so, increment the correct letter counter * if not, check the letter against the target letter * if it is now correct, increment the correct letter counter * also, if it now correct, flag it as correct. This second option is certainly not simpler than just checking each letter against the target. 3. User Interface. Why do the two methods differ here? You just input your basic info (mutation rate and population size) and decide what output you want to display: every child and its associated number of correct letters, or just the best surviving candidate for the next generation. I don't see any user interfaces differences. 4. Arrays of offspring You say that only Proximity requires an array of offspring, but I don't understand that. In both cases you have to store information about all the children in a generation in order to decide which is the best and thus survives to be the next parent. After you have picked the survivor you can erase that array to use in the next generation. Presumably you would want to keep an array of the survivers so you could go back and look at the progression from beginning phrase to target string, but this has nothing to do with the type of search you used. Also, a. In Proximity, all the array needs to hold for each child is the string itself, and perhaps the result of the correct letter counter from the fitness function (depending on how you implement a routine to choose the best child.) b. In Partitioned, the array for each child must hold the string itself and a correct flag to mark those letters that no longer mutate, and perhaps the result of the correct letter counter from the fitness function (depending on how you implement a routine to choose the best child.) Therefore, Proximity is again simpler. Therefore, overall, Proximity is simpler. I welcome your comments, and would hope you could address the specific points I've made. hazelhazel
March 24, 2009
March
03
Mar
24
24
2009
10:06 AM
10
10
06
AM
PDT
KF, That's what we refer to as "feature creep" :) In all seriousness, though, I believe you can do what you're asking in Weasel 2.0 by simply writing a custom fitness function that assigns values based on pairs of letters, rather than single ones. It should be simple to code that function in javascript (if you don't know javascript, I'll code an example version for you via email...just let me know.) But yeah, you should be able to do what you're asking already. You can then set a multi-run of 10,000 searches, view the results as CSV (for easy import into spreadsheet apps), and explore the performance issues involved with testing against pairs (or triples, or whatever) of letters vs. just one letter. AtomAtom
March 24, 2009
March
03
Mar
24
24
2009
07:47 AM
7
07
47
AM
PDT
hazel wrote:
No. Obviously it is simpler to NOT write a rule than to write a rule. If you don’t write a rule for latching, then what you call quasi-latching just happens.
It was actually easier to write Partitioned Search than it was to write the Proximity Reward Search (non-latching Weasel.) The latter required arrays of offspring, more user interface components, functions for mutating strings, and of course a fitness function. Partitioned Search required minimal UI components, a single string to check against, and a single random letter function. (Which the mutate strings function above uses anyway.) Just my two cents, since y'all are talking about what is simpler to implement. AtomAtom
March 24, 2009
March
03
Mar
24
24
2009
07:25 AM
7
07
25
AM
PDT
Hazel: Please, look again at the output circa 1986. You will see that so soon as a letter goes correct, it latches. The issue is, why? The simplest answer is that it does so by a metric on letterwise distance to target, and once the letters hit home, locks them. That is, partitioned search on a letterwise basis. Moreover, Weasel c 1986 is not like the GA's you are thinking of. It is not measuring a figure of merit that is independent of a specified target point in the config space [unlike, say the directivity of an antenna], then tapping out the way to a local peak by successively identifying sectors that climb most steeply when rings of tests are successively thrown out. It measures straight [quasi-]Hamming distance to target point then rewards the closest in each generation with the title champion; then sets out on the next round, with that as the start point for further increments to target. So, it naturally ALREADY has in it the information on where the current champion is relative to the target, on a letter by letter basis. As was pointed out above and elsewhere, it takes no great further effort to then use that information to lock up zero-distance letters, implementing letterwise partitioned search. [An easy metric is 1 if non correct, 0 if correct, with a line of code or two to lock from further mutation on zero. You can even put in fairly simple code to change the otherwise locked, as Apollos did.] To do the implicit latch case, you are actually tuning performance on the parameters. Some of that may be fairly intuitive, e.g. 5% p(change) means that a bit over 1 letter on avg will change per population member, with a significant fraction not changing. (And note how much information about the target is captured in that simple setting of a parameter!) And of course, population size to get the sort of published run length requires a fair amount of tweaking to avoid a tearaway rush as newly multiply correct code pop members dominate on the "nearest to target" metric. You may not see such finetuning as programming, but it is. A further degree of that tuning would be to set up so we see [quasi-]latching as opposed to flicking back as a fairly frequent phenomenon. That is in fact a significant and observable published o/p difference 1986 vs 1987. And of course, all of this is aon a secondary point. Weasel's downfall is the targeted search that rewards non-functional configs. By doing that it cannot reasonably be viewed as a BLIND -- non-purposive -- watchmaker in action using a good analogue of natural selection. I suspect that a pairwise partitioned search -- i.e 14 pairs of characters -- that requires pairs of letters to be correct before the metric on distance decreases from 1 to 0 would show an interesting degradation of performance in terms of number of generations to target. And, that would be for just 1 of 27^2 as a crude functionality metric. Quad-letter matching or 7-letter or 14 letter matching requirements would then show increasing degradation. All of which would point out that once realistic functionality requisites are there, Weasel falls apart. Hey, ATOM, are you going to write that capability into your new version's distance to target metric? [It would be real fun to watch how metrics that are 1-letter, 2, 4, 7, 14 and 28 compare, live. And, with variable generation pop size, variable mutation rates and with on/of on explicit latching.] GEM of TKIkairosfocus
March 24, 2009
March
03
Mar
24
24
2009
06:18 AM
6
06
18
AM
PDT
kf writes,
Think about the simplicity of coding of an explicit latch vs a pgm that ends up implicitly latching (as Apollos, Atom etc have shown).
No. Obviously it is simpler to NOT write a rule than to write a rule. If you don’t write a rule for latching, then what you call quasi-latching just happens. Also, if you have an explicit latching rule, then you have to mark each slot with a marker showing whether it is correct or not so that the GA side of the program (as opposed to the fitness function) knows to not subject that slot to further mutation. On the other hand, if you don’t have an explicit rule, the GA side of the program doesn't need to know such information. The fitness function just adds up the number of correct characters, but it doesn’t need to pass back information about which characters are correct. The latter case is obviously simpler. Having a rule is NOT simpler.hazel
March 24, 2009
March
03
Mar
24
24
2009
05:07 AM
5
05
07
AM
PDT
kairosfocus [253], I don't mean to continue a side debate, but I read nothing in which Mr. Boyne "equat[ed] Evangelical Christians an[d] Islamic militants" -- in what I read, he was careful to distinguish the two. But that was in a response to something I did not manage to dig up. Perhaps I missed it. Our disagreement over the value of the Redemption Song monument is a mere difference of taste -- de gustibus. The issue of public lewdness is not really one I have a stake in, which is why I didn't comment on it.David Kellogg
March 24, 2009
March
03
Mar
24
24
2009
04:10 AM
4
04
10
AM
PDT
Hazel: Look again at the 1986 o/p. Do you see any of the letters that become correct ever reverting? Think about the simplicity of coding of an explicit latch vs a pgm that ends up implicitly latching (as Apollos, Atom etc have shown). think about sample size and implications thereof when 200 samples show a pattern, with no exceptions. GEm of TKIkairosfocus
March 24, 2009
March
03
Mar
24
24
2009
01:13 AM
1
01
13
AM
PDT
Pardon: Sev's cite was of remarks in a context that equated . . .kairosfocus
March 24, 2009
March
03
Mar
24
24
2009
01:08 AM
1
01
08
AM
PDT
Onlookers: It is clear that the substantial matter is more or less settled: 1 --> Weasel's real downfall is targetted search without functionality. 2 --> The circa 1986 o/p [which can be seen per law of large nos etc as representative of what Mr Dawkins' saw as "good" o/p at that time] can most easily be accounted for on explicit latching; but implicit [quasi-] latching will also work. 3 --> The 1987 o/p plainly shows the latter, and on strength of Mr Darwin's reported testimony that he did not use explicit latching, the latter is the best explanation on preponderance of evidence. (Though that winking behaviour still sticks out as a puzzle.) 4 --> To see what is going on, I think we can visualise:
-- a lens-shaped disk, one side red, the other blue; loaded so that the blue side is uppermost say 95% of the time on tossing. [This is a 2-sided, loaded die, or an extension of a flippable coin.) -- then, look at a string of letters and spaces, X1, X2 . .. X28. Toss the disk and according as the sides come up red/blue, change at random across the set {A, B, C, . . . , Z, *}. -- repeat for say 20 or 50 or whatever times. -- the closest to "Methinks" wins and becomes the nesw string. -- repeat until the Methinks sentence appears
5 --> the key problem here is that non-functional phrases are rewarded on mere proximity to Methinks, so that the issue of needing to achieve a minimum reasonable threshold of complex function is a begged question. this is multiplied by the implications of such a broadcasting oracle that in effect through intelligent design, attracts arbitrary initial configurations, step by step. 6 --> Weasel is NOT illustrative of the "BLIND watchmaker" of the title of the book in question. GEM of TKI ________________ PS: On the ad hominem side issue that came up once Severski cited with approval Mr Boyne's remarks equating Evangelical Christians an Islamic militants (in a context of dismissing our very legitimate concerns on public lewdness in the Dancehall subculture that was at that time triggering court actions in Jamaica in defense of public morality):
Re DK, 236: I think the term “blood slander” is awfully strained in your usage; I’d even call it hyperbolic.
EXCUSE ME! Mr Kellogg have you been attending to the headlines in recent years on the activities of "Islamist militants," e.g. 9/11, 7/7 and the Taliban regime? Mr Boyne EXPLICITLY equated Jamiaca's Evangelical Christians with such, and when that was pointed out, in trying to deny it, he did just that again. But, in fact evangelicals and our progenitor dissenters of old, have both had much to do with the rise of modern liberty and democracy, and with the rise of liberty in Jamaica specifically. [We have some national heroes of Jamaica to prove that -- all martyrs.] Not to mention, there simply is no proper comparison between the list of Islamist militants as outlined above and members of "the Firstborn Church of God in Christ, Spirit Filled and Triumphant" or some similar typical small Jamaican country side or ghetto area church. If one cannot see that to make such an equation is beyond all limits of civility and intends to smear Christians with the blood spilled by Islamist terrorists and tyrants [all thought the wonderful power of that ever so handy smear- word, "fundamentlaism"], something is wrong, deadly seriously wrong. (And, this is all in a context of plainly legitimate concern over out of control lewdness in the Dancehall subculture: public, onstage "patting" and "dry humping" are no laughing matter, sir. Nor is that monstrosity that now sits at the corner of Knutsford Boulevard and Oxford road, put there at a cost to the public of J$ 4.5 millions, by the same artist who put a nude female figure arched over rearwards such that the exaggerated pelvic region was at eye level and only a few metres form the entry of the student chapel at U Tech, Jamaica.] Your own dismissal of such tells me all I need to know, sir; about Anti Evo, about Mr Severski who has seemingly vanished, and your own perceptions. Sadly. PLEASE, re-think.kairosfocus
March 24, 2009
March
03
Mar
24
24
2009
01:07 AM
1
01
07
AM
PDT
Sal Gal, I appreciate your condescension. I think the terminology I'm going with fits the purpose of explaining what the GUI does well. If Dr. Marks wants to cite some of the prior literature, he is free to or better yet, you can feel free to link to the GUI once its up and provide more background detail on Weasel, or Evolutionary Search, if you'd like. That is always an option. AtomAtom
March 23, 2009
March
03
Mar
23
23
2009
08:01 PM
8
08
01
PM
PDT
Atom, Why did Dembski and Marks not explain to you that you had implemented an evolution strategy? Now that you know that you have implemented an evolution strategy, will you cite Rechenberg and Schwefel, and call their algorithm by its established name?Sal Gal
March 23, 2009
March
03
Mar
23
23
2009
07:48 PM
7
07
48
PM
PDT
Upright BiPed:
Produce “methinks its a weasel” without that phrase existing anywhere in the system, then that will be impressive.
1. No human has written a static board evaluator for checkers that yields expert-level play (better than 99% of humans) with shallow minimax search of the game tree. Yet the Blondie24 static evaluator does just that, and was obtained by coevolution. Humans and computer programs that play better than Blondie24 look further ahead into the game before making moves. That is, Blondie24's board evaluation is qualitatively unlike that of human and human-programmed players. So what is the source of the knowledge implicit in this novel approach to play? 2. Fogel took a public-domain chess program that played at the master level, and adapted the static board evaluator, which had been improved by "intelligent" humans over a period of years, with an algorithm for coevolution. In short order, the program improved to grand master performance -- the rating increased by over 300 points. There was nothing "chess oriented" in the algorithm. All it did was to adjust the parameters that humans had been adjusting. What was the source of the implicit gain in "understanding" of the relative values of different board configurations? 3. Back in the 1990's, a population of 20 thousand artificial neural networks was evolved to predict annual sunspots counts. The approach was purely statistical -- there was no input of what little knowledge there was of solar weather. The predictions of the neural nets were combined in a stacked generalization scheme. The resulting scalar predictions were much more accurate than any previously reported -- including those for models developed by human experts. What was the source of "knowledge" of solar dynamics? The second example is the one IDists should give the most thought. When an evolutionary algorithm begins with an artifact that a team of humans has struggled to make perform very well, and makes it perform fabulously, that is significant -- particularly when there is no problem-specific input to the algorithm.Sal Gal
March 23, 2009
March
03
Mar
23
23
2009
07:22 PM
7
07
22
PM
PDT
hazel, I was wondering about that, and thought about mentioning it in [232] and [236]. Thanks for the clarification.David Kellogg
March 23, 2009
March
03
Mar
23
23
2009
07:21 PM
7
07
21
PM
PDT
Damn, back at 228 I actually thought I agreed with kairosfocus about something, but now I see I was wrong. He wrote,
On the evidence of the o/p circa 1986, the simplest explanation is explicit latching of letters once they go correct. Implicit latching and/or quasi-latching is also possible, and that was noted before this thread ever began. In the D-M paper, they looked at the former case, which is a legitimate case of Weasel, given the many versions floating out there.
No, no, no. The simplest explanation is NOT explicit latching. There is no reason to think that Dawkins programmed such a rule into Weasel. The simplest explanation is that there never was such a rule, and as I showed (and as many people much more qualified than I already knew), correct letters mutating back to incorrect is very rare, although possible. Dembski and Marks paper assumed that an explicit latching rule existed, but I think that assumption is much less warranted that my conclusion, which is that no such rule ever existed. I don’t mean to start this discussion up all over again, but I need to make it clear that I retract my statement that I agreed with kairosfocus.hazel
March 23, 2009
March
03
Mar
23
23
2009
07:18 PM
7
07
18
PM
PDT
Sal Gal, Is your representation of Evolution Strategies correct? It seems ES deals with real numbers. Hence, Weasel is not an ES in the terminology of some. If so, your assertion of shennanigans is premature at best and possibly incorrect altogether. Are you prepared to argue Dawkins uses Gaussian Random Noise onto real numbers? :-) From Data Structures
Evolution Strategy or Evolutionsstrategie A search technique first developed in Berlin. Each point in the search space is represented by a vector of real values. In the original Evolution Strategy, (1+1)-ES, the next point to search is given by adding gaussian random noise to the current search point. The new point is evaluated and if better the search continues from it. If not the search continues from the original point. The level of noise is automatically adjusted as the search proceeds. Evolutionary Strategies can be thought of as like an analogue version of genetic algorithms. In (1+1)-ES, 1 parent is used to create 1 offspring. In (u+l)-ES and (u,l)-ES m parents are used to create l children (perhaps using crossover).
Also from Wiki:
Evolution strategy - Works with vectors of real numbers as representations of solutions, and typically uses self-adaptive mutation rates;
scordova
March 23, 2009
March
03
Mar
23
23
2009
07:05 PM
7
07
05
PM
PDT
Sal Gal wrote:
You certainly do not conceal the prior work by making up new terminology like “proximity search” and “locking.”
I made up the phrase "Proximity Reward" search, not Dembski. I use the phrase since it clearly explains to the layman what the fitness function in the Weasel example is doing. It rewards a string based on proximity to a target, hence "Proximity Reward Search" If that's "shenanigans", then so be it. I think it is clear. AtomAtom
March 23, 2009
March
03
Mar
23
23
2009
06:57 PM
6
06
57
PM
PDT
R0b says,
Weasel is useless except as a pedagogical tool.
Thank you. I had written something very similar before seeing your comment: Dawkins made it very clear that he was using the Weasel program as a pedagogical tool. Anyone who has worked with evolution strategies -- this should include any evolutionary informaticist -- asks first about an ES whether parents compete with progeny for survival into the next generation. Dawkins answers this clearly enough in The Blind Watchmaker:
The computer examines the mutant nonsense phrases, the 'progeny' of the original phrase, and chooses the one which, however slightly, most resembles the target phrase, METHINKS IT IS LIKE A WEASEL.
I have to ask if Dembski has ever implemented an evolution strategy for himself. I cannot imagine that he would have found Dawkins' explanation ambiguous if he had.Sal Gal
March 23, 2009
March
03
Mar
23
23
2009
06:06 PM
6
06
06
PM
PDT
Dawkins evidently did not know, almost 25 years ago, that he had implemented an evolution strategy (ES). This does not give us license to ignore today that the Weasel program is an instance of an ES. The shortcoming in the Weasel program is not in the ES, but in the fitness function. No evolutionist believes that the (un-)fitness of an organism is its distance in some space from a target. The ES itself knows nothing about targets. It knows only that the solution space is the set of all length-28 sequences of uppercase letters and blanks. The ES passes candidate solutions to the fitness function, in which the details of the problem are hidden from the ES proper. The Weasel fitness function may be written w(s) = 28 - Hamming(s, T), where s is the candidate solution (a sentence of 28 letters and blanks), T is the target sentence, and Hamming(s, T) is the Hamming distance -- the number of mismatches -- between s and T. The ES uses the fitness values w(s) of progeny s to select the parent of the next generation, but has no "idea" how w(s) is computed. In short, you get Dawkins' Weasel program by plugging a particular fitness function into a generic ES. I can see only propaganda purposes in attacking the Weasel program instead of the combination of generic ES and fitness function. Do Dembski and Marks really want to make scholarly contributions to evolutionary informatics, or do they seek instead to make a big show of setting up and knocking over an ancient straw man? The Weasel fitness function is very similar to one of the more heavily studied functions in the theory of evolutionary computation. The only difference between the Weasel function and the ONEMAX function is that ONEMAX restricts the characters to 0's and 1's, and the target is all 1's. It's a fair guess that some, if not most, ONEMAX analyses generalize easily to non-binary alphabets. In other words, there is quite body of theory to draw upon in analysis of an ES operating with the Weasel fitness function. I believe that Dembski and Marks have known for quite some time that the Weasel program is an ES. So what game is Dembski playing? If you are a legitimate scholar and you know that you are analyzing an ES, you go to the ES literature to find prior analyses. You certainly do not conceal the prior work by making up new terminology like "proximity search" and "locking." I call shenanigans.Sal Gal
March 23, 2009
March
03
Mar
23
23
2009
05:45 PM
5
05
45
PM
PDT
Upright BiPed:
He makes the larger point clear, there is a target in Dawkin’s exercise. The simulation reaches a predefined goal. Life, or more appropriately evolution, does not work that way. There is no target.
Don't tell Marks and Dembski this. If evolution, according to MET, has no target, then Marks and Dembski can't apply their active information measure to biology without begging the question.
Produce “methinks its a weasel” without that phrase existing anywhere in the system, then that will be impressive. Unitl then, Berlinski is 100% correct.
There are, of course, many such algorithms. A few years back, there was a kerfuffle in the ID debate over an algorithm that found the Steiner tree for a given set of points. This algorithm, like all useful searches, successfully inverted its objective function, providing solutions that were unknown to the designer of the program. If Berlinski's point is that Weasel doesn't do this, then he's trivially correct. Weasel is useless except as a pedagogical tool.R0b
March 23, 2009
March
03
Mar
23
23
2009
03:15 PM
3
03
15
PM
PDT
R0b wrote:
In Dawkins’ non-latching code, the only information that the oracle communicates is the fitness level of the candidate.
...and this "fitness level" encodes quite a bit of information about how far away a string is from the target; it is exactly inversely proportional to it, if I am not mistaken. Without the information about target location encoded in the fitness reward matrix, the same algorithm sputters and can't find the target well, if at all, even with reproduction, mutation and selection. In version 2.0 you can see this for yourself by choosing (or creating) a fitness function that has limited information about the target location. AtomAtom
March 23, 2009
March
03
Mar
23
23
2009
03:09 PM
3
03
09
PM
PDT
R0b, I'm not in charge of the "Math" pages, I just code the GUIs. I'm sure Dr. Marks will update the pages, however, to include descriptions of the new features. GLF, I got the idea of latching from Dr. Marks and Dr. Dembski, who got that idea from the apparent (and possibly real) locking in the book version. With a low enough mutation rate and large enough population size (1 mutation per generation, 100 offspring) you get apparent locking behavior, as Joseph pointed out, even though no locking mechanism is in place for Proximity Reward Search. As for the FSCI meter and feature creep: Sounds like something of an interesting idea, but the strings you search for can be any string, meaningful or not. I'd have to think through what FSCI would mean in that context (if it even applied), before I could even begin to code something like that. (FSCI requires a definition of functional states...I guess I could make the target the single functional state?) Anyway, I have real (paid) work to do in the meantime, so I have to put off any major improvements or new features until I get a chunk of free time. But there'll be plenty to play with and discuss in the new version. AtomAtom
March 23, 2009
March
03
Mar
23
23
2009
03:03 PM
3
03
03
PM
PDT
Atom, Would it be possible for you to add a "FSCI meter" in the new version you are going to make available? It would be interesting to see the FSCI values for the various strings change over time. I realise this is "feature creep" but I think it would be a great feature!
So we can see exactly how much active information a Proximity Reward fitness matrix contributes to the search and users can replace this with a reward matrix generated by a fitness function of their choice.
Can we measure the active information in FSCI terms?George L Farquhar
March 23, 2009
March
03
Mar
23
23
2009
02:02 PM
2
02
02
PM
PDT
Joseph
IOW there doesn’t have to be coded statement that locks the matching letters. The locking is a byproduct of the program.
Atom
Oh, and R0b, you now will have both latching and non-latching versions side-by-side, for whichever you want to assume that Dawkins used for The Blind Watchmaker.
Atom, how did you know what behaviour to implement in the original version - where did you get the idea of latching letters (or not) from in the first place? Why did you do it that way? Joseph, If there is no coded statement in the program that locks the matching letters, how is it possible you need two different programs (as Atom says) to represent latching and non-latching behaviour? Kariosfocus
To get implicit latching without reversions, the population as well as mutation rate actually need to be mutually tuned, so that you get steady advances without letter substitutions [one flicks back while another moves ahead].
Same question as to Joseph. Tune the population and setttings you say? What settings, what program?George L Farquhar
March 23, 2009
March
03
Mar
23
23
2009
01:40 PM
1
01
40
PM
PDT
Atom:
Oh, and R0b, you now will have both latching and non-latching versions side-by-side, for whichever you want to assume that Dawkins used for The Blind Watchmaker.
Very cool, Atom. You'll probably also want to change the "The Math" page, that claims to analyze Dawkins' algorithm, but in fact analyzes an algorithm that has a mutation rate of 100% for unlatched letters, 0% for latched letters, and a population of 1.R0b
March 23, 2009
March
03
Mar
23
23
2009
01:06 PM
1
01
06
PM
PDT
Apollos:
Actually latching behavior requires less information: smaller code, less memory allocated, and the code is much faster and more efficient.
That's all true. But I didn't say anything about code size, memory footprint, or efficiency. In Dawkins' non-latching code, the only information that the oracle communicates is the fitness level of the candidate. This is significant because the same is true of the environment in evolutionary theory. That is, the environment determines how successfully a given organism will reproduce, but it doesn't tell the organism which genes to exempt from mutation. WRT Weasel, the number of correct letters falls in the range of 0 to N, where N is the number of letters in the sequence. That means that the oracle communicates log2(N) bits of info in the non-latching algorithm. In the latching algorithm, on the other hand, the oracle communicates N bits of info.
“If nothing else, it shows that intuition isn’t reliable when it comes to genetic behavior.” There has been little disagreement here that Weasel exhibits no such behavior.
Weasel is a genetic algorithm, so I'm not sure what your comment means.R0b
March 23, 2009
March
03
Mar
23
23
2009
12:52 PM
12
12
52
PM
PDT
Rob wrote:
"It shows how the results of the oracle (or environment) simply communicating a fitness level can fool some people into thinking that more information is being communicated. Dembski, kairosfocus, and others thought that the oracle must not just be communicating the number of correct letters, but also which letters are correct."
Actually latching behavior requires less information: smaller code, less memory allocated, and the code is much faster and more efficient. Coding latched behavior is the shortest route to reproduce the output, so the conclusion that explicit latching is used is most reasonable based purely on examination, absent source code. The non-latching implementation wastes a lot of time and memory to avoid locking letters. A side effect of hurling large mutating populations at what would otherwise be a simple search-and-latch implementation is that due to an unsophisticated target comparison a reversion is seen from time to time.
"If nothing else, it shows that intuition isn’t reliable when it comes to genetic behavior."
There has been little disagreement here that Weasel exhibits no such behavior.Apollos
March 23, 2009
March
03
Mar
23
23
2009
12:34 PM
12
12
34
PM
PDT
kairosfocus [229], out of curiosity, I tried to determine what you were talking about with respect to "blood slander." I did a little reading, using your blog and the AtBC discussion as a guide. I think the term "blood slander" is awfully strained in your usage; I'd even call it hyperbolic. Of course, there might be hyperbole on the other side as well, but I don't know enough to judge. I did want to thank you, though, for (perhaps inadvertently) bringing my attention to the beautiful Redemption Song Monument; it appears to be a powerful and moving sculpture.David Kellogg
March 23, 2009
March
03
Mar
23
23
2009
12:09 PM
12
12
09
PM
PDT
1 2 3 4 5 6 … 12