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

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

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

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

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

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

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

Date: 2014-12-20 07:13 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
С экстраполяцией, очевидно, что никак, если только не знать вид функции. Но мне кажется, что в большинстве инженерных задач интервалы изменения переменных ограничены. А значит, можно на краях что-нибудь посчитать или проверить и скормить сети.

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

Date: 2014-12-20 07:17 pm (UTC)
From: [identity profile] whiteferz.livejournal.com
Дело в том, что если "вы что-то знаете о виде функции", то у Вас задача чистой математической аппроксимации превращается, например, в эконометрическую, динамическое программирование или что-то типа. И тут опять "результат зависит больше не от программного пакета, а от того, кто экстраполирует".

Date: 2014-12-20 08:48 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Далеко не всегда. Это "что-то" может быть, например, что функция ограничена (и известны оценки сверху-снизу) или имеет какой-то тип регулярности (периодична) или асимптотику. В этом случае от аппроксимации никуда не деться, но экстраполяция становится несколько более реальной. Абсолютно верно, что такого рода дополнительные эвристики и их разумное применение -- это всецело квалификация специалиста.

Date: 2014-12-20 08:54 pm (UTC)
From: [identity profile] whiteferz.livejournal.com
Если у Вас функция параметрическая, т. е., определяемая из некоторого класса некоторым малым набором параметров, и есть несколько точек, отклонение от которых нужно этим набором параметров минимизировать, то это уже получается "чисто" эконометрическая задача. Без всяких "например". Там Maximum Likelihood рулит, в чистом виде.

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

Date: 2014-12-20 09:19 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Я не знаю, что такое "чисто" эконометрические задачи, но из общих соображений при анализе аэродинамических моделей на выходе этапа аппроксимации должно быть что-то типа задачи многокритериальной оптимизации, то есть анализ Парето-границы образа функции. И дальше уже можно "крутить ручки" входных параметров, чтобы получить сбалансированный самолет.

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

Date: 2014-12-20 09:20 pm (UTC)
From: [identity profile] whiteferz.livejournal.com
Давайте согласимся.

Да я бы сказал, что с Вами и не спорил вовсе.
From: [identity profile] o-iv.livejournal.com
про то, как нейронную сеть учили отличать русские танки от американских. И обучили. Потом выяснилось, что сеть пошла по пути наименьшего сопротивления - оказалось, что все американские танки предъявлялись на фоне пустыни или выжженой солнцем прерии, а все русские танки предъявлялись на фоне леса или зеленых полей. Вот сеть и научилась: если фон желтый - танк американский, если фон зеленый - танк русский :-)

Profile

kaipa: (Default)
kaipa

April 2017

S M T W T F S
       1
2345678
9101112131415
16171819202122
23242526272829
30      

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 19th, 2025 11:41 am
Powered by Dreamwidth Studios