Was too high-level, never got past a sort of generic story with a pollyanna feel (the "GPT voice").
Still mind-boggling how far language models have come.
21–30 of 213 posts
Was too high-level, never got past a sort of generic story with a pollyanna feel (the "GPT voice").
Still mind-boggling how far language models have come.
We shouldn't scoff at that, it's actually quite valuable to get an outline that you can then work on.
I don't know a whole lot about transformers but it would seem like it's an elaborate association game, not a logic machine like what we normally do with a computer.
My characterization is it's a bit like a high school renaissance man: knows by and large what various things mean, knows a bit about what terms are associated, doesn't actually understand expert domains. You can spit out a confident sounding essay about the fall of Rome when you're in high school, but you aren't going to be able to explain why there's no generalized quintic solution.
It is as though its mathematical abilities are incomplete in their training, and wildly, incomprehensibly convoluted: I tried many base64 strings and they all decoded correctly until: It "decoded" the base64 string for "which actress is the best?" except that it replaced "actress" with "address"... there is no off-by-one error that brings you to that. You may try 100 base64 strings and they all decode correctly... on…
It "decoded" the base64 string for "which actress is the best?" except that it replaced "actress" with "address"... there is no off-by-one error that brings you to that.
I'm still baffled by weird failure modes like this. Out of couriosity, did you also give it base64 that just contained random letters, so it can't jump to any word associations?
There's a way simpler answer than this Type I Type II thinking stuff. Most LLMs like GPT are not trained on the level of individual characters – they process input and outputs on the level of subword units that compose multiple characters to support long context windows (i.e. "door" instead of "d", "o", "o", "r"). As a result, they do poorly on character manipulation tasks. You can get some insight here: https://beta…
Here is the single prompt to solve rot13. It still has issues counting lengths.
Prompt:
a = uryyb pungtcg lbh fghq
=> [len(i) for i in a.split()]
=> [5, 7, 3, 4]
=> len(a.split())
=> 4
=> hello chatgpt you stud
a = Pna lbh haqrefgnaq ebg13
=> [len(i) for i in a.split()]
=> [3, 3, 10, 5]
=> len(a.split())
=> 4
=> Can you understand rot13
a = Bs pbhefr vgf rnfl jura lbhir tbg 175 ovyyvba cnenzrgref
=> [len(i) for i in a.split()]
=> [2, 6, 3, 4, 4, 5, 3, 3, 7, 10]
=> Of course its easy when youve got 175 billion parameters
a= Jul qvq gur puvpxra pebff gur ebnq
=> [len(i) for i in a.split()]
=>
Answer: [3, 3, 3, 6, 4, 3, 3]
=> len(a.split())
=> 7
=> Why did the chicken cross the road?
edit: This prompt doesn't actually work, see the other prompt below if you want to try one that works.There's a way simpler answer than this Type I Type II thinking stuff. Most LLMs like GPT are not trained on the level of individual characters – they process input and outputs on the level of subword units that compose multiple characters to support long context windows (i.e. "door" instead of "d", "o", "o", "r"). As a result, they do poorly on character manipulation tasks. You can get some insight here: https://beta…
GPT3 can't create ASCII art for shit either. Though it can make little ASCII tables of data.
Humans do it all the time now. Engineers aren't designing microchips using pen and papers, doing all the computation in their head. Instead they're using tools (software / calculators)
Apparently the model can tell what a multiplication is and when it is called. So why isn't it using a calculator to give correct results to basic maths questions?
In the rot13 case, I can ask it "how can I automate the rot13 of text" (you don't even need to use correct english) and it'll explain me what I need to write at a bash prompt.
Would it be complicated to then have the model actually run the command at a bash prompt, in a sandbox?
It's really mindboggling: humans uses tool (like ChatGPT btw) all the time. Why do these systems use none except their own model?
It is as though its mathematical abilities are incomplete in their training, and wildly, incomprehensibly convoluted: I tried many base64 strings and they all decoded correctly until: It "decoded" the base64 string for "which actress is the best?" except that it replaced "actress" with "address"... there is no off-by-one error that brings you to that. You may try 100 base64 strings and they all decode correctly... on…
> I tried many base64 strings and they all decoded correctly until: It "decoded" the base64 string for "which actress is the best?" except that it replaced "actress" with "address"... there is no off-by-one error that brings you to that. I'm still baffled by weird failure modes like this. Out of couriosity, did you also give it base64 that just contained random letters, so it can't jump to any word associations?
It has a context of some Base64 code. Given that is almost always seen associated with computer code, is "address" or "actress" more likely.
It "knows" the algorithm for decoding base64, and can follow those steps. But it can't overcome it's built-in biases for optimizing the most likely output given the context.
(This problem is solvable, but I think that thinking about it like this helps understand why it behaves like it does)
Interesting attempt, but if you care to do it much faster it's best to exploit its few-shots learning capabilities and break tasks into sub-tasks rather than trying to talk to it like a human being. That's how I taught it base -10. Here is the single prompt to solve rot13. It still has issues counting lengths. Prompt: a = uryyb pungtcg lbh fghq => [len(i) for i in a.split()] => [5, 7, 3, 4] => len(a.split()) => 4 =>…
Also it added a question mark which introduces a little doubt over what it's doing.
All modern LLMs use a tokenizer to convert a sequence of bytes into a sequence of tokens. Short, common words like "the" and "why" are represented as single tokens, while longer and less-common words are represented by multiple tokens. For example, the word "fantastic" is three tokens ("f", "ant", "astic").
Each of these tokens is assigned an arbitrary integer value ("fantastic" becomes [69, 415, 3477]) and then those integer values are used to lookup embedding vectors for each word.
Each embedding vector represents the MEANING of the tokens, by plotting them into a 4096-dimensional vector-space. At runtime, the model looks up each token ID in a dictionary and finds its embedding vector.
For the word "fantastic", those embedding vectors might look something like this:
"f" (69) = [ 0.123, 0.456, ...etc... 0.789, -0.890 ]
"ant" (415) = [ 0.111, -0.222, ...etc... 0.333, -0.444 ]
"astic" (3477) = [ -0.101, 0.202, ...etc... -0.303, 0.404 ]
All of these vectors are assembled into a matrix, and then passed into the layers of neural network, where the actual training/inference occurs.So the language-model has NO IDEA how any of the words are spelled, because the tokenization (and embedding vector lookup) happens as a pre-processing step, outside the bounds of the learning algorithm.
If you want a LLM to understand spelling, you have to include exhaustive spelling information in its training data. For example:
"The word 'fantastic' is spelled f-a-n-t-a-s-t-i-c."
"The word 'FANTASTIC' is spelled F-A-N-T-A-S-T-I-C."
...etc...
And even then, even with 100k+ English words all spelled out in your training data, you'd be hard-pressed to infer any ROT-13 tokens in your output data, because the learning model has probably never seen a token like "qvq" or "pebff".You can play with the GPT tokenizer directly here:
https://beta.openai.com/tokenizer
It will show you the tokenization of any block of text, and the token IDs of the resultant tokens. It's very handy if you spend much time working with GPT-3 (or any other modern language-model!)