Pular para o conteúdo principal

Questão de Programação — Python — FGV 2024

ProgramaçãoPython
Código
fg077336
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 7 - Ciência de Dados - Tarde
Considere o código python a seguir.Imagem associada para resolução da questãoSobre a variável pred, é correto afirmar que:
  1. Aseus gradientes foram preparados para a retropropagação;
  2. Bseus valores, quando somados, resultam em 1.0;
  3. Csua dimensão é 50;
  4. Dseus valores serão os mesmos para qualquer execução do código;
  5. Esua dimensão é 1.
Revelar gabarito e comentário

GabaritoB — seus valores, quando somados, resultam em 1.0;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Distribuição de Probabilidade em Python (softmax)

Gabarito: letra B. A variável pred é o resultado de uma função de ativação softmax, que transforma um vetor de valores reais em um vetor de probabilidades, onde cada valor está entre 0 e 1 e a soma de todos os valores é exatamente 1.0. Essa é a propriedade fundamental da softmax, amplamente utilizada em problemas de classificação em aprendizado de máquina.

A função softmax é uma generalização da função logística para múltiplas classes. Dado um vetor de entrada z=[z1,z2,...,zK]z = [z_1, z_2, ..., z_K], a softmax calcula a probabilidade de cada classe ii como:

softmax(zi)=ezij=1Kezj\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}

O denominador é a soma das exponenciais de todos os elementos do vetor, o que garante que a soma de todas as probabilidades de saída seja igual a 1. Isso é essencial para interpretar as saídas como uma distribuição de probabilidade sobre as classes possíveis. Por exemplo, em um problema de classificação de imagens com 10 classes (dígitos de 0 a 9), a softmax produz um vetor de 10 valores, cada um representando a probabilidade da imagem pertencer àquela classe, e a soma dessas probabilidades é 1.0.

A alternativa B está correta porque descreve exatamente essa propriedade da softmax. As demais alternativas apresentam características que não se aplicam a uma saída de softmax: ela não prepara gradientes para retropropagação (isso é feito pelo otimizador), sua dimensão não é fixa (depende do número de classes), seus valores não são determinísticos (dependem da entrada e dos pesos do modelo) e sua dimensão não é 1 (é um vetor).

A pegadinha desta questão está em reconhecer que pred é uma saída de softmax, e não um tensor qualquer. A banca explora a confusão entre as propriedades de um tensor comum e as propriedades específicas de uma distribuição de probabilidade. O candidato que não conhece a softmax pode marcar a alternativa A, pensando que qualquer tensor em um modelo de aprendizado de máquina tem gradientes preparados, ou a alternativa C, confundindo a dimensão com o número de classes.

1Propriedade fundamental
Soma dos valores = 1.0
Valores entre 0 e 1
2Fórmula
e^zi / soma(e^zj)
3Dimensão
= número de classes
Não é fixa
4Dependência
Entrada do modelo
Pesos do modelo
Softmax
LEVELsoulevel.com.br
Softmax: Propriedade fundamental (Soma dos valores = 1.0, Valores entre 0 e 1); Fórmula (e^zi / soma(e^zj)); Dimensão (= número de classes, Não é fixa); Dependência (Entrada do modelo, Pesos do modelo)

Alternativa A — ❌ Incorreta

A alternativa afirma que os gradientes de pred foram preparados para a retropropagação. Isso não é uma propriedade da variável em si, mas sim do processo de treinamento. A retropropagação calcula os gradientes da função de perda em relação aos pesos do modelo, e isso é feito pelo otimizador (como SGD ou Adam) durante o treinamento. A variável pred é apenas a saída da softmax; ela não tem gradientes "preparados" automaticamente. A confusão aqui é entre a saída de uma camada e o mecanismo de treinamento.

Alternativa B — ✅ Correta ⟵ GABARITO

A alternativa está correta porque a softmax garante que a soma de todos os elementos do vetor de saída seja igual a 1.0. Isso é uma propriedade matemática da função, que divide cada exponencial pela soma de todas as exponenciais. Essa propriedade é o que permite interpretar a saída como uma distribuição de probabilidade sobre as classes.

Alternativa C — ❌ Incorreta

A alternativa afirma que a dimensão de pred é 50. Isso não é necessariamente verdade, pois a dimensão da saída da softmax é igual ao número de classes do problema de classificação. Se o problema tem 10 classes, a dimensão é 10; se tem 50, a dimensão é 50. A dimensão não é uma propriedade fixa da softmax, mas sim do problema específico. A alternativa confunde a dimensão do vetor com o número de classes, que pode variar.

Alternativa D — ❌ Incorreta

A alternativa afirma que os valores de pred serão os mesmos para qualquer execução do código. Isso é falso, pois a saída da softmax depende da entrada do modelo, que pode variar. Se o modelo é treinado com pesos aleatórios ou se a entrada é diferente, os valores de pred serão diferentes. A alternativa confunde a saída de um modelo com uma constante, ignorando a dependência dos dados de entrada e dos parâmetros do modelo.

Alternativa E — ❌ Incorreta

A alternativa afirma que a dimensão de pred é 1. Isso é falso, pois a softmax produz um vetor de probabilidades, cuja dimensão é igual ao número de classes. Se houver apenas uma classe, a dimensão seria 1, mas isso é um caso específico e não a regra geral. A alternativa confunde a saída de uma softmax com um escalar, ignorando que ela produz uma distribuição sobre múltiplas classes.

Gabarito: letra B

Link permanente: /questoes/fg077336