Phase 00 - Lesson 20

Logaritmos

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Um logaritmo e uma contagem. Ele conta quantas vezes voce dobrou, comecando de 1. Essa e toda a ideia, e e dai que vem o nome "1.58-bit".

Tipo: Aprender Linguagens: Python Pre-requisitos: Operacoes Repetidas e a Virada da Contagem (00-16), Potencias e Expoentes (00-17), Raizes e Quadrados (00-19) Tempo: ~60 minutos

Objetivos de Aprendizagem

  • Ler log2(x) como "quantas vezes eu dobro, comecando de 1, para chegar a x?"
  • Calcular os logs inteiros contando dobras em uma escada
  • Explicar por que log2(3) e cerca de 1.585, o numero exato por tras de "1.58-bit ternario"
  • Conectar as tres visoes: conte as dobras, "2 elevado a o que", e log2
  • Relacionar o logaritmo com a perplexidade, exp(entropia cruzada)

O Conceito

Este e o pilar de toda a fase. Va devagar. Vamos construir o logaritmo da forma que realmente faz sentido, depois conecta-lo a visao do livro-texto no final.

Um logaritmo e uma contagem de dobras

Esqueca "logaritmo" por um segundo. Volte para a escada de dobras que voce construiu na licao 00-16:

inicio:  1
dobra:   1 -> 2     (1 dobra)
dobra:   2 -> 4     (2 dobras)
dobra:   4 -> 8     (3 dobras)
dobra:   8 -> 16    (4 dobras)

Agora a unica pergunta que define esta licao:

Comecando de 1, quantas vezes eu dobro para chegar a este numero?

Essa contagem E o logaritmo na base 2. Escrito log2:

log2(2)  = 1     (1 -> 2 e uma dobra)
log2(4)  = 2     (1 -> 2 -> 4 sao duas dobras)
log2(8)  = 3     (1 -> 2 -> 4 -> 8 sao tres dobras)
log2(16) = 4     (quatro dobras)

Para encontrar log2(8), voce nao calcula nada sofisticado. Voce sobe a escada a partir de 1, dobrando, e conta seus degraus ate chegar a 8. Tres degraus. log2(8) = 3. Pronto.

EQUIVOCO 1 (o mais comum)

Dividir por 2 uma vez e UMA operacao. Um logaritmo CONTA quantas dobras.

Um aluno questionado sobre log2(8) frequentemente calcula 8 / 2 = 4 e responde 4. Isso esta errado, e vale a pena ver exatamente por que. 8 / 2 = 4 desfaz uma unica dobra: leva voce um degrau PARA BAIXO na escada, de 8 para 4. Mas o logaritmo nao e "qual e um degrau abaixo". E "quantos degraus no total para voltar a 1". De 8 voce desce 8 -> 4 -> 2 -> 1, que sao tres degraus. Entao log2(8) = 3, nao 4. Uma divisao e um unico movimento; um logaritmo e uma contagem de movimentos. Mantenha-os separados.

EQUIVOCO 2 (a base versus a contagem)

A base e a coisa que voce dobra. O logaritmo e a contagem. Nao retorne a base.

Questionado sobre log10(100), um aluno respondeu 10. O 10 e a base (a coisa que esta sendo repetida), nao a resposta. A pergunta e "quantas vezes eu multiplico por 10, comecando de 1, para chegar a 100?":

1 -> 10 -> 100     isso sao DOIS degraus

Entao log10(100) = 2. Nao 10, nao 100. A resposta de um logaritmo e sempre o pequeno numero de contagem, nunca a base e nunca o grande alvo.

EQUIVOCO 3 (por que log2(3) NAO e 1.5)

Este e o importante, porque produz o numero assinatura do projeto.

3 nao esta na escada de dobras. Ele fica entre 2 (uma dobra) e 4 (duas dobras). Entao log2(3) esta entre 1 e 2. O palpite tentador e o meio, 1.5, porque 3 e o meio de 2 e 4. Esse palpite esta errado, e aqui esta exatamente por que.

A escala do expoente nao se move por adicao, ela se move por multiplicacao. O expoente do ponto medio 1.5 nao chega ao meio aritmetico de 2 e 4. Da licao 00-19 voce sabe o que 2^1.5 realmente e:

2^1.5 = 2 x sqrt(2) = 2 x 1.414 = 2.83

Entao o expoente 1.5 chega a 2.83, nao a 3. Para chegar a 3 voce precisa ir um pouco ALEM de 1.5. O valor verdadeiro e:

log2(3) = 1.585

Verifique a direcao: 2^1.585 e um pouco mais que 2^1.5 = 2.83, subindo em direcao a 3. A resposta esta logo apos o ponto medio, exatamente como a escala multiplicativa preve. Esse 1.585 e o "1.58-bit" do formato ternario do NeuroGrid.

O cimento das tres visoes

Estas tres frases dizem exatamente a mesma coisa. Quando voce consegue alternar entre elas livremente, voce domina o logaritmo:

conte as dobras de 1 ate 8   =   "2 elevado a O QUE da 8"   =   log2(8)
        3                                  3                          3
  • Conte as dobras e como voce calcula a mao (esta licao).
  • "2 elevado a o que" e a visao do inverso de um expoente (a licao 00-17 rodou o expoente para frente; o log o roda para tras).
  • log2 e o simbolo que voce vai ler em todo artigo.

Mesmo numero, tres fantasias.

Uma nota honesta sobre o decimal

Voce consegue as respostas inteiras (log2(8) = 3) puramente contando. A parte DECIMAL (log2(3) = 1.585) precisa dos expoentes fracionarios e raizes da licao 00-19, e por isso aquela licao veio primeiro. No codigo voce vai simplesmente chamar math.log2; a mao, voce sempre pode dizer o intervalo inteiro ("entre 1 e 2, um pouco alem do meio, entao cerca de 1.585").

Construa

python phases/00-setup-and-tooling/20-logarithms/code/logs.py

Pratica de memoria

Produza a resposta. Mais facil primeiro, para garantir uma vitoria antes da dificil.

  1. log2(4) = ? (conte as dobras de 1)
  2. log2(8) = ? (NAO divida 8 por 2; conte os degraus)
  3. log10(1000) = ? (quantas vezes voce multiplica por 10 a partir de 1?)
  4. log2(3) esta mais perto de 1.5 ou de 1.6, e por que?

Respostas: 2; 3; 3; mais perto de 1.6 (e 1.585), porque o expoente 1.5 so chega a 2.83, entao voce precisa ir um pouco alem de 1.5 para chegar a 3.

Por que isso importa para IA

Dois dos numeros mais importantes de todo este curriculo sao logaritmos. log2(3) = 1.585 e o piso de bits-por-peso para um valor ternario (tres opcoes: -1, 0, +1), o fosso exato do projeto e a origem do nome "1.58-bit". Perplexidade, o numero de qualidade de destaque de qualquer modelo de linguagem, e exp(entropia cruzada), o log inverso que desfaz o log natural escondido dentro da perda de entropia cruzada. Se os logs estao confusos, esses sao trivia memorizada; quando os logs sao uma contagem de dobras, eles sao obvios.

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).