Tópicos populares
#
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 a destilação de conhecimento para treinar um modelo menor.
Entrevista encerrada.
Aqui está o que você perdeu:
A destilação de conhecimento precisa de 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 são peso morto - consumindo memória, mas contribuindo pouco 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 nas camadas ocultas, calcule:
- A ativação média
- A variância das ativações (se as ativações puderem ser -ve)
Verifique isto👇

Passo 3) Corte os neurônios que têm uma média e variância de ativação próximas de zero, pois têm pouco impacto na saída do modelo.
Idealmente, plote o desempenho em vários limiares de poda para selecionar o modelo que se ajusta ao seu equilíbrio entre tamanho e precisão.
Verifique isto 👇

Vamos olhar para o código.
Começamos por definir uma rede neural simples e treiná-la.
Como iremos calcular as ativações a nível de neurônios mais tarde para poda, retornamos todas as ativações intermediárias na passagem direta.
Verifique isto👇

Em seguida, definimos duas listas com três elementos:
- Uma armazenará a média das ativações
- Outra armazenará o desvio padrão das ativações
Passamos o conjunto de validação pelo nosso modelo para calcular essas estatísticas para cada camada oculta.
Verifique isto 👇

Neste ponto, vamos criar um gráfico de distribuição das estatísticas a nível de neurônios que gerámos acima.
Como mostrado abaixo, a maioria das ativações médias dos neurônios e o seu desvio padrão estão fortemente distribuídos em torno de valores próximos de zero.
Vamos tentar podá-los a seguir.

Para a poda, iteramos sobre uma lista de limiares e:
- Criamos uma nova rede e transferimos os pesos que passam o limiar.
- Avaliamos a nova rede e calculamos o total de parâmetros.
- Adicionamos os resultados a uma lista.
Verifique isto 👇

Esta tabela compara a precisão do modelo podado e a redução de tamanho em vários limiares em relação ao modelo original.
Com média=0.1 e desvio-padrão=0.4:
- A precisão do modelo cai em 0.08%.
- O tamanho do modelo reduz em 62%.
Isso é uma enorme redução.
Verifique isto 👇

Aqui está outro resultado interessante.
Com média=0.5 e desvio-padrão=1:
- A precisão do modelo cai em 0.5%.
- O tamanho do modelo reduz em 74%.
Portanto, essencialmente, obtemos um desempenho quase semelhante para 1/4 dos parâmetros.
Verifique isto 👇

Claro que há um compromisso entre precisão e tamanho. À medida que reduzimos o tamanho, a precisão diminui (veja 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 fatores chave.
366
Top
Classificação
Favoritos
