Основное предназначение ядерных преобразований (kernel trick) в нейрокомпьютинге — это расширение количества входных данных искусственного нейрона за счет различных нелинейных функций от комбинаций входных данных.
Наибольшее распространение ядерные преобразования получили в машине опорных векторов (SVM). Основная причина тому, что SVM также, как и векторная машина Решетова (VMR) – это метод обучения одного единственного искусственного нейрона. Но поскольку машина опорных векторов в отличие от VMR слишком склонна к переобучению и не обладает свойством автопонижения размерности входов, то применение ядер там было чрезмерно осторожным. А точнее, прежде чем задействовать слабый искусственный интеллект машины опорных векторов с ядерными преобразованиями, необходимо было приложить сильный естественный интеллект биологических специалистов. Более того, из-за склонности к переобучению SVM, увеличение размерности входов с помощью ядер приводило к «проклятию размерности», а сами ядерные преобразования для неё были ограниченными, а именно применялись в основном только двухвекторные варианты. Это ограничение было связано с тем, что специалист визуально разглядывал многочисленные двумерные диаграммы с на которых проецировались классы в виде разноцветных точек, с целью обнаружения хоть какой либо сепарабельности с помощью ядер. И только после того, как человек с помощью естественного интеллекта находил подходящее ядро, можно было применить интеллект искусственный.
С появлением VMR положение дел изменилось. Искусственный интеллект стал сильным, но не по определению Тьюринга, а гораздо сильнее. Ведь по Тьюрингу «сильным» признавался тот искусственный интеллект, который сравнивался с человеческим (неотличим от человеческого). Но VMR уже гораздо сильнее человека. Ведь, если ранее биологическому специалисту по ядерным преобразованиям приходилось выполнять огромную работу с помощью своего естественного интеллекта, чтобы обнаружить какое нибудь подходящее двувекторное или максимум трёхвекторное ядро, то VMR за более короткий промежуток времени может подобрать не одно, а комбинации подходящих многовекторных ядер в более чем трёхмерном пространстве для решения задач бинарной классификации. Естественный интеллект теперь отдыхает. Да впрочем, и пусть отдыхает. Интеллектуальные задачи должны решаться с помощью интеллекта искусственного . Ведь основная задача человечества в том, чтобы освободить самих себя от рутинной деятельности, а не быть рабом обстоятельств.
Вернёмся к (нашим баранам) ядерным преобразованиям. Поскольку для решения задач нам понадобятся различные ядерные преобразования, то чтобы их унифицировать мы сначала создадим интерфейс с абстрактными необходимыми методами, а потом уже для каждого отдельного преобразования будем создавать соответствующие классы.
Создаём интерфейс на Java:
package libvmr;
/**
* Интерфейс ядерных преобразований
* @author Yury V. Reshetov
* @version 1.0
*/
public interface KernelTrick {
/**
* Преобразовать двумерный массив
* @return
*/
public double[][] getTransformData(double[][] samples,double[] results);
/**
* Преобразовать одномерный массив
* @return
*/
public double[] getTransformData(double[] sample);
/**
* Возвращает идентификаторы используемых переменных
* @return идентификаторы переменных
*/
public String[] getVariables();
}
Комментариев нет:
Отправить комментарий