Рекомендуем

Комбинированные хозблоки в спб "Балтпрофиль".

Счетчики







Купить диплом в Москве Важно учитывать личные навыки и умения, возможности и карьерные амбиции. Любой диплом должен работать на своего обладателя, а не лежать в шкафу. Если подбирать корочки об образовании по своему уровню знаний, возможно получится купить их дешевле, а вы не ударите в грязь лицом при трудоустройстве.

Думал ли Гильберт о нейронных сетях?

За последние 10 лет вышло множество книг и популярных статей, описывающих как внутреннее строение нейронных сетей, так и возможности их использования в различных областях. Тем не менее даже в среде профессионалов, имеющих дело с задачами обработки данных, встречаются существенно различные мнения о возможностях нейросетевых технологий. В этом можно убедиться, заглянув, например, на любой интернетовский форум аналитиков или трейдеров.

И это легко объяснить - ведь обработкой данных, как правило, занимаются люди с аналитическим складом ума, привыкшие к логичным и доказательным объяснениям. И их не удовлетворяют утверждения производителей нейронных сетей, например "нейронные сети имитируют деятельность мозга", или "нейронные сети успешно используются для распознавания образов", или "нейронные сети позволяют обнаруживать сложные зависимости".

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

Вначале мы кратко опишем, каким образом формализуется одна из важнейших практических задач - поиск зависимостей. Человеческий мозг решает ее посредством передачи импульсов между нейронами. Ниже будут описаны принципы работы биологических нейронов и рассказано, как строится математическая модель нейрона, а из этих нейронов мы составим схему простейшей нейронной сети, пригодной для практического использования - трехслойного персептрона. Наконец, мы поговорим о возможностях персептрона, которые, оказывается, связаны с одной из классических проблем Гильберта и с несколькими фундаментальными теоремами математики.

Язык функций

Один из важнейших законов природы - наличие зависимостей между различными явлениями и факторами. Алиса, попав в Страну Чудес, вовремя припомнила одну такую зависимость: "Если выпить из пузырька, на котором написано "Яд", то рано или поздно почувствуешь легкое недомогание". Подобные законы могут выражаться в различных формах. Мы будем говорить лишь об одном, наиболее строгом способе выражения зависимости, а именно в виде функции от нескольких переменных. Например, если ваш начальный вклад в швейцарском банке составлял s франков, а процентная ставка банка - h процентов годовых, то через n лет на счету окажется k=s(1+h)n франков, - вот типичный пример зависимости, выраженной в виде функции от трех переменных k(s,h,n).

К сожалению, задачи, в которых известен точный вид зависимости, на практике встречаются крайне редко. Рассмотрим, например, задачу оценки стоимости квартиры. Зная общую и жилую площадь квартиры, число комнат, район, удаленность от метро, тип дома и другие параметры, можно (имея некоторый опыт) вычислить ее примерную стоимость. Об опыте здесь упомянуто не зря: именно на основе личного опыта человек мысленно конструирует функцию зависимости цены от нескольких параметров, а затем вычисляет значение этой функции (на наборе показателей данной квартиры). Говоря языком математики, для решения этой задачи нужно сделать следующее.

1. Обозначить параметры квартиры в виде переменных (x1,x2...xn) и выбрать шкалы измерений. Например, район расположения квартиры можно характеризовать числом от 0 до 100, которое будет означать степень его престижности.

2. На основе нескольких десятков примеров совершенных сделок по продаже квартир построить функцию F(x1,x2...xn), которая даст значение, близкое к реальной стоимости квартиры в каждой сделке. Конечно, эта функция должна быть вычислимой для любой квартиры, причем цены похожих по всем параметрам квартир должны быть близкими.

3. Теперь, определив параметры любой квартиры, мы можем подставить их в формулу нашей функции, считая полученное число оценкой стоимости квартиры. Если расхождение с истинной стоимостью окажется слишком велико, это будет означать, что рассмотренные нами ранее примеры сделок недостаточно полно характеризуют цену квартиры - либо есть какие-то важные, не учтенные нами параметры (например, шумность улицы), либо мы рассмотрели недостаточное число сделок.

Приближенные функциональные зависимости очень часто присутствуют в реальных задачах. Так, например, потребление энергии в частном секторе описывается функцией, зависящей от времени года, температуры воздуха, силы ветра, влажности, облачности и других известных параметров. В основе технического анализа рынков лежит утверждение, что завтрашняя цена является функцией от нескольких предыдущих цен, значений различных индикаторов и некоторых макроэкономических показателей. Ясно, что эти функции невозможно определить априори, в отличие от функции капитала в швейцарском банке. Ясно также, что эти функции записываются достаточно сложными формулами неизвестного вида, в которых участвуют все переменные. Имеет смысл решать задачу подбора подходящей функции, если известны значения этой функции в некоторых точках. Похожими задачами, в принципе, занимается статистика, однако существенный прогресс в их решении достигнут лишь в некоторых случаях (например, для оценки линейных функций). Поэтому для нахождения зависимостей активно разрабатываются и другие подходы, в том числе и технология нейронных сетей.

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

