Funções de covariância ou kernels - o que exatamente são?

13

Sou bastante novo no campo dos processos gaussianos e como eles estão sendo aplicados no aprendizado de máquina. Eu continuo lendo e ouvindo sobre as funções de covariância sendo a principal atração desses métodos. Então, alguém poderia explicar de maneira intuitiva o que está acontecendo nessas funções de covariância?

Caso contrário, se você puder indicar um tutorial ou documento específico que os explique.

AnarKi
fonte
Capítulo 4. gaussianprocess.org/gpml '
Sycorax diz Reinstate Monica
Se isso for principalmente um problema de solicitação de referência, você poderá adicionar a tag "reference". (A questão é bastante amplo, mas se você aceitar pessoas apontando para o que você deve ir e ler, isso resolve em grande parte essa questão.)
Silverfish

Respostas:

12

Em termos gerais, uma função de kernel ou covariância especifica a relação estatística entre dois pontos x , x no seu espaço de entrada; isto é, quão marcadamente uma mudança no valor do Processo Gaussiano (GP) em x se correlaciona com uma mudança no GP em x . Em certo sentido, você pode pensar em k ( , k(x,x)x,xxx como definindo uma semelhança entre as entradas (*).k(,)

Os kernels típicos podem simplesmente depender da distância euclidiana (ou transformações lineares dos mesmos) entre os pontos, mas a diversão começa quando você percebe que pode fazer muito, muito mais.

Como David Duvenaud coloca:

Os kernels podem ser definidos em todos os tipos de estruturas de dados: texto, imagens, matrizes e até kernels. Criar um kernel com um novo tipo de dados costumava ser uma maneira fácil de obter um documento NIPS.

Para uma visão geral fácil dos kernels para GPs, recomendo vivamente o seu Kernel Cookbook e suas referências.


(*) Como observa @Dikran Marsupial, cuidado para que o contrário não seja verdadeiro; nem todas as métricas de similaridade são kernels válidos (veja a resposta dele).

lacerbi
fonte
8

K(x,x)=ϕ(x)ϕ(x)ϕ() é uma função que mapeia os vetores de entrada no espaço de feição.

Então, por que o kernel deve ser interpretável como um produto interno em algum espaço de recurso? A razão é que é muito mais fácil conceber limites teóricos sobre o desempenho da generalização para modelos lineares (como regressão logística) do que para modelos não lineares (como uma rede neural). A maioria dos modelos lineares pode ser escrita para que os vetores de entrada apareçam apenas na forma de produtos internos. Isso significa que podemos construir um modelo não linear construindo um modelo linear no espaço de recursos do kernel. Como é uma transformação fixa dos dados, todos os limites teóricos de desempenho para o modelo linear se aplicam automaticamente ao novo modelo não linear do kernel *.

Um ponto importante que é difícil de entender a princípio é que tendemos a não pensar em um espaço de recurso que seria bom para nosso aplicativo específico e, em seguida, projetamos um kernel que deu origem a esse espaço de recurso. Em geral, criamos uma boa métrica de similaridade e, em seguida, verificamos se é um kernel (o teste é direto, se alguma matriz de avaliações em pares da função do kernel em pontos na posição geral é definida positiva, então é um kernel válido) .

Dikran Marsupial
fonte
1
"um kernel (o teste é direto, se alguma matriz de avaliações aos pares da função do kernel for definida positiva, então é um kernel válido)." Eu acredito que você precisa incluir "em pontos distintos".
Mark L. Stone