Я недавно изучал теорию о нейронной сети. И меня немного смущает роль градиентного спуска и функции активации в ANN.

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

Итак, мои вопросы:

  1. Если я использую функцию активации, такую как сигмоид, для модели, но вместо градиента, приличного для улучшения модели, я использую классическое правило обучения персептрона: Wj = Wj + a * (yh (x)), где h (x) сигмоидальная функция с сетевым входом Может ли модель изучить нелинейную сепарабельную задачу?

  2. Если я не включаю нелинейную функцию активации в модель. Просто простой сетевой ввод: h (x) = w0 + w1 * x1 + ... + wj * xj. И используя градиент приличный, чтобы улучшить модель. Может ли модель изучить нелинейную сепарабельную задачу?

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

1
Kyle 11 Ноя 2019 в 18:30

2 ответа

Лучший ответ

Контролируемое обучение 101

Это довольно глубокий вопрос, поэтому я сначала рассмотрю основы, чтобы убедиться, что мы понимаем друг друга. В своей простейшей форме, контролируемое обучение и, в частности, классификация, пытается выучить функцию f такую, что y=f(x), из набора наблюдений {(x_i,y_i)}. На практике возникают следующие проблемы:

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

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

Тогда целью обучения будет определить, какой w является наиболее подходящим. Здесь вмешивается градиентный спуск: это всего лишь инструмент оптимизации, который помогает вам выбрать достаточно хороший w и, таким образом, выбрать конкретную модель h(x).

Проблема в том, что реальная f функция, которую вы пытаетесь аппроксимировать, может не входить в семейство h_w, которое вы решили выбрать, и это так.

Отвечая на актуальные вопросы

Теперь, когда основы описаны, давайте ответим на ваши вопросы:

  1. Помещение нелинейной функции активации, такой как сигмоид, на выходе однослойной модели ИНС не поможет ей изучить нелинейную функцию. Действительно, однослойная ИНС эквивалентна линейной регрессии, а добавление сигмоида преобразует ее в логистическую регрессию. Почему не работает? Позвольте мне попробовать интуитивно понятное объяснение: сигмоид на выходе единственного слоя предназначен для того, чтобы раздавить его до [0,1], чтобы его можно было интерпретировать как вероятность принадлежности к классу. Короче говоря, сигмоид действует как дифференцируемое приближение к жесткой ступенчатой ​​функции. Наша процедура обучения основывается на этой плавности (градиент с хорошим поведением доступен везде), а использование ступенчатой ​​функции может нарушить, например. градиентный спуск. Это не меняет того факта, что граница решения модели является линейной , потому что окончательное решение о классе берется из значения sum(w_i*x_i). Вероятно, это не совсем убедительно, поэтому давайте проиллюстрируем вместо этого, используя Площадка для визуального доказательства.

Что тогда нужно?

Чтобы изучить нелинейно отделимую задачу, у вас есть несколько решений:

2
francoisr 13 Ноя 2019 в 08:16

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

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

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

2
Prune 11 Ноя 2019 в 23:52