Truque de kernelização, para redes neurais

9

Eu tenho aprendido sobre redes neurais e SVMs. Os tutoriais que li enfatizaram a importância da kernelização para os SVMs. Sem uma função do kernel, os SVMs são apenas um classificador linear. Com a kernelização, os SVMs também podem incorporar recursos não lineares, o que os torna um classificador mais poderoso.

Parece-me que também se pode aplicar o kernelization às redes neurais, mas nenhum dos tutoriais sobre redes neurais que eu vi mencionou isso. As pessoas geralmente usam o truque do kernel com redes neurais? Presumo que alguém deve ter experimentado isso para ver se faz uma grande diferença. A kernelização ajuda as redes neurais tanto quanto as SVMs? Por que ou por que não?

(Posso imaginar várias maneiras de incorporar o truque do kernel nas redes neurais. Uma maneira seria usar uma função do kernel adequada para pré-processar a entrada, um vetor em , em uma entrada de maior dimensão, um vetor em R m para . Para redes neurais de várias camadas, outra alternativa seria aplicar uma função de kernel em cada nível da rede neural.)RnRmmn

DW
fonte
2
O truque do kernel funciona quando o seu acesso computacional aos seus pontos de dados consiste em computar produtos internos. Não sei se esse é o caso das redes neurais.
Yuval Filmus

Respostas:

6

Eu acho que você pode estar confundindo a terminologia de uma maneira que está tornando o problema confuso. Os SVMs funcionam definindo um limite de decisão linear, ou seja, um hiperplano. Podemos definir esse hiperplano em termos de produtos internos entre os pontos. Portanto, se definirmos que esse produto interno está em algum espaço dimensional de alta dimensão ou mesmo infinito, o que parece um hiperplano nesse novo espaço não é um linear necessário no espaço de recursos original. Portanto, tudo ainda é linear, a única coisa que fizemos foi incorporar implicitamente (por meio do novo produto interno) os pontos em algum espaço dimensional superior. Talvez você já saiba tudo isso.

Há duas questões a serem consideradas em relação às redes neurais. O primeiro foi apresentado pelo @Yuval Filmus, por causa da camada oculta as redes neurais dependem de mais do que apenas os produtos internos entre os pontos. Se você remover a camada oculta, terá algo como regressão logística, da qual existem versões kernelizadas . Talvez haja uma maneira de contornar isso, mas eu não vejo isso.

Em segundo lugar, você menciona o pré-processamento da entrada projetando-se em um espaço dimensional superior, mas não infinito. As redes neurais definem uma superfície de decisão e essa superfície não é restrita a ser linear. Isso significa que o ganho de projetar os pontos em um espaço dimensional mais alto será diferente, ou seja, pode ser mais fácil encontrar um bom conjunto de pesos, mas não necessariamente tornamos nosso modelo mais poderoso. Isso se segue do teorema da aproximação Universal, que nos diz que, dado um número suficientemente grande de unidades ocultas, podemos aproximar qualquer função (sob algumas restrições). Esta última afirmação é bastante vazia e eu meio que odeio mencionar. Por não dizer nada sobre como encontrar os pesos certos, isso não traz muito para a tabela da perspectiva do aplicativo.

alto
fonte
Obrigado. Sim. Eu sei que podemos pensar nos SVMs como mapeando as entradas originais para algum espaço dimensional mais alto (ou até infinito), e depois fazendo um limite de decisão linear nesse espaço dimensional mais alto. Então, podemos fazer isso com redes neurais também? Podemos mapear as entradas para um espaço dimensional mais alto e tratá-las como a entrada real de uma rede neural? Presumo que podemos (e presumo que também poderíamos fazer isso em cada camada, se quiséssemos). E, se pudermos, minha verdadeira pergunta é: isso oferece uma melhoria tão grande para as redes neurais (na prática) quanto para os SVMs? Por que ou por que não?
DW
Eu sei sobre o teorema da aproximação Universal, mas isso realmente não responde à pergunta (como você indicou). O que me interessa é como as obras neurais tendem a funcionar na prática. Gostaria de saber se o pré-processamento das entradas por meio de um truque de kernelization pode fazer com que as redes neurais tendam a funcionar melhor na prática. É claro que não há garantias e sempre haverá situações em que qualquer coisa que você faça pode piorar as coisas, mas na prática estou me perguntando sobre o comportamento típico (no mesmo sentido em que dizemos que o kernelization tende a tornar os SVMs significativamente mais eficazes, prática).
DW
2
@DW A razão pela qual a kernelização torna os SVMs mais eficazes é porque eles permitem definir limites de decisão não lineares. As redes neurais já podem definir limites de decisão não lineares, portanto, o único benefício de projetar seus dados em um espaço dimensional mais alto seria facilitar o problema de otimização.
alto
1

O truque do kernel é possível para SVMs devido a uma propriedade especial do processo de aprendizado para SVMs. As redes neurais não parecem ter essa propriedade (até onde eu sei).

Seja os pontos no conjunto de treinamento. Normalmente, você esperaria que um algoritmo de aprendizado de máquina analisasse os valores dos 's. No entanto, o processo de aprendizado do SVM tem uma propriedade bastante notável. Não precisa conhecer os valores dos 's. É suficiente poder calcular para qualquer par de pontos de entrada desejado (ou seja, calcular o produto escalar para qualquer par de vetores de entrada de sua escolha); é tudo o que o processo de aprendizado SVM precisa.x1,,xnRdxixixixj

Essa propriedade especial do processo de aprendizado do SVM nos permite usar o truque do kernel. Podemos definir uma função do kernel para que seja o produto escalar de alguma transformação não linear das entradas. Se estivermos transformando os vetores de entrada por meio de uma transformação não linear (para alguns ), definiremos . A próxima propriedade interessante é que, para algumas transformações não lineares , é possível calcular mais eficiência do que computar explicitamente e depois computar seu produto escalar; você pode calcularKK(xi,xj)ϕ:RdRmm>dK(xi,xj)=ϕ(xi)ϕ(xj)ϕK(xi,xj)ϕ(xi),ϕ(xj)K(xi,xj)em tempo (digamos) em vez de tempo.O(d)O(m)

Infelizmente, as redes neurais parecem não ter como tirar vantagem desse truque legal, porque o processo de aprendizado das redes neurais parece depender mais do que apenas os valoresxixjK(xi,xj)xi

DW
fonte
1

Eu gostaria de compartilhar algumas observações que fiz. Dimensão da entrada: 144. Treinei uma rede neural e, durante o treinamento, a saída das camadas ocultas foi dada como entrada para a regressão logística, e o valor médio da função de perda após a montagem do modelo foi plotado.insira a descrição da imagem aqui

insira a descrição da imagem aqui

Podemos ver que, com o aumento do tamanho da camada, os recursos ou a saída das camadas ocultas se tornam linearmente separáveis. Embora esse seja o objetivo de aprender o vetor de recurso kernelizado , a rede neural parece estar fazendo isso internamente. insira a descrição da imagem aqui

explorador
fonte