<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>Paweł Dubiel Tech Blog: Glossário</title>
  <link>https://paweldubiel.com/pt</link>
  <atom:link href="https://paweldubiel.com/pt/glossary.xml" rel="self" type="application/rss+xml" />
  <description>Notas sobre IA, modelos de linguagem e engenharia de software.</description>
  <language>pt</language>
  <lastBuildDate>Sun, 11 Oct 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Overfitting</title>
  <link>https://paweldubiel.com/pt/glossary/overfitting</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/overfitting</guid>
  <pubDate>Sun, 11 Oct 2026 15:59:40 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>llm</category>
  <category>glossary</category>
  <description>Você tem um quiosque de sorvete. Durante 10 dias, anotou em um caderno a temperatura ao meio-dia e o número de bolas vendidas.</description>
  <content:encoded><![CDATA[<p>Você tem um quiosque de sorvete. Durante 10 dias, anotou em um caderno a temperatura ao meio-dia e o número de bolas vendidas. Quer tirar dessas anotações uma regra: amanhã vai fazer 24°C, quanto sorvete preparar?</p>
<p>A regra mais simples é uma linha reta: “cada grau a mais são algumas bolas a mais”. No exemplo desta nota, ela erra nos dias anotados tipicamente em 27,5 bolas, porque não vê que, no calor mais forte, as vendas caem. Pode-se então dar mais liberdade à regra e deixar a curva fazer voltas. A mais flexível das curvas testadas passa exatamente por todos os 10 pontos. O erro dela nos dias do caderno é 0.</p>
<p>Parece a regra perfeita. Só que os dias do caderno já passaram, e a regra precisa funcionar amanhã. Em 400 dias novos do mesmo quiosque, a curva “perfeita” erra tipicamente em 236,5 bolas. Uma curva moderadamente flexível, que se saía pior no caderno (10,9), erra nos dias novos em 16,8.</p>
<p><strong>Overfitting</strong> é a situação em que um modelo tem um erro pequeno nos dados usados no treinamento e, em comparação com ele, um erro grande demais em dados novos do mesmo tipo (<a href="https://www.deeplearningbook.org/contents/ml.html" rel="noopener noreferrer">Goodfellow, Bengio e Courville, <em>Deep Learning</em>, §5.2</a>). O modelo se ajustou a características do seu conjunto que não se repetem fora dele. O problema inverso se chama <strong>underfitting</strong>: a regra é simples demais para descrever bem até os dados que viu. É assim que se comporta a linha reta do nosso exemplo.</p>
<p><img src="https://paweldubiel.com/assets/overfitting-smooth-rule-versus-tangled-line-through-every-point.webp" alt="Dois quiosques de sorvete lado a lado: sobre o primeiro, uma linha suave passa em arco brando entre os pontos; sobre o segundo, uma linha emaranhada toca cada ponto e dispara para muito além do quadro." loading="eager" decoding="async" width="1536" height="1024"></p>
<h2 id="de-onde-vem-essa-diferença">De onde vem essa diferença</h2>
<p>Cada anotação do caderno é feita de duas coisas: uma regularidade (mais calor, portanto mais sorvete) e o acaso (justo naquele dia chegou uma excursão). A regra deve captar a primeira e deixar a segunda de fora. O modelo, porém, não sabe o que é o quê. Ele só vê pontos.</p>
<p>O quanto de acaso o modelo absorve depende da sua flexibilidade, chamada na literatura de <strong>capacity</strong>: a capacidade de se ajustar a muitas formas diferentes. A curva do exemplo é descrita por 2 a 10 números, escolhidos de acordo com os dados; a quantidade deles é o grau da curva mais um. Uma curva de grau 9 tem 10 desses números para 10 dias, então consegue acertar todos os pontos, com todo o acaso junto. Os autores do livro descrevem assim: um modelo muito flexível pode representar a relação correta, mas também uma infinidade de outras, que se ajustam igualmente bem aos dados de treinamento, e é pequena a chance de que escolha justamente aquela que vai funcionar adiante (§5.2).</p>
<p>O percurso típico é o seguinte: quando a flexibilidade cresce, o erro nos dados de treinamento diminui, e o erro em dados novos primeiro diminui e depois começa a crescer (§5.2, figura 5.3). Daí sai uma regra prática. Não se avalia um modelo nos dados com que ele treinou, e não se escolhe a flexibilidade pelo erro nesses dados, porque ele sempre apontará a maior. Uma parte dos dados é posta de lado: o <strong><a href="https://paweldubiel.com/glossary/validation-set" hreflang="pl">validation set [Polski]</a></strong> serve para escolher os ajustes, e um <strong>test set</strong> separado, para a avaliação final (§5.3).</p>
<h2 id="confira-você-mesmo">Confira você mesmo</h2>
<p>Abaixo está o mesmo quiosque. Todos os números desta nota podem ser reproduzidos: depois de clicar em “Recomeçar”, veem-se 10 dias, e os experimentos 1–5 configuram os casos descritos.</p>
<div id="overfitting-lab"></div>
<p>Vale fazer duas coisas que um gráfico estático não mostra. Primeiro, ative “24 outros cadernos” e mude o grau: com grau baixo, as linhas cinza ficam próximas umas das outras; com grau alto, espalham-se para todos os lados, embora cada uma venha do mesmo quiosque. Segundo, arraste um ponto bem para cima. A curva de grau 2 se desloca só um pouco, e a curva de grau 9 se refaz em toda a extensão para acertá-lo.</p>
<h2 id="o-que-ajuda">O que ajuda</h2>
<ul>
<li><strong>Mais dados.</strong> Com 80 dias, a mesma curva de grau 9 erra tipicamente em 14,8 bolas no caderno e em 15,9 nos dias novos. A diferença quase desaparece, porque a curva já não consegue acertar todos os pontos (§5.2).</li>
<li><strong>Menos flexibilidade.</strong> Curva de grau 3 com 10 dias: 10,9 no caderno, 16,8 nos dias novos.</li>
<li><strong>Regularization</strong>, isto é, uma mudança na forma de treinar cujo objetivo é reduzir o erro em dados novos, e não nos de treinamento (§5.2.2). Um exemplo é a penalidade para coeficientes grandes, aparentada com o <a href="https://paweldubiel.com/glossary/weight-decay" hreflang="pl">Weight decay [Polski]</a>: a curva de grau 9 com penalidade λ = 0,01 erra em 5,8 no caderno e em 21,2 nos dias novos, em vez de 236,5.</li>
</ul>
<p>Nenhum desses ajustes pode ser escolhido olhando apenas para o erro nos dados de treinamento.</p>
<h2 id="limitações">Limitações</h2>
<ul>
<li>É um exemplo próprio, com uma única grandeza de entrada e dados simulados. Aqui o acaso, sozinho, dá tipicamente 15 bolas de erro, e nenhuma regra fica abaixo disso nos dias novos.</li>
<li>A forma “primeiro melhora, depois piora” é típica, não garantida. Os autores observam que, em redes profundas, é difícil até determinar a flexibilidade efetiva do modelo, porque ela depende também do algoritmo de treinamento (§5.2). O número de parâmetros de um LLM, portanto, não diz sozinho se o modelo sofre de overfitting.</li>
<li>Um erro pequeno em dados novos vale para dados da mesma origem. Se o quiosque se mudar para a beira do mar, o caderno da cidade não promete nada.</li>
</ul>
<h2 id="relações">Relações</h2>
<ul>
<li><a href="https://paweldubiel.com/glossary/weight-decay" hreflang="pl">Weight decay [Polski]</a> limita o tamanho dos pesos e é uma das formas de reduzir a diferença entre o erro nos dados de treinamento e nos novos.</li>
<li><a href="https://paweldubiel.com/glossary/grokking" hreflang="pl">Grokking [Polski]</a> descreve casos em que um modelo que parecia sofrer de overfitting passa, depois de um longo treinamento adicional, a funcionar bem em dados novos.</li>
<li><a href="https://paweldubiel.com/glossary/fine-tuning" hreflang="pl">Fine-tuning [Polski]</a> em um conjunto pequeno exige o mesmo controle: dados separados, que o modelo não viu durante o treinamento.</li>
<li><a href="https://paweldubiel.com/glossary/catastrophic-forgetting" hreflang="pl">Catastrophic Forgetting [Polski]</a> é outro problema: lá o modelo perde uma habilidade antiga depois de um novo treinamento, e aqui ele já de início generaliza mal para fora dos próprios dados de treinamento.</li>
</ul>]]></content:encoded>
</item>
<item>
  <title>Time horizon</title>
  <link>https://paweldubiel.com/pt/glossary/time-horizon</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/time-horizon</guid>
  <pubDate>Sun, 11 Oct 2026 15:02:00 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>papers</category>
  <category>llm</category>
  <category>agents</category>
  <category>benchmarks</category>
  <description>Time horizon, na avaliação de agentes, descreve a duração das tarefas na qual o agente atinge um nível de sucesso escolhido.</description>
  <content:encoded><![CDATA[<p><strong>Time horizon</strong>, na avaliação de agentes, descreve a duração das tarefas na qual o agente atinge um nível de sucesso escolhido. A duração é medida pelo tempo de que uma pessoa precisa, e não pelo tempo de funcionamento da IA.</p>
<p>Para a variante de 50%, reunimos as tentativas bem-sucedidas e malsucedidas do agente em tarefas com diferentes tempos humanos. Ajustamos uma curva de chance de sucesso e, em seguida, lemos o tempo em que ela cruza os 50%. É uma previsão para a distribuição de tarefas com aquele tempo; não significa que cada uma delas tenha a mesma chance de ser concluída. <a href="https://metr.org/time-horizons/" rel="noopener noreferrer">METR: definição e metodologia</a>.</p>
<p>Um exemplo didático: se a curva ajustada atinge 50% em duas horas, então duas horas são o horizonte. O agente pode concluir uma tarefa bem-sucedida muito mais depressa. O resultado, sozinho, também não diz com que taxa de sucesso ele fará uma tarefa de outra área.</p>
<p>A leitura exige uma relação que faça sentido entre o tempo humano e a dificuldade para a IA. Quando a curva é plana, uma pequena mudança nas chances pode deslocar muito o seu cruzamento com o limiar. <a href="https://paweldubiel.com/pt/articles/um-horizonte-metr-mais-longo-nao-significa-tarefas-proporcionalmente-mais">O artigo sobre a conversão do horizonte da METR</a> mostra esse problema em um exemplo que dá para calcular e discute um novo ajuste aos dados da METR. <a href="https://arxiv.org/html/2610.12466v1#S2" rel="noopener noreferrer">Nguyen e Fithian, §2–3</a>.</p>
<p>Ao comparar horizontes, é preciso preservar a informação sobre o conjunto de tarefas, o ambiente do agente, o orçamento de tentativas e o limiar de sucesso adotado.</p>]]></content:encoded>
</item>
<item>
  <title>Item response theory</title>
  <link>https://paweldubiel.com/pt/glossary/item-response-theory</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/item-response-theory</guid>
  <pubDate>Sun, 11 Oct 2026 15:01:00 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>papers</category>
  <category>llm</category>
  <category>agents</category>
  <category>benchmarks</category>
  <description>Item response theory (IRT) é uma família de métodos que, a partir das respostas a cada tarefa, estimam em conjunto a capacidade de quem as executa e a dificuldade das tarefas.</description>
  <content:encoded><![CDATA[<p><strong>Item response theory (IRT)</strong> é uma família de métodos que, a partir das respostas a cada tarefa, estimam em conjunto a capacidade de quem as executa e a dificuldade das tarefas. Na avaliação de IA, quem executa é um agente, e a resposta pode ser o sucesso ou o fracasso de uma tentativa completa.</p>
<p>Suponhamos que dois agentes resolvam as mesmas três tarefas. O primeiro costuma dar conta de A e B; o segundo, também de C. A porcentagem de sucessos, sozinha, fornece um ranking. A IRT tenta estimar, além disso, quão difícil é C em relação às demais tarefas e que diferença de capacidade explica o padrão de respostas. É um exemplo didático; uma tabela tão pequena não basta para um ajuste confiável.</p>
<p>No modelo simples de Rasch, a chance de sucesso cresce quando a capacidade do agente é maior em relação à dificuldade da tarefa. As duas grandezas são ocultas: nós as inferimos dos resultados, em vez de identificar de imediato a dificuldade com o tamanho das instruções ou com o tempo humano. As diferentes variantes da IRT acrescentam outros parâmetros e pressupostos.</p>
<p>Na <a href="https://paweldubiel.com/pt/articles/um-horizonte-metr-mais-longo-nao-significa-tarefas-proporcionalmente-mais">análise dos horizontes da METR</a>, os autores ligam a dificuldade oculta ao tempo de trabalho humano por meio de uma curva aprendida. Acrescentam efeitos das famílias de tarefas e a variação dos resultados entre repetições. Isso permite verificar em que faixa o tempo realmente distingue as tarefas difíceis das fáceis para a IA. <a href="https://arxiv.org/html/2610.12466v1#S2.SS3" rel="noopener noreferrer">Nguyen e Fithian, §2.3 e §3.1</a>.</p>
<p>Prever bem as respostas não prova que o parâmetro aprendido abrange todos os tipos de capacidade de um agente. Na interpretação, é preciso verificar os pressupostos do modelo e os resultados em tarefas não utilizadas no ajuste.</p>]]></content:encoded>
</item>
<item>
  <title>Elastic Weight Consolidation</title>
  <link>https://paweldubiel.com/pt/glossary/elastic-weight-consolidation</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/elastic-weight-consolidation</guid>
  <pubDate>Sun, 11 Oct 2026 12:00:11 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>llm</category>
  <category>glossary</category>
  <description>Um modelo encaminha as perguntas dos clientes para os setores “entrega” e “devoluções”. Agora ele precisa aprender a reconhecer reclamações, mas as mensagens antigas não podem mais ser guardadas.</description>
  <content:encoded><![CDATA[<p>Um modelo encaminha as perguntas dos clientes para os setores “entrega” e “devoluções”. Agora ele precisa aprender a reconhecer reclamações, mas as mensagens antigas não podem mais ser guardadas. Não dá, portanto, para repeti-las durante o treinamento. Tudo o que restou da tarefa antiga é o próprio modelo: milhões de números ajustados ao longo do treinamento anterior, chamados de pesos.</p>
<p>É possível treinar o modelo nas reclamações sem nenhuma restrição. Nesse caso, os pesos se deslocam para onde isso ajuda a nova tarefa, inclusive aqueles dos quais dependia o reconhecimento de entrega e devoluções. Também é possível punir toda mudança da mesma forma, mas então o modelo se agarra aos ajustes antigos com tanta força que aprende mal a tarefa nova. É preciso responder à pergunta: <strong>em quais pesos se pode mexer e em quais é melhor não tocar?</strong></p>
<p><strong>Elastic Weight Consolidation (EWC)</strong> acrescenta ao treinamento da nova tarefa uma penalidade pelo afastamento dos pesos em relação aos valores que tinham depois da tarefa antiga, e essa penalidade é tanto maior quanto mais importante o peso era para a tarefa antiga. Os autores comparam isso a uma mola presa a cada peso: rígida nos pesos importantes, frouxa nos demais (<a href="https://arxiv.org/abs/1612.00796" rel="noopener noreferrer">Kirkpatrick et al., <em>Overcoming catastrophic forgetting in neural networks</em>, §2</a>).</p>
<p><img src="https://paweldubiel.com/assets/elastic-weight-consolidation-stiff-and-loose-springs.webp" alt="Uma fileira de discos presos por molas a pequenos postes: os discos com molas grossas e rígidas ficam no lugar, e os que têm molas finas e frouxas se deslocam em direção a um círculo vermelho." loading="eager" decoding="async" width="1536" height="1024"></p>
<h2 id="dois-pesos-uma-nova-tarefa">Dois pesos, uma nova tarefa</h2>
<p>Tomemos apenas dois pesos. Depois do treinamento em entrega e devoluções, os dois valem 1. O primeiro é muito importante para os setores antigos (importância 10); o segundo, quase indiferente (importância 0,1). A nova tarefa exige apenas que <strong>a soma dos dois pesos seja 4</strong>. Muitos ajustes satisfazem isso: (2, 2), mas também (1, 3).</p>
<ul>
<li><strong>Sem proteção</strong>, o treinamento desloca os dois pesos por igual, até (2, 2). A nova tarefa está aprendida, mas o peso importante se afastou em 1, e a perda na tarefa antiga sobe de 0 para 5,05.</li>
<li><strong>Uma penalidade igual</strong> para os dois pesos os detém a meio caminho, em (1,67, 1,67). A tarefa antiga sofre menos, mas a soma é 3,33 em vez de 4.</li>
<li><strong>O EWC</strong> transfere quase todo o movimento para o peso pouco importante: (1,02, 2,80). A soma é 3,82, e a perda na tarefa antiga é de apenas 0,16.</li>
</ul>
<p>A perda é um número que diz o quanto o modelo erra; quanto menor, melhor. No experimento abaixo, você pode alterar a força da penalidade λ e o modo de proteção. O resultado é calculado com exatidão para este exemplo de dois pesos; não é a simulação de uma rede real.</p>
<div id="ewc-spring-lab"></div>
<h2 id="como-se-sabe-qual-peso-é-importante">Como se sabe qual peso é importante</h2>
<p>Em uma rede real, ninguém fornece a importância de antemão. Ela é estimada ao fim da tarefa antiga, enquanto os dados dela ainda estão disponíveis: verifica-se com que força uma pequena mudança em um dado peso altera as respostas do modelo aos exemplos antigos. O trabalho usa para isso a diagonal da <em>matriz de informação de Fisher</em>, isto é, um número de importância para cada peso. Depois os dados podem ser apagados; ficam os valores antigos dos pesos e as suas importâncias.</p>
<p>Durante o novo treinamento, minimiza-se a soma de dois termos (equação 3 do trabalho):</p>
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>L</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><msub><mi>L</mi><mi>B</mi></msub><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>+</mo><munder><mo>∑</mo><mi>i</mi></munder><mfrac><mi>λ</mi><mn>2</mn></mfrac><msub><mi>F</mi><mi>i</mi></msub><mtext> </mtext><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo>−</mo><msubsup><mi>θ</mi><mrow><mi>A</mi><mo separator="true">,</mo><mi>i</mi></mrow><mo>∗</mo></msubsup><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">L(\theta) = L_B(\theta) + \sum_i \frac{\lambda}{2} F_i \,(\theta_i - \theta^*_{A,i})^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">L</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.0502em;">B</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:2.6491em;vertical-align:-1.2777em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.05em;"><span style="top:-1.8723em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span><span style="top:-3.05em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.2777em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3714em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">λ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.1389em;">F</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.2472em;vertical-align:-0.3831em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7387em;"><span style="top:-2.453em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">A</span><span class="mpunct mtight">,</span><span class="mord mathnormal mtight">i</span></span></span></span><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mbin mtight">∗</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.3831em;"><span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></span>
<p><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>L</mi><mi>B</mi></msub></mrow><annotation encoding="application/x-tex">L_B</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.0502em;">B</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> é a perda na nova tarefa, <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>θ</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">\theta_i</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> é o valor atual do peso de número <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi></mrow><annotation encoding="application/x-tex">i</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6595em;"></span><span class="mord mathnormal">i</span></span></span></span>, <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>θ</mi><mrow><mi>A</mi><mo separator="true">,</mo><mi>i</mi></mrow><mo>∗</mo></msubsup></mrow><annotation encoding="application/x-tex">\theta^*_{A,i}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.1059em;vertical-align:-0.4114em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.6887em;"><span style="top:-2.4247em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">A</span><span class="mpunct mtight">,</span><span class="mord mathnormal mtight">i</span></span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mbin mtight">∗</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.4114em;"><span></span></span></span></span></span></span></span></span></span> é o valor dele depois da tarefa antiga, <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>F</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">F_i</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.1389em;">F</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> é a sua importância, e <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi></mrow><annotation encoding="application/x-tex">\lambda</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">λ</span></span></span></span> diz o quanto a tarefa antiga conta em relação à nova. No nosso exemplo, <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>=</mo><mo stretchy="false">(</mo><mn>10</mn><mo separator="true">;</mo><mtext> </mtext><mn>0,1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F = (10;\ 0{,}1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.1389em;">F</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">10</span><span class="mpunct">;</span><span class="mspace"> </span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">0</span><span class="mord"><span class="mpunct">,</span></span><span class="mord">1</span><span class="mclose">)</span></span></span></span> e <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\lambda = 1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">λ</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>.</p>
<h2 id="limites-do-método">Limites do método</h2>
<p>A importância é uma aproximação calculada em um único ponto, separadamente para cada peso. Os próprios autores mostram que a estimativa deles é, por vezes, confiante demais quanto a quais pesos são irrelevantes, e chamam isso de principal fraqueza do método (§2.2 e §3). Nos experimentos deles com jogos de Atari, um agente com EWC aprendeu muitos jogos em sequência, mas não igualou redes separadas treinadas para cada jogo. Os resultados dizem respeito ao reconhecimento de dígitos e a jogos, não a grandes modelos de linguagem. Os nossos dois pesos e as mensagens dos clientes são uma simplificação própria.</p>
<ul>
<li><a href="https://paweldubiel.com/glossary/catastrophic-forgetting" hreflang="pl">Catastrophic Forgetting [Polski]</a> é uma piora acentuada das habilidades antigas depois de um novo treinamento; o EWC tenta limitá-la sem acesso aos dados antigos.</li>
<li><a href="https://paweldubiel.com/pt/glossary/experience-replay">Experience Replay</a> resolve o mesmo problema de outro jeito: guarda parte dos exemplos antigos em vez das importâncias dos pesos.</li>
<li><a href="https://paweldubiel.com/pt/glossary/continual-learning">Continual Learning</a> define o objetivo, isto é, aprender tarefas sucessivas preservando as anteriores; o EWC é um dos métodos.</li>
<li><a href="https://paweldubiel.com/glossary/fine-tuning" hreflang="pl">Fine-tuning [Polski]</a> é a continuação do treinamento de um modelo pronto; o EWC muda o objetivo desse treinamento, acrescentando uma penalidade por mexer nos pesos importantes.</li>
</ul>
<p><em>O texto e a ilustração foram preparados com a ajuda de IA. Os dois pesos, as suas importâncias e a demonstração são um exemplo didático próprio e simplificado; a ilustração é uma metáfora, não um esquema da estrutura do modelo.</em></p>]]></content:encoded>
</item>
<item>
  <title>Reservoir Sampling</title>
  <link>https://paweldubiel.com/pt/glossary/reservoir-sampling</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/reservoir-sampling</guid>
  <pubDate>Sun, 11 Oct 2026 12:00:11 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>llm</category>
  <category>glossary</category>
  <description>Um modelo de atendimento ao cliente treina com mensagens que chegam uma após a outra. Você quer guardar algumas delas para repetições futuras, mas só tem quatro vagas na memória.</description>
  <content:encoded><![CDATA[<p>Um modelo de atendimento ao cliente treina com mensagens que chegam uma após a outra. Você quer guardar algumas delas para repetições futuras, mas só tem quatro vagas na memória. Também não sabe quantas mensagens ainda vão chegar: vinte ou dois milhões.</p>
<p>Ficar com as quatro primeiras? Aí a memória só conhece o começo. Manter sempre as quatro últimas? Aí só conhece o fim. Um sorteio justo de “quatro do total” exigiria guardar tudo ou saber de antemão o número de mensagens. A pergunta é: <strong>como, com um número fixo de vagas e um fluxo de comprimento desconhecido, dar a mesma chance a todas as mensagens?</strong></p>
<p><strong>Reservoir Sampling</strong> é uma forma de manter uma amostra aleatória de tamanho fixo durante uma única passagem por dados cuja quantidade não conhecemos de antemão. Depois de cada nova mensagem, a memória, aqui chamada de reservatório, contém uma amostra aleatória justa de tudo o que chegou até então. A versão mais simples, o Algorithm R, é descrita por <a href="https://doi.org/10.1145/3147.3165" rel="noopener noreferrer">Vitter, <em>Random Sampling with a Reservoir</em>, §2</a>, que a atribui a Alan Waterman.</p>
<p><img src="https://paweldubiel.com/assets/reservoir-sampling-pebble-stream-four-slot-tray.webp" alt="Um longo fluxo de seixos e conchas passa ao lado de uma pequena bandeja de madeira com quatro cavidades; uma mão tira um seixo da bandeja, e a outra põe no lugar dele um seixo do fluxo." loading="eager" decoding="async" width="1536" height="1024"></p>
<h2 id="a-receita-em-dois-passos">A receita em dois passos</h2>
<ol>
<li>As quatro primeiras mensagens vão para a memória sem sorteio.</li>
<li>A mensagem de número <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi></mrow><annotation encoding="application/x-tex">t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6151em;"></span><span class="mord mathnormal">t</span></span></span></span> (a quinta, a sexta e todas as seguintes) entra na memória com chance <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>4</mn><mi mathvariant="normal">/</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">4/t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">4/</span><span class="mord mathnormal">t</span></span></span></span>. Se entrou, substitui uma das quatro guardadas, escolhida ao acaso.</li>
</ol>
<p>A quinta mensagem entra, portanto, com chance 4/5; a centésima, com chance 4/100. As mensagens novas têm uma chance cada vez menor de entrar, mas as antigas já correram muitas vezes o risco de ser expulsas, e esses dois efeitos se compensam exatamente. Vamos conferir isso depois da quinta mensagem. Ela entra com chance 4/5. A primeira mensagem só sai quando a quinta entrou (4/5) e caiu justamente na vaga dela (1/4), ou seja, com chance 1/5. Ela fica com chance 4/5: a mesma da quinta. Depois de <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi></mrow><annotation encoding="application/x-tex">t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6151em;"></span><span class="mord mathnormal">t</span></span></span></span> mensagens, cada uma delas está na memória com chance <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>4</mn><mi mathvariant="normal">/</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">4/t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">4/</span><span class="mord mathnormal">t</span></span></span></span>.</p>
<h2 id="chance-igual-não-é-garantia">Chance igual não é garantia</h2>
<p>No experimento, o fluxo tem 20 mensagens. Dezoito tratam de entrega, e duas, a nona e a décima quinta, tratam de devoluções. Cada execução passa esse fluxo 2.000 vezes e conta com que frequência cada posição ficou na memória no final. Os sorteios são de verdade, então os resultados diferem em uma fração de ponto percentual a cada vez.</p>
<div id="reservoir-sampling-lab"></div>
<p>Com Reservoir Sampling, cada barra tem cerca de 20%, isto é, 4/20. Ao mesmo tempo, na maioria das execuções nenhuma das duas devoluções fica na memória. O valor exato é 3060/4845, ou seja, cerca de 63%: é essa a parcela dos grupos de quatro, entre todos os que se podem escolher das 20 mensagens, formados apenas pelas dezoito mensagens sobre entrega. O método é justo com cada mensagem, mas não cuida para que toda categoria tenha um representante.</p>
<h2 id="onde-isso-faz-diferença">Onde isso faz diferença</h2>
<p>No treinamento com repetições, Reservoir Sampling é, às vezes, a forma de gravar no buffer: não é preciso conhecer o comprimento do fluxo nem as fronteiras entre as tarefas. <a href="https://arxiv.org/html/1902.10486v2#S2" rel="noopener noreferrer">Chaudhry et al., <em>Continual Learning with Tiny Episodic Memories</em>, §2, algoritmo 2</a> o usam exatamente assim. Nos experimentos deles com tarefas de imagem, ele funcionou bem, exceto com memórias muito pequenas, em que as classes anteriores desapareciam do buffer; nesses casos saíam-se melhor as estratégias que cuidam de uma representação igual das classes (§4.4). É um resultado para classificação de imagens, não para LLMs.</p>
<p>O algoritmo em si não tem a ver com aprendizado de máquina. O trabalho de Vitter, de 1985, descreve o sorteio de registros de uma fita magnética de comprimento desconhecido e propõe variantes mais rápidas, que, em vez de sortear a cada registro, calculam quantos registros pular. As mensagens dos clientes e o fluxo de 20 posições são um exemplo próprio.</p>
<ul>
<li><a href="https://paweldubiel.com/pt/glossary/experience-replay">Experience Replay</a> precisa de um buffer com exemplos antigos; Reservoir Sampling é uma das formas de decidir o que entra nele.</li>
<li><a href="https://paweldubiel.com/pt/glossary/continual-learning">Continual Learning</a> pressupõe o aprendizado a partir de um fluxo de dados com memória limitada, isto é, uma situação em que não dá para guardar tudo.</li>
<li><a href="https://paweldubiel.com/glossary/catastrophic-forgetting" hreflang="pl">Catastrophic Forgetting [Polski]</a> pode se agravar quando todos os exemplos de uma categoria antiga saem de uma memória pequena.</li>
</ul>
<p><em>O texto e a ilustração foram preparados com a ajuda de IA. O fluxo de mensagens e a demonstração são um exemplo didático próprio e simplificado; a ilustração é uma metáfora, não um esquema do algoritmo.</em></p>]]></content:encoded>
</item>
<item>
  <title>Experience Replay</title>
  <link>https://paweldubiel.com/pt/glossary/experience-replay</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/experience-replay</guid>
  <pubDate>Sun, 11 Oct 2026 08:22:26 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>llm</category>
  <category>glossary</category>
  <description>Um modelo aprendeu a encaminhar as perguntas dos clientes para os setores “entrega” e “devoluções”. Agora você continua o treinamento para que ele reconheça reclamações, por exemplo “O produto…</description>
  <content:encoded><![CDATA[<p>Um modelo aprendeu a encaminhar as perguntas dos clientes para os setores “entrega” e “devoluções”. Agora você continua o treinamento para que ele reconheça reclamações, por exemplo “O produto chegou danificado”. Se nos exercícios seguintes ele vir apenas reclamações, pode passar a tratar pior a já conhecida “Onde está a encomenda?”. O arquivo antigo completo não está disponível. Será que dá para voltar ao menos a algumas mensagens guardadas?</p>
<p><strong>Experience Replay (ER)</strong> consiste em guardar parte dos exemplos anteriores e usá-los de novo no treinamento. Na variante simples, misturamos a um lote de dados novos exemplos tirados de uma memória chamada <em>replay buffer</em>. É um recipiente de dados para repetição, não um registro de todo o conhecimento do modelo. Esse treinamento conjunto é descrito por <a href="https://arxiv.org/html/1902.10486v2#S2" rel="noopener noreferrer">Chaudhry et al., <em>Continual Learning with Tiny Episodic Memories</em>, §2, algoritmo 1</a>.</p>
<p><img src="https://paweldubiel.com/assets/experience-replay-card-box-returning-examples.webp" alt="Cartões azul-marinho e ocre guardados voltam de uma pequena caixa para uma fileira de cartões vermelhos novos: uma metáfora das repetições durante a continuação do aprendizado." loading="eager" decoding="async" width="1536" height="1024"></p>
<h2 id="o-que-entra-no-próximo-exercício">O que entra no próximo exercício</h2>
<p>Antes de perder o arquivo, guardamos quatro mensagens com os setores corretos. Agora temos quatro reclamações novas. Sem repetições, o modelo treina com as quatro mensagens novas. Com repetições, ele pratica também com as quatro antigas: recebe de novo o sinal de que “Onde está a encomenda?” pertence à entrega. Neste pequeno exemplo usamos o buffer inteiro; buffers maiores costumam fornecer um lote sorteado.</p>
<p>Não basta, porém, contar as vagas na memória. Quatro perguntas guardadas sobre entrega não contêm nenhum exemplo de devolução. Trocando duas delas por “Como devolvo a compra?” e “Quero devolver uma camisa”, o número de repetições continua o mesmo, mas passa a abranger os dois setores anteriores. O experimento abaixo <strong>conta os exemplos no lote de dados; não prevê a acurácia do modelo</strong>.</p>
<div id="experience-replay-lab"></div>
<h2 id="as-repetições-só-ajudam-nos-dados-disponíveis">As repetições só ajudam nos dados disponíveis</h2>
<p>O modelo ganha a oportunidade de praticar respostas anteriores, mas não a garantia de preservar todas as habilidades. Uma amostra aleatória pequena pode deixar de fora por completo uma categoria rara; os pesquisadores observaram esse problema com buffers muito pequenos (§4.4 do mesmo trabalho). As nossas mensagens são um exemplo próprio, não o resultado daqueles experimentos. O efeito do treinamento precisa ser verificado em mensagens antigas e novas separadas, não usadas no treino. O buffer também ocupa memória e exige guardar os dados escolhidos.</p>
<p>Veja também: <a href="https://paweldubiel.com/pt/glossary/reservoir-sampling">Reservoir Sampling</a> — uma forma de decidir quais exemplos de um fluxo entram em um buffer de tamanho fixo, dando a cada um a mesma chance.</p>
<p>Nos jogos, em <a href="https://paweldubiel.com/glossary/reinforcement-learning" hreflang="pl">Reinforcement Learning [Polski]</a> — o aprendizado de ações com base em recompensas —, guardam-se a situação, a ação, a recompensa e a situação seguinte. Sortear esses registros reduz a dependência de eventos que ocorrem imediatamente um após o outro (<a href="https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf#page=7" rel="noopener noreferrer">Mnih et al., <em>Human-level control through deep reinforcement learning</em>, Methods, “Training algorithm for deep Q-networks”</a>). São dados diferentes de uma mensagem com o setor correto; os resultados do Atari não devem ser transpostos diretamente para os LLMs.</p>
<ul>
<li><a href="https://paweldubiel.com/pt/glossary/continual-learning">Continual Learning</a> define o objetivo de continuar aprendendo com a preservação das capacidades anteriores; o ER é uma das formas de alcançá-lo.</li>
<li><a href="https://paweldubiel.com/glossary/catastrophic-forgetting" hreflang="pl">Catastrophic Forgetting [Polski]</a> descreve uma piora acentuada das habilidades antigas, que as repetições podem limitar.</li>
<li><a href="https://paweldubiel.com/glossary/fine-tuning" hreflang="pl">Fine-tuning [Polski]</a> é a continuação do treinamento de um modelo; o replay muda a seleção dos dados usados nele. Simplesmente colar mensagens antigas em uma conversa não é uma atualização do modelo desse tipo.</li>
</ul>
<p><em>O texto e a ilustração foram preparados com a ajuda de IA. As mensagens e a demonstração são um exemplo didático próprio e simplificado; a ilustração é uma metáfora, não um esquema da estrutura do modelo.</em></p>]]></content:encoded>
</item>
<item>
  <title>Continual Learning</title>
  <link>https://paweldubiel.com/pt/glossary/continual-learning</link>
  <guid isPermaLink="true">https://paweldubiel.com/pt/glossary/continual-learning</guid>
  <pubDate>Sat, 10 Oct 2026 20:03:52 GMT</pubDate>
  <dc:creator>Paweł Dubiel</dc:creator>
  <category>ai</category>
  <category>llm</category>
  <category>glossary</category>
  <description>Um modelo encaminha as mensagens dos clientes para os setores “pedidos” e “devoluções”. Ele sabe reconhecer “Onde está a minha encomenda?”. Agora a empresa abre um setor de reclamações.</description>
  <content:encoded><![CDATA[<p>Um modelo encaminha as mensagens dos clientes para os setores “pedidos” e “devoluções”. Ele sabe reconhecer “Onde está a minha encomenda?”. Agora a empresa abre um setor de reclamações. Você continua treinando o modelo com mensagens sobre produtos danificados. As reclamações são encaminhadas cada vez melhor, mas parte das perguntas sobre entrega também começa a cair no novo setor. Verificar apenas as reclamações daria uma falsa sensação de progresso.</p>
<p>Você precisa <strong>ensinar coisas novas ao modelo preservando as habilidades anteriores</strong>. Esse é o objetivo do <strong>Continual Learning</strong>: o aprendizado a partir de dados ou tarefas que chegam em sequência, levando em conta o que o modelo aprendeu antes. O nome designa um problema e uma família de abordagens; não garante que não haverá esquecimento. Essa necessidade é descrita por <a href="https://arxiv.org/html/1612.00796v2#S1" rel="noopener noreferrer">Kirkpatrick et al., <em>Overcoming catastrophic forgetting in neural networks</em>, §1</a>.</p>
<p><img src="https://paweldubiel.com/assets/continual-learning-embroidered-sampler-growing-repertoire.webp" alt="Em um mesmo pedaço de tecido permanecem bordados círculos e triângulos, enquanto a agulha acrescenta um novo padrão ondulado: uma metáfora do desenvolvimento de habilidades com a preservação das anteriores." loading="eager" decoding="async" width="1536" height="1024"></p>
<h2 id="o-que-mudamos-no-treinamento-e-na-verificação">O que mudamos no treinamento e na verificação</h2>
<p>Suponhamos que o arquivo completo dos exemplos usados no treinamento anterior já não esteja disponível. Antes de apagá-lo, guardamos uma pequena amostra: 20 mensagens com os setores corretos conhecidos. Um dos métodos possíveis consiste em misturar essa amostra aos novos exemplos de reclamações. Assim, o treinamento seguinte recebe também o sinal de que deve continuar tratando corretamente “Onde está a minha encomenda?”. Reutilizar exemplos antigos é uma das estratégias descritas por <a href="https://arxiv.org/pdf/1904.07734v1" rel="noopener noreferrer">van de Ven e Tolias, <em>Three scenarios for continual learning</em>, §3.3</a>.</p>
<p>Veja também: <a href="https://paweldubiel.com/pt/glossary/experience-replay">Experience Replay</a> — guardar uma pequena amostra de exemplos antigos e misturá-la ao novo treinamento.</p>
<p>A equipe de avaliação mantém um teste separado com mensagens antigas, que <strong>não usamos no treinamento</strong>. Depois de cada atualização, verificamos as categorias antigas e as novas. Os números abaixo são um exemplo inventado, não o resultado de um estudo; cada teste contém 100 mensagens.</p>

























<table><thead><tr><th>Variante do modelo</th><th>Mensagens antigas corretas</th><th>Reclamações corretas</th></tr></thead><tbody><tr><td>Antes do novo treinamento</td><td>90/100</td><td>0/100 — a categoria não existe</td></tr><tr><td>Depois de treinar apenas com reclamações</td><td>40/100</td><td>92/100</td></tr><tr><td>Depois de treinar com a amostra de mensagens antigas</td><td>89/100</td><td>87/100</td></tr></tbody></table>
<p>A última variante preserva melhor a habilidade anterior, embora reconheça as reclamações pior do que a segunda. A tabela mostra <strong>o que comparar</strong>; não promete esse resultado depois de acrescentar 20 exemplos.</p>
<h2 id="as-condições-mudam-a-dificuldade">As condições mudam a dificuldade</h2>
<p>No nosso exemplo, o próprio modelo escolhe entre todos os setores que conhece. Uma dica como “esta é uma mensagem da nova categoria” facilitaria o teste. A disponibilidade dessas dicas e das fronteiras entre as tarefas é importante na comparação de métodos (<a href="https://arxiv.org/pdf/1904.07734v1" rel="noopener noreferrer">van de Ven e Tolias, §2–2.3</a>). Uma amostra pequena pode deixar de fora perguntas raras; uma boa média não prova que cada habilidade foi preservada.</p>
<ul>
<li><a href="https://paweldubiel.com/glossary/catastrophic-forgetting" hreflang="pl">Catastrophic Forgetting [Polski]</a> descreve uma piora acentuada das habilidades antigas; a demonstração daquela nota mostra como um novo treinamento altera ajustes compartilhados.</li>
<li><a href="https://paweldubiel.com/glossary/fine-tuning" hreflang="pl">Fine-tuning [Polski]</a> é a continuação do treinamento de um modelo com exemplos selecionados. Depois de cada novo treinamento, verificamos também as capacidades anteriores.</li>
<li><a href="https://paweldubiel.com/glossary/knowledge-distillation" hreflang="pl">Knowledge Distillation [Polski]</a> pode transmitir orientações de um modelo mais antigo para o que está sendo atualizado; é uma estratégia diferente de guardar as mensagens originais (§3.3 do trabalho de van de Ven e Tolias).</li>
</ul>
<p><em>O texto e a ilustração foram preparados com a ajuda de IA; as mensagens, o tamanho da amostra e os resultados da tabela são um exemplo didático próprio. A ilustração mostra o objetivo de preservar as habilidades anteriores, não a estrutura do modelo.</em></p>]]></content:encoded>
</item>
</channel>
</rss>