Основное предназначение ядерных преобразований (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(); }
Комментариев нет:
Отправить комментарий