Material de estudo para acompanhar os slides.
O objetivo da aula é saber dizer o que tem em cada coluna do dimuon.csv, calcular a massa invariante à mão e conferir com o arquivo, reconhecer os picos do histograma e treinar uma rede que estima a massa, medindo o erro dela contra a fórmula e vendo onde ela erra.
Os tópicos
Sem horário marcado: o que não couber hoje entra na aula seguinte.
- Revisão das aulas 6 e 7
- O LHC, o CMS e o múon
- Os dados e a massa invariante
- De onde vem
- Uma rede aprende a fórmula?
- O código
- Fechamento
Notação
Os símbolos novos dos slides, na ordem em que aparecem; os das aulas anteriores estão nos roteiros delas.
| Símbolo | Lê-se | Quer dizer | Slide |
|---|---|---|---|
| giga-elétron-volt | um bilhão de elétron-volts; energia, momento e massa | 5 | |
| teta | o ângulo entre o momento do múon e o feixe | 7 | |
| p T, p z | o momento transversal, perpendicular ao feixe, e o momento ao longo dele | 7 | |
| eta | a pseudorrapidez, −ln tan(θ/2); nesta aula, não é a taxa de aprendizado | 7 | |
| fi | o ângulo do momento em volta do feixe, em radianos | 7 | |
| seno hiperbólico | senh x = (eˣ − e⁻ˣ)/2 | 8 | |
| E, p | a energia e o momento de um múon | 9 | |
| M | a massa invariante dos dois múons | 9 | |
| módulo de p | o tamanho do vetor momento | 9 | |
| arco seno hiperbólico | comprime os números grandes como um logaritmo | 19 | |
| mi, sigma | a média e o desvio padrão de uma entrada, calculados no treino | 21 | |
| logaritmo natural | o logaritmo na base e; a rede aprende ln M | 21 |
Para os dados do CMS, estas peças resolvem quase tudo:
csv.reader(arquivo): as linhas do dimuon.csv, como listas de textos.np.array(valores, dtype=np.float64): uma coluna como números.np.sqrt((E1 + E2)**2 - (px1 + px2)**2 - (py1 + py2)**2 - (pz1 + pz2)**2): a fórmula.np.histogram(M, bins=np.logspace(np.log10(2), np.log10(110), 301)): os eventos por faixa, com 300 faixas iguais em escala logarítmica.np.arcsinh(X / 5): a compressão das entradas da rede.(X - X[treino].mean(axis=0)) / X[treino].std(axis=0): a padronização, com a média e o desvio só do treino.torch.nn.MSELoss(): o erro quadrático médio, para a rede que estima um número.
1. Revisão das aulas 6 e 7
Slide 1: A capa
A aula 8 leva o curso aos dados do CERN. São 100 mil eventos com dois múons, registrados pelo CMS em 2010 e publicados pela colaboração para ensino e divulgação. A física entra no que precisa: o que é um múon, como o detector descreve a direção dele, o que é a massa invariante e por que o histograma dela tem picos. A rede neural entra na segunda metade: um MLP em PyTorch que estima a massa a partir da energia e do momento dos dois múons, conferido pela fórmula, e o que ele erra.
A foto da capa é o CMS aberto, cheio de cabos e câmaras, tirada por Simon Waldherr em 15 de setembro de 2019 e publicada no Wikimedia Commons com a licença CC BY 4.0.
Slide 2: Revisão, de memória
A revisão é de memória: quatro perguntas sobre as aulas 6 e 7.
O que o autograd faz? Guarda as contas da passada para a frente e, com backward(), aplica a regra da cadeia de trás para a frente, deixando a derivada em cada peso.
Por que o PyTorch deu o mesmo resultado que o NumPy? Porque faz as mesmas contas: mesmos pesos iniciais, mesma ordem dos lotes, mesma precisão. A diferença foi zero em todas as épocas.
O que acontece com o erro final quando a taxa passa do limiar? O treino passa a piorar a rede, e perto do limiar a fronteira entre melhorar e piorar é quebrada.
Para que servem treino, validação e teste? O treino ajusta os pesos, a validação escolhe o que o treino não ajusta, e o teste mede uma vez, no fim.
Slide 3: O fio do curso
O curso segue um fio, e este slide aparece em todas as aulas, com a aula do dia em destaque e a data e o formato de cada aula já marcada.
Até a aula 7, os dados foram de exemplo: o XOR e os dígitos do MNIST. Nesta aula, a 8, o curso chega aos dados de física de partículas, os do projeto. Na aula 9, a fronteira da taxa da aula 7 vira o fractal, em duas dimensões; na 10, a apresentação.
2. O LHC, o CMS e o múon
Slide 4: O LHC e o CMS
O LHC, o Grande Colisor de Hádrons, é o maior acelerador de partículas do mundo, num túnel de 27 km de circunferência, até 175 m abaixo da fronteira entre a França e a Suíça, perto de Genebra. Prótons dão voltas em sentidos opostos e colidem dentro dos detectores. Acelerador, no curso, é a máquina que dá energia às partículas e as faz colidir; detector é o instrumento que registra o que sai da colisão. Em 30 de março de 2010, o LHC fez as primeiras colisões de prótons a 7 TeV, 3,5 TeV em cada feixe; os eventos desta aula são desse ano.
O CMS, o Solenoide Compacto de Múons, é um dos dois grandes detectores de uso geral do LHC: 21 m de comprimento, 15 m de diâmetro, cerca de 14 mil toneladas. Como o nome diz, detectar múons é uma das tarefas mais importantes dele, e as câmaras de múons formam a camada mais de fora.
O NIPS-CERN trabalha no ATLAS, o outro detector de uso geral do LHC, e faz o CGVWeb, o visualizador tridimensional da geometria e dos eventos do ATLAS, que opera na sala de controle do experimento. Os dados desta aula são do CMS porque foram abertos ao público, com a licença CC0.
Slide 5: O múon
O múon é uma partícula elementar parecida com o elétron: tem a mesma carga, −1, ou +1 no antimúon. A diferença é a massa: 105,66 MeV, cerca de 207 vezes a do elétron. Partícula elementar, no curso, é uma que não se sabe dividir em partes menores. Antipartícula é a partícula de mesma massa e carga oposta.
O elétron-volt, eV, é uma unidade de energia: a energia que um elétron ganha ao passar por uma diferença de potencial de 1 volt. MeV é um milhão de eV, GeV um bilhão e TeV um trilhão. Na física de partículas, massa e momento também se medem em eV, nas unidades em que a velocidade da luz vale 1: é por isso que o arquivo dá tudo em GeV.
Os eventos do arquivo são colisões em que o CMS viu dois múons. Muitos vêm de uma partícula que viveu muito pouco e se desfez nos dois; é essa partícula que a massa invariante revela.
3. Os dados e a massa invariante
Slide 6: O arquivo: 100 mil eventos
O registro 303 do portal de dados abertos do CERN, "Events with two muons from 2010", tem 100 mil eventos com dois múons cuja massa invariante fica entre 2 e 110 GeV, publicados em 2014 com a licença CC0. A página avisa que os dados são uma seleção para ensino e divulgação e não servem para uma análise física completa.
As colunas, como a página as descreve: Type, o tipo dos dois múons, combinações de T, tracker muon, e G, global muon, dois jeitos de o CMS reconhecer um múon; Run, a corrida, e Event, o número do evento. Para cada múon, 1 e 2: E, a energia; px, py e pz, as componentes do momento; pt, o momento transversal, perpendicular ao feixe; eta, a pseudorrapidez, uma medida do ângulo com o feixe; phi, o ângulo em volta do feixe, em radianos; e Q, a carga. Energia e momento estão em GeV. A última coluna, M, é a massa invariante dos dois múons, em GeV.
Nos 100 mil eventos, 60.062 são do tipo GT e 39.938 do tipo GG, e eles vêm de 3 corridas.
Slide 7: A direção do múon, em vídeo
O vídeo mostra de onde vêm três colunas do arquivo: pt, eta e phi.
De lado, com o feixe na horizontal, o múon sai do ponto da colisão num ângulo θ com o feixe. O momento dele se divide em duas partes: p_z, ao longo do feixe, e p_T, o momento transversal, perpendicular ao feixe. Momento, no curso, é o vetor da quantidade de movimento, que aponta para onde a partícula vai; para uma partícula lenta, é a massa vezes a velocidade. Na mecânica, momento também quer dizer o momento de uma força, o torque; aqui, não.
A pseudorrapidez, η, é outro jeito de dar o ângulo θ: η = −ln tan(θ/2). Vale 0 quando o múon sai perpendicular ao feixe e cresce quando ele sai perto do feixe: θ = 40° dá η perto de 1, e θ = 15°, perto de 2. O leque do vídeo mostra as linhas de η = 0, 1, 2 e 3: passos iguais de η ficam cada vez mais juntos perto do feixe. Nesta aula, η é a pseudorrapidez, e não a taxa de aprendizado das aulas anteriores; a taxa, aqui, aparece só como lr, no código.
De frente, olhando ao longo do feixe, só se vê p_T, e o ângulo dele em volta do feixe é φ, em radianos: π rad são 180 graus.
As setas do vídeo são retas. No detector, o caminho do múon se curva no campo magnético, e quanto mais momento, menos curva: é assim que o CMS mede o momento. A seta é a direção do momento no ponto da colisão.
Slide 8: Da direção ao momento
Com p_T, η e φ, o momento sai inteiro. De frente, p_x = p_T cos φ e p_y = p_T sen φ: é a projeção do vetor nos dois eixos, como na trigonometria do ensino médio. Ao longo do feixe, p_z = p_T senh η, com senh, o seno hiperbólico: senh x = (eˣ − e⁻ˣ)/2.
A terceira linha é dedução feita a partir da definição de η. De lado, p_z/p_T = cos θ / sen θ. Com η = −ln tan(θ/2), vale eᶯ = 1/tan(θ/2), e a conta de senh η dá cos θ / sen θ. Por isso p_z = p_T senh η.
A energia vem de E² = ||² + m², com m = 0,10566 GeV, a massa do múon.
O exemplo do slide é o múon 1 do evento 3 do arquivo: p_T = 4,09095, η = 1,24634 e φ = 1,63164. As contas dão p_x = −0,2488, p_y = 4,0834 e p_z = 6,5251, os números das colunas px1, py1 e pz1 até a quarta casa.
O arquivo traz as duas formas, E, px, py, pz e pt, eta, phi. Com a segunda e a massa do múon, a fórmula da massa reproduz a coluna M nos 100 mil eventos, como mostra o slide da conferência.
Slide 9: A massa invariante
A massa invariante dos dois múons é a massa da partícula que teria se desfeito neles. Pela relatividade especial, a energia E e o momento de uma partícula de massa m obedecem a E² = ||² + m², nas unidades em que a velocidade da luz vale 1. Somando os dois múons, energia com energia e momento com momento, a massa do par sai de M² = (E₁ + E₂)² − |₁ + ₂|².
Invariante, aqui, quer dizer que o número não depende de quem mede: energia e momento mudam de um referencial para outro, a massa não. Fora da física, invariante é o que não muda numa transformação, e é esse o sentido.
Se os dois múons vieram mesmo de uma partícula, M é a massa dela. Se não vieram, M é só um número, e esses eventos formam o fundo liso do histograma.
Slide 10: Um evento, à mão
A conta de um evento inteiro, o 3 do arquivo, um par de múons de cargas opostas.
Primeiro, as somas: E₁ + E₂ = 7,70222 + 6,90202 = 14,60424 GeV. O momento se soma componente a componente: p_x = −0,24877 − 3,02439 = −3,27316; p_y = 4,08338 + 3,75129 = 7,83467; p_z = 6,52511 + 4,94041 = 11,46552.
Depois, os quadrados: (E₁ + E₂)² = 213,284 e |₁ + ₂|² = 3,27316² + 7,83467² + 11,46552² = 203,554.
Por fim, M² = 213,284 − 203,554 = 9,730, e M = 3,119 GeV. A coluna M do arquivo diz 3,11929: confere.
O número cai no pico do J/ψ. Um evento sozinho, porém, não diz se veio de um J/ψ ou do fundo: só o histograma, com muitos eventos, mostra o excesso.
A conta tem um detalhe que volta no fim da aula: a massa sai da diferença de dois números grandes, 213 menos 204. Um erro de 1% em (E₁ + E₂)², 2,1 unidades, mudaria M² em mais de 20%, e M em cerca de 10%. Quem aprende a conta por exemplos, como a rede, sente esse detalhe.
Slide 11: A massa não depende de quem mede, em vídeo
O vídeo mostra o que quer dizer invariante. Com o J/ψ parado, os dois múons saem em sentidos opostos, cada um com metade da energia, 1,548 GeV, e momento de 1,545 GeV; a soma dos momentos é zero, e a massa é a soma das energias, 3,097 GeV.
Quando o J/ψ anda, com momento de 9 GeV, as energias dos múons mudam muito: uma vai a 7,00 GeV e a outra cai para 2,51 GeV, e a soma dos momentos passa a ser 9 GeV. A massa continua 3,097. Muda o ângulo em que os múons saem, e a massa continua a mesma.
As contas do vídeo são a transformação de Lorentz, a regra da relatividade especial que diz como a energia e o momento mudam de um referencial para outro. Ela fica como caixa-preta: entram a energia e o momento medidos por um observador e a velocidade de outro, e saem a energia e o momento que o outro mede. Não se abre aqui porque o curso só precisa do resultado: M não muda.
No CMS, cada J/ψ sai da colisão com um momento diferente. Se a massa dependesse disso, os J/ψ se espalhariam por todo o histograma; como não depende, todos caem no mesmo lugar, e o pico aparece.
Slide 12: A fórmula confere com o arquivo
Antes de usar a coluna M, a fórmula confere. Com a energia e o momento do próprio arquivo, a fórmula reproduz a coluna M em 99,6% dos eventos, com diferença relativa menor que 0,1%. Em 413 eventos, não: num deles, a fórmula dá 247 GeV e a coluna, 56. Em outro, a energia de um múon é de 184 mil GeV, 26 vezes os 7 mil GeV da colisão inteira em 2010: um número impossível.
A causa, que é dedução tirada dos próprios dados: a coluna M foi calculada com pt, eta e phi, e a energia refeita pela massa do múon. Refeita assim, a fórmula bate em todos os 100 mil eventos. Nos 413, a energia de um dos múons não combina com o momento dele. A página do registro não diz como M foi calculada.
A lição vale para o projeto inteiro: dado real se confere antes de usar, e uma diferença em 0,4% dos eventos só aparece para quem conta.
Slide 13: Do evento ao histograma, em vídeo
O vídeo mostra o caminho do evento ao histograma. Primeiro, três eventos do arquivo, um a um: o quadrado da soma das energias, o da soma dos momentos e a conta da massa; o número vira um quadrado que cai na faixa da sua massa. Os três foram escolhidos por caírem perto dos três picos: o evento 3, o primeiro do arquivo perto do J/ψ; o 48, o primeiro perto do Υ; o 2.103, o primeiro perto do Z. Na tela, a conta usa os quadrados com duas casas, como no slide da conta à mão, e confere com a coluna M até a terceira casa.
Depois, os 40 primeiros eventos do arquivo caem depressa, e as pilhas ainda não dizem nada. Com milhares de eventos, os quadrados viram barras, e a altura passa a ser contada em escala logarítmica: cada marca vale dez vezes a de baixo, para o fundo de milhares e o Z de dezenas caberem no mesmo desenho. O histograma se enche com 500, 2 mil, 10 mil, 30 mil e 100 mil eventos. Com 500, só ruído; com 10 mil, o J/ψ e o Υ; com 100 mil, até o Z se destaca.
É a razão de a física de partículas precisar de tantos eventos: um pico raro só aparece quando há eventos bastantes para ele se separar do fundo.
Slide 14: Os picos são partículas
O histograma conta quantos eventos caem em cada faixa de massa. As faixas são 300, iguais em escala logarítmica, de 2 a 110 GeV, e o eixo vertical também é logarítmico: o fundo cai de milhares para dezenas de eventos por faixa.
Sobre o fundo liso aparecem picos: massas em que há muito mais eventos do que o fundo explicaria. Cada pico é uma partícula que se desfez em dois múons. O mais alto, perto de 3,1 GeV, é o J/ψ, com massa de 3,0969 GeV; perto de 9,5 GeV, o Υ, o upsilon, com 9,46 GeV; perto de 91 GeV, o Z, com 91,1880 GeV. As massas são as da Wikipedia, que cita o Particle Data Group, a colaboração que reúne as medidas da física de partículas. Outros picos menores aparecem no histograma, e ficam de fora da aula.
O pico não é uma linha fina: tem largura, e o slide seguinte mostra de onde ela vem.
Slide 15: Os picos de perto
De perto e em escala linear: o pico do J/ψ, em faixas de 10 MeV, e o do Υ, em faixas de 25 MeV. O fundo segue por baixo dos dois picos; no Υ, o fundo é alto, e o pico sobe só uns 100 eventos por faixa acima dele.
A seta mede a largura do pico do J/ψ à meia altura, descontado o fundo: 67 MeV. É uma conta simples, feita em codigo/figuras_slides.py, sem ajuste de curva. A largura natural do J/ψ, a que ele teria com um detector perfeito, é de 93 keV, mais de 700 vezes menor. Quase toda a largura do pico vem do erro de medida do detector, no momento de cada múon.
A largura natural e o tempo de vida são a mesma informação: a largura natural de 93 keV corresponde a uma vida de uns 7 × 10⁻²¹ s, e quanto menos a partícula vive, mais largo o pico.
Perto de 10 GeV, à direita do Υ, há um excesso menor, que fica de fora da aula.
4. De onde vem
Slide 16: O que é cada pico
O que é cada pico, em uma linha. O J/ψ é um méson, uma partícula feita de um quark e um antiquark, unidos pela força forte: um quark charm e um antiquark charm. Vive 7,2 × 10⁻²¹ s. O Υ é um quark bottom e o seu antiquark, e vive 1,21 × 10⁻²⁰ s. O Z é uma das partículas que carregam a força fraca, a interação responsável pelo decaimento beta, um tipo de radioatividade; não tem carga, é a sua própria antipartícula e vive cerca de 3 × 10⁻²⁵ s.
Quark, no curso, é a partícula elementar que forma os prótons e os nêutrons; nunca aparece sozinho, só dentro de partículas compostas, como os mésons. Charm e bottom são dois dos seis tipos de quark.
Nenhuma das três chega ao detector: as três se desfazem antes, e o CMS vê os múons. A massa invariante é o jeito de ver a partícula que não se vê.
Os fatos vêm da Wikipedia em inglês, verbetes "J/psi meson", "Upsilon meson", "W and Z bosons", "Meson", "Quark" e "Weak interaction".
Slide 17: De onde vem
Três descobertas, as três vistas em pares de léptons, a família do elétron e do múon.
1974: o J/ψ foi descoberto por dois grupos, independentemente: um no SLAC, o Centro do Acelerador Linear de Stanford, chefiado por Burton Richter, e outro no Laboratório Nacional de Brookhaven, chefiado por Samuel Ting. Os dois anunciaram em 11 de novembro de 1974, e por isso a partícula tem dois nomes, J e ψ. Richter e Ting dividiram o Nobel de Física de 1976. Os dois artigos estão no estudo da aula 7.
1977: o Υ foi descoberto pela equipe do experimento E288, chefiada por Leon Lederman, no Fermilab, já no modo de dois múons.
1983: o Z foi visto no CERN, no colisor SPS, pelos experimentos UA1 e UA2; o UA1 era liderado por Carlo Rubbia, e o UA2, por Pierre Darriulat. O artigo do UA1 sobre pares de léptons perto de 95 GeV está na referência da história do README.
Os fatos vêm da Wikipedia em inglês, verbetes "J/psi meson", "Upsilon meson" e "W and Z bosons".
5. Uma rede aprende a fórmula?
Slide 18: Uma rede aprende a fórmula?
A fórmula da massa é conhecida. A pergunta é se uma rede, que não a conhece, aprende a fazer a conta só a partir de exemplos: oito números entram, a energia e as três componentes do momento de cada múon, e a massa sai. É um teste do que um MLP consegue aprender, com uma resposta certa para conferir cada evento.
Slide 19: A rede
A rede tem oito entradas, duas camadas ocultas de 256 neurônios com a tanh e uma saída. Os eventos se dividem como na aula 6: 80 mil para o treino, 10 mil para a validação e 10 mil para o teste, sorteados com a semente 0. O treino usa o Adam, com taxa 0,001, em lotes de 256, por 100 épocas, e a perda é o erro quadrático médio da aula 2.
Dois cuidados com os números. Nos eventos em que a fórmula confere, a energia de um múon vai de 2,5 GeV a quase 900 GeV, com mediana de 9; sem cuidado, os valores grandes saturam a tanh. Cada entrada passa por asinh(x/5), o arco seno hiperbólico, que trata os números pequenos quase em proporção, como x/5, e comprime os grandes como um logaritmo, sem perder o sinal; depois é padronizada pelo treino. E a rede aprende o logaritmo da massa, ln M, que vai de ln 2 a ln 110, uma faixa estreita.
A compressão fez diferença: em 30 épocas, o erro mediano na validação caiu de 10,6% sem ela para 3,4% com ela. Isso foi medido no laptop do professor, antes de fixar a configuração.
Slide 20: A compressão das entradas, em vídeo
O vídeo mostra a compressão em 300 eventos, os primeiros do arquivo, com a energia do múon 1. Na linha de cima, em GeV, de 0 a 350, quase todos os pontos se amontoam perto do zero: a metade fica abaixo de 13,5 GeV, em 4% da linha, e uns poucos passam de 100.
Depois de asinh(E₁/5), na linha de baixo, a mesma metade ocupa 34% da linha. O leque final liga cada valor à sua imagem: os primeiros 50 GeV ganham 60% da linha de baixo, e os 300 seguintes ficam com o resto.
Perto de zero, asinh(x/5) é quase x/5, uma reta; longe, cresce como o logaritmo, ln(2x/5). Para a rede, números de escalas muito diferentes viram números de uma escala só, e a tanh das camadas não satura. asinh é a função inversa do seno hiperbólico: asinh(x) = ln(x + √(x² + 1)). O logaritmo puro não serviria, porque px, py e pz podem ser negativos; o asinh aceita os dois sinais.
Slide 21: Padronizar, e o logaritmo da massa
Depois da compressão, cada uma das oito entradas é padronizada: menos a média e dividida pelo desvio padrão, μ e σ, os dois calculados só no treino. Padronizar, no curso, é levar uma coluna a média 0 e desvio 1. O teste não entra nessas contas: o que vem do teste ensinaria alguma coisa à rede, e a medida final deixaria de ser honesta.
A saída não é M, e sim ln M, o logaritmo natural da massa, também padronizado. Duas razões. A faixa: M vai de 2 a 110, um fator de 55; ln M vai de 0,69 a 4,70. E o erro: para erros pequenos, ln M_rede − ln M é quase o erro relativo, (M_rede − M)/M, porque ln(1 + u) é quase u para u pequeno. Com o erro quadrático médio sobre ln M, a rede é cobrada pelo erro em porcentagem: errar 0,1 GeV num J/ψ de 3,1 pesa como errar 3 GeV num Z de 91.
O exemplo do slide: M = 3,10 e a rede dá 3,16. A diferença dos logaritmos é 0,0192, e o erro relativo é 0,0194, quase o mesmo número.
Sem o logaritmo, o erro quadrático médio sobre M seria dominado pelos eventos de massa grande, onde um erro de 2% são 2 GeV, e o J/ψ, com erros de centésimos, quase não pesaria.
Slide 22: A curva do treino
A curva do treino: o erro relativo mediano no treino, em azul com círculos, e na validação, em laranja com quadrados, época a época, em escala logarítmica.
As duas descem juntas, de 13% na primeira época para cerca de 2%. Quase não se separam: a rede não decora o treino. Quando o treino fica bem melhor que a validação, a rede decorou os exemplos, o sobreajuste da aula 6; com 80 mil eventos e 68 mil pesos, isso não acontece aqui.
A curva tem dentes: com o Adam e lotes de 256, cada época termina num ponto um pouco diferente, e o erro sobe e desce de uma para a outra. Por isso a última época não é a escolhida. A melhor pela validação é a 80, com 1,91%, e os pesos dela são os que vão para o teste. O treino inteiro, 100 épocas, levou 37 segundos no laptop do professor.
Os 68 mil pesos: 8 × 256 + 256 na primeira camada, 256 × 256 + 256 na segunda e 256 + 1 na saída, 68.353 ao todo.
Slide 23: O treino, época a época, em vídeo
O vídeo mostra a rede aprendendo em 2 mil eventos do teste, os mesmos em todas as épocas. Cada ponto é um evento: a massa pela fórmula no eixo horizontal e a da rede no vertical, os dois em escala logarítmica. Onde a rede acerta, o ponto fica na diagonal tracejada.
Antes do treino, com os pesos sorteados, a rede dá entre 5,1 e 8,0 GeV a todos os eventos: os pontos formam uma faixa horizontal, e o erro mediano é de 61%. Depois de uma época, os pontos já seguem a diagonal, com erro de 14%; na época 10, 4,6%; na 80, 1,9%. A nuvem aperta, e os picos viram manchas sobre a diagonal: o J/ψ perto de 3, o Υ perto de 9,5 e o Z perto de 91.
Os retratos das oito épocas, 0, 1, 2, 5, 10, 20, 40 e 80, foram gravados por mlp_massa.py sem mudar o treino: a rede só é avaliada, sem gradiente e sem sorteio, e o resultado do teste é o mesmo com e sem eles.
Slide 24: A rede contra a fórmula
No teste, medido uma vez com os pesos da melhor época pela validação, a 80: o erro relativo mediano é 1,88%, 90% dos eventos ficam abaixo de 5,26% e 88,5% abaixo de 5%.
À esquerda, cada ponto é um evento do teste: a massa pela fórmula no eixo horizontal, a da rede no vertical. Os pontos ficam em volta da diagonal tracejada, onde as duas são iguais. À direita, os dois histogramas do teste, um sobre o outro: os picos do J/ψ e do Υ aparecem nos dois, um pouco mais largos na rede.
A rede aprende a conta, mas não com a precisão da fórmula: a fórmula erra em milionésimos, e a rede, em porcentos. Para medir massas, a fórmula; a rede serve para aprender, e o curso usa o caso para conferir o que ela aprende.
Slide 25: Onde a rede erra
Onde a rede erra. À esquerda, o pico do J/ψ no teste, em faixas de 20 MeV: pela fórmula, em azul, alto e estreito; pela rede, em laranja tracejado, mais baixo, mais largo e um pouco à esquerda. Nos 660 eventos do teste com a massa entre 3,05 e 3,15 GeV, a rede dá, na mediana, 0,9% a menos que a fórmula. Um erro de 2% numa massa de 3,1 GeV são 60 MeV, quase a largura inteira do pico, 67 MeV: a rede borra o pico que o detector mediu.
À direita, o erro mediano da rede em cada faixa de massa, com o número de eventos do teste em cima da barra. Fica entre 1,8% e 2,1% em quase todas. No Z, de 80 a 100 GeV, sobe a 3,0%, com só 46 eventos no teste e 364 no treino, menos de 0,5% dos exemplos. A leitura, que é dedução: onde há poucos exemplos, a rede aprende menos. Com 46 eventos, o número do Z é o menos firme da figura.
Para melhorar a rede no Z, há dois caminhos: mais eventos de massa alta, ou dar a esses eventos mais peso na perda. Os dois ficam como extra da entrega.
6. O código
Slide 26: O código
O código da aula fica pronto e testado antes. codigo/dimuon.py lê o arquivo e calcula a fórmula, pelos dois caminhos, e vai para a turma. codigo/mlp_massa.py é a solução de referência da entrega, que não vai para a turma antes do prazo: a rede, o treino com a validação e o teste uma vez, com os números gravados em resultados/massa.json. codigo/figuras_slides.py desenha as figuras, e codigo/animacoes.py, os cinco vídeos.
Quatro peças resolvem quase tudo. csv.reader lê o arquivo, e np.array(valores, dtype=float) transforma cada coluna em números. A fórmula é uma linha: np.sqrt((E1 + E2)**2 - (px1 + px2)**2 - (py1 + py2)**2 - (pz1 + pz2)**2). np.histogram(M, bins=np.logspace(...)) conta os eventos por faixa. E np.arcsinh(X / 5) comprime as entradas da rede.
Slide 27: O treino em PyTorch
O treino em PyTorch é o da aula 7, com outra rede e outra perda. modelo = rede() monta as camadas; torch.optim.Adam recebe os pesos do modelo e a taxa, lr=1e-3; torch.nn.MSELoss() é o erro quadrático médio, a perda de quem estima um número.
A cada época, os índices do treino se embaralham numa ordem nova, sorteada por um gerador com semente fixa, e andam de 256 em 256. Para cada lote, quatro linhas: opt.zero_grad() zera as derivadas do lote anterior, que o PyTorch acumularia; perda_fn(modelo(Xp[i]), yp[i]) faz a passada para a frente e mede a perda; perda.backward() faz a retropropagação, a da aula 5, sozinha; opt.step() dá o passo do Adam em cada peso.
No fim de cada época, o erro no treino e na validação; se a validação melhorou, os pesos são copiados. No fim, os pesos da melhor época voltam ao modelo, e o teste é medido uma vez.
Xp e yp são as entradas e a saída já comprimidas e padronizadas, como tensores, e i é o lote de índices.
Slide 28: O que a entrega pede
A entrega tem duas partes. A primeira é o histograma da massa, com os picos identificados pelo nome da partícula e a massa de cada uma. A segunda é o erro da rede contra a fórmula, num conjunto de teste separado antes do treino: o erro relativo mediano e uma figura que compare as duas.
Cada um escolhe a rede, as entradas e o treino, escolhendo pela validação, nunca pelo teste. Quem quiser pode testar outras entradas, como pt, eta e phi, e dizer se a rede aprende melhor com elas, ou tentar melhorar o erro no Z.
O que se exige é saber dizer o que entra na rede, o que ela aprende e o que significa o número que sai.
7. Fechamento
Slide 29: Para estudar e entregar
O estudo prepara a aula 9, o fractal. O vídeo do 3Blue1Brown "Fractals are typically not self-similar", de 2017, mostra o que é um fractal e como se mede a dimensão dele. O texto de Jascha Sohl-Dickstein, "Neural network training makes beautiful fractals", de 2024, mostra que a fronteira entre as taxas de aprendizado que convergem e as que divergem é um fractal: é o projeto do curso.
A entrega: o histograma com os picos identificados, o erro da rede contra a fórmula e uma pergunta sobre o estudo.
A seguir, a aula 9 desenha a fronteira em duas dimensões, uma taxa por camada, e faz o projeto com a turma; a aula 10 tem a apresentação e a revisão do curso inteiro.
Perguntas que podem aparecer
- Por que os dados são do CMS, se o NIPS-CERN está no ATLAS? Porque o CMS abriu esses eventos ao público, com a licença CC0, para ensino. Dado não publicado do ATLAS segue a política da colaboração e não entra no curso.
- Todo evento do pico é a partícula? Não. O pico é o excesso sobre o fundo: na faixa do J/ψ há eventos do fundo também. Separar um do outro é análise física, que os dados avisam não suportar por inteiro.
- Por que a rede erra mais que a fórmula? Porque aprende a conta por exemplos, com um número finito de pesos, e a massa sai da diferença entre números grandes, a energia e o momento: um erro pequeno neles vira um erro grande na massa. A fórmula é exata; a rede, uma aproximação.
- Por que asinh, e não o logaritmo? Porque o momento tem sinal: px pode ser negativo, e o logaritmo de um negativo não existe. O asinh aceita os dois sinais.
- O η desta aula é o da taxa de aprendizado? Não. Aqui, η é a pseudorrapidez, o nome que a física de partículas usa; a taxa aparece como lr no código.
- Por que o pico tem 67 MeV de largura, se o J/ψ tem 93 keV? Porque o detector mede o momento de cada múon com erro, e esse erro alarga o pico mais de 700 vezes.
Para estudar
O estudo da turma, que é também o seu:
- 3Blue1Brown, 2017, "Fractals are typically not self-similar", youtube.com/watch?v=gB9n2gHsHN4.
- Jascha Sohl-Dickstein, 2024, "Neural network training makes beautiful fractals", sohl-dickstein.github.io/2024/02/12/fractal.html.
Além dele, para preparar a aula:
- CMS, "Events with two muons from 2010", registro 303 do portal de dados abertos do CERN, opendata.cern.ch/record/303, a descrição das colunas.
- UA1, George Arnison e colegas, 1983, "Experimental observation of lepton pairs of invariant mass around 95 GeV/c² at the CERN SPS collider", Physics Letters B 126(5):398-410, doi:10.1016/0370-2693(83)90188-0.
Fontes dos fatos citados
Só para conferência; o estudo é a lista de cima.
- O registro 303 do portal de dados abertos do CERN, pela API do portal: o título, os 100 mil eventos de 2 a 110 GeV, 2010, a publicação em 2014, a licença CC0, o aviso de que não servem para análise completa e a descrição de cada coluna.
- Verbete "Muon" da Wikipedia em inglês, revisão 1380042360: 105,66 MeV e 206,77 vezes a massa do elétron.
- Verbete "Large Hadron Collider", revisão 1383402210: o maior acelerador, 27 km, até 175 m de profundidade, a fronteira franco-suíça perto de Genebra; as colisões a 7 TeV, 3,5 TeV por feixe, em 30/03/2010.
- Verbete "Compact Muon Solenoid", revisão 1376671040: um dos dois detectores de uso geral, 21 m, 15 m, 14 mil toneladas, os detectores de múons na camada 5; o momento medido pela curvatura do caminho no campo magnético.
- Verbete "Pseudorapidity": η = −ln tan(θ/2), com θ o ângulo entre o momento e o eixo do feixe.
- Verbete "J/psi meson", revisão 1378448498: 3,0969 GeV, um quark charm e um antiquark charm, 7,2 × 10⁻²¹ s, a largura de 92,9 keV, SLAC e Brookhaven, Richter e Ting, 11/11/1974, o Nobel de 1976.
- Verbete "Upsilon meson", revisão 1347609677: um quark bottom e o seu antiquark, 1,21 × 10⁻²⁰ s, o E288, Lederman, Fermilab, 1977, cerca de 9,46 GeV.
- Verbete "W and Z bosons", revisão 1382785335: 91,1880 GeV; carregam a força fraca, o Z sem carga e a sua própria antipartícula, cerca de 3 × 10⁻²⁵ s; o SPS, o UA1 de Rubbia e o UA2 de Darriulat.
- Verbetes "Meson", "Quark" e "Weak interaction": o méson, um quark e um antiquark; o quark, que forma prótons e nêutrons e não aparece sozinho; a força fraca e o decaimento beta.
- As instruções da organização NIPS-CERN: o ATLAS e o CGVWeb.
- Wikimedia Commons, "CMS-Experiment (LHC).jpg": Simon Waldherr, 15/09/2019, CC BY 4.0.
- Os números: codigo/dimuon.py, codigo/mlp_massa.py e codigo/figuras_slides.py, com a semente 0, gravados em resultados/massa.json.
