Uma lição sobre modelos modernos de classificação

Desmistificando os recentes avanços no ML para construir um modelo de classificação melhor

Jeff Da Blocked Unblock Seguir Seguindo 2 de janeiro

No aprendizado de máquina, os problemas de classificação são um dos problemas existentes mais fundamentalmente estimulantes e desafiadores . As implicações de um modelo de classificação competente são enormes – esses modelos são utilizados para o processamento de linguagem natural, classificação de texto, reconhecimento de imagem, previsão de dados, treinamento de reforço e um número incontável de outras aplicações.

No entanto, a implementação atual de algoritmos de classificação é terrível. Durante meu tempo no Facebook, descobri que a solução genérica para qualquer problema de classificação de aprendizado de máquina era “lançar uma descida de gradiente para impulsionar a árvore e esperar o melhor”. Mas este não deve ser o caso – a pesquisa está sendo colocada em algoritmos de classificação modernos e melhorias que permitem modelos significativamente mais precisos com menos dados de treinamento necessários.

Aqui, nós exploramos alguns exemplos particularmente interessantes de algoritmos de classificação modernos. Este artigo pressupõe algum nível de familiaridade com o aprendizado de máquina, no entanto, a maioria do post ainda deve ser acessível sem.

Árvores de Decisão Neural Profunda

Redes neurais profundas têm se mostrado poderosas no processamento de dados perceptuais , como imagens e áudio. No entanto, para dados tabulares, os modelos baseados em árvore são mais populares por alguns motivos – um deles é significativo, pois eles oferecem interpretabilidade natural.

Por exemplo, considere uma empresa que está tentando determinar por que um sistema está falhando. Você faria um modelo preditivo com vários parâmetros – alguns exemplos são velocidade de rede, tempo de atividade, processamento de encadeamentos e tipo de sistema. Com uma árvore de decisão, também podemos ter uma noção do motivo pelo qual um sistema está falhando.

Um exemplo de uma árvore de decisão com X1 e X2 como recursos. Muito mais fácil de entender do que uma rede neural de caixa preta.

Árvores de decisão neural profunda combinam a utilidade de uma árvore de decisão com o impacto desenvolvido pelas redes neurais. Como ele é implementado com uma rede neural, o DNDT oferece suporte à aceleração de GPU pronta para uso e ao aprendizado mínimo de conjuntos de dados que não se encaixam na memória, graças aos modernos frameworks de aprendizagem profunda. Eles demonstraram ser mais precisos do que as decisões tradicionais em muitos conjuntos de dados. Além disso, eles são fáceis de usar – uma implementação envolve cerca de 20 linhas de código em TensorFlow ou PyTorch.

Podemos explorar os conceitos por trás da matemática básica do modelo. Primeiro, precisamos de uma maneira de tomar decisões divididas (isto é, como decidimos qual caminho da árvore tomar). Então, precisamos combinar nossas decisões divididas para construir a árvore de decisão .

Nós tomamos a decisão dividida através de um função de binning . Uma função de categorização recebe uma entrada e produz um índice dos compartimentos aos quais a entrada pertence. Em nosso modelo, cada uma das bandejas representa um recurso – por exemplo, tempo de atividade, velocidade de rede ou tipo de sistema.

Agrupamos cada recurso através de sua própria rede neural de camada única (a parte "neural profunda" do nosso modelo) com a seguinte função de ativação.

A função de ativação de cada bin.

Em seguida, multiplicamos nossas caixas umas com as outras por meio de um produto da Kronecker para construir nossa árvore de decisão.

Cada recurso é categorizado por sua própria rede neural. Isso nos retorna um índice que representa a classificação de x (isto é, o índice do nó da folha na árvore), terminando a construção da nossa árvore de decisão neural profunda.

Classificação Linear Ponderada por Confiança

Muitas tarefas de aprendizado de máquina, especialmente no processamento de linguagem natural, acabam com muitos recursos diferentes nos quais a maioria é binária e raramente operada. Isso resulta em dispersão de dados , o que exige grandes conjuntos de treinamento e vetores de parâmetros muito grandes.

Considere um classificador de revisão de produto em que o objetivo é rotular a revisão como positiva ou negativa. Muitas revisões podem dizer “Gostei desse autor” e, portanto, correlacionar a palavra “gostei” a uma revisão positiva. Imagine uma crítica negativa ligeiramente modificada: “Gostei desse autor, mas achei esse livro chato”. O classificador provavelmente não veria o mundo “embotado” com muita frequência, e isso provavelmente classificaria incorretamente essa revisão como positiva, já que a revisão usa a frase “gostou desse autor”, diminuindo assim a taxa de convergência.

Podemos resolver isso com aprendizagem ponderada pela confiança , um método de aprendizagem que mantém uma medida probabilística de confiança em cada parâmetro. Parâmetros menos confiantes são atualizados de forma mais agressiva do que os mais confiáveis.

No aprendizado ponderado pela confiança, garantimos que, para cada iteração, a probabilidade de uma previsão correta para cada instância de treinamento seja maior ou igual à confiança para essa previsão. Isso pode ser definido formalmente.

Por si só, isso pode ser acrescentado a qualquer outro modelo (você precisará decidir como medir a confiança – algumas idéias são métodos Bayesianos, como Bayes Variacionais). Isso resulta em uma variação de seu modelo que leva à solução dos problemas mencionados anteriormente que um conjunto de dados esparso envolve.

Princípios Bayesianos para Determinar o Tamanho do Lote

Além de escolher um modelo representativo, há um conjunto de variáveis que afetam o grau de precisão que nosso modelo representa. Um é o tamanho do lote – a quantidade de dados de treinamento usados por iteração durante o treinamento. Pesquisas mostram que não existe apenas um tamanho de lote ideal que maximiza a precisão do teste, mas que podemos aplicar os princípios bayesianos para calcular como uma função de dimensionamento da taxa de aprendizado e tamanho dos dados de treinamento . Os cálculos em si são multi-escalonados e estão fora do escopo deste artigo, mas os resultados podem ser representados como uma função de escalonamento linear:

A partir disso, podemos chegar a duas conclusões úteis.

Primeiro, à medida que o tamanho de nossos dados de treinamento aumenta, o tamanho de cada iteração de lote deve aumentar no mesmo valor. Em segundo lugar, devemos aumentar nosso tamanho de lote à medida que nossos dados de aprendizado aumentam. Isso nos permite determinar um tamanho de lote ideal para um único experimento e escalá-lo para determinar os tamanhos de lotes para qualquer número de experimentos variados, otimizando a precisão do teste em toda a linha.

Conclusão

Este é apenas um exemplo da amplitude (e profundidade) dos problemas de classificação na moderna pesquisa de aprendizado de máquina – tudo neste artigo foi publicado nos últimos meses. Espero que isso mostre um pouco da empolgante complexidade que se pode considerar ao escolher seus modelos de classificação no futuro!