Tag Archives: philosophy of science

Does Occam’s razor give too close a shave?

Occam’s razor is a reasonably well-known principle of methodology. The idea is to prefer parsimony to complexity, between competing hypotheses of equal explanatory power. This, intuitively, seems a sensible idea. Occam’s razor has been re-packaged and re-phrased many times, whether as the lex parsimoniae, or as Einstein’s recommendation to makes things as simple as possible, but no simpler.
All sound advice. But note, that Occam’s razor is not a law. The lex parsimoniae is only a law in the same sense that we talk of a Law of Averages; there is no actual law to speak of. Occam’s razor is more of a principle or a recommendation.
But there is a danger that this is forgotten and the negative side to the razor is overlooked. For there is a fairly obvious flaw with this idea if taken to extremes, namely the risk of rejecting an accurate, complex hypothesis in favour of a simpler hypothesis, which is also correct but less powerful.
For example, imagine Newton had proposed Einstein’s theory of general relativity instead of his mechanical, gravitational theory. Suppose he had explained general relativity precisely as Einstein had done and then had shown how in a particular, localised arrangement, the Newtonian equations of motion ‘fell out’ and that therefore he had a hypothesis for the motion of particles.
Now a devotee of Occam might suggest that a more parsimonious, yet equally powerful explanation of the simple motion of particles, is given by the Newtonian equations of motion alone. All the additional theory of relativity is completely untestable (in the late 1600s). So we should keep it simple and reject this for now. And herein lies the problem; we have just cut out a far more powerful and (presumably) accurate theory with our razor.
My point is that parsimony is desirable, but this is not a logical demand. It is a normative statement. Efficiency or simplicity we naturally covet, but we must not be beholden to them. The world is complex and a lot of the simple stuff has been explained with simple theories. But it is not unreasonable to think that more complex theories might be necessary in future, to augment our knowledge. And an over-adherence to Occam might hold us back, by its embedded potential to catapult out complex yet helpful theories.

www.metaphysicsofmarkets.com

Advertisements

Leave a comment

Filed under Lateral thoughts

On debugging software and Popper’s philosophy of science

Software containing bugs often produces undesirable results. When the a posteriori output from a programme does not meet our a priori expectations, either the programme logic has a flaw or the programme logic is fine, but the programme design was flawed.
When we test a programme, we are effectively collecting empirical data from which we make inductive propositions about the programme. So, if the erroneous output exhibits a certain pattern, we might infer a rule that might be generating this data. This is inductive science; moving from a limited set of observations to a general principle or law. And inductive science is, philosophically speaking,not uncontroversial. Induction is subject to the risk of ‘black swan’ events; no matter how many examples we find in support of a supposition (“All swans are white”), induction alone can never prove the objective truth of “All swans are white”.
However, Popper noted that we can apply deductive reasoning to the results of induction. So when our supposition that “All swans are white” is contradicted by the discovery of a single black swan, we may deduce that “Not all swans are white”. This move has maximal justification.
When we debug code with known errors, a good procedure is to create test conditions that enable us to apply this deductive technique and thus isolate the faulty lines of logic. We induce a hypothesis such as “All inputs {A} when processed by logic {L1,L2..LN} produce output {B}”, when we expected to see output {C}. We induce this from the output we can see in testing; and remember it is just an unproven hypothesis at this point. Now, if we can product output {B*} from the same inputs and logic, we can deduce something far stronger; a concrete proposition that “Not all input {A} when processed by logic {L1,L2..LN} produce output {B}” or its logical counterpart “Inputs {A} when processed…can produce {B} OR {B*}”.
This is a powerful result; moving from supposition to fact, by deduction. And software debugging is particularly well-placed to benefit from its application.

Leave a comment

Filed under Lateral thoughts