Por que as redes neurais convolucionais não usam uma máquina de vetores de suporte para classificar?

46

Nos últimos anos, as Redes Neurais Convolucionais (CNNs) tornaram-se o estado da arte em reconhecimento de objetos em visão computacional. Normalmente, uma CNN consiste em várias camadas convolucionais, seguidas por duas camadas totalmente conectadas. Uma intuição por trás disso é que as camadas convolucionais aprendem uma melhor representação dos dados de entrada e as camadas totalmente conectadas aprendem a classificar essa representação com base em um conjunto de rótulos.

No entanto, antes que as CNNs começassem a dominar, as SVMs (Support Vector Machines) eram o estado da arte. Portanto, parece sensato dizer que um SVM ainda é um classificador mais forte do que uma rede neural totalmente conectada em duas camadas. Portanto, estou me perguntando por que CNNs de ponta tendem a usar as camadas totalmente conectadas para classificação, em vez de um SVM? Dessa maneira, você teria o melhor dos dois mundos: uma forte representação de recursos e um classificador forte, em vez de uma forte representação de recursos, mas apenas um classificador fraco ...

Alguma ideia?

Karnivaurus
fonte

Respostas:

54

Pode ser feito; um documento de workshop da ICML, Deep Learning usando Linear Support Vector Machines , Tang (2013) , fez exatamente isso e encontrou pequenas mas consistentes melhorias. Às vezes, também é feito para treinar CNNs da maneira típica, mas, em seguida, pegue a saída de uma camada tardia como "recursos" e treine um SVM separado nisso.

Observe, porém, que eles estavam usando SVMs lineares e, realmente, a diferença entre um SVM linear e a regressão logística (que é equivalente a uma única camada de saída binária com ativação sigmóide) é bastante pequena. A camada adicional da rede, supondo que você tenha dados suficientes para aprendê-la, torna as duas últimas camadas mais fortes que um SVM linear - embora, é claro, você possa fazer uma camada sigmoide ou ReLU totalmente conectada e, em seguida, colocar uma camada SVM por último.

Além disso, para saídas multiclasses, as ativações softmax são mais naturais que os SVMs multiclasses, e acho que a abordagem SVM desse trabalho é um pouco mais computacionalmente intensiva. Então, as pessoas geralmente não acham que vale a pena.

Dougal
fonte
0

Até onde posso ver, existem pelo menos algumas diferenças:

  1. As CNNs são projetadas para trabalhar com dados de imagem, enquanto o SVM é um classificador mais genérico;
  2. As CNNs extraem recursos enquanto o SVM simplesmente mapeia sua entrada para algum espaço de alta dimensão, onde (espero) as diferenças entre as classes possam ser reveladas;
  3. Semelhante ao 2., as CNNs são arquiteturas profundas, enquanto os SVMs são rasos;
  4. Os objetivos de aprendizagem são diferentes: os SVMs buscam maximizar a margem, enquanto as CNNs não são (gostariam de saber mais)

Dito isto, os SVMs podem funcionar tão bem quanto as CNNs, desde que bons recursos sejam usados ​​com uma boa função do kernel.

Vladislavs Dovgalecs
fonte
4
Eu acho que você pode ter entendido mal a pergunta; trata-se de usar uma "camada SVM" no final da CNN.
Dougal
4
Entendo a diferença entre uma CNN e uma SVM, mas como diz @Dougal, estou perguntando mais sobre a camada final de uma CNN. Normalmente, essa é uma rede neural totalmente conectada, mas não sei por que os SVMs não são usados ​​aqui, pois tendem a ser mais fortes do que uma rede neural de duas camadas.
Karnivaurus
6
@Karnivaurus Desculpe por interpretar mal sua pergunta. A ideia não é nova. Normalmente, a última camada é descartada e a saída da última camada é usada como recurso em outros algoritmos de classificação. Por que isso não é feito de forma consistente e em todos os lugares? Os recursos da última camada são tipicamente tão discriminativos que não há necessidade de uma caixa preta sofisticada como SVM, uma simples regressão logística faz o trabalho. Esta é a minha visão das coisas.
Vladislavs Dovgalecs