Биологические нейроны

Так как на эту тему написано уже много популярных статей, остановимся лишь на основных принципах строения и функционирования биологических нейронов. Вот эти принципы.

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

2. Нейрон состоит из дендритов (по ним принимаются сигналы от других нейронов), тела нейрона (оно обеспечивает жизнедеятельность всей клетки) и аксона (это длинная нить, по ней нейрон может передавать сигналы другим нейронам). Аксон контактирует с дендритами других нейронов посредством специальных образований - синапсов, которые влияют на силу сигнала. Таким образом, синапсы можно считать входами нейрона.

3. Сигналы, полученные нейроном от нескольких других нейронов одновременно, суммируются. Если сила суммарного сигнала превышает некоторое пороговое значение (важна также длительность сигнала), то нейрон возбуждается, генерирует собственный импульс и передает его по аксону.

Биологическая нейронная теория очень развита и сложна. Чтобы построить математическую модель процессов, происходящих в мозгу, мы вынуждены принять несколько предположений:

1. Будем считать, что каждый нейрон обладает некоторой передаточной функцией, определяющей условия его возбуждения в зависимости от силы полученных сигналов. Предполагается, что передаточные функции не зависят от времени;

2. При прохождении синапса сигнал меняется линейно, то есть сила сигнала умножается на некоторое число. Это число мы будем называть весом синапса или весом соответствующего входа нейрона;

3. Деятельность нейронов синхронизирована, то есть время прохождения сигнала от нейрона к нейрону фиксированное и одинаково для всех связей. То же самое относится ко времени обработки принятых сигналов.

Заметим, что веса синапсов могут меняться со временем - это принципиальная особенность. Именно изменение этих весов отвечает за возможность различной реакции организма на одни и те же условия в разные моменты времени, то есть возможность обучения. Нужно признать, что все эти предположения достаточно сильно огрубляют биологическую картину. Например, время передачи сигнала напрямую зависит от расстояния между нейронами (оно может быть достаточно большим). Тем удивительнее, что при этих огрублениях полученная модель сохраняет некоторые важные свойства биологических систем, в том числе адаптивность и сложное поведение.

Математический нейрон

Построим математическую модель нейрона (далее мы будем называть ее нейроном). Нейрон - это несложный автомат, преобразующий входные сигналы в выходной сигнал. Сигналы силы x1,x2...xn, поступая на синапсы, преобразуются линейным образом, то есть к телу нейрона поступают сигналы силы w1x1,w2x2...wnxn (здесь wi - веса соответствующих синапсов). Для удобства к нейрону добавляют еще один вход (и еще один вес u), считая, что на этот вход всегда подается сигнал силы 1. Нейрон суммирует эти сигналы, затем применяет к сумме некоторую фиксированную функцию p и выдает на выходе сигнал силы y=p(w1x1+w2x2+...+wnxn+u). Эта модель была предложена Маккалоком и Питтсом еще в 1943 году. При этом использовались пороговые передаточные функции, и правила формирования выходного сигнала y выглядели особенно просто: если w1x1+w2x2+...+wnxn+u>T, то y=1, иначе y=0.

В 1960 году на основе таких нейронов Розенблатт построил первый в мире автомат для распознавания изображений букв, который был назван "персептрон" (perception - восприятие). Этот автомат имел очень простую однослойную структуру и мог решать только относительно простые (линейные) задачи. С тех пор были изучены и более сложные системы из нейронов, использующие в качестве передаточных любые непрерывные функции. Одна из наиболее часто используемых передаточных функций называется сигмоидной (или логистической) и задается формулой s(x)=1/(1+e-x).

Нейронная сеть

Нейронная сеть - это набор нейронов, определенным образом связанных между собой. В качестве основного примера рассмотрим сеть, которая достаточно проста по структуре и в то же время широко используется для решения прикладных задач - трехслойный персептрон с n входами и одним выходом.

Как следует из названия, эта сеть состоит из трех слоев. Собственно нейроны располагаются во втором (скрытом) и в третьем (выходном) слое. Первый слой только передает входные сигналы ко всем H нейронам второго слоя (здесь H=4). Каждый нейрон второго слоя имеет n входов, которым приписаны веса wi1,wi2...win (для нейрона с номером i). Получив входные сигналы, нейрон суммирует их с соответствующими весами, затем применяет к этой сумме передаточную функцию и пересылает результат на один из входов нейрона третьего слоя. В свою очередь, нейрон выходного слоя суммирует полученные от второго слоя сигналы с некоторыми весами vi.

