Новости

Микрофронтенды: о чем это мы?

https://habr.com/ru/company/raiffeisenbank/blog/459540/
  • Блог компании Райффайзенбанк
  • Высокая производительность
  • JavaScript
  • Микросервисы

Чемпионат по программированию: разбираем задачи для фронтенд-разработчиков

https://habr.com/ru/company/yandex/blog/460139/
  • Блог компании Яндекс
  • Спортивное программирование
  • Занимательные задачки
  • JavaScript
  • Интерфейсы

Нейросети и глубокое обучение, глава 3, ч.2: почему регуляризация помогает уменьшать переобучение?

https://habr.com/ru/post/459816/
  • Python
  • Программирование
  • Машинное обучение
  • Искусственный интеллект



Эмпирически мы увидели, что регуляризация помогает уменьшать переобучение. Это вдохновляет – но, к сожалению, не очевидно, почему регуляризация помогает. Обычно люди объясняют это как-то так: в каком-то смысле, менее крупные веса имеют меньшую сложность, что обеспечивает более простое и действенное объяснение данных, поэтому им надо отдавать предпочтение. Однако это слишком краткое объяснение, а некоторые его части могут показаться сомнительными или загадочными. Давайте-ка развернём эту историю и изучим её критическим взглядом. Для этого предположим, что у нас есть простой набор данных, для которого мы хотим создать модель:


По смыслу, здесь мы изучаем явление реального мира, и x и y обозначают реальные данные. Наша цель – построить модель, позволяющую нам предсказывать y как функцию x. Мы могли бы попробовать использовать нейросеть для создания такой модели, но я предлагаю нечто более простое: я попробую моделировать y как многочлен от x. Я буду делать это вместо нейросетей, поскольку использование многочленов делает объяснение особенно понятным. Как только мы разберёмся со случаем многочлена, мы перейдём к НС. На графике выше имеется десять точек, что означает, что мы можем найти уникальный многочлен 9-го порядка y = a0x9+a1x8+…+a9, абсолютно точно укладывающийся в данные. И вот график этого многочлена.


Идеальное попадание. Но мы можем получить неплохое приближение, используя линейную модель y = 2x


Какая из них лучше? Какая с большей вероятностью окажется истинной? Какая будет лучше обобщаться на другие примеры того же явления реального мира?

Сложные вопросы. И на них нельзя получить точные ответы, не имея дополнительной информации по поводу лежащего в основе данных явления реального мира. Однако давайте рассмотрим две возможности: (1) модель с многочленом 9-го порядка истинно описывает явление реального мира, и поэтому, обобщается идеально; (2) правильная модель – это y=2x, но у нас имеется дополнительный шум, связанный с погрешностью измерений, поэтому модель подходит не идеально.

Априори нельзя сказать, какая из двух возможностей правильная (или что не существует некоей третьей). Логически, любая из них может оказаться верной. И различие между ними нетривиально. Да, на основе имеющихся данных можно сказать, что между моделями имеется лишь небольшое отличие. Но допустим, мы хотим предсказать значение y, соответствующее какому-то большому значению x, гораздо большему, чем любое из показанных на графике. Если мы попытаемся это сделать, тогда между предсказаниями двух моделей появится огромная разница, поскольку в многочлене 9-го порядка доминирует член x9, а линейная модель линейной и остаётся.

Одна точка зрение на происходящее – заявить, что в науке нужно использовать более простое объяснение, если это возможно. Когда мы находим простую модель, объясняющую многие опорные точки, нам так и хочется закричать: «Эврика!». Ведь маловероятно, что простое объяснение появится чисто случайно. Мы подозреваем, что модель должна выдавать некую связанную с явлением правду. В данном случае модель y=2x+шум кажется гораздо более простой, чем y = a0x9+a1x8+… Было бы удивительно, если бы простота возникла случайно, поэтому мы подозреваем, что y = 2x+шум выражает некую лежащую в основе истину. С этой точки зрения модель 9-го порядка просто изучает влияние местного шума. И хотя модель 9-го порядка идеально работает для данных конкретных опорных точек, она не сможет обобщиться на другие точки, в результате чего у линейной модели с шумом предсказательные возможности будут лучше.

Давайте посмотрим, что означает эта точка зрения для нейросетей. Допустим, в нашей сети в основном имеются малые веса, как обычно бывает в регуляризированных сетях. Благодаря небольшим весам поведение сети не меняется сильно при изменении нескольких случайных входов там и сям. В итоге регуляризированной сети сложно выучить эффекты местного шума, присутствующие в данных. Это похоже на стремление к тому, чтобы отдельные свидетельства не сильно влияли на выход сети в целом. Регуляризированная сеть вместо этого обучается реагировать на такие свидетельства, которые часто встречаются в обучающих данных. И наоборот, сеть с крупными весами может довольно сильно менять своё поведение в ответ на небольшие изменения входных данных. Поэтому нерегуляризированная сеть может использовать большие веса для обучения сложной модели, содержащей много информации о шуме в обучающих данных. Короче говоря, ограничения регуляризированных сетей позволяют им создавать относительно простые модели на основе закономерностей, часто встречающихся в обучающих данных, и они устойчивы к отклонениям, вызванным шумом в обучающих данных. Есть надежда, что это заставит наши сети изучать именно само явление, и лучше обобщать полученные знания.

Учитывая всё сказанное, идея того, чтобы отдавать предпочтения более простым объяснениям, должна заставить вас нервничать. Иногда люди называют эту идею «бритвой Оккама» и рьяно применяют её, будто бы она обладает статусом общего научного принципа. Но это, разумеется, не общий научный принцип. Нет никакой априорной логической причины предпочитать простые объяснения сложным. Иногда более сложное объяснение оказывается правильным.

Позвольте описать два примера того, как более сложное объяснение оказалось правильным. В 1940-х физик Марсель Шейн объявил об открытии новой частицы. Компания, на которую он работал, General Electric, была в восторге, и широко распространила публикацию об этом событии. Однако физик Ханс Бете отнёсся к нему скептически. Бете посетил Шейна и изучил пластинки со следами новой частицы Шейна. Шейн показывал Бете пластинку за пластинкой, но на каждой из них Бете находил какую-либо проблему, говорившую о необходимости отказа от этих данных. Наконец, Шейн показал Бете пластинку, выглядевшую годно. Бете сказал, что это, возможно, просто статистическое отклонение. Шейн: «Да, но шансы на то, что это из-за статистики, даже по вашей собственной формуле, один к пяти». Бете: «Однако я уже посмотрел на пять пластинок». Наконец, Шейн сказал: «Но каждую мою пластинку, каждое хорошее изображение вы объясняли какой-то другой теорией, а у меня есть одна гипотеза, объясняющая все пластинки сразу, из которой следует, что речь идёт о новой частице». Бете ответил: «Единственное отличие между моими и вашими объяснениями в том, что ваши неправильные, а мои правильные. Ваше единое объяснение неверно, а все мои объяснения верны». Впоследствии выяснилось, что природа согласилась с Бете, и частица Шейна испарилась.

Во втором примере, в 1859 году астроном Урбен Жан Жозеф Леверье обнаружил, что форма орбиты Меркурия не соответствует теории всемирного тяготения Ньютона. Существовало крохотное отклонение от этой теории, и тогда было предложено несколько вариантов решения проблемы, которые сводились к тому, что теория Ньютона в целом верна, и требует лишь небольшого изменения. А в 1916 году Эйнштейн показал, что это отклонение можно хорошо объяснить с использованием его общей теории относительности, радикально отличающейся от ньютоновской гравитации и основанной на куда как более сложной математике. Несмотря на эту дополнительную сложность, сегодня принято считать, что объяснение Эйнштейна верно, а Ньютоновская гравитация неверна даже в модифицированной форме. Так получается, в частности, потому, что сегодня нам известно, что теория Эйнштейна объясняет многие другие явления, с которыми у теории Ньютона были сложности. Более того, что ещё более поразительно, теория Эйнштейна точно предсказывает несколько явлений, которых Ньютоновская гравитация не предсказывала вообще. Однако эти впечатляющие качества не были очевидными в прошлом. Если судить исходя из одной лишь простоты, то некоторая модифицированная форма Ньютоновской теории выглядела бы привлекательнее.

Из этих историй можно извлечь три морали. Во-первых, иногда довольно сложно решить, какое из двух объяснений будет «проще». Во-вторых, даже если бы мы и приняли такое решение, простотой нужно руководствоваться крайне осторожно! В-третьих, истинной проверкой модели является не простота, а то, насколько хорошо она предсказывает новые явления в новых условиях поведения.

Учитывая всё это и проявляя осторожность, примем эмпирический факт – регуляризированные НС обычно обобщаются лучше, чем нерегуляризированные. Поэтому далее в книге мы будем часто использовать регуляризацию. Упомянутые истории нужны лишь для того, чтобы объяснить, почему никто пока ещё не разработал полностью убедительное теоретическое объяснение тому, почему регуляризация помогает сетям проводить обобщение. Исследователи продолжают публиковать работы, где пытаются испробовать различные подходы к регуляризации, сравнивать их, смотря, что лучше работает, и пытаясь понять, почему различные подходы работают хуже или лучше. Так что к регуляризации можно относиться, как к клуджу. Когда она, довольно часто, помогает, у нас нет полностью удовлетворительного системного понимания происходящего – только неполные эвристические и практические правила.

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

Эти проблемы восходят к проблеме индукции, известное осмысление которой проводил шотландский философ Дэвид Юм в книге "Исследование о человеческом познании" (1748). Проблеме индукции посвящена "теорема об отсутствии бесплатных обедов" Дэвида Уолперта и Уильяма Макреди (1977).

А это особенно досадно, поскольку в обычной жизни люди феноменально хорошо умеют обобщать данные. Покажите несколько изображений слона ребёнку, и он быстро научится распознавать других слонов. Конечно, он иногда может ошибиться, к примеру, перепутать носорога со слоном, но в целом этот процесс работает удивительно точно. Вот, у нас есть система – мозг человека – с огромным количеством свободных параметров. И после того, как ему показывают одно или несколько обучающих изображений, система обучается обобщать их до других изображений. Наш мозг, в каком-то смысле, удивительно хорошо умеет регуляризировать! Но как мы это делаем? На данный момент нам это неизвестно. Думаю, что в будущем мы выработаем боле мощные технологии регуляризации в искусственных нейросетях, техники, которые в итоге позволят НС обобщать данные, исходя из ещё менее крупных наборов данных.

На самом деле, наши сети и так уже обобщают куда лучше, чем можно было ожидать априори. Сеть со 100 скрытыми нейронами обладает почти 80 000 параметров. У нас есть только 50 000 изображений в обучающих данных. Это всё равно, как пытаться натянуть многочлен 80 000 порядка на 50 000 опорных точек. По всем признакам наша сеть должна ужасно переобучиться. И всё же, как мы видели, такая сеть на самом деле довольно неплохо обобщает. Почему так происходит? Это не совсем понятно. Была высказана гипотеза, что «динамика обучения градиентным спуском в многослойных сетях подвержена саморегуляризации». Это чрезвычайная удача, но и довольно тревожный факт, поскольку мы не понимаем, почему так происходит. Тем временем мы примем прагматичный подход, и будем использовать регуляризацию везде, где только можно. Нашим НС это будет на пользу.

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

Иные техники регуляризации


Существует множество техник регуляризации, кроме L2. На самом деле, было разработано уже столько техник, что я бы при всём желании не смог кратко описать их все. В этом разделе я кратенько опишу три других подхода к уменьшению переобучения: регуляризацию L1, исключение [dropout] и искусственное увеличение обучающего набора. Мы не будем изучать их так глубоко, как предыдущие темы. Вместо этого мы просто познакомимся с ними, а заодно оценим разнообразие существующих техник регуляризации.

Регуляризация L1


В данном подходе мы изменяем нерегуляризованную функцию стоимости, добавляя сумму абсолютных значений весов:

$ C = C_0 + \frac{\lambda}{n} \sum_w |w| \tag{95} $

Получаем выписки ЕГРН из Росреестра, минуя api. Ожидания в python, квадратные миллиметры в Росреестре

https://habr.com/ru/post/460040/
  • Python

Сравнение BDD фреймворков Python: плюсы и минусы

https://habr.com/ru/company/otus/blog/460046/
  • Блог компании OTUS. Онлайн-образование
  • Python


Всем привет. Уже в этом месяце в ОТУС стартует курс "Python QA Engineer". В преддверии старта данного курса делимся с вами переводом интересного материала.

Recent Posts

Archive

2019
2018
2017
2016
2015
2014

Categories

Authors

Feeds

RSS / Atom