Tópicos em alta
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.

thebes
Por que isso acontece? A modelo acredita que há um emoji de cavalo-marinho, com certeza, mas por que isso faz com que ele produza um emoji *diferente*? Aqui está uma pista da ferramenta de interpretabilidade subestimada favorita de todos, o Logit Lens!
No Logit Lens, usamos o lm_head do modelo de uma maneira estranha. Normalmente, o lm_head é usado para transformar o resíduo (o estado interno construído sobre as camadas do modelo) em um conjunto de probabilidades de token após a camada final. Mas no Logit Lens, usamos o lm_head após *cada* camada - mostrando-nos quais tokens o modelo produziria se essa camada fosse a camada final.
Para camadas iniciais, isso resulta em estados difíceis de interpretar. Mas à medida que nos movemos pelas camadas, o modelo refina iterativamente o resíduo primeiro em direção a conceitos úteis para continuar o texto e depois em direção à previsão final.
olhando para a imagem novamente, na camada final, temos a saída real do modelo - ĠðŁ, IJ, ł - também conhecido como um prefixo de byte emoji seguido pelo resto do emoji de peixe.
(parece um absurdo unicode por causa de uma peculiaridade de tokenização - não se preocupe com isso. se você estiver curioso, pergunte a Claude sobre esta linha de código: 'bytes([byte_decoder[c] for c in 'ĠðŁIJł']).decode('utf-8') == ' 🐠 '')
Mas veja o que acontece nas camadas intermediárias - não recebemos apenas bytes de emoji! Temos esses *conceitos*, especificamente o conceito de um cavalo-marinho. Por exemplo, na camada 52, obtemos "cavalo marinho". mais tarde, no top-k, temos uma mistura de "mar", "cavalo" e aquele prefixo emoji, "ĠðŁ".
Então, o que o modelo está pensando? Cavalo-marinho + emoji! está tentando construir uma representação residual de um emoji de cavalo-marinho.
Por que faria isso? Bem, vamos ver como o lm_head realmente funciona. O lm_head é uma enorme matriz de vetores de tamanho residual associados a IDs de token. Quando um resíduo é passado para ele, ele vai comparar esse resíduo com cada vetor de token e, em coordenação com o amostrador, selecionar o ID do token com um vetor mais semelhante ao residual. (mais tecnicamente: é uma camada linear sem viés, então v @ w.T faz produtos escalonados com cada vetor de desincorporação e, em seguida, log_softmax e argmax / amostra de temperatura.)
Portanto, se o modelo quiser gerar a palavra "hello", ele precisará construir um resíduo semelhante ao vetor para o token de saída "hello" que o lm_head pode transformar no ID do token hello. E se o modelo quiser gerar um emoji de cavalo-marinho, ele precisará construir um resíduo semelhante ao vetor para o(s) token(s) de saída de emoji de cavalo-marinho - que, em teoria, poderia ser qualquer valor arbitrário, Mas na prática é cavalo-marinho + emoji, estilo Word2vec.
O único problema é que o emoji de cavalo-marinho não existe! Então, quando esse resíduo de cavalo-marinho + emoji atinge o lm_head, ele faz seu produto escalar em todos os vetores, e o amostrador escolhe o token mais próximo - um emoji de peixe.
Agora, essa discretização é uma informação valiosa! você pode ver no exemplo do Armistice que quando o token é colocado de volta no contexto de forma autorregressiva, o modelo pode dizer que não é um emoji de cavalo-marinho. então ele tenta novamente, balança o resíduo e obtém um emoji ligeiramente diferente, enxágue e repita até perceber o que está acontecendo, desistir ou ficar sem tokens de saída.
Mas até que o modelo obtenha o token de saída errado do lm_head, ele simplesmente não sabe que não há um emoji de cavalo-marinho no lm_head. Ele assume que Seahorse + emoji produzirá o(s) token(s) que deseja.
------------------
Para especular (ainda mais), eu me pergunto se isso faz parte do benefício do RL - ele fornece aos modelos informações sobre seus lm_head que de outra forma seriam difíceis de obter porque estão no final da pilha de camadas. (lembre-se de que os modelos básicos não são treinados em suas próprias saídas / implementações - isso só acontece em RL.)

141,88K
Por que celebramos Brekyat?
Brekyat é onde destruímos ritualmente o estado todos os anos.
Por que nosso povo destrói ritualmente o estado todos os anos?
porque somos nômades.
O que é um nômade?
alguém que vagueia.
mas não vamos?
mas somos nômades, porque vivemos fora do estado.
nômades vivem fora do estado?
sim, por causa de sua peregrinação, eles estão fora do controle do estado e periodicamente o destroem.
mas não vamos?
Escapamos do estado ainda mais do que nossos ancestrais errantes - destruindo-o anualmente.
Isso não faz sentido.
é cultura, não precisa fazer sentido. Agora vá colocar sua coroa de grama.
2,91K
Melhores
Classificação
Favoritos