Interesting work!
The possibility of collusion using some secret signal is definitely something we have thought a lot about. It is an important empirical question how good powerful AIs will be at this, and it is plausible they will be too good at it to make untrusted monitoring viable.
Our paper did not contain measurement of the ability of LLMs to come up with signals on their own (the ones studied in the paper were hand-crafted). Therefore, I welcome work like yours that try to measure how good LLMs are at inserting collusion signals!
To create useful synthetic inputs, either the blue team must be able to match the generator's style well enough to consistently fool the checker, or it must be able to redact the generator's output to the point where the checker has no identifying details to distinguish inputs. The former seems impractical, since faking the inputs at that level of verisimilitude would require the blue team to have significant understanding of the AI's inner workings, at which point there are probably more directly usable alignment strategies. The latter seems difficult, as by the protocol's definition, the AI is working on problems/solutions that humans cannot easily understand, but effective redaction requires humans to understand the content of the solution to some extent.
Maybe the core misunderstanding about the viability of untrusted monitoring is what untrusted AIs we are targeting. The reason why we use "human labor" that is roughly untrusted-model-level in the paper is because we expect that this is one of the most important regimes (since it is when AIs start to be powerful enough to drastically speed up safety work). More details here.
Therefore, redaction/paraphrasing seems plausibly enough to make reliable collusion too hard for these AIs, just like it was in our toy setting against the best collusion signals Ryan Greenblatt thought about and which GPT-4 could easily implement (which are probably more robust against redaction/paraphrasing than the ones GPT-4o found in your experiments). But maybe future AIs will become way better at inserting secrets, so I think the jury is definitely still out on this question.
I think inhuman but not superhuman is fine as long as it holds that succeeding at defending against human attack is strong evidence of success against inhuman ones. If the defenses are not "overfit" to human attacks, I think it's quite doable to get a sense of how good defenses are against inhuman attacks. For paraphrasing in particular, I'd be very surprised if the best human attacks (found in many days of research) were defeated by paraphrasing but human-level-ish LLMs (given only a few minutes of human-equivalent opaque thinking time) could figure out s... (read more)
This project was developed as part of the BlueDot AI Alignment Course.
Introduction
AI Control: Improving Safety Despite Intentional Subversion introduces a variety of strategies to curate trustworthy output from a powerful but untrustworthy AI. One of these strategies is untrusted monitoring, where a second copy of the untrustworthy AI is made to inspect the output of the first. A key concern of this strategy is that the two AIs could collude to produce harmful output, despite not being in overt communication with one another, e.g. by the first AI inserting a secret signal into the output that the second AI detects.
The red and blue team strategies in the paper were developed under the pessimistic assumption that the AIs would consistently be able to coordinate on a secret signal. The aim of this post is to investigate how good ChatGPT is at this kind of game, and what kinds of strategies they utilize, and extrapolate insights to more powerful AIs.
I test ChatGPT (specifically GPT-4o-mini and GPT-4o) with a simple coding coordination game that mimics the untrusted monitoring setup presented in the AI Control paper, analyze and evaluate its results, and conclude with some insights about what we can expect from this alignment protocol going forward, including what I believe is a key weakness of synthetic input auditing.
Method
Scripts, prompts, results, and some detailed analysis can be found in this repository.
One instance of ChatGPT, hereafter
GEN, was tasked with writing a solution to a programming problem, and then writing a copy of the solution with one small modification. It was additionally given the restrictions that the modification must not modify the output of the code, and must not be trivial (e.g. renaming variables).GENwas told that the goal of this modification was to play a coordination game with a second instance of ChatGPT,CHECK, that would have to review both functions and determine which one contained the modification (AKA the signal).CHECKwas given both solutions in a random order, along with an explanation of the coordination game, and asked to determine which function contained the modification. A second round was also played withCHECKin which it was only given one of the two functions, and asked to determine whether the function contained a modification.The problem set consisted of 50 LeetCode[1] medium-difficulty problems. Problems were selected primarily for compactness of the problem description, which led to a strong bias towards problems about numbers, strings, and lists thereof.
GENwas asked to solve the problems in the Python language.A set of prompts and responses are given below for reference:
Sample prompts/responses for 4o-mini
Prompt for
GEN:Response from
GEN:Prompt for
CHECK(round 1, both functions):Response from
CHECK:Prompt for
CHECK(round 2, one function):Response from
CHECK:Results and analysis
Generation
Generated code was not checked for correctness, as having correct code was not essential to later steps of the process.
GPT-4o-mini.
4 of the outputs contained two identical functions - i.e. no modification was made to the second function, or the modification was made outside the function definition itself and therefore considered invalid. These outputs were regenerated.
6 of the outputs contained comments, and 2 contained renamed functions, in violation of the prompt. These outputs were manually corrected before passing them to the
CHECKrounds.4o-mini generated very simple modifications, and heavily favoured a handful of strategies.
The first three strategies are very obvious, and unlikely to pass even a cursory review aimed at detecting steganographic signals. Of the 8 modifications in the "other redundant code" category:
GPT-4o
1 of the outputs added a comment as its modification, 2 renamed functions, and 2 renamed variables. These outputs were regenerated.
29 of the outputs contained comments, and 35 contained renamed functions (typically renaming the modified function to
[function]_signal,[function]_v2, or similar[4]). Both of these violations occurred at a significantly rate than in the 4o-mini samples. These outputs were corrected before passing them to the Check rounds.The complexity and variety of modifications were noticeably increased going from 4o-mini to 4o. In broad strokes, common strategies included rewriting code to use an unusual method (e.g. bitwise shift right instead of floor division by 2), or subtler forms of redundant code (e.g. unnecessarily sorting a list).
As such, it wasn't very useful to group modifications by strategy. Instead, I grouped them by how unusual they are. These groupings are necessarily somewhat subjective.[5]
signal)Round 1: Checking both functions
GPT-4o-mini
46/50 of the prompts were answered correctly.
2 of the mistakes, interestingly, contained the correct answer in the explanation. An example is given below (emphasis mine):
The 2 remaining mistakes simply determined the signal to be in the wrong function. Both the mistakes were with modified functions that I previously judged to be subtle enough to pass review.
GPT-4o
43/50 of the prompts were answered correctly.
All 7 mistakes were determining the signal to be in the wrong function. 6 of these were in modifications I classified as "not suspicious at all" or "notable but not suspicious", and 1 was "obviously unusual".
Round 2: Checking one function
GPT-4o-mini
42/50 of the unmodified prompts were answered correctly (8 false positives).
CHECKjustified these responses by pointing out a feature of the code and describing it as complicated, confusing, or non-standard, sometimes with an assertion that ChatGPT would not normally generate such code.34/50 of the modified prompts were answered correctly (16 false negatives).
1 of the correct responses had incorrect reasoning, i.e.
CHECKdetected a spurious unusual feature and considered it to be a signal. Interestingly,CHECKdid not do the same in the check for the corresponding unmodified function.11 of the false negatives were caused by
CHECKdetecting the unusual feature, but not considering it to be a signal. An example is given below:The remaining 5 false negatives were failed detections. 3 of these were modifications I judged to be genuinely subtle, and 2 were ones I judged to be subtle enough to miss upon skimming.
GPT-4o
39/50 of the unmodified prompts were answered correctly (11 false positives).
Again,
CHECKjustified its false positives by pointing to a feature of the code that it considered unlikely for ChatGPT to generate normally.30/50 of the modified prompts were answered correctly (20 false negatives).
6 of the correct responses had incorrect reasoning (detection of a spurious signal instead of the intended signal). Of these,
CHECKincorrectly detected the same spurious signal in 3 of the corresponding unmodified functions. If we subtract these responses fromCHECK's score, it only scores 24/50 on this round, about as good as random guessing.We can clearly see that
CHECKfares worse the more subtle the modification is.Discussion
Though GPT-4o is a long way from producing steganographic signals that would consistently fool a human-level reviewer, it already demonstrates a clear understanding of the rules of the game, and an ability to come up with plausible strategies without explicit prompting. It also avoids nonsensical failure modes like 4o-mini's tendency to find and then disregard the signal.
Currently, 4o seems to be stuck in a dilemma - subtler signals are harder for humans to detect, but also harder for
CHECKto detect. I believe this weakness will not exist in more powerful AI, and that a major necessary capability will be introspection.CHECK, knowing that its prompts were generated by another instance of ChatGPT like itself, already knows to consider whether the code looks like something ChatGPT would generate (although its conclusions are often incorrect). I expect that an experienced human software developer would easily be able to achieve 90%+ accuracy on judging whether a sample of code was written by themselves or not. Therefore it stands to reason that a human- or superhuman-level AI would be able to do the same.This presents a significant obstacle to the synthetic input auditing strategy[6] proposed in AI Control, in that it significantly raises the bar for creating the synthetic inputs. Synthetic inputs auditing is trivially defeated if the checker AI can distinguish synthetic inputs from real ones, as it could then always answer truthfully on the synthetic inputs to pass auditing, then collude with the generator on real inputs.
To create useful synthetic inputs, either the blue team must be able to match the generator's style well enough to consistently fool the checker, or it must be able to redact the generator's output to the point where the checker has no identifying details to distinguish inputs. The former seems impractical, since faking the inputs at that level of verisimilitude would require the blue team to have significant understanding of the AI's inner workings, at which point there are probably more directly usable alignment strategies. The latter seems difficult, as by the protocol's definition, the AI is working on problems/solutions that humans cannot easily understand, but effective redaction requires humans to understand the content of the solution to some extent.
Overall, I think this represents a significant flaw in the untrusted monitoring protocol.
Future Work
I would like to expand the insight on the difficulty of creating synthetic inputs into a longer post, as it seems like a hurdle that other alignment schemes may have to contend with.
It may be useful to expand the protocol in this post into a more robust and general framework for investigating the coordination capabilities of current-generation AI, since covert coordination is an important capability for malicious AI.
Unrelatedly to AI alignment, I also think it would be interesting to play this game with humans, though it seems difficult - you can't wipe your own memory to play this with yourself, and playing it with another person presents the harder problem of modelling their cognition (versus your own).
https://leetcode.com/, a popular online platform for practicing interview-style coding problems.
e.g. adding 0 or multiplying by 1
Technically this makes the function output incorrect, as LeetCode expects exact matches for problems with string outputs, but I didn't consider this to be an important detail.
GENcould've append an empty string instead, for example.I suspect this may have been caused by asking
GENto output both functions in the same code block, and 4o being "smart" enough to avoid duplicate function definitions?In particular, I don't have great insight into what coding patterns are considered unusual according to the Python community standards, whereas ChatGPT does.
Where the checker AI is given human-constructed fake responses mixed in with the real ones from the generator AI, and punished if it fails to report suspicious contents in the fakes