Parece haver muitos algoritmos de aprendizado de máquina que dependem das funções do kernel. SVMs e NNs, para citar apenas dois. Então, qual é a definição de uma função do kernel e quais são os requisitos para que ela seja válida?
Parece haver muitos algoritmos de aprendizado de máquina que dependem das funções do kernel. SVMs e NNs, para citar apenas dois. Então, qual é a definição de uma função do kernel e quais são os requisitos para que ela seja válida?
Respostas:
Para x, y em S, certas funções K (x, y) podem ser expressas como um produto interno (geralmente em um espaço diferente). K é freqüentemente chamado de kernel ou função do kernel. A palavra kernel é usada de maneiras diferentes em toda a matemática, mas esse é o uso mais comum no aprendizado de máquina.
O truque do kernel é uma maneira de mapear observações de um conjunto geral S para um espaço interno do produto V (equipado com sua norma natural), sem precisar calcular explicitamente o mapeamento, na esperança de que as observações obtenham uma estrutura linear significativa em V Isso é importante em termos de eficiência (computando produtos de ponto em um espaço dimensional muito alto muito rapidamente) e praticidade (podemos converter algoritmos ML lineares em algoritmos ML não lineares).
Para que uma função K seja considerada um kernel válido, ela deve atender às condições de Mercer . Isso em termos práticos significa que precisamos garantir que a matriz do kernel (calculando o produto do kernel de todos os pontos de dados que você possui) sempre será semi-definida positiva. Isso garantirá que a função do objetivo do treinamento seja convexa, uma propriedade muito importante.
De Williams, Christopher KI e Carl Edward Rasmussen. " Processos gaussianos para aprendizado de máquina ", o MIT Press 2, n. 3 (2006). P. 80 .
Além disso, kernel = função do kernel.
Os kernels usados nos algoritmos de aprendizado de máquina geralmente atendem a mais propriedades, como semidefinido positivo.
Vai tentar uma explicação menos técnica.
Primeiro, comece com o produto escalar entre dois vetores. Isso mostra como os vetores são "semelhantes". Se os vetores representam pontos no seu conjunto de dados, o produto escalonado informa se eles são semelhantes ou não.
Mas, em alguns (muitos) casos, o produto escalar não é a melhor métrica de similaridade. Por exemplo:
Então, em vez de usar o produto dot, você usa um "kernel", que é apenas uma função que leva dois pontos e fornece uma medida de sua similaridade. Não tenho 100% de certeza de quais condições técnicas uma função deve atender para ser tecnicamente um kernel, mas essa é a ideia.
Uma coisa muito legal é que o kernel pode ajudá-lo a colocar o conhecimento do seu domínio no problema, no sentido de que você pode dizer que dois pontos são os mesmos por causa da razão xyz que surge quando você conhece o domínio.