?

Log in

No account? Create an account
ushastyi
ushastyi
.............. .... ..........

Links

Август 2017
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

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

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

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

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

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

Исчерпывающий ответ на вопрос, какие функции может аппроскимировать нейронная сеть, дан в этой статье А.Н. Горбаня. Если очень грубо, то это не что иное, как обобщение известной теоремы Веерштрасса об аппроксимации непрерывной функции многочленами. Что такое нейронная сеть? "Нейрон получает на входе вектор сигналов x, вычисляет его скалярное произведение на вектор весов α и некоторую функцию одного переменного φ(x,α) [функцию активации]. Результат рассылается на входы других нейронов или передается на выход. Таким образом, нейронные сети вычисляют суперпозиции простых функций одного переменного и их линейных комбинаций." То есть вопрос переформулируется в вид, можно ли аппроксимировать произвольную непрерывную функцию суперпозицией и линейной комбинацией простых функций одного переменного. Ответ положительный (это следствие из более общего утверждения). Никаких специальных условий на функцию активации не накладывается.

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

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

Comments
Остался не озвученным ответ...

на главный вопрос: смог ли студент ответить на ваши вопросы? И на второстепенный вопрос: взяли ли вы его на работу? Так что, ваша нейронная сеть на данный момент сошлась в какую-то странную точку, делать с которой непонятно что :-)
С другой стороны, пока на Земле нет достаточных вычислительных мощностей для полного правильного расчета аэродинамики самолета класса Б747 или А380. И, может быть, с учетом того, что даже для простых задач реальность сильно отклоняется от расчета по навье-стоксу, нейронная сеть даст лучший результат?
В общем, это надо проверять. И, судя по всему, кто-то это активно проверяет :-) но это другая история, и не мне о ней рассказывать, я уже не в теме пару лет как...

Re: Остался не озвученным ответ...

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

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

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

Я тоже не совсем в теме, но ЦАГИ рядом, поэтому в воздухе идеи витают :) Как-то так, как мне кажется.

Теперь моя нейронная сеть завела меня куда-то :-)

Я эту фразу прочитал но, почему-то, она у меня как именно результат собеседования не прошла в сознание.
А по поводу нейронных сетей - естественно, кормить сеть заведомо ошибочными результатами расчетов - не очень верный путь. Ее учить надо на результатах реальных продувок и реальных измеренных характеристиках. Тогда есть шанс получить полезный результат.
Про численные методы - да, они позволяют отбросить какие-то заведомо неживые схемы. С другой стороны, 99% выпускников технического вуза эти схемы отбросят тоже :-)
И из личного опыта в качестве заказчика CFD-расчета, полезность результата зависит почти полностью от того, кто делает расчет.
А общий вывод, который я вынес из: основная польза моделирования вот прямо сейчас - это картинки, которые можно показать начальнику/инвестору/публике и сказать: "видите, по результатам компьютерного моделирования разработанная нами фигня будет работать!" А не: "Мамой клянусь, все заработает!" :-)

Re: Теперь моя нейронная сеть завела меня куда-то :-)

Это был не результат собеседования, а его процесс :)

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

Ваш общий вывод приводит к другому неновому, но и не ставшему от этого менее утешительным, выводу: падению уровня образования и компетенции. Первый вопрос, который бы возник у меня, если бы мне принесли "результаты компьютерного моделирования" -- что это за модель и насколько адекватно она отражает моделируемую область. И "мамой клянусь!" тут тоже не пройдет :)

Численные методы штука тонкая.

Я нарывался на задачи, где при определенных условиях, например, алгоритм сходится к одному и тому же результату с точностью до восьмого знака после запятой за одинаковые 8 итераций. Независимо от исходных данных и, что интересно, выдерживает замену некоторых +1 на -1 в ключевой формуле... Есть задачи, которые в цифре просто принципиально не могут сходиться. Есть задачи, которые сходятся, дают похожий на правду результат, но... ошибочный.
По поводу моего общения с CFD - вопрос не в уровне образования. Все участники процесса были людьми весьма известными в узких кругах. Понятно, что "мамой клянусь" не пройдет, но я знаю некоторое количество людей из уст которых это гарантия того, что действительно все заработает. Вот когда они начинают показывать красивые картинки, а не каракули на салфетках и случайных бумажках, это настораживает :-)

Re: Численные методы штука тонкая.

Конечно тонкая. Поэтому надо понимать, когда и что применимо, и перепроверять с разных сторон. Но мы отошли от темы.

А что у Вас был за опыт с CFD, если не секрет?

> Вот когда они начинают показывать красивые картинки, а не каракули на салфетках и случайных бумажках, это настораживает :-)

Человека настораживает любое отклонение от стандартного паттерна -- это нормальная реакция :)

Не знаю, секрет или не очень :-)

Несколько лет назад пришлось позаниматься разработкой систем охлаждения для суперкомпьютеров. Наш рекорд плотности мощности так никто и не побил, кажется. Уже пять лет как.

Re: Не знаю, секрет или не очень :-)

Ого. А где используется? Кроме Т-Платформ у нас кто-то делает суперкомьютеры?

А никто и не говорил, что это не...

... в Т-Платформах было :-)
А суперкомпьютеры работающие делают еще три организации с половиной организации, не считая HP и IBM.
Собственно, если пойти на http://top50.supercomputers.ru/?page=rating то они там все в правой колонке перечислены :-)

Re: А никто и не говорил, что это не...

Но я попробовал угадать, и угадал :)

Из остальных про СКИФ я знал, но забыл, а вот про РСК технологии не слышал. Спасибо за ссылку.

А когда Вы говорите "наш рекорд" -- Вы кого "нас" имеете ввиду? Где работаете? :)

"наш рекорд" имею в виду ту команду...

... которая разрабатывала блэйд систему для суперкомпьютера, которая тогда позволила получить рекордную "плотность производительности" на стандартную стойку. Ну и за одно получилась рекордная плотность мощности. Самое интересное, что эта система несколько раз апгрейдилась и наращивалась, и, кажется, до сих пор удерживает оба рекорда.
Я в той компании уже давно не работаю, но недавно виделся с одним из "хозяев" суперкомпьютера. Компьютер продолжает считать :-)

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

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

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

И сеть дала 90%-ную точность, что вначале было оценено, как суперуспех. Затем стали разбираться с оставшимися десятью % и начали ставить диагностические тесты.

Оказалось, нейронная сеть определяет подходящий для маскировки танков ландшафт, как фактически ощетинившийся танками...

То есть, никогда нельзя точно сказать, чему нейронная сеть научится на самом деле. Как и с человеком, собственно...

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

Пример с танками просто замечательный!

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

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

Если у Вас функция параметрическая, т. е., определяемая из некоторого класса некоторым малым набором параметров, и есть несколько точек, отклонение от которых нужно этим набором параметров минимизировать, то это уже получается "чисто" эконометрическая задача. Без всяких "например". Там Maximum Likelihood рулит, в чистом виде.

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

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

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

Давайте согласимся.

Да я бы сказал, что с Вами и не спорил вовсе.

Это развитие очень давней байки...

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