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.
machine-learning
probability
bayesian
AnarKi
fonte
fonte
Respostas:
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 , x′ x x′ 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:
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).
fonte
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) .
fonte