В этой статье не будет ни одной строчки кода, тут будет просто теория метода обучения нейронных сетей, который я разрабатываю последние пол-года. Реализацию метода планирую в следующей статье.
Перспективы безытеративного обучения нейронных сетей очень велики, это, потенциально, самый быстрый способ обучения НС. Начать цикл работ по безытеративному обучению я хочу с самого простого случая(где упрощать уже некуда). А именно, с однослойной сети прямого распространения с линейной активационной функцией, взвешенного сумматора. Функция ошибки для одного нейрона задана как:
Где
, m — количество входов в нейронной сети, n — мощность обучающей выборки, которая состоит из пар: выходного идеального значения «y» для каждого нейрона и входного вектора «x». Так же стоит отметить, что обучать каждый нейрон можно по отдельности.
Сеть будет обучена, если:
, т.е. если ошибка будет минимальной.
Учитывая, что функция активации линейна, а уравнение функции ошибки квадратичное, то очевидно что максимума такая функция не имеет, а следовательно условие при котором
, это условие минимума. Давайте для начала определим эту производную и приравняем её к 0.
После ряда преобразований получаем:
Где k — номер уравнения в системе.
Для завершения обучения нам нужно рассчитать вектор весов W. Не сложно заметить что последнее выражение, если его записать для каждого уравнения, представляет собой СЛАУ относительно W. Для решения этой системы я выбрал метод Крамера(метод Гаусса быстрее работает, но он не такой наглядный). Каждый вес нейрона можно записать как:
Здесь матрица
это матрица «A» в которой j-й столбец заменен на вектор B. Это обучение одного нейрона, в силу того, что нейроны никак не связаны между собой можно обучать их параллельно, независимо друг от друга.
P.S. Если есть замечания по статье, пишите, всегда рад конструктивной критики.
Перспективы безытеративного обучения нейронных сетей очень велики, это, потенциально, самый быстрый способ обучения НС. Начать цикл работ по безытеративному обучению я хочу с самого простого случая(где упрощать уже некуда). А именно, с однослойной сети прямого распространения с линейной активационной функцией, взвешенного сумматора. Функция ошибки для одного нейрона задана как:
Где
Сеть будет обучена, если:
Учитывая, что функция активации линейна, а уравнение функции ошибки квадратичное, то очевидно что максимума такая функция не имеет, а следовательно условие при котором
После ряда преобразований получаем:
Где k — номер уравнения в системе.
Для завершения обучения нам нужно рассчитать вектор весов W. Не сложно заметить что последнее выражение, если его записать для каждого уравнения, представляет собой СЛАУ относительно W. Для решения этой системы я выбрал метод Крамера(метод Гаусса быстрее работает, но он не такой наглядный). Каждый вес нейрона можно записать как:
Здесь матрица
P.S. Если есть замечания по статье, пишите, всегда рад конструктивной критики.