Uma boa maneira de começarmos a entender o funcionamento de uma LLM é através do modelo bigrama.
O modelo bigrama cria palavras através de estimativas a nível de caracter.
Então, por exemplo, se estamos interessados em ensinar o modelo a escrever as palavras "casa", "carro" e "bola"...
Primeiro de tudo, ensinar o modelo a começar e terminar uma palavra. Podemos usar o ponto (".") para indicar o início e o fim da palavra.
Então ficaria, assim:
Dados de treinamento...
Input, Output
".", "c"
"c", "a"
"a", "s"
"a", "."
E, assim, sucessivamente.
Estando treinado, nós entraríamos com o "." e o modelo geraria a palavra fazendo sorteios com base em probabilidade.
Por exemplo, a letra "c", neste nosso exemplo é escolhida com uma probabilidade de 2/3, enquanto a letra "b" de 1/3.
E, toda vez que o modelo ver as letras "a" ou "o" existe uma chance, não nula, dele parar.
Lembre, o modelo sempre deve, em algum momento, parar de gerar caracteres.
Agora o grande lance é o seguinte, eu utilizei aqui uma janela de tamanho 1.
E se eu utilizasse uma janela maior?
E o que isso tem a ver com a janela de contexto dos LLMs?
Qual o impacto que isto tem na forma como eu lido com LLMs?
Como isso se relaciona com guardrails?
Em alguns dos próximos posts a gente vai se aprofundar um pouco mais nestes e em outros assuntos.