# Half-baked alignment idea: training to generalize

Note: I think there's a decent chance that the idea I describe is misguided, redundant, naive. My apologies if that is the case, and please feel free to point me towards existing, related writing or research.

Thanks to Peter Barnett and Justis Mills for feedback on a draft of this post. It was inspired by [Eliezer's *Lethalities* post](https://www.lesswrong.com/posts/uMQ3cqWDPHhjtiesc/agi-ruin-a-list-of-lethalities) and [Zvi's response](https://www.lesswrong.com/posts/LLRtjkvh9AackwuNB/on-a-list-of-lethalities).

**Central idea: can we train AI *****to generalize out of distribution*****? **
===============================================================================

I'm thinking, for example, of an algorithm like the following:

1.  Train a GPT-like ML system to predict the next word given a string of text only using, say, grade school-level writing (this being one instance of the object level)
    1.  Assign the system a meta-level award based on how well it performs (without any additional training) at **generalizing**; in this case, that is, predicting the next word from more advanced, complex writing (perhaps using many independent tests of this task without updating/learning between each test, and allowing parameters to update only after the meta-level aggregate score is provided)
        *   Note: the easy→hard generalization is not a necessary feature. Generalization could be from fiction→nonfiction writing or internet→native print text, for instance.
    2.  After all these independent samples are taken, provide the AI its aggregate or average score as feedback
2.  (Maybe?) repeat all of step I on a whole new set of training and testing texts (e.g., using text from a different natural language like Mandarin)
    1.  Repeat this step an arbitrary number of times
        *   For example, using French text, then Korean, then Arabic, etc. 
3.  Each time a “how well did you generalize” score is provided (which is given once per natural language in this example), the system should improve at the general task of generalizing from simple human writing to more complex human writing, (hopefully) to the point of being able to perform well at generalizing from simple Hindi (or whatever) text to advanced Hindi prediction *even if it had never seen advanced Hindi text before*.  
4.  ^Steps 1-3 constitute the second meta-level of training an AI to generalize, but we can easily treat this process as a single training instance (e.g., rating how well the AI generalizes to Hindi advanced text after having been trained on doing this in 30 other languages) and iterate over and over again. I think this would look like:
    1.  Running the analogs of steps 1-4 on generalizing from 
        *   (a) simple text to advanced text in many languages
        *   (b) easy opponents to hard ones across many games, 
        *   (c) photo generation of common or general objects ("car") to rare/complex/specific ones ("interior of a 2006 Honda Accord VP"), across many classes of object
    2.  And (hopefully) the system would eventually be able to generalize from simple Python code training data to advanced coding tasks *even though it had never seen any coding at all before this.* 

And, of course, we can keep on adding piling layers on. 

A few notes
-----------

*   I think the following is one way of phrasing what I hope might happen with method: **we are using RL to teach an ML system how to do ML in such a way that it sacrifices some in-distribution predictive power for the ability to use its “knowledge” more generally without doing anything that seems dumb to us. **
*   Of course, there are intrinsic limits to any system’s ability to generalize. The system in question can only generalize using knowledge X if X exists as information in the object-level training provided to it. 
    *   This limits what we should expect of the system.
        *   For example, I am almost certain that even an arbitrarily smart system will not be able to generate coherent Mandarin text from English training data, because the meaning of Mandarin characters doesn’t exist as “latent knowledge” in even a perfect understanding of English. 

Anyone here know Python?
------------------------

My hands-on experience with ML extends to linear regression in R and not an inch more, so I'm probably not the best person to test this theory out. I've heard some LWers know a bit of Python, though.

If that's you, I'd be fascinated and thankful to see if you can implement this idea using whatever data and structure you think would work best, and would be happy to collaborate in whatever capacity I can. 

Appendix: a few brief comments (from someone with much more domain knowledge than me) and responses (from me):
--------------------------------------------------------------------------------------------------------------

### **Comment**

Is this just the same as training it on this more complex task (but only doing one big update at the end, rather than doing lots of small updates)?

### **Response (which may help to clarify why I believe the idea might work)**

I don't think so, because the parameters don't change/update/improve between each of those independent tests. Like GPT-3 in some sense has a "memory" of reading Romeo and Juliet, but that's only because its parameters updated as a result of seeing the text.

But also I think my conception depends on the system having "layers" of parameters corresponding to each layer of training. 

So train on simple English-->only "Simple English word generation" parameters are allowed to change...but then you tell it how well it did at generalizing out of distribution, and now only its "meta level 1 generalization" parameters are allowed to change.

Then you do the whole thing again but with German text, and its "Meta level 1 generalization" parameters are allowed to change again using SGD or whatever. If this works, it will be the reason why it can do well at advanced Hindi text without ever having read advanced Hindi.

Treat this whole process as the object level, and then it updates/improves "meta level 2 generalization" parameters.

###   
**Comment: **

This looks vaguely like curriculum learning, which apparently doesn't really work in LLMs [https://arxiv.org/abs/2108.02170](https://arxiv.org/abs/2108.02170), I think a similar experiment would be like train on simple+advanced text for English, French, Mandarin etc, but only simple Hindi, and then see if it can do complex Hindi. 

### **Response** 

I think that's a pretty different thing because there are no meta level parameters. Seems like fundamentally just a flavor of normal RL

Or do pretraining with English, French, Mandarin, and Hindi, but only do fine tuning with English, French, Mandarin, and see if it can then do the tasks it was fine tuned for in Hindi. 

My prediction: it learns to generalize a bit (the scores on the novel Hindi tasks are higher than if there was no fine tuning with the other languages) but worse than the other languages generalize. As the models are scaled up, this 'generalization gap' gets smaller.

Seems like this might depend on the relative scaling of different meta level parameters (which I described above)? 

Like for example whenever you scale the # of object level params by a factor of 2, you have to scale the number of nth meta level parameters by 2^(n+1).