fix: miniInfraBayes with interleaved sequence errors.
This commit is contained in:
parent
ef34fb34fa
commit
c92d46ed92
Binary file not shown.
|
@ -163,7 +163,7 @@ proc jitBayesLoop(
|
||||||
|
|
||||||
## Infrabayesianism
|
## Infrabayesianism
|
||||||
|
|
||||||
proc miniInfraBayes(
|
proc miniInfraBayesArgminMaxLoss(
|
||||||
seqs: seq[seq[string]],
|
seqs: seq[seq[string]],
|
||||||
observations: seq[string],
|
observations: seq[string],
|
||||||
n_observations_seen: int,
|
n_observations_seen: int,
|
||||||
|
@ -195,18 +195,29 @@ proc miniInfraBayes(
|
||||||
proc getEvens(xs: seq[string]): seq[string] =
|
proc getEvens(xs: seq[string]): seq[string] =
|
||||||
var evens: seq[string]
|
var evens: seq[string]
|
||||||
for i,x in xs:
|
for i,x in xs:
|
||||||
if i%2 == 0:
|
if i mod 2 == 0:
|
||||||
evens.add(x)
|
evens.add(x)
|
||||||
return evens
|
return evens
|
||||||
|
|
||||||
proc getOdds(xs: seq[string]): seq[string] =
|
proc getOdds(xs: seq[string]): seq[string] =
|
||||||
var odds: seq[string]
|
var odds: seq[string]
|
||||||
for i,x in xs:
|
for i,x in xs:
|
||||||
if i%2 == 1:
|
if i mod 2 == 1:
|
||||||
odds.add(x)
|
odds.add(x)
|
||||||
return odds
|
return odds
|
||||||
|
|
||||||
proc miniInfraBayes2(
|
proc interleave(xs: seq[string], ys: seq[string]): seq[string] =
|
||||||
|
if xs.len != ys.len:
|
||||||
|
echo "Interleaved sequences have to have the same length; returning empty sequence."
|
||||||
|
return @[]
|
||||||
|
else:
|
||||||
|
var zs: seq[string]
|
||||||
|
for i in 0..<xs.len:
|
||||||
|
zs.add(xs[i])
|
||||||
|
zs.add(ys[i])
|
||||||
|
return zs
|
||||||
|
|
||||||
|
proc miniInfraBayesArgminMaxLossInterleavedHypotheses(
|
||||||
seqs: seq[seq[string]],
|
seqs: seq[seq[string]],
|
||||||
observations: seq[string],
|
observations: seq[string],
|
||||||
n_observations_seen: int,
|
n_observations_seen: int,
|
||||||
|
@ -218,14 +229,14 @@ proc miniInfraBayes2(
|
||||||
else:
|
else:
|
||||||
echo "## Mini-infra-bayesianism over environments, where your utility in an environment is just the log-loss in the predictions you make until you become certain that you are in that environment. This time with a twist: You don't have hypotheses over the sequences you observe, but rather over their odd and even position, i.e., you think that you observe interleaved OEIS sequences, (a1, b1, a2, b2, a3, b3). See the README.md for more."
|
echo "## Mini-infra-bayesianism over environments, where your utility in an environment is just the log-loss in the predictions you make until you become certain that you are in that environment. This time with a twist: You don't have hypotheses over the sequences you observe, but rather over their odd and even position, i.e., you think that you observe interleaved OEIS sequences, (a1, b1, a2, b2, a3, b3). See the README.md for more."
|
||||||
|
|
||||||
var losses: seq[float]g
|
var losses: seq[float]
|
||||||
for i in n_observations_seen..<observations.len:
|
for i in n_observations_seen..<observations.len:
|
||||||
var parity_subsequence: seq[string]
|
var parity_subsequence: seq[string]
|
||||||
if i % 2 == 0:
|
if i mod 2 == 0:
|
||||||
parity_subsequence = getEvens(observations[0..<i])
|
parity_subsequence = getEvens(observations[0..<i])
|
||||||
else:
|
else:
|
||||||
parity_subsequence = getOdds(observations[0..<i])
|
parity_subsequence = getOdds(observations[0..<i])
|
||||||
let predictions = predictContinuation(seqs, parity_subsequence)
|
let predictions = predictContinuation(seqs, parity_subsequence)
|
||||||
echo "### Prediction after seeing ", i, " observations: ", observations[0..<i]
|
echo "### Prediction after seeing ", i, " observations: ", observations[0..<i]
|
||||||
print predictions
|
print predictions
|
||||||
let correct_continuation = observations[i]
|
let correct_continuation = observations[i]
|
||||||
|
@ -262,5 +273,9 @@ jitBayesLoop(seqs, observations, 3, 1_000, 30_000)
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
observations = @["1", "2", "3", "23", "11", "18", "77", "46", "84"]
|
observations = @["1", "2", "3", "23", "11", "18", "77", "46", "84"]
|
||||||
miniInfraBayes(seqs, observations, 3, "logloss")
|
miniInfraBayesArgminMaxLoss(seqs, observations, 3, "logloss")
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
observations = interleave(@["1", "2", "3", "23", "11", "18", "77", "46", "84"], @["2", "11", "13", "23", "47", "59", "71", "83", "107"])
|
||||||
|
miniInfraBayesArgminMaxLossInterleavedHypotheses(seqs, observations, 6, "logloss")
|
||||||
echo ""
|
echo ""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user