CarlShulman comments on Newcomb's Problem and Regret of Rationality - Less Wrong

64 Post author: Eliezer_Yudkowsky 31 January 2008 07:36PM

You are viewing a comment permalink. View the original post to see all comments and the full post content.

Comments (588)

Sort By: Old

You are viewing a single comment's thread. Show more comments above.

Comment author: christopheg 02 July 2013 12:36:03PM 0 points [-]

So, what is wrong believing in probabilities ? To ask that question is already to presuppose the one-boxing answer, and to miss the problem that the problem itself may be problematic.

That is going for the third option and dodging to point out exactly why the problem should not be well posed. I can write a program working as the Newcomb's problem is described if I go for the "unperfect predictor" version where the being is merely right "most of the time". A way to do it could be to let player run a number of practice (or calibration) games, then at a time chosen by the guesser make that game "real". The calibration plays would simulate the supernatural player minute observation of the player behavior, what can indeed not easily be done.

I knew of the Robust Coopearation paper, and it's really very interresting, but getting the source code of the other is also a huge change to the initial problem. At least it excludes perfect oracles from the problem, it is also clear you may be confronted to halting problem (this is why current scheme tournament based on this idea had to make a provision in rules to avoid non halting programs). Stating we can say something usefull on another problem does not implies the initial one had anything wrong.

On the other hand, it is obvious that Dominance Argument is broken in Newcom's problem (and also in PD) as the logical proof is only correct when we have non correlated variables (non correlation should not be confused with causal independance, causal independance is not enough for Dominance Argument to be correct). In Newcomb's problem, the perfect correlation is part of the problem statement. How anyone could then apply Dominance Argument is beyond me, probably because it mimics usual deductive logic.

I'm not saying that Newcomb's problem describe any physically possible event, or not even that it is a good problem, or that the consequences it leads to are agreeable (at first sight it leads to lack of free will), but just that mathematically using (very) simple probabilistic tools you can solve it, without changing anything and that alternative usual solution is based on a mathematical error.

Comment author: CarlShulman 02 July 2013 12:48:38PM 0 points [-]

A way to do it could be to let player run a number of practice (or calibration) games, then at a time chosen by the guesser make that game "real". The calibration plays would simulate the supernatural player minute observation of the player behavior, what can indeed not easily be done.

No good, then even CDTers are incentivized to one-box, since once-boxing in the practice rounds causes higher rewards in the real rounds.

Comment author: christopheg 02 July 2013 01:33:00PM 0 points [-]

I do not see your reasoning here ? What I'm proposing is not letting know when practising round stops and real round starts. That means indeed that one boxer would get higher rewards in both practice and real round, and that's why I believe it's an argument for one boxing.

My proposal for "simulating" Newcomb's may not be accurate (and it's certainly not perfect) but you can't conclude that based on the (projected) outcome of the experiment disagreeing with wath you expect.

Comment author: CarlShulman 02 July 2013 05:06:36PM 1 point [-]

Because depending on the numbers in the setup your modified experiment doesn't get at the disagreement between one-boxer and two-boxers.

Comment author: christopheg 03 July 2013 12:29:08AM *  0 points [-]

Here is an actual program (written in python) implementing the described experiment. It has two stages. The first part is just calibration intending to find out if the player is one boxing or two boxing. The second is a straightforward non iterated Newcomb problem. Some randomness is used to avoid the player to exactly know when calibration stops and test begin, but calibration part does not care at all if it will predict the player is a one boxer or a two boxer it is just intended to create an actual predictor behaving as described in Newcomb's.

print "I will run some trial games (at least 5) to calibrate the predictor."
print ("As soon as the predictor will reach the expected quality level\n"
"I will run the actual Newcomb game. Be warned you won't be\n" "warned when calibration phase will end and actual game begin\n"
"this is intended to avoid any perturbation of predictor accuracy.\n")
# run some prelude games (to avoid computing averages on too small a set)
# then compute averages to reach the intended prediction quality
# inecting some randomness in prelude and precision quality avoid
# anybody (including program writer) to be certain of when
# calibration ends. This is to avoid providing to user data that
# will change it's behavior and defeats prediction accuracy.
import random
# 5 to 25 calibration move
prelude = (5 + random.random() * 20.0) # 90% accuracy or better, and avoid infinite loop
# we do not tell how much better to avoid guessers
accuracy = 1.0 - (random.random() * 0.1) - 0.01 # postlude is the number of test games where desired accuracy must be kept
# before running the actual game
# postlude will be a random number between 1 and 5 to avoid players guessing
# on the exact play time when percent will change, this could give them some
# hint on the exact final game time. It is possible the current postlude # can still be exploited to improve cheater chances above intended predictor
# values, but it's just here to get the idea... and besides outguessing omega
# the cheater is only doing so in the hope of getting 100 bucks.
# How much energy does that deserve ?
postlude = 0 one = total = two = 0
while ((total < prelude) and (int(postlude) != 1)):
a = raw_input ("1 - One-box, 2 - Two-boxes : ")
if not a in ['1', '2']: continue
if a == '1':
one += 1
else:
two += 1
total += 1
print "current accuracy is %d%%" % int(100.0 * max(two, one) / total)
if (max(two, one) * 1.0 < total * accuracy):
if postlude != 0 :
postlude -= 1
else:
postlude = 1 + random.random() * 5.0
else:
postlude = 0
# Now prediction accuracy is good enough, run actual Newcomb's game
# prediction is truly a prediction of the future
# nothing prevents the user to choose otherwise.
#print "This is the actual Newcomb game, but I won't say it"
prediction = 1 if one > two else 2
finished = False
while not finished:
a = raw_input ("1 - One-box, 2 - Two-boxes : ")
if a == '1':
if prediction == 1:
print "You win 1 000 000 dollars"
else:
print "You win zero dollars"
finished = True
elif a == '2':
if prediction == 1:
print "You win 1 000 100 dollars"
else:
print "You win 100 dollars"
finished = True