www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Концепции глубокого обучения - ЧАСТЬ 1

Дата публикации Jun 7, 2017

Функции активации

Сигмовидная функция:

Производное сигмовидной железы:

Ранее мы использовали функцию сигмоида в качестве функции активации на наших скрытых единицах и, в случае классификации, на единице вывода. Однако это не единственная функция активации, которую вы можете использовать, и на самом деле она имеет некоторые недостатки.

Как отмечено в материале обратного распространения, производная сигмовидной кишки максимально достигает 0,25 (см. Выше). Это означает, что когда вы выполняете обратное распространение с сигмовидными блоками, ошибки, возвращающиеся в сеть, будут сокращаться как минимум на 75% на каждом слое. Для слоев, близких к входному слою, обновления весов будут крошечными, если у вас много слоев, и эти веса будут занимать очень много времени для обучения. Из-за этого сигмоиды потеряли свою популярность в качестве активаций на скрытых юнитах.

Введите выпрямленные линейные единицы

Вместо сигмоидов в последних сетях глубокого обучения используютсявыпрямленные линейные единицы(ReLUs) для скрытых слоев. Выпрямленная линейная единица имеет выход 0, если вход меньше 0, и необработанный вывод в противном случае. То есть, если входное значение больше 0, выходное значение равно входному. Математически это выглядит так

е(Икс) = Тах (Икс, 0).

Выходом функции является либо вход,Иксили 0, в зависимости от того, что больше. Так что еслиИкс= -1, тогдае(Икс) = 0 и еслиИкс= 0,5, тогдае(Икс) = 0,5. Графически это выглядит так:

Активации ReLU - это самая простая нелинейная функция активации, которую вы можете использовать. Когда вход положительный, производная равна 1, поэтому нет эффекта исчезновения, который вы видите на распространяющихся обратно ошибках от сигмоидов.Исследование показалоЭто приводит к гораздо более быстрому обучению больших сетей. Большинство фреймворков, таких как TensorFlow и TFLearn, упрощают использование ReLU на скрытых слоях, поэтому вам не нужно реализовывать их самостоятельно.

Недостатки

Возможно, что большой градиент может установить веса таким образом, чтобы единица измерения ReLU всегда была равна 0. Эти «мертвые» единицы всегда будут равны 0, и большая часть вычислений будет потрачена впустую при обучении.

ОтКурс Андрея Карпати CS231n:

К сожалению, юниты ReLU могут быть хрупкими во время тренировок и могут «умереть». Например, большой градиент, протекающий через нейрон ReLU, может привести к тому, что веса обновятся таким образом, что нейрон никогда больше не активируется ни на одном из точек данных. Если это произойдет, то градиент, текущий через единицу, будет всегда нулевым с этой точки. То есть блоки ReLU могут необратимо умереть во время обучения, поскольку они могут быть сбиты с коллектора данных. Например, вы можете обнаружить, что до 40% вашей сети могут быть «мертвыми» (т.е. нейроны, которые никогда не активируются по всему набору обучающих данных), если скорость обучения установлена ​​слишком высокой. При правильной настройке скорости обучения это не так часто.

Софтмакс

Ранее мы видели нейронные сети, используемые для регрессии (велосипедисты) и бинарной классификации (допуск в аспирантуру). Часто вы обнаружите, что хотите предсказать, принадлежит ли какой-либо вход одному из многих классов. Это проблема классификации, но сигмоид больше не является лучшим выбором. Вместо этого мы используемSoftMaxфункция. Функция softmax сдавливает выходы каждого блока в диапазоне от 0 до 1, как сигмоид. Он также делит каждый выход так, что общая сумма выходов равна 1. Выход функции softmax эквивалентен категориальному распределению вероятности, он сообщает вам вероятность того, что любой из классов истинен.

