Освоение глубокого обучения искусство приближения нелинейностей с помощью кусочных оценок Часть-3
Искусство освоения глубокого обучения приближение нелинейностей с помощью кусочных оценок (Часть 3)
Приветствую всех! Добро пожаловать на третью часть моей серии уроков по Овладению Глубоким Обучением. Эта статья является завершением первых двух частей, под названием Искусство Приближения Нелинейностей с Помощью Частных Оценок. В первых двух статьях мы глубоко погрузились в понимание внутреннего устройства глубоких нейронных сетей. В этом заключительном сегменте мы завершим наше исследование, понимая, как нейронные сети обрабатывают многомерные входы и выходы, которые представляют более реалистичный сценарий. Прежде чем мы погрузимся в контент, я получил предложение, которое заключается в попытке создания лучшей и более понятной визуализации складывания пространства входов более высокой размерности. Давайте быстро изучим эту идею и затем продолжим!

Давайте рассмотрим простую нейронную сеть, как показано выше. Каждый нейрон, обозначенный как hₖ’ на втором скрытом слое, оценивает гиперплоскость с использованием следующего формата:
hₖ’ = θ’ₖ₁h₁ + θ’ₖ₂h₂ + β₁
Уравнение выше представляет двумерную гиперплоскость в пространстве h₁ и h₂. Аналогично, мы можем получить выход y следующим образом:
- Арена компьютерного зрения выберите своего чемпиона
- Vectara запускает прорывную модель с открытым исходным кодом для сравнения и борьбы с галлюцинациями в моделях искусственного интеллекта и языковых моделях
- Команда Имперского колледжа Лондона разработала метод искусственного интеллекта для обучения по имитации с небольшим количеством примеров освоение новых задач в реальном мире с минимальным количеством демонстраций.
y = ∑ ₀¹⁰ Ωᵢhᵢ’ + β₂
Как мы изучили в предыдущих блог-постах, мы можем развернуть уравнение выше, чтобы понять отображение от x к y. Однако наша текущая цель не заключается в конкретном отображении, а визуализации того, как каждый из десяти нейронов вносит свой вклад в процесс складывания.
Выбранный нами нейронная сеть обучена оценивать следующую функцию: f(x) = sin(2x) + cos(x) + x. Каждое hₖ’ представляет собой двумерную поверхность, которую можно визуализировать. Ниже приведена фигура, иллюстрирующая различные поверхности, оцененные каждым из десяти нейронов на втором скрытом слое.

Каждый нейрон уникально складывает поверхность, что дает нам представление о различных способах, которыми может проявиться это складывание. Скрытое оценивание hₖ’ в терминах x в основном является линией, которая является составной частью изображенной выше поверхности. Вы можете представить себе поверхность как бумагу, на которой мы рисуем эту линию, и процесс похож на то, как мы делаем разрезы на сложенной бумаге, а не непосредственно на самой линии.
Теперь давайте изучим, как нейронные сети обрабатывают несколько входов, рассмотрев простую поверхностную нейронную сеть, как показано на рисунке ниже.

Вместо того, чтобы иметь только одну весовую функцию на скрытом узле, у нас теперь есть две весовые функции вместе с смещением. С этим изменением каждый нейрон оценивает плоскость вместо линии, хотя общая механика остается аналогичной. Давайте теперь попробуем оценить отображение f(x₁, x₂) = sin(2x₁)sin(2x₂) + cos(x₁)cos(x₂) + x₁ + x₂ с использованием поверхностной нейронной сети с различной емкостью и визуализируем их оценки.



Увеличивая количество скрытых блоков, наша оценка моделируемой поверхности продолжает улучшаться. Каждый нейрон оценивает плоскость, и функция ReLU может разрезать эти плоскости по любой из четырех сторон, создавая локально линейные поверхности. Как уже упоминалось, чем больше локальных поверхностей у нас есть, тем лучше мы можем приблизить целевую функцию. Важно отметить, что оценочная поверхность строго локально линейная, даже если она может создавать впечатление нелинейной поверхности. Если мы достаточно приблизим, мы сможем четко видеть эти локально линейные области.
Разобравшись, как обрабатываются многомерные входы, нет ограничений, препятствующих нам использовать глубокие нейронные сети для таких оценок. Глубокие сети могут создавать больше таких локально линейных областей по сравнению с неглубокими сетями с тем же количеством нейронов. Например, если мы рассмотрим неглубокую сеть с 100 нейронами и глубокую сеть с двумя слоями, каждый из которых содержит 50 нейронов, глубокая сеть имеет больше параметров только между двумя скрытыми слоями, чем вся неглубокая сеть. Хотя в обоих сетях равное количество нейронов, мы получаем дополнительную мощность оценки за счет большего количества параметров.
Ниже показана та же оценка, выполненная глубокой сетью с 6 нейронами в каждом скрытом слое, и мы можем наблюдать, что оценка такая же хорошая, как и полученная с использованием неглубокой нейронной сети с 32 нейронами.

Продолжим исследование того, как нейронные сети оценивают многомерные выходы. Чтобы лучше понять, рассмотрим две функции, sin(x) и cos(x), обе функции зависят от вещественной переменной x. Нашей целью является одновременное изучение обеих этих функций от входа x. Мы будем обучать простую неглубокую нейронную сеть, изображенную ниже, чтобы оценить y₁ и y₂. В предыдущих примерах мы оценивали функцию с несколькими переменными, но теперь мы оцениваем несколько функций.


Мы можем наблюдать, что оценка показывает 4 линейных региона, соответствующих 3 разрезам, сделанным каждым из 3 нейронов. Интересным моментом здесь является то, что обе оценочные функции имеют разрезы в тех же точках. Это явление происходит потому, что нейроны в последнем слое вычисляют линейные комбинации оценок, сделанных нейронами в предыдущем слое, и эти линейные комбинации проходят через ReLU, что вызывает разрезы до окончательной оценки. Следовательно, окончательная оценка состоит из двух разных линейных комбинаций этих функций, что приводит к разрезам в точно тех же местах для обеих функций

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

Этот блог значительно вдохновлен книгой “Understanding Deep Learning” Саймона Дж.Д. Принса (udlbook.github.io/udlbook/). В следующих частях мы рассмотрим функции потерь и то, как они получаются из оценки максимального правдоподобия. Код, который я использовал для построения графиков, можно найти ниже. Если вам понравился этот блог, я бы очень оценил вашу поддержку, нажав кнопку “Мне нравится”.
Understanding-Deep-Learning/Mastering_Deep_Learning_The_Art_of_Approximating_Non_Linearities_with_Pi…
Contribute to Raagulbharatwaj/Understanding-Deep-Learning development by creating an account on GitHub.
github.com