В Интернете присутствует много различной информации про искусственные нейронные сети (ИНС), многим это интересно, но не многие понимают что это, и как оно работает.
На самом деле в этом нет ничего сложного и тем более страшного. Самое главное — знать что такое вектор и матрица. В данной статье тратить время на пояснение что значат эти слова я не буду, да и нет смысла, глобальная паутина осветит по данным вопросам куда лучше чем я.
Перейдем к сути вопроса… Что же скрывается под таинственным понятием ИНС? Ответ очень прост! ИНС — это просто набор векторов и матриц. Причем этот набор имеет некоторый «порядок».
Опишем простыми словами трехслойную ИНС. Данные три слоя это ни что иное как три вектора, определенной размерности. Причем среди этих векторов:
один входной, один выходной и, как не сложно догадаться, один скрытый.
Пример трехслойной ИНС
Размерность входного вектора зависит от того, какую задачу будет решать наша сеть. Допустим наша сеть будет отвечать на вопрос какая фигура
нарисована в матрице 5х5 элементов, состоящей из нулей и единиц — квадрат, ромб или крест.
1 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 1
Так как матрица 5х5 элементов, то следовательно размерность входного вектора 25 элементов. На выходе мы можем получить три различных ответа,
а значит размерность выходного вектора 3 элемента. Размерность скрытого слоя (вектора) определяется размерами выходного. Она не может быть меньше и
не должна быть гораздо больше. В данном случае приемлемо будет взять порядка 7-10 элементов.
Определившись с размерностью векторов можно перейти к описанию связей между слоями. Данные связи могут быть различны и в нашем случае
каждый элемент слоя соединен с каждым элементом соседних слоев. Говоря же проще, связь между двумя слоями — это матрица, размерности NxM, где N — размерность первого слоя, а M — второго. Каждый элемент данной матрицы характеризуется черной палочкой на изображении выше и имеет числовую характеристику.
Вот вам и вся ИНС. Как же она работает?
Под работой ИНС подразумевается обычное умножение вектора на матрицу. Входной вектор умножается на матрицу связей с соседним слоем, в результате получается
вектор, который умножается на матрицу связей с третьим слоем и т.д. пока мы не дойдем до выходного слоя. Выходной вектор будет результатом работы сети,
который стоит обработать в соответствии с поставленной задачей. Если взять пример с рисунками в матрице, то если на выходе
мы получаем вектор из трех элементов, в котором максимальное значение достигнуто в первой позиции, то мы может утверждать что на вход была подана матрица с рисунком квадрат и т.д.
Как же сеть будет давать правильный результат, спросите Вы? Для этого существуют процедуры обучения. Их достаточно много и описывать их нет смысла,
так как это уже «голая» математика. Если не вникать в подробности, то цель алгоритмов обучения изменить значения в матрицах связей. Например обучение с учителем.
На вход сети подается матрица с ромбом. Пользователь знает что сейчас нужно получить ответ ромб, а значит идеальным ответ на выходе будет вектор (0 1 0).
Сеть проработала, и пользователь видит, что результат работы и желаемый результат сильно отличаются, даже допуская некоторую погрешность, а значит значения в матрицах связей, нас не устраивают. В зависимости от алгоритма обучения, данные веса корректируются, и все повторяется до тех пор пока мы не уложимся в нашу погрешность.
Если же проводить данные операции подавая в сеть наши рисунки по очереди, то веса скоректируются так, что сеть будет давать правильный ответ на любую нашу
входную последовательность, даже если в ней допущены некоторые неточности, например
1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0
Вот и все. Как видно, все достаточно просто и доступно каждому.