Единственная реальная разница между этим и нормальной сигмоидой состоит в том, что softmax нормализует выходы так, чтобы они суммировались в единицу. В обоих случаях вы можете вставить вектор и получить вектор, в котором выходные данные представляют собой вектор одинакового размера, но все значения сжаты между 0 и 1. Для двоичной классификации вы должны использовать сигмоид с одной выходной единицей. Но если вы выполняете многочленную классификацию, вам нужно использовать несколько выходных единиц (по одной для каждого класса) и активацию softmax на выходе.

Например, если у вас есть три входа для функции softmax, например, для сети с тремя выходными модулями, это будет выглядеть так:

Математически функция softmax показана ниже, гдеZявляется вектором входных данных для выходного слоя (если у вас есть 10 выходных единиц, то есть 10 элементов вZ). И снова,Jиндексирует выходные единицы.

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

Чтобы лучше это понять, подумайте о том, чтобы научить сеть распознавать иклассифицировать рукописные цифрыиз изображений. В сети будет десять выходных блоков, по одному на каждую цифру от 0 до 9. Затем, если вы передадите ей изображение с номером 4 (см. Ниже), будет активирована выходная единица, соответствующая цифре 4.

Изображение изMNIST набор данных

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

Для приведенного выше примера вывод функции softmax может выглядеть следующим образом:

Пример вывода softmax для сети, предсказывающей цифру, показанную выше

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

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

Функция Softmax против сигмоидальной функции:

Свойства сигмовидной функции

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

Сигмовидная функция

  • Сигмовидная функция, используемая длябинарная классификацияв модели логистической регрессии.
  • При создании искусственных нейронов сигмовидная функция использовалась какфункция активации,
  • В статистикесигмоидальные графы функцийраспространены как кумулятивная функция распределения.

Свойства Softmax Function

Ниже приведены некоторые свойства функции softmax.

  • Рассчитанные вероятности будут в диапазоне от 0 до 1.
  • Сумма всех вероятностей равна 1.

Softmax Использование функции

  • Используется во множественной классификации модели логистической регрессии.
  • При построении нейронных сетей функции softmax используются на разных уровнях слоя.

Разница между сигмовидной функцией и функцией Softmax

Категориальная кросс-энтропия

Ранее мы использовали сумму квадратов ошибок в качестве функции стоимости в наших сетях, но в этих случаях мы имеем только единичные (скалярные) выходные значения.

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

Это просто означает, что у вас есть вектор длины числа классов, и элемент метки помечен 1, в то время как другие метки установлены в 0. В случае классификации цифр из предыдущего, наш вектор метки для изображения число 4 будет:

Y= [0,0,0,0,1,0,0,0,0,0]

И наш выходной вектор предсказания может быть что-то вроде

Y^ = [0.047,0.048,0.061,0.07,0.330,0.062,0.001,0.213,0.013,0.150].

Мы хотим, чтобы наша ошибка была пропорциональна расстоянию между этими векторами. Чтобы рассчитать это расстояние, мы будем использоватьперекрестная энтропия, Затем наша цель при обучении сети состоит в том, чтобы сделать наши векторы предсказания как можно ближе к векторам меток путем минимизации перекрестной энтропии. Расчет кросс-энтропии показан ниже:

Расчет кросс-энтропии

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

Что здорово в использовании быстрого кодирования для вектора метки, так это то, чтоYJ0 за исключением одного истинного класса. Тогда все условия в этой сумме, кроме гдеYJ= 1 равны нулю, и перекрестная энтропия простоD= -lnY^ Для истинного ярлыка. Например, если ваше входное изображение имеет цифру 4 и оно помечено 4, то только стоимость единицы, соответствующей 4, имеет значение в кросс-энтропийной стоимости.

Хороший блог об этом:https://ljvmiranda921.github.io/notebook/2017/08/13/softmax-and-the-negative-log-likelihood/

Дивергенция КЛ:

https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained

Кредиты: из конспекта лекции:https://classroom.udacity.com/nanodegrees/nd101/syllabus

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map