Метод безъитеративного обучения однослойной сети прямого распространения с линейной активационной функцией

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В этой статье не будет ни одной строчки кода, тут будет просто теория метода
обучения нейронных сетей, который я разрабатываю последние пол-года. Реализацию метода планирую в следующей статье.

Перспективы безъитеративного обучения нейронных сетей очень велики, это, потенциально, самый быстрый способ обучения НС. Начать цикл работ по безъитеративному обучению я хочу с самого простого случая(где упрощать уже некуда). А именно, с однослойной сети прямого распространения с линейной активационной функцией, взвешенного сумматора. Функция ошибки для одного нейрона задана как:

$f_{los}(W)=sum_{i=1}^n[y_i-(sum^m_{j=i}w_jcdot x^i_j)]^2$

Где $W = {w_1,...w_k};$, m — количество входов в нейронной сети, n — мощность обучающей выборки, которая состоит из пар: выходного идеального значения «y» для каждого нейрона и входного вектора «x». Так же стоит отметить, что обучать каждый нейрон можно по отдельности.
Сеть будет обучена, если: $f_{los}(W)  ightarrow min$, т.е. если ошибка будет минимальной.

Учитывая, что функция активации линейна, а уравнение функции ошибки квадратичное, то очевидно что максимума такая функция не имеет, а следовательно условие при котором $frac{partial f_{los}(W)}{partial w_i} = 0$, это условие минимума. Давайте для начала определим эту производную и приравняем её к 0.

$frac{partial f_{los}(W)}{partial w_j} = -2cdot sum_{i=1}^{n}(y_i-sum _{j=1}^mw_jcdot x_j^i)x_k^i = 0 ;$

После ряда преобразований получаем:

$sum_{j=1}^m(w_jcdot sum_{i=1}^{n}x_j^icdot x^i_k)=-sum_{i=1}^{n}x_k^icdot y_i;$

Где k — номер уравнения в системе.

Для завершения обучения нам нужно рассчитать вектор весов W. Не сложно заметить что последнее выражение, если его записать для каждого уравнения, представляет собой СЛАУ относительно W. Для решения этой системы я выбрал метод Крамера(метод Гаусса быстрее работает, но он не такой наглядный). Каждый вес нейрона можно записать как:

$w_j=frac{det(A_j)}{det(A)}; A= egin{pmatrix} a_{11} ..... .... a_{1m} ..... .... .. ... .. .. a_{m1} ..... .... a_{mm} end{pmatrix}; B=egin{pmatrix} b_1 .. .. b_m end{pmatrix}; a_{kj} = sum_{i=1}^nx_j^icdot x^i_k; _k = -sum_{i=1}^ny_icdot x^i_k;$

Здесь матрица $A_j$ это матрица «A» в которой j-й столбец заменен на вектор B. Это обучение одного нейрона, в силу того, что нейроны никак не связаны между собой можно обучать их параллельно, независимо друг от друга.

P.S. Если есть замечания по статье, пишите, всегда рад конструктивной критики.

Источник: habrahabr.ru

Комментарии: