# Finding the multiple ground truths of CoinRun and image classification

## Research projects

I'm planning to start two research projects on [model splintering/reward generalisation](https://www.lesswrong.com/posts/k54rgSg7GcjtXnMHX/model-splintering-moving-from-one-imperfect-model-to-another-1) and [learning the preferences of irrational agents](https://www.lesswrong.com/posts/9rjW9rhyhJijHTM92/learning-human-preferences-black-box-white-box-and).

Within those projects, I'm aiming to work on subprojects that are:

1. Posed in terms that are familiar to conventional ML;
2. interesting to solve from the conventional ML perspective;
3. and whose solutions can be extended to the big issues in AI safety.

The point is not just to solve the sub-problems, but to solve them in ways that generalise or point to a general solution.

The aim is to iterate and improve fast on these ideas before implementing them. Because of that, these posts should be considered dynamic and prone to be re-edited, potentially often. Suggestions and modifications of the design are valuable and may get included in the top post.


# Generating multiple rewards and objectives

*Thanks to Rohin Shah and Ramana Kumar for suggesting to investigate this problem, and to Rebecca Gorman.*

**Parent project**: this is a subproject of model-splintering (value extrapolation).


## Generating multiple rewards

Suppose that an agent is trained on videos of happy humans. The [wireheaded reward](https://www.lesswrong.com/posts/vXzM5L6njDZSf4Ftk/defining-ai-wireheading) is for it to create similar videos for it to watch. We'd prefer that it instead worked to make real humans happy.

But for that to be possible, it needs to consider that "make real humans happy" is even a possible reward function. Thus it needs to generate multiple reward functions that can explain the same data.

## Working in CoinRun

[CoinRun](https://openai.com/blog/quantifying-generalization-in-reinforcement-learning/) is a procedurally generated set of environments, a simplified Mario-style platform game. The reward is given by reaching the coin on the right:

![](https://www.dropbox.com/s/e5ggon1o9yebb2m/coinrun.png?raw=1)

Since the coin is always at the right of the level, there are two equally valid simple explanations of the reward: the agent must reach the coin, or the agent must reach the right side of the level.

When agents trained on CoinRun are tested on environments that move the coin to another location, [they tend to ignore the coin and go straight to the right side of the level](https://arxiv.org/pdf/2105.14111.pdf). So that one reward is chosen by default. The aim of the research project is to make the algorithm generate multiple (simple) reward functions that explain the initial data, including the "reach the coin" reward. This needs to be done in a generalisable way.

## Multiple image classifications

Consider the image classification task of classifying images of huskies versus images of lions:

![](https://www.dropbox.com/s/w50rfzd5bi6329k/husky_vs_lion.png?raw=1)

A naïve image classifier could be trained on images of this type. The simplest one would probably become a brown-versus-white classifier. We'd want to force the algorithm to generate more classifiers (more "reward functions" for the task of correct classification).

One way to do that is to give the algorithm many other images, unlabelled. Then, in a semi-supervised way, the AI will figure out the key features of these images. Then different classifiers will be trained on the original image data, using these features.

The ultimate aim is for the algorithm to produce, eg, one classifier that classifies through colour, another that classifies through landscape, another through husky versus lion, etc...

## Research aims

1. Figure out how to generate multiple policies from the same data.
2. Figure out how to generate multiple simple reward functions or classifiers from the same data (there is a connection with [reward modelling](https://arxiv.org/abs/1811.07871)).
3. Ensure that these reward functions (or, at worst, policies) are "independent" from each other. This involves figuring out a general definition of independence (in CoinRun, the two independent reward functions - coin and right side of the level - are clear).
4. See if these reward functions "span" the set of reward functions in a useful way - ideally, every possible reward function should be a function of these simple reward functions.
5. Generalise this approach beyond CoinRun, image classification, and similar setups, to general reward data in general situations.

This is a simpler version of the project [presented here](https://www.lesswrong.com/s/xujLGRKFLKsPCTimd/p/ZqSESJYcA8m2Hh7Qm), generating multiple reward functions from a simpler environment.