Sunday, September 25, 2011

Laws or Heuristics?

Rereading Kant I got to thinking about how we as people determine if actions are moral. Unlike Kant we don't really start by applying rules like is the person driven by good will or fear, but instead look at the problem as a whole. In most circumstances we can very quickly determine if something is moral or not even before we fully understand our reasons for why we consider it so (and fMRI studies suggest we have made up our mind well in advance of when we become aware of the decision). When we attempt to codify our decision making we end up making endless conditionals and exceptions to our rules so they don't lead us into situations where our rules contradict our feelings on morality.

This failure at codification may seem intractable but it reminds me of a kind of problem from computer science. There are many problems that are impossible to solve in the general case, for example is the code for a program the fastest possible that yields the correct answer? Like moral rules specific cases are fairly easily resolved but trying to extend the solution to other problems leads to endless exceptions and eventually collapses.

But computer programers face somewhat different professional stresses than philosophers. First they must actually release programs that run, and second they don't have to be provably perfect to be 'right'. The general case solution for so called "hard" problems is to use heuristics to approximate the ideal solution. In this case the a heuristic is a simplified question on a subset of the problem. For code optimization it goes from "Is this whole program as fast as possible?" to "Are these 10 instructions as fast as possible?" By coming up with varied heuristics programers can find answers that may not be the best possible but are within their margin of error.  In fact modern optimization programs are so effective that for complex problems they ignore the guidance users give them because they come up with better solutions without it. This effectiveness doesn't come from one genius programer but from thousands that have been carefully improving the heuristics over decades.

So I wonder if there is a similar kind of approach to ethical problems as there is programing problems. Not a few universal rules that prove everything, but a series of simpler cases we can break problems up into. By continually refining the answers to the simpler problems that we can understand we will eventually reach an adequate general solution.

1 comment:

  1. There are some contemporary ethicists working along these lines. There are some difficulties, however, because whereas in programming you are trying to solve a technical problem, in morality you are trying to do that and more: figure out what the morally best (or least awful) course of action actually is. Muddling through using the theory that seems to fit each case can be helpful, but it risks a very dangerous relativism.

    ReplyDelete