Аппроксимация нейронными сетями
Dec. 19th, 2014 03:21 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
На собеседование приходил студент-пятикурсник, который занимается аппроксимацией модели аэродинамики самолета при помощи нейронных сетей. Модель большая и сложная, у нее около 700 переменных и 70 критериев. Поскольку эту тему он по идее должен знать лучше всего, в основном говорили о нейронных сетях.
Маленькое отступление. А зачем вообще использовать нейронную сеть для аппроксимации функции, если известно, как ее вычислять? Это имеет смысл в двух случаях:
- когда вычисление достаточно дорого
- когда размерность задачи очень большая
Обычно из второго следует первое. В задачах вроде моделирования самолета каждый расчет -- это отдельная вычислительная задача, решаемая численными отнюдь не быстрыми методами. Причем, интерес представляет именно результат, образ функции, взаимозависимость критериев. Это требует аппроксимации образа функции, который неизвестен, а не самой функции. Но чтобы аппроксимировать образ, надо много-много раз вычислять функцию. Вот где на помощь может прийти нейронная сеть.
А может и не прийти. Поэтому меня, как математика, сразу же заинтересовал вопрос, а почему вообще известно, если известно, что нейронная сеть -- это хороший способ аппроксимации? Есть ли гарантия, что нейронная сеть вообще "сойдется"? Как оценить точность аппроксимации? Какой объем обучающей "выборки" необходим для достижения желаемой точности и т.д. К сожалению, мой собеседник ни на один вопрос ответить не смог. Видимо, физикам достаточно знать что метод "работает", а как он работает -- это их мало волнует.
Тем не менее, вопрос, на мой взгляд, отнюдь не праздный. Более строго, тут возникают следующие вопросы:
- Какие классы функций может точно или приближенно аппроксимировать нейронная сеть и какие требования на ее конструкцию?
- Какой объем обучения необходим для аппроксимации с заданной точностью?
Исчерпывающий ответ на вопрос, какие функции может аппроскимировать нейронная сеть, дан в этой статье А.Н. Горбаня. Если очень грубо, то это не что иное, как обобщение известной теоремы Веерштрасса об аппроксимации непрерывной функции многочленами. Что такое нейронная сеть? "Нейрон получает на входе вектор сигналов x, вычисляет его скалярное произведение на вектор весов α и некоторую функцию одного переменного φ(x,α) [функцию активации]. Результат рассылается на входы других нейронов или передается на выход. Таким образом, нейронные сети вычисляют суперпозиции простых функций одного переменного и их линейных комбинаций." То есть вопрос переформулируется в вид, можно ли аппроксимировать произвольную непрерывную функцию суперпозицией и линейной комбинацией простых функций одного переменного. Ответ положительный (это следствие из более общего утверждения). Никаких специальных условий на функцию активации не накладывается.
Однако, с практической точки зрения это лишь пол-ответа. Можно утверждать, что для любой функции существует нейронная сеть, которая аппроксимирует ее с любой точностью. Но нельзя утверждать, что, скажем, трех- или четырехслойная сеть на это способна. Сходу, статей, которые бы отвечали на этот вопрос, я не нашел. Но он должен быть, так как, скажем, Колмогоров доказал, что любую непрерывную функцию размерности n можно точно представить в виде суммы из 2n+1 произведений функций одного переменного. Для приближенного представления должны быть похожие оценки, которые можно перевести на язык "слоев" нейронных сетей.
Ответ на второй вопрос, как я подозреваю, сильно зависит от архитектуры и стратегии обучения нейронной сети. Кроме того, есть ряд "не нейронных" методов, которые позволяют оценить точность аппроксимации. Простейший способ, это использовать известную функцию и подсчитать точность апроксимации точно (прошу прощения за тавтологию) при разных архитектурах сети, как это показано, например, в этой статье.
Маленькое отступление. А зачем вообще использовать нейронную сеть для аппроксимации функции, если известно, как ее вычислять? Это имеет смысл в двух случаях:
- когда вычисление достаточно дорого
- когда размерность задачи очень большая
Обычно из второго следует первое. В задачах вроде моделирования самолета каждый расчет -- это отдельная вычислительная задача, решаемая численными отнюдь не быстрыми методами. Причем, интерес представляет именно результат, образ функции, взаимозависимость критериев. Это требует аппроксимации образа функции, который неизвестен, а не самой функции. Но чтобы аппроксимировать образ, надо много-много раз вычислять функцию. Вот где на помощь может прийти нейронная сеть.
А может и не прийти. Поэтому меня, как математика, сразу же заинтересовал вопрос, а почему вообще известно, если известно, что нейронная сеть -- это хороший способ аппроксимации? Есть ли гарантия, что нейронная сеть вообще "сойдется"? Как оценить точность аппроксимации? Какой объем обучающей "выборки" необходим для достижения желаемой точности и т.д. К сожалению, мой собеседник ни на один вопрос ответить не смог. Видимо, физикам достаточно знать что метод "работает", а как он работает -- это их мало волнует.
Тем не менее, вопрос, на мой взгляд, отнюдь не праздный. Более строго, тут возникают следующие вопросы:
- Какие классы функций может точно или приближенно аппроксимировать нейронная сеть и какие требования на ее конструкцию?
- Какой объем обучения необходим для аппроксимации с заданной точностью?
Исчерпывающий ответ на вопрос, какие функции может аппроскимировать нейронная сеть, дан в этой статье А.Н. Горбаня. Если очень грубо, то это не что иное, как обобщение известной теоремы Веерштрасса об аппроксимации непрерывной функции многочленами. Что такое нейронная сеть? "Нейрон получает на входе вектор сигналов x, вычисляет его скалярное произведение на вектор весов α и некоторую функцию одного переменного φ(x,α) [функцию активации]. Результат рассылается на входы других нейронов или передается на выход. Таким образом, нейронные сети вычисляют суперпозиции простых функций одного переменного и их линейных комбинаций." То есть вопрос переформулируется в вид, можно ли аппроксимировать произвольную непрерывную функцию суперпозицией и линейной комбинацией простых функций одного переменного. Ответ положительный (это следствие из более общего утверждения). Никаких специальных условий на функцию активации не накладывается.
Однако, с практической точки зрения это лишь пол-ответа. Можно утверждать, что для любой функции существует нейронная сеть, которая аппроксимирует ее с любой точностью. Но нельзя утверждать, что, скажем, трех- или четырехслойная сеть на это способна. Сходу, статей, которые бы отвечали на этот вопрос, я не нашел. Но он должен быть, так как, скажем, Колмогоров доказал, что любую непрерывную функцию размерности n можно точно представить в виде суммы из 2n+1 произведений функций одного переменного. Для приближенного представления должны быть похожие оценки, которые можно перевести на язык "слоев" нейронных сетей.
Ответ на второй вопрос, как я подозреваю, сильно зависит от архитектуры и стратегии обучения нейронной сети. Кроме того, есть ряд "не нейронных" методов, которые позволяют оценить точность аппроксимации. Простейший способ, это использовать известную функцию и подсчитать точность апроксимации точно (прошу прощения за тавтологию) при разных архитектурах сети, как это показано, например, в этой статье.
Остался не озвученным ответ...
Date: 2014-12-19 12:42 am (UTC)С другой стороны, пока на Земле нет достаточных вычислительных мощностей для полного правильного расчета аэродинамики самолета класса Б747 или А380. И, может быть, с учетом того, что даже для простых задач реальность сильно отклоняется от расчета по навье-стоксу, нейронная сеть даст лучший результат?
В общем, это надо проверять. И, судя по всему, кто-то это активно проверяет :-) но это другая история, и не мне о ней рассказывать, я уже не в теме пару лет как...
Re: Остался не озвученным ответ...
Date: 2014-12-19 08:02 am (UTC)Не, нейронная сеть не даст лучший результат, чем навье-стокс в такой постановке. В нее же загоняются результаты расчетов на каких-то наборах параметров. Однако, можно было бы сделать другой эксперимент. Прогнать через нейронную сеть результаты реальных продувок и попытаться сапроксимировать.
Ценность численных методов не в том, что с помощью них можно полностью рассчитать самолет. Пока что нет, только самые простые. А в том, что можно отсечь заведомо нелетающие схемы, прикинуть какие-то новые, предварительно рассчитать критические углы и т.д. Это подготовительная работа к реальным продувкам, которые гораздо более дорогие и трудоемкие.
Я тоже не совсем в теме, но ЦАГИ рядом, поэтому в воздухе идеи витают :) Как-то так, как мне кажется.
Теперь моя нейронная сеть завела меня куда-то :-)
Date: 2014-12-19 10:03 am (UTC)А по поводу нейронных сетей - естественно, кормить сеть заведомо ошибочными результатами расчетов - не очень верный путь. Ее учить надо на результатах реальных продувок и реальных измеренных характеристиках. Тогда есть шанс получить полезный результат.
Про численные методы - да, они позволяют отбросить какие-то заведомо неживые схемы. С другой стороны, 99% выпускников технического вуза эти схемы отбросят тоже :-)
И из личного опыта в качестве заказчика CFD-расчета, полезность результата зависит почти полностью от того, кто делает расчет.
А общий вывод, который я вынес из: основная польза моделирования вот прямо сейчас - это картинки, которые можно показать начальнику/инвестору/публике и сказать: "видите, по результатам компьютерного моделирования разработанная нами фигня будет работать!" А не: "Мамой клянусь, все заработает!" :-)
Re: Теперь моя нейронная сеть завела меня куда-то :-)
Date: 2014-12-19 12:39 pm (UTC)Насчет численных методов я не совсем точно выразился. Слово "заведомо" -- лишнее. В данном контексте, они помогают сэкономить время проверки на продувке тех схем, которые скорее всего не рабочие, и наоборот идентефицировать потенциально интересные, которые имеет смысл рассчитать более точно или даже продуть. Причем до численного моделирования, это непонятно. Как-то так.
Ваш общий вывод приводит к другому неновому, но и не ставшему от этого менее утешительным, выводу: падению уровня образования и компетенции. Первый вопрос, который бы возник у меня, если бы мне принесли "результаты компьютерного моделирования" -- что это за модель и насколько адекватно она отражает моделируемую область. И "мамой клянусь!" тут тоже не пройдет :)
Численные методы штука тонкая.
Date: 2014-12-19 12:59 pm (UTC)По поводу моего общения с CFD - вопрос не в уровне образования. Все участники процесса были людьми весьма известными в узких кругах. Понятно, что "мамой клянусь" не пройдет, но я знаю некоторое количество людей из уст которых это гарантия того, что действительно все заработает. Вот когда они начинают показывать красивые картинки, а не каракули на салфетках и случайных бумажках, это настораживает :-)
Re: Численные методы штука тонкая.
Date: 2014-12-19 01:08 pm (UTC)А что у Вас был за опыт с CFD, если не секрет?
> Вот когда они начинают показывать красивые картинки, а не каракули на салфетках и случайных бумажках, это настораживает :-)
Человека настораживает любое отклонение от стандартного паттерна -- это нормальная реакция :)
Не знаю, секрет или не очень :-)
Date: 2014-12-19 02:36 pm (UTC)Re: Не знаю, секрет или не очень :-)
Date: 2014-12-19 02:40 pm (UTC)А никто и не говорил, что это не...
Date: 2014-12-19 02:54 pm (UTC)А суперкомпьютеры работающие делают еще три организации с половиной организации, не считая HP и IBM.
Собственно, если пойти на http://top50.supercomputers.ru/?page=rating то они там все в правой колонке перечислены :-)
Re: А никто и не говорил, что это не...
Date: 2014-12-19 10:00 pm (UTC)Из остальных про СКИФ я знал, но забыл, а вот про РСК технологии не слышал. Спасибо за ссылку.
А когда Вы говорите "наш рекорд" -- Вы кого "нас" имеете ввиду? Где работаете? :)
"наш рекорд" имею в виду ту команду...
Date: 2014-12-23 10:53 am (UTC)Я в той компании уже давно не работаю, но недавно виделся с одним из "хозяев" суперкомпьютера. Компьютер продолжает считать :-)
no subject
Date: 2014-12-20 01:11 pm (UTC)А вот насчет возможности использовать полученную аппроксимацию для, скажем, экстраполяции - ответ в общем случае, очевидно, отрицательный. (Берем косинус и приближаем параболой на отрезке от плюс-минус два пи пополам, затем... экстраполируем - и всё понятно.)
Кстати, если немного в сторону - попробовали обучать "нейронную сеть" отбирать фотоснимки ландшафтов, на которых есть окопавшиеся танки, а на которых нет.
И сеть дала 90%-ную точность, что вначале было оценено, как суперуспех. Затем стали разбираться с оставшимися десятью % и начали ставить диагностические тесты.
Оказалось, нейронная сеть определяет подходящий для маскировки танков ландшафт, как фактически ощетинившийся танками...
То есть, никогда нельзя точно сказать, чему нейронная сеть научится на самом деле. Как и с человеком, собственно...
no subject
Date: 2014-12-20 07:13 pm (UTC)Пример с танками просто замечательный!
no subject
Date: 2014-12-20 07:17 pm (UTC)no subject
Date: 2014-12-20 08:48 pm (UTC)no subject
Date: 2014-12-20 08:54 pm (UTC)Естественно, если траектория рассчитывается не в лоб, а каким-то типичным для, скажем, аэродинамики хитровывернутым способом, это добавляет слой усложнения, но более не логический, а вычислительный.
no subject
Date: 2014-12-20 09:19 pm (UTC)У меня такое впечатление, что в нашем с Вами разговоре смешались "люди и кони", так как часть комментариев относится к аппроксимации вообще, а часть -- к конкретным приложениям, о которых у нас с Вами могут быть разные представления. Причем контекст может переключаться в пределах предложения :) Поэтому, давайте согласимся, что мы оба говорим в общем верные вещи, а спорить о деталях можно в рамках конкретной модели, которой у нас перед глазами сейчас нет.
no subject
Date: 2014-12-20 09:20 pm (UTC)Да я бы сказал, что с Вами и не спорил вовсе.
Это развитие очень давней байки...
Date: 2014-12-23 10:58 am (UTC)