4 ms·
Not so fast - you might have precise and efficient functions that do things like basic arithmetic. What you might not have is a model that can reason mathematic
by observationist 3y ago
Not so fast - you might have precise and efficient functions that do things like basic arithmetic. What you might not have is a model that can reason mathematically. You need a model to do things like basic arithmetic functions so that semantic and arbitrary relations get encoded in the weights of a network.
You see this type of glitch crop up in tokenizing schemes in large language models. If you attempt working with character level reasoning or output construction, it will often fail. Trying to get ChatGPT 4 to output a sentence, and then that sentence backwards, or every other word spelled backwards, is almost impossible. If you instead prompt the model to produce an answer with a delimiter between every character, like #, also to replace spaces, it can resolve the problems much more often than with standard punctuation and spaces.
The idea applies to abstractions that aren't only individual tokens, but specific concepts and ideas that in turn serve as atomic components of higher abstractions.
In order to use those concepts successfully, the model has to be able to encode the thing and its relationships effectively in the context of whatever else it learns. For a given architecture, you could do the work and manually create the encoding scheme for something like arithmetic, and it could probably be very efficient and effective. What you miss is the potential for fuzzy overlaps in the long tail that only come about through the imperfect, bespoke encodings learned in the context of your chosen optimizer.
- imtringued 3y agoDamn, how many problems with LLMs relate to the encoding of the token? Surely every symbolic manipulation task is getting thrown off by this. Memorizing the multiplication table of two three digit numbers is no easy task at all. That explains why the interpreter hack works so well. The python interpreter sees things digit by digit, but the LLM does it token by token. I've asked it so many times to count the number of words or letters and it was incredibly bad at it. Since it is capable of splitting large tokens into smaller tokens, the solution to this problem is to create additional training samples that perform "big token" to "small token" conversion and back, so that the model will learn to dynamically provide the most suitable encoding to itself.