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 de1.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).
log2e 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.
log2(4)= ? (conte as dobras de 1)log2(8)= ? (NAO divida 8 por 2; conte os degraus)log10(1000)= ? (quantas vezes voce multiplica por 10 a partir de 1?)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.