Tópicos em alta
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Você está em uma entrevista para Engenheiro de ML na Tesla.
Entrevistador: Precisamos implantar uma rede neural no hardware de borda do veículo, mas ela não cabe na memória. Como você lidaria com isso?
Você: Vou usar destilação de conhecimento para treinar um modelo menor.
Entrevista encerrada.
Aqui está o que você perdeu:
A destilação de conhecimento exige semanas de computação, porque essencialmente você está treinando um novo modelo.
Mas a solução já está dentro da sua rede treinada.
A maioria dos neurônios é um peso morto – consome memória, mas mal contribui para as previsões.
Vamos ver como identificá-los!
Aqui estão os passos:
Passo 1) Treine a rede neural como de costume.
Passo 2) Passe o conjunto de validação pela rede treinada e, para cada neurônio em camadas ocultas, calcule:
- A ativação média
- A variação das ativações (se as ativações podem ser -ve)
Verifique isso👇

Etapa 3) Podar neurônios que têm uma média de ativação e variância próximas de zero, pois têm pouco impacto na saída do modelo.
O ideal é plotar o desempenho em vários limites de remoção para selecionar o modelo que se ajusta às suas compensações de tamanho versus precisão.
Verifique isso 👇

Vejamos o código.
Começamos definindo uma rede neural simples e a treinamos.
Como calcularemos as ativações no nível do neurônio posteriormente para poda, retornamos todas as ativações intermediárias na passagem para frente.
Verifique isso👇

Em seguida, definimos duas listas com três elementos:
- Um armazenará a média de ativações
- Outro armazenará std dev de ativações
Passamos o conjunto de validação por meio de nosso modelo para calcular essas estatísticas para cada camada oculta.
Verifique isso 👇

Neste ponto, vamos criar um gráfico de distribuição de estatísticas em nível de neurônio que geramos acima.
Conforme descrito abaixo, as ativações médias da maioria dos neurônios e seu desenvolvimento padrão são fortemente distribuídos em torno de valores próximos de zero.
Vamos tentar podá-los a seguir.

Para poda, iteramos em uma lista de limites e:
- Crie uma nova rede e transfira pesos que ultrapassem o limite.
- Avalie a nova rede e calcule o total de parâmetros.
- Anexe os resultados a uma lista.
Verifique isso 👇

Esta tabela compara a precisão e a redução de tamanho do modelo podado em vários limites em relação ao modelo original.
Em média = 0,1 e std-dev = 0,4:
- A precisão do modelo cai 0,08%.
- O tamanho do modelo reduz em 62%.
Essa é uma grande redução.
Verifique isso 👇

Aqui está outro resultado interessante.
Em média = 0,5 e std-dev = 1:
- A precisão do modelo cai 0,5%.
- O tamanho do modelo é reduzido em 74%.
Então, essencialmente, obtemos um desempenho quase semelhante para 1/4 dos parâmetros.
Verifique isso 👇

Claro, há uma troca entre precisão e tamanho. À medida que reduzimos o tamanho, sua precisão cai (confira o vídeo).
Mas, na maioria dos casos, a precisão não é a única métrica que otimizamos.
Em vez disso, várias métricas operacionais, como eficiência, memória, etc., são os principais fatores.
372
Melhores
Classificação
Favoritos
