О нейронных сетях
Сейчас этот термин порой применяется как отсылка к чему-то удивительному и отчасти таинственному. Т.к. некогда я занимался этой темой подробно и даже читал в институте соответствующий спецкурс, попробую коротко рассказать о нейросетях – вдруг кому-то будет интересно?
Область нейронных сетей в целом – это набор из нескольких догадок и методов, позволяющих применять принципы организации вычислений, взятые из области биологии, изучающие работу человеческого мозга.
Уже в XIX веке был изучен биологический принцип работы нервной системы человека и животных – сигналы передаются параллельно по связям (аксонам) между многочисленными нервными клетками (нейронами). Нейрон активируется, если суммарный сигнал превышает некий порог. Интенсивность связей может настраиваться (обучаться) и содержит информацию об опыте восприятия окружающего мира.
Но дальше базовых принципов компьютерная аналогия не идет – искусственные нейронные сети это всего лишь методы решения задач, которые могут быть запрограммированы как на обычном компьютере, так и на специальных ускорителях с параллельными вычислителями.
Итак, нейронная сеть логически представляет собой множество очень простых вычислителей, суммирующих приходящие сигналы, каждый из которых предварительно умножается на некий весовой коэффициент и затем вычисляющих от полученной суммы нелинейную функцию, в простейшем случае выдающую всего два ответа: 1 или 0. Предварительное определение упомянутых коэффициентов и называется процессом обучения нейронной сети.
Основных догадок (принципов) я бы назвал три - они отражают три типа обучения: определение значений коэффициентов заранее, обучение с учителем и самообучение.
- сети, запоминающие (благодаря определению коэффициентов) несколько устойчивых состояний. Какой бы сигнал ни предъявить на вход сети – она выдаст на выходе то из числа запомненных состояний, что ближе всего к предъявленному. Такие сети применяются для очистки сигналов от всяких помех. Коэффициенты связей могут вычисляться заранее аналитически или опеределяться численно. На такой догадке работают т.н. «сети Хопфилда», «сети Гроссберга» т т.п. К типу, когда коэффициенты определяются заранее, относятся и сети, моделирующие физические явления в различных физических средах.
- сети, обучаемые «с учителем» («персептрон Ф.Розенблатта» 1957г, далее развитые многослойные варианты, предложенные проф.В.Вапником и А.Червонинкисом, проф.А.И.Галушкиным. Обе монографии 1974 г). Нейроны объединяются в группы так, что все нейроны одной группы связаны со всеми нейронами другой группы. Такие группы называются слоями. Внешний сигнал поступает сначала на вход нейронов первого слоя, выход первого – на вход второго слоя и т.д. Выход последнего слоя равен выходу сети. Такие сети обучаются с помощью «учителя» (обучающей выборки) - то есть последовательности пар: {предъявляемый сигнал на входе - требуемый результат на выходе}. Для формирования выборки требуются опыт и мастерство. Результат обучения – набор коэффициентов всех нейронов сети. Со временем, сеть можно дообучать.
- самообучающиеся карты («сеть Кохонена») можно изобразить в виде огромной эластичной рыболовной сети: каждый узелок связан с соседними. Сеть обучается без учителя – при поступлении на вход некого сигнала, находящегося в этом поле, все соседние ячейки подтягиваются к нему и еще подтягивают (с меньшей интенсивностью) соседние. В результате, те области, куда «попало» много входных сигналов, будут содержать сгустки узелков сети, а где мало – и узелков почти не останется. Из такой картины легко выделить кластеры (точки сгущения) и ассоциации между ними. Так определяются и смысловые связи, решаются задачи классификации сложных объектов.
Большим преимуществом нейросетевых методов является и быстрота их работы – обученная сеть распознает сигнал (например, лицо человека) за один проход – доли секунды, а все вычислительные затраты переносятся на процесс обучения.
Однако, кроме перечисленных методов, есть еще одно, но самое важное условие применения нейронных сетей, без которого результат их работы будет бесполезным: это предобработка сигнала, представление его в виде, удобном для распознавания. Скажем, для узнавания лиц, надо не просто подать на вход сети фотографию лица, но сначала вычислить по ней несколько важейших параметров: отношение размеров по высоте и ширине, расстояние между глазами, от глаз до затылка, от носа до подбородка и т.д. Для располнавания сигналов - представить его в виде композиции базовых сигналов и т.п. И уже этот набор параметров уже распознается сетью, которая выдает ответ с некой рассчитываемой долей уверенности.
Так что ничего таинственного, но зато кое-что приносящее неплохие результаты!
Виктор Судариков
Сайт Светланы Анатольевны Коппел-Ковтун
Комментарии
То есть чтобы научить НС распознать, скажем, породу собаки, нужно скормить ей (НС, конечно) не только n фоток одной породы, но и несколько характерных параметров: типа отношения длины морды к расстоянию между глазами, ушами и тд (например, многоугольник построить и по отношениям между сторонами делать выводы)?
Из комментариев
- Ответить
Ссылка на комментарийОставить комментарий