Для определенности будем предполагать, что передаточные функции в скрытом слое являются сигмоидными, а в выходном слое используется функция p(x)=x, то есть взвешенная сумма выходов второго слоя и будет ответом сети. Итак, подавая на входы персептрона любые числа x1,x2...xn, мы получим на выходе значение некоторой функции F(x1,x2...xn), которое является ответом (реакцией) сети. Очевидно, что ответ сети зависит как от входного сигнала, так и от значений ее внутренних параметров - весов нейронов. Выпишем точный вид этой функции:

Как видно из этого равенства, такой персептрон реализует только функции определенного вида, а именно суммы значений сигмоидных функций, где в качестве аргументов подставляются линейные комбинации входных сигналов. Например, функцию F(x1,x2)=x1x2 не удается с ходу представить в таком виде. Естествен вопрос: а может ли персептрон реализовать достаточно сложную функцию? Этот вопрос по сути чисто математический - о представимости одних функций посредством других. Так как задача очень просто сформулирована, неудивительно, что и занимались ею ученые достаточно давно. Удивительно то, что ответ на нее был получен сравнительно недавно - в 1989 году. Формулировке этого ответа посвящены следующие два раздела.

Тринадцатая проблема Гильберта

На несколько минут обратимся к самым что ни на есть фундаментальным вопросам математики. В 1900 году гениальный немецкий математик Давид Гильберт в своем докладе на Международном конгрессе математиков в Париже сформулировал 23 нерешенные задачи, которые он считал наиболее важными в математике того времени. Эти задачи получили название "проблемы Гильберта" и оказали огромное влияние на развитие всей математики 20 века. До сих пор не все проблемы Гильберта полностью решены, а многие из них побудили ученых к созданию совершенно новых теорий.

Как выяснилось в последние годы, теория нейронных сетей также связана с одной из этих проблем, а именно с тринадцатой. Тринадцатую проблему Гильберта можно сформулировать так. Верно ли, что существует непрерывная функция от трех переменных, которая не может быть представлена в виде композиции непрерывных функций от двух переменных? Под композицией функций понимается подстановка одной функции в качестве аргумента другой. Например, функция трех переменных F(x,y,z)=xz+yz может быть представлена в виде композиции функций двух переменных F(x,y,z)=s(M(x,z),M(y,z)), где M(x,z)=xz и s(a,b)=a+b.

Тринадцатая проблема Гильберта была решена в 1957 году тогдашним студентом мехмата МГУ, а ныне академиком Владимиром Игоревичем Арнольдом. Он показал, что любая непрерывная функция трех переменных представляется в виде композиции непрерывных функций двух переменных. Таким образом, гипотеза Гильберта была опровергнута. В том же 1957 году советский математик Андрей Николаевич Колмогоров доказал гораздо более сильную теорему.

Теорема Колмогорова

Теорема. Любая непрерывная функция от n переменных F(x1,x2...xn) может быть представлена в виде

где gj и hij - непрерывные функции, причем hij не зависят от функции F.

Эта теорема означает, что для реализации функций многих переменных достаточно операций суммирования и композиции функций одной переменной. Удивительно, что в этом представлении лишь функции gj зависят от представляемой функции F, а функции hij универсальны. Заметим, что формула (**) очень похожа на формулу (*).

Если перевести эту теорему на язык нейронных сетей, то она будет звучать так: "Если известны функции hij, то любую непрерывную функцию от n переменных можно точно реализовать с помощью простой нейронной сети на основе трехслойного персептрона. Для этого достаточно подобрать 2n+1 передаточных функций gj нейронов скрытого слоя".

Такая сеть не будет персептроном в строгом смысле, так как на входах второго слоя к сигналам необходимо применить функции hij, а не просто умножить их на веса. К сожалению, при всей своей математической красоте, теорема Колмогорова малоприменима на практике. Это связано с тем, что функции hij - негладкие и трудно вычислимые; также неясно, каким образом можно подбирать функции gj для данной функции F.

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

Аппроксимация нейронными сетями

Чтобы получить более значимые для практики результаты в этом направлении, приходится ослабить наши требования. Во-первых, для нас непринципиально найти точное представление данной функции - достаточно иметь приближенное. Во-вторых, мы можем по необходимости увеличивать число нейронов в скрытом слое, насколько это требуется. Новый вариант теоремы Колмогорова, обладающий этими особенностями, был открыт только в 1989 году, зато одновременно несколькими авторами. Так как все эти работы стали классическими, дадим точные ссылки.

1. Hornick, Stinchcombe, White.
   Multilayer Feedforward Networks are Universal Approximators.
   Neural Networks, 1989, v.2, N5.
2. Cybenko. Approximation by Superpositions of a Sigmoidal Function.
   Mathematical Control Signals Systems, 1989, 2.
3. Funahashi. On the Approximate Realization of Continuous Mappings
   by Neural Networks. Neural Networks, 1989, v.2, N3.

Для определенности сформулируем теорему в том виде, в каком она приведена во второй из названных работ. Пусть F(x1,x2...xn) - любая непрерывная функция, определенная на ограниченном множестве, и e>0 - любое сколь угодно малое число, означающее точность аппроксимации. Через "сигму" мы обозначаем сигмоидную функцию, определенную выше.

Теорема. Существуют такое число H, набор чисел wij, ui и набор чисел vi, что функция

приближает данную функцию F(x1,x2...xn) с погрешностью не более e на всей области определения.

Читатель легко заметит, что эта формула полностью совпадает с выражением (*) для функции, реализуемой персептроном. В терминах теории нейронных сетей эта теорема формулируется так. Любую непрерывную функцию нескольких переменных можно с любой точностью реализовать с помощью обычного трехслойного персептрона с достаточным количеством нейронов в скрытом слое.

О рекламе в индустрии нейронных сетей

Настало время обсудить, насколько сильно лукавят производители нейронных сетей, расхваливая достоинства этой технологии. Также обсудим несколько стандартных клише, которые часто встречаются в популярных статьях.

"Нейронные сети имитируют деятельность мозга" - это верно лишь отчасти. В современной биологии нет единой точки зрения на механизмы действия мозга. Однако нейронные сети обладают определенными биологическими чертами (такими как параллельность обработки информации в нейронах и адаптивность), которые все же делают эту фразу уместной.

"Нейронная сеть - это черный ящик". Справедливое в целом утверждение, отражающее важный недостаток нейросетевого подхода - неинтерпретируемость результатов. Ответ сети - сложная нелинейная функция от входных значений, и поэтому непросто понять, какими особенностями входного примера обусловлена реакция сети. Для анализа нейронных сетей существует специальное программное обеспечение, которое иногда позволяет справиться с этой проблемой. Однако заметим, что во многих практических задачах интерпретация не столь важна, как сам результат. Например, это относится к задачам распознавания речи, сжатия и распознавания изображений и многим другим. В этой связи утверждение, что "нейронные сети успешно используются для распознавания образов", полностью обосновано. В литературе можно найти тому множество конкретных примеров из области техники, медицины и так далее.

"Нейронные сети позволяют обнаруживать сложные зависимости". Это утверждение в литературе формулируется и в таком виде: "нейронные сети являются универсальными аппроксиматорами", что в точности соответствует приведенной выше теореме 1989 года. Оно означает, что с помощью стандартного персептрона в принципе возможно решать любые задачи прогнозирования и оценки, в которых существуют функциональные зависимости. Мы говорим "в принципе", так как эта теорема не указывает, каким способом можно подобрать веса каждого нейрона, используя набор примеров. Процесс подбора весов называется обучением нейронной сети. Настоящим прорывом в теории обучения нейронных сетей стало открытие в 1986 году метода обратного распространения ошибки (error back-propagation). Ныне этот метод очень широко используется в различных приложениях, однако он требует настройки нескольких параметров обучения и не всегда приводит к оптимальному результату. Поэтому нужно четко понимать, что хотя нейронная сеть и является механизмом, способным решить широкий класс задач, но правила управления этим механизмом пока что находятся на уровне догадок и эвристических соображений. Многие крупные фирмы и частные лица имеют собственные разработки в этой области, однако они не торопятся обнародовать их, предпочитая получать доход от непосредственного использования своих систем.

"Нейронные сети способны к самообучению". Это утверждение многие трактуют неправильно. Хотя алгоритм обучения (например методом обратного распространения) - автоматическая процедура, это не означает, что пользователю совсем не придется думать, применяя технологию нейронных сетей. Требуется грамотно готовить данные, выбирать тип сети, подстраивать различные параметры и учиться интерпретировать результаты - только тогда нейронная сеть станет действительно полезным инструментом.

"Нейронные сети способны корректно действовать в совершенно новых ситуациях" - утверждение, не лишенное основания. Например, нейросетевые системы распознавания речи могут достаточно качественно воспринимать речь диктора, голос которого система никогда не слышала ранее. Однако речь - довольно специфичный объект, и это утверждение нельзя безоговорочно распространять на любые задачи. Бессмысленно, например, предсказывать финансовый кризис, если в процессе обучения сети ей не было предъявлено ни одного примера кризисной ситуации.

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

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

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

Тимофей Струнков, PC Week RE, 1999 год