Por que as redes neurais precisam de seleção / engenharia de recursos?


14

Particularmente no contexto das competições de kaggle, notei que o desempenho do modelo se refere à seleção / engenharia de recursos. Embora eu possa entender completamente por que isso acontece quando se lida com os algoritmos de ML mais convencionais / da velha escola, não vejo por que esse seria o caso ao usar redes neurais profundas.

Citando o livro Deep Learning:

O aprendizado profundo resolve esse problema central no aprendizado de representação, introduzindo representações que são expressas em termos de outras representações mais simples. O aprendizado profundo permite que o computador construa conceitos complexos a partir de conceitos mais simples.

Por isso, sempre pensei que, se "a informação está nos dados", uma rede neural suficientemente profunda e bem parametrizada captava os recursos certos, com tempo de treinamento suficiente.


4
seu cérebro ainda é mais poderoso do que uma máquina, de modo que uma pequena ajuda de um ser humano vai um longo caminho
Aksakal

quem disse que precisa da seleção / engenharia de recursos? você pode dar alguma referência? quando você trabalha com imagens, elas funcionam de ponta a ponta ... #

@ user2137591 esse é o ponto. Tenho a impressão de que, na literatura, as redes neurais são frequentemente retratadas como um avanço do aprendizado de máquina convencional, pois supostamente apresentam engenharia e seleção automaticamente (conforme sugerido por Goodfellow, Bengio, Courville no livro Deep Learning). Isso é verdade em muitas tarefas no CV ou na PNL, onde acredito que as informações ainda são escassas. Por outro lado, na ciência de dados competitiva (kaggle), onde muitos dados barulhentos estão disponíveis, uma crença comum é que o fator mais importante na construção de uma solução competitiva é encontrar o "recurso mágico".
precisa saber é o seguinte

Posso falar pelo CompVis, onde não consigo me lembrar de nenhum projeto que faça engenharia de recursos para alimentar redes posteriormente ... isso também vale para dados de imagens médicas, onde a qualidade da imagem geralmente é mais baixa. talvez isso seja diferente em outros campos ... você tem algum artigo ou fonte publicada a que possa se referir a esse respeito? Eu agradeceria, obrigado.

Respostas:


18
  • E se a rede "suficientemente profunda" for muito grande, tornando o treinamento do modelo muito caro (taxas da AWS aumentam!) Ou porque você precisa implantar a rede em um ambiente com recursos limitados?

  • Como você pode saber, a priori, que a rede está bem parametrizada? É preciso muita experimentação para encontrar uma rede que funcione bem.

  • E se os dados com os quais você está trabalhando não forem "amigáveis" aos métodos de análise padrão, como uma sequência binária que compreende milhares ou milhões de bits, em que cada sequência tem um comprimento diferente?

  • E se você estiver interessado em dados no nível do usuário, mas forçado a trabalhar com um banco de dados que coleta apenas dados no nível da transação?

  • Suponha que seus dados tenham a forma de números inteiros, como , e sua tarefa seja prever a soma dos dígitos; portanto, o destino neste exemplo é . É muito simples analisar cada dígito em uma matriz e somar a matriz ("engenharia de recursos"), mas é um desafio.3 , 5 , 18 , 712,32,486,73,5,18,7

Gostaríamos de viver em um mundo onde a análise de dados é "chave na mão", mas esse tipo de solução geralmente existe apenas em casos especiais. Muito trabalho foi desenvolvido no desenvolvimento de CNNs profundas para classificação de imagens - o trabalho anterior teve uma etapa que transformou cada imagem em um vetor de comprimento fixo.

A engenharia de recursos permite que o profissional transfira diretamente o conhecimento sobre o problema em um vetor de comprimento fixo, passível de redes feed-forward. A seleção de recursos pode resolver o problema de incluir tantos recursos irrelevantes que qualquer sinal é perdido, além de reduzir drasticamente o número de parâmetros no modelo.


6

As palavras-chave aqui são priores e escala . Como um exemplo simples, imagine que você está tentando prever a idade de uma pessoa a partir de uma fotografia. Com um conjunto de dados de imagens e idades, você pode treinar um modelo de aprendizado profundo para fazer as previsões. Isso é objetivamente muito ineficiente porque 90% da imagem é inútil e apenas a região com a pessoa é realmente útil. Em particular, o rosto da pessoa, seu corpo e talvez suas roupas.

Por outro lado, você pode usar uma rede de detecção de objetos pré-treinada para primeiro extrair caixas delimitadoras para a pessoa, cortar a imagem e depois passá-la pela rede. Esse processo melhorará significativamente a precisão do seu modelo por vários motivos:

1) Todos os recursos da rede (ou seja, pesos) podem se concentrar na tarefa real de previsão de idade, em vez de precisar encontrar a pessoa primeiro. Isso é especialmente importante porque o rosto da pessoa contém recursos úteis. Caso contrário, os recursos mais refinados de que você precisa podem se perder nas primeiras camadas. Em teoria, uma rede grande o suficiente poderia resolver isso, mas seria terrivelmente ineficiente. A imagem cortada também é consideravelmente mais regular que a imagem original. Enquanto a imagem original tem muito ruído, é possível argumentar que as discrepâncias na imagem cortada estão muito mais correlacionadas com o objetivo.

2) A imagem cortada pode ser normalizada para ter a mesma escala . Isso ajuda a segunda rede a lidar com problemas de dimensionamento, porque na imagem original, as pessoas podem ocorrer próximas ou distantes. A normalização da escala antecipadamente faz com que a imagem recortada tenha a garantia de ter uma pessoa que preencha a imagem recortada completa (apesar de ter uma pixelização se estiver longe). Para ver como isso pode ajudar a dimensionar, um corpo cortado com metade da largura e altura da imagem original tem 4x menos pixels para processar e, portanto, a mesma rede aplicada a esta imagem teria 4x o campo receptivo da rede original em cada camada.

Por exemplo, na competição de pulmão de kaggle, um tema comum nas principais soluções era algum tipo de pré-processamento nas imagens de pulmão que as recortava o máximo possível e isolava os componentes de cada pulmão. Isso é especialmente importante em imagens 3D, pois o efeito é cúbico: removendo 20% de cada dimensão, você se livra de quase metade dos pixels!


4

Minha intuição sobre esse fenômeno está ligada à complexidade do modelo a ser aprendido. Uma rede neural profunda pode de fato aproximar-se de qualquer função na teoria , mas a dimensão do espaço do parâmetro pode ser realmente grande, como os milhões. Portanto, encontrar uma boa rede neural é realmente difícil. Eu gosto de pensar na engenharia de recursos como uma vantagem para o algoritmo, fornecendo algumas informações extras sobre a representação de dados que são boas o suficiente em algum sentido. Obviamente, essa não é uma explicação formal, pode ser realmente difícil responder a essa pergunta com rigor científico.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.