ANN (Redes Neurais Artificiais) e SVM (Máquinas de Vetor de Suporte) são duas estratégias populares para aprendizado e classificação supervisionados de máquinas. Muitas vezes, não é claro qual método é melhor para um projeto específico e tenho certeza de que a resposta é sempre "depende". Freqüentemente, uma combinação de ambos e a classificação bayesiana é usada.
Essas perguntas no Stackoverflow já foram feitas sobre ANN vs SVM:
qual a diferença entre RNA, SVM e KNN na minha pergunta de classificação
Suporte Vector Machine ou Rede Neural Artificial para processamento de texto?
Nesta pergunta, eu gostaria de saber especificamente quais aspectos de uma RNA (especificamente, um Multilayer Perceptron) podem tornar desejável o uso em um SVM? A razão pela qual pergunto é porque é fácil responder à pergunta oposta : Máquinas de vetores de suporte geralmente são superiores às RNAs porque evitam duas grandes fraquezas das RNAs:
(1) As RNAs frequentemente convergem para mínimos locais em vez de mínimos globais, o que significa que eles estão "perdendo a visão geral" às vezes (ou perdendo a floresta para as árvores)
(2) As RNAs geralmente se ajustam demais se o treinamento continuar muito longo, o que significa que, para qualquer padrão, uma RNA pode começar a considerar o ruído como parte do padrão.
Os SVMs não sofrem desses dois problemas. No entanto, não é prontamente aparente que os SVMs sejam um substituto total para as RNAs. Então, quais vantagens específicas uma RNA possui sobre um SVM que pode torná-lo aplicável a determinadas situações? Eu listei vantagens específicas de um SVM sobre uma RNA, agora eu gostaria de ver uma lista de vantagens da RNA (se houver).
fonte
Respostas:
A julgar pelos exemplos que você fornece, suponho que, por RNAs, você queira dizer redes feed-forward multicamadas (redes FF para abreviar), como perceptrons multicamadas, porque estão em concorrência direta com SVMs.
Um benefício específico que esses modelos têm sobre os SVMs é que seu tamanho é fixo: eles são modelos paramétricos , enquanto os SVMs não são paramétricos. Ou seja, em uma RNA você tem um monte de camadas ocultas com tamanhos h 1 a h ndependendo do número de recursos, além de parâmetros de viés, e aqueles que compõem seu modelo. Por outro lado, um SVM (pelo menos um kernelizado) consiste em um conjunto de vetores de suporte, selecionados no conjunto de treinamento, com um peso para cada um. No pior dos casos, o número de vetores de suporte é exatamente o número de amostras de treinamento (embora isso ocorra principalmente com pequenos conjuntos de treinamento ou em casos degenerados) e, em geral, o tamanho do modelo é escalonado linearmente. No processamento de linguagem natural, os classificadores SVM com dezenas de milhares de vetores de suporte, cada um com centenas de milhares de recursos, não são inéditos.
Além disso, o treinamento on-line de redes FF é muito simples comparado ao ajuste SVM on-line, e a previsão pode ser um pouco mais rápida.
EDIT : tudo acima se refere ao caso geral de SVMs kernelizados. O SVM linear é um caso especial, pois eles são paramétricos e permitem o aprendizado on-line com algoritmos simples, como a descida do gradiente estocástico.
fonte
Uma vantagem óbvia das redes neurais artificiais sobre as máquinas de vetores de suporte é que as redes neurais artificiais podem ter qualquer número de saídas, enquanto as máquinas de vetores de suporte têm apenas uma. A maneira mais direta de criar um classificador n-ário com máquinas de vetores de suporte é criar n máquinas de vetores de suporte e treinar cada uma delas uma a uma. Por outro lado, um classificador n-ário com redes neurais pode ser treinado de uma só vez. Além disso, a rede neural fará mais sentido porque é um todo, enquanto as máquinas de vetores de suporte são sistemas isolados. Isso é especialmente útil se as saídas estiverem inter-relacionadas.
Por exemplo, se o objetivo era classificar dígitos escritos à mão, dez máquinas de vetores de suporte o fariam. Cada máquina de vetores de suporte reconheceria exatamente um dígito e falharia em reconhecer todos os outros. Como cada dígito manuscrito não pode conter mais informações do que apenas sua classe, não faz sentido tentar resolver isso com uma rede neural artificial.
No entanto, suponha que o objetivo fosse modelar o equilíbrio hormonal de uma pessoa (para vários hormônios) em função de fatores fisiológicos facilmente mensuráveis, como tempo desde a última refeição, freqüência cardíaca, etc. a regressão de rede faz mais sentido do que a regressão à máquina de vetores.
fonte
Uma coisa a notar é que os dois são realmente muito relacionados. Os SVMs lineares são equivalentes aos NNs de camada única (ou seja, perceptrons), e os NNs de várias camadas podem ser expressos em termos de SVMs. Veja aqui alguns detalhes.
fonte
Se você deseja usar um SVM do kernel, deve adivinhar o kernel. No entanto, as RNAs são aproximadores universais, com apenas suposições a serem feitas: largura (precisão da aproximação) e altura (eficiência da aproximação). Se você projetou o problema de otimização corretamente, não ajustou demais (consulte a bibliografia para ajustar demais). Também depende dos exemplos de treinamento, se eles digitalizarem o espaço de pesquisa de maneira correta e uniforme. A descoberta de largura e profundidade é o assunto da programação inteira.
Suponha que você tenha funções limitadas f (.) E aproximadores universais limitados em I = [0,1] com faixa novamente I = [0,1] por exemplo, que são parametrizados por uma sequência real de suporte compacto U (., A) com a propriedade que existe uma sequência de sequências com
e você desenha exemplos e testes
(x,y)
com uma distribuição D onIxI
.Para um suporte prescrito, o que você faz é encontrar o melhor para que
Deixe isto
a=aa
que é uma variável aleatória !, o excesso de ajuste é entãomédia usando
D and D^{N} of ( y - U(x,aa) )^{2}
Deixe-me explicar por que, se você selecionar de
aa
forma que o erro seja minimizado, para um conjunto raro de valores você terá um ajuste perfeito. No entanto, como são raras, a média nunca é 0. Você deseja minimizar o segundo, embora tenha uma aproximação discreta de D. E lembre-se de que o comprimento do suporte é livre.fonte
Uma resposta está faltando aqui: o perceptron de várias camadas é capaz de encontrar relação entre os recursos. Por exemplo, é necessário na visão computacional quando uma imagem bruta é fornecida ao algoritmo de aprendizado e agora os recursos sofisticados são calculados. Essencialmente, os níveis intermediários podem calcular novos recursos desconhecidos.
fonte
Também devemos considerar que o sistema SVM pode ser aplicado diretamente a espaços não métricos, como o conjunto de gráficos ou seqüências de caracteres rotulados. De fato, a função interna do kernel pode ser generalizada adequadamente para praticamente qualquer tipo de entrada, desde que o requisito de definição positiva do kernel seja atendido. Por outro lado, para poder usar uma RNA em um conjunto de gráficos rotulados, procedimentos explícitos de incorporação devem ser considerados.
fonte