Глубокое обучение: общие...

18
глубокое обучение: общие замечания Сергей Николенко СПбГУ Санкт-Петербург 28 сентября 2019 г. Random facts: 28 сентября 480 г. до н.э. «друг на друга корабли пошли. Сначала удавалось персам сдерживать напор. когда же в узком месте множество судов скопилось, никому никто помочь не мог, и клювы направляли медные свои в своих же, вёсла и гребцов круша». 28 сентября 1066 г. Вильгельм Бастард сделал по английской земле первый шаг к тому, чтобы называться заметно более славным именем 28 сентября 1864 г. в Лондоне собрался митинг в поддержку польского национально-освободительного восстания; рабочие разных стран решили, что, по словам присутствовавшего там Карла Маркса, «завоевание политической власти стало великой обязанностью рабочего класса», и учредили Первый интернационал 28 сентября 1939 г. в Москве Иоахим фон Риббентроп и Вячеслав Молотов подписали Договор о дружбе и границе между СССР и Германией, к которому прилагались три протокола — один конфиденциальный и два секретных

Transcript of Глубокое обучение: общие...

Page 1: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

глубокое обучение: общие замечания

Сергей Николенко

СПбГУ − Санкт-Петербург28 сентября 2019 г.

Random facts:

• 28 сентября 480 г. до н.э. «друг на друга корабли пошли. Сначала удавалось персамсдерживать напор. когда же в узком месте множество судов скопилось, никому никтопомочь не мог, и клювы направляли медные свои в своих же, вёсла и гребцов круша».

• 28 сентября 1066 г. Вильгельм Бастард сделал по английской земле первый шаг к тому,чтобы называться заметно более славным именем

• 28 сентября 1864 г. в Лондоне собрался митинг в поддержку польскогонационально-освободительного восстания; рабочие разных стран решили, что, пословам присутствовавшего там Карла Маркса, «завоевание политической власти сталовеликой обязанностью рабочего класса», и учредили Первый интернационал

• 28 сентября 1939 г. в Москве Иоахим фон Риббентроп и Вячеслав Молотов подписалиДоговор о дружбе и границе между СССР и Германией, к которому прилагались трипротокола — один конфиденциальный и два секретных

Page 2: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Регуляризацияв нейронных сетях

Page 3: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Регуляризация в нейронных сетях

• У нейронных сетей очень много параметров.• Регуляризация совершенно необходима.• 𝐿2 или 𝐿1 регуляризация (𝜆 ∑𝑤 𝑤2 или 𝜆 ∑𝑤 |𝑤|) — этоклассический метод и в нейронных сетях, weight decay.

• Очень легко добавить: ещё одно слагаемое в целевуюфункцию, и иногда всё ещё полезно.

3

Page 4: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Регуляризация в нейронных сетях

• Регуляризация есть во всех библиотеках. Например, в Keras:• W_regularizer добавит регуляризатор на матрицу весовслоя;

• b_regularizer — на вектор свободных членов;• activity_regularizer — на вектор выходов.

3

Page 5: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Регуляризация в нейронных сетях

• Второй способ регуляризации: ранняя остановка (earlystopping).

• Давайте просто останавливаться, когда начнёт ухудшатьсяошибка на валидационном множестве!

• Тоже есть из коробки в Keras, через callbacks.

3

Page 6: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Регуляризация в нейронных сетях

• Третий способ – max-norm constraint.• Давайте искусственно ограничим норму вектора весовкаждого нейрона:

‖w‖2 ≤ 𝑐.

• Это можно делать в процессе оптимизации: когда w выходитза шар радиуса 𝑐, проецируем его обратно.

3

Page 7: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Но есть и другие варианты.• Дропаут (dropout): давайте просто выбросим некоторыенейроны случайным образом с вероятностью 𝑝!(Srivastava et al., 2014)

4

Page 8: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Получается, что мы сэмплируем кучу сетей, и нейронполучает на вход «среднюю» активацию от разныхархитектур.

• Технический вопрос: как потом применять? Неужели надоопять сэмплировать кучу архитектур и усреднять?

4

Page 9: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Чтобы применить обученную сеть, умножим результат на 1/𝑝,сохраняя ожидание выхода!

• В качестве вероятности часто можно брать просто 𝑝 = 12 ,

большой разницы нет.

4

Page 10: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Dropout улучшает (большие и свёрточные) нейронные сетиочень заметно... но почему? WTF?

4

Page 11: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Идея 1: нейроны теперь должны обучать признакисамостоятельно, а не рассчитывать на других.

4

Page 12: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Аналогично, и разреженность появляется.

4

Page 13: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Идея 2: мы как бы усредняем огромное число (2𝑁 ) сетей собщими весами, каждую обучая на один шаг.

• Усреднять кучу моделей очень полезно –bootstrapping/xgboost/всё такое...

• Получается, что дропаут – это такой экстремальныйбутстреппинг.

4

Page 14: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Идея 3: this is just like sex!• Как работает половое размножение?• Важно собрать не просто хорошую комбинацию, аустойчивую хорошую комбинацию.

4

Page 15: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Идея 4: нейрон посылает активацию 𝑎 с вероятностью 0.5.• Но можно наоборот: давайте посылать 0.5 (или 1) свероятностью 𝑎.

• Ожидание то же, дисперсия для маленьких 𝑝 растёт (чтонеплохо).

• И у нас получаются стохастические нейроны, которыепосылают сигналы случайно – точно как в мозге!

• Улучшение примерно то же, как от dropout, но нужно меньшекоммуникации между нейронами (один бит вместо float).

• Т.е. стохастические нейроны в мозге работают какдропаут-регуляризатор!

• Возможно, именно поэтому мы умеем задумываться.

4

Page 16: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Дропаут

• Идея 5: dropout — это специальная форма априорногораспределения.

• Это очень полезный взгляд, с ним победили dropout врекуррентных сетях.

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

• Вернёмся к этому, если будет время.

4

Page 17: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Вывод

• Итого получается, что dropout – это очень крутой метод.

• Но и он сейчас отходит на второй план из-за нормализациипо мини-батчам и новых версий градиентного спуска.

• О них чуть позже, а сначала об инициализации весов.

5

Page 18: Глубокое обучение: общие замечанияsergey/teaching/mlspsu18/24-dlgeneral.pdf · глубокоеобучение:общиезамечания СергейНиколенко

Спасибо!

Спасибо за внимание!

6