Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf ·...

101
deep learning i: введение Сергей Николенко НИУ ВШЭ Санкт-Петербург 20 апреля 2019 г. Random facts: 20 апреля 1535 г. в Стокгольме наблюдали паргелий, гало в виде радужного пятна на уровне Солнца; это показано на знаменитой картине Якоба Эльбфаса «Vädersolstavlan» («Ложное солнце») 20 апреля 1800 г. была образована Республика семи островов — турецко-русский, а позже французский протекторат на островах Керкира, Паксос, Лефкас, Кефалиния, Итака, Закинф и Китира 20 апреля 1902 г. Мария и Пьер Кюри впервые получили чистый радий, а 20 апреля 1995 г. их останки были перенесены в парижский Пантеон 20 апреля 1994 г. немцы опередили французов и возглавили список наций, потребляющих наибольшее количество алкоголя на душу населения

Transcript of Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf ·...

Page 1: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

deep learning i: введение

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

НИУ ВШЭ − Санкт-Петербург20 апреля 2019 г.

Random facts:

• 20 апреля 1535 г. в Стокгольме наблюдали паргелий, гало в виде радужного пятна науровне Солнца; это показано на знаменитой картине Якоба Эльбфаса «Vädersolstavlan»(«Ложное солнце»)

• 20 апреля 1800 г. была образована Республика семи островов — турецко-русский, апозже французский протекторат на островах Керкира, Паксос, Лефкас, Кефалиния,Итака, Закинф и Китира

• 20 апреля 1902 г. Мария и Пьер Кюри впервые получили чистый радий, а 20 апреля1995 г. их останки были перенесены в парижский Пантеон

• 20 апреля 1994 г. немцы опередили французов и возглавили список наций,потребляющих наибольшее количество алкоголя на душу населения

Page 2: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

Page 3: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

• 10 лет назад в машинном обучении началась революция.• Нейронные сети были давно, но обучать глубокие сети неумели.

• А теперь — научились.• И это перевернуло весь мир машинного обучения!• Теперь практически во всех областях лучшие результатыполучаются глубокими нейронными сетями.

3

Page 4: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

• Обработка изображений:

• DeepFace: Closing the Gap to Human-Level Performance in FaceVerification

3

Page 5: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

• В том числе в реальном времени:

• DeepTesla: End-to-End Learning from Human and AutopilotDriving

3

Page 6: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

• Распознавание речи:

• Deep Speech: Accurate Speech Recognition withGPU-Accelerated Deep Learning

3

Page 7: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

• Обработка естественного языка:

• Google NMT – но тут всё не так радужно...3

Page 8: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Teaser

• Достижения, ранее казавшиеся немыслимыми:

3

Page 9: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

План

• Что же такое глубокие нейронные сети, как они работают ипочему так хороши?

• Наш план:(1) начнём с того, что же такое в мозге интересное происходит;(2) затем перейдём к нейронным сетям, обсудим, как они

работают,(3) изучим массу разных архитектур нейронных сетей, обычно

глубоких или вообще рекуррентных,(4) а также массу разных приёмов о том, как лучше обучать

нейронные сети.

4

Page 10: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Краткое резюме предыдущих серий

• В машинном обучении много разных задач, с учителем и без.• Их обычно решают по теореме Байеса, пересчитывая нашипредставления о параметрах в зависимости от полученныхданных.

• Для этого обычно надо оптимизировать какую-нибудьсложную функцию (например, апостериорноераспределение).

• И для невыпуклых функций это обычно делают тем илииным вариантом градиентного спуска.

• А теперь – о том, при чём тут нейроны и сети.

5

Page 11: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Человеческий мозги история искусственныхнейронных сетей

Page 12: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Компьютер у нас в голове

• Компьютер считает быстрее человека, но гораздо хуже• понимает естественный язык,• распознаёт изображения, узнаёт людей (это уже не совсем так),• обучается в широком смысле этого слова и т.д...

• Почему так? Как человек всего этого добивается?

7

Page 13: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Компьютер у нас в голове

• В мозге много нейронов; каждый нейрон:• через дендриты получает сигнал от других нейронов;• время от времени запускает сигнал по аксону;• через синапсы сигнал аксона доходит до дендритов другихнейронов.

7

Page 14: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Компьютер у нас в голове

• Нейрон время от времени, стохастически, выдаёт сигналы.• Всего нейронов очень много: 1011 нейронов, в среднем 7000связей у каждого, т.е. 1015 синапсов.

• Но firing rate от 10 до 200 герц.• А распознаём мы лицо за пару сотен миллисекунд.• Это значит, что цепочки короткие, и вычисления скореепараллельные, чем последовательные.

8

Page 15: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Компьютер у нас в голове

• Вот как мы обрабатываем картинку:

9

Page 16: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Обучение признаков

• Другая сторона вопроса – обучение признаков.• Мозг очень хорошо умеет обучаться на очень-оченьмаленькой выборке данных.

• И может адаптироваться к новым источникам информации.• Как он это делает? Можем ли мы сделать так же?

10

Page 17: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Обучение признаков

• Системы обработки неструктурированной информациивыглядят обычно так:

вход → признаки → классификатор

• Люди много десятилетий пытались придумать хорошиепризнаки:

• MFCC для распознавания речи;• SIFT для обработки изображений;• ...

• Задача feature engineering: как сделать такие признаки?• Но, может быть, можно найти признаки автоматически? Мозгведь это как-то делает...

• Но это сложно!

10

Page 18: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Почему это сложно: распознавание изображений

11

Page 19: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Пластичность

• Третий аспект — пластичность мозга.

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

12

Page 20: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предостережение

• Мы ещё не раз вернёмся к тому, как работает настоящиймозг и настоящие нейроны.

• Но лучше не слишком увлекаться:• 2004 – может ли биолог починить радиоприёмник?

• 2016 – может ли нейробиолог понять микропроцессор?

13

Page 21: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предостережение

• Мало что понимаем в целых нервных системах:• Human Brain Project Генри Маркрама провалился;

• а получается пока OpenWorm(нематода C. elegans, 302 нейрона).

• Так что будем вдохновляться, но без фанатизма. 13

Page 22: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Суть происходящего

• Вообще говоря, всё, что мы делаем в машинном обучении, —это аппроксимация и оптимизация функций.

• Например:• есть функция из картинок в то, что на них изображено;• ещё проще: бинарная функция из пикселей картинки в «котикили не котик»;

• функция, мягко скажем, довольно сложная; задана в видедатасета; как нам её реализовать?

• Обычный подход в машинном обучении:• строим какой-то класс моделей, обычно параметрический;• и подгоняем параметры так, чтобы модель хорошо описываладанные;

• то есть оптимизируем какую-то функцию ошибки или функциюкачества (правдоподобие, апостериорную вероятность).

• Нейронные сети — это очень мощный и гибкий класс такихмоделей.

• Сложность в том, как же обучить их параметры.14

Page 23: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

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

• McCulloch, Pitts, 1943: идея.

• Идею искусственных сетей, похожих на современные (даже снесколькими уровнями), предлагал ещё Алан Тьюринг (1948).

• Rosenblatt, 1958: перцептрон (один искусственный нейрон).• Тогда же появился алгоритм обучения градиентным спуском.

15

Page 24: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• Один нейрон обычно моделируется вот так:

• Линейная комбинация входов, потом нелинейность:

𝑦 = ℎ(𝑤⊤𝑥) = ℎ (∑𝑖

𝑤𝑖𝑥𝑖) .

• Как обучить перцептрон, и каков будет результат?

15

Page 25: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• Обучение градиентным спуском.• Для исходного перцептрона Розенблатта (ℎ = id):

𝐸𝑃 (𝑤) = − ∑𝑥∈𝑀

𝑦(𝑥) (𝑤⊤𝑥) ,

𝑤(𝜏+1) = 𝑤(𝜏) − 𝜂∇𝑤𝐸𝑃 (𝑤) = 𝑤(𝜏) + 𝜂𝑡𝑛𝑥𝑛.

• Или, к примеру, можно делать классификацию, подставляя вкачестве функции активации логистический сигмоидℎ(𝑥) = 𝜎(𝑥) = 1

1+𝑒−𝑥 :

𝐸(𝑤) = − 1𝑁

𝑁∑𝑖=1

(𝑦𝑖 log 𝜎(𝑤⊤𝑥𝑖) + (1 − 𝑦𝑖) log (1 − 𝜎(𝑤⊤𝑥𝑖))) .

• По сути это просто логистическая регрессия.

15

Page 26: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• Первый перцептрон (Rosenblatt, 1958) распознавал цифры.

15

Page 27: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• И люди в него верили:

15

Page 28: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• 1960-е годы: изучали перцептроны.• (Minsky, Papert, 1969): даже с нелинейностью одинперцептрон задаёт только линейную разделяющуюповерхность, XOR нельзя моделировать перцептроном...

• Это почему-то восприняли как большую проблему, котораяставит крест на нейронных сетях.

15

Page 29: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• ...хм, ну конечно! Для нелинейных функций нужна сетьперцептронов:

15

Page 30: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• (Brison, Hoback, 1969): предложили алгоритм обратногораспространения ошибки (backpropagation).

• (Hinton, 1974): переоткрыл backpropagation, с тех пор он сталпопулярным.

• Во второй половине 1970-х появились многоуровневые ANN,была разработана современная теория.

• Глубокие модели появились в первой половине 1980-х гг.!Это вообще не очень хитрая идея сама по себе.

15

Page 31: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• Но к началу 1990-х решили, что нейронные сетииспользовать смысла нет, и началась «вторая зима».

• Это было потому, что тогда ни математически, нивычислительно не могли нормально обучить большиемодели.

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

• John Denker, 1994: «neural networks are the second best way ofdoing just about anything».

• К концу 90-х на нейросетях остались только обработкаизображений (Yann LeCun) и несколько других групп(Geoffrey Hinton, Yoshua Bengio).

15

Page 32: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

История ANN и перцептрон

• Революция deep learning начинается в 2006: в группеДжеффри Хинтона изобрели Deep Belief Networks (DBN).

• Основная идея: научились делать обучение без учителя,выделять признаки (при помощи машин Больцмана, RBM;появились в 1983), использовать это как предобучение.

• Компьютеры стали мощнее, появились способы передатьвычисления на GPU, и вычислительно мы смоглиобрабатывать гораздо более объёмные датасеты, которыекак раз стали доступными.

• А потом появились новые методы регуляризации (дропаут,затем batch normalization), и RBM с предобучением тожестали не очень нужны.

• Вот основные компоненты революции глубокого обучения.• Осталось только понять, что всё это значит. :)• Но сначала давайте до конца разберёмся с однимперцептроном.

15

Page 33: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Есть много разных нелинейных функций, которые можноиспользовать в перцептроне.

• Логистический сигмоид:

𝜎(𝑥) = 11 + 𝑒−𝑥 .

16

Page 34: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Гиперболический тангенс:

tanh(𝑥) = 𝑒𝑥 − 𝑒−𝑥

𝑒𝑥 + 𝑒−𝑥

• Очень похоже, но ноль не является точкой насыщения.

16

Page 35: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Ступенька (функция Хевисайда):

step(𝑥) = {0, if 𝑥 < 0,1, if 𝑥 > 0.

16

Page 36: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Rectified linear unit (ReLU):

ReLU(𝑥) = {0, if 𝑥 < 0,𝑥, if 𝑥 ≥ 0.

16

Page 37: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Математическая мотивация для ReLU:

𝜎 (𝑥 + 12) + 𝜎 (𝑥 − 1

2) + 𝜎 (𝑥 − 32) + 𝜎 (𝑥 − 5

2) + … .

16

Page 38: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Биологическая мотивация для ReLU:

𝑓(𝐼) =⎧{⎨{⎩

(𝜏 log 𝐸+𝑅𝐼−𝑉reset𝐸+𝑅𝐼−𝑉𝑡ℎ

)−1 , if 𝐸 + 𝑅𝐼 > 𝑉𝑡ℎ,0, if 𝐸 + 𝑅𝐼 ≤ 𝑉𝑡ℎ,

16

Page 39: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Несколько вариантов ReLU — Leaky ReLU и Parametric ReLU:

LReLU(𝑥) = {𝑎𝑥, if 𝑥 < 0,𝑥, if 𝑥 > 0.

.

16

Page 40: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

• Exponential LU:

ELU(𝑥) = {𝛼 (𝑒𝑥 − 1) , 𝑥 < 0,𝑥, 𝑥 ≥ 0.

• Обычно ReLU хорошо работает, но последнего слова ещё несказано.

16

Page 41: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Настоящие нейроны

• Есть ли градиентный спуск в настоящих нейронах?• Скорее всего нет (увидим позже почему).• Хотя у Хинтона есть интересный доклад об этом... но всё-такивряд ли.

• Обучение по Хеббу – neurons that fire together, wire together:

Δ𝑤𝑖 = 𝜂𝑥𝑖𝑥𝑗.

• В ML привело к сетям Хопфилда, которые вроде какреализуют ассоциативную память, но плохо.

• Новая тема: spike-timing-dependent plasticity (STDP), т.е.насколько спайки зависят от временных свойств сигналов.

17

Page 42: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Суть происходящего

• Вообще говоря, всё, что мы делаем в машинном обучении, —это аппроксимация и оптимизация функций.

• Например:• есть функция из картинок в то, что на них изображено;• ещё проще: бинарная функция из пикселей картинки в «котикили не котик»;

• функция, мягко скажем, довольно сложная; задана в видедатасета; как нам её реализовать?

• Обычный подход в машинном обучении:• строим какой-то класс моделей, обычно параметрический;• и подгоняем параметры так, чтобы модель хорошо описываладанные;

• то есть оптимизируем какую-то функцию ошибки или функциюкачества (правдоподобие, апостериорную вероятность).

• Нейронные сети — это очень мощный и гибкий класс такихмоделей.

• Сложность в том, как же обучить их параметры.18

Page 43: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Машинное обучение как оптимизация

• Итак, в машинном обучении много разных задач, с учителеми без.

• Их обычно решают по теореме Байеса, пересчитывая нашипредставления о параметрах в зависимости от полученныхданных.

• Для этого обычно надо оптимизировать какую-нибудьсложную функцию (например, апостериорноераспределение).

• И для невыпуклых функций это обычно делают тем илииным вариантом градиентного спуска.

19

Page 44: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Градиентный спуск

• Градиентный спуск — главный и фактически единственныйспособ оптимизации очень сложных функций.

• Берём градиент ∇𝐸(𝑤), сдвигаемся немножко, повторяем.

20

Page 45: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Перцептрон

• Основной компонент нейронной сети – перцептрон:

• Линейная комбинация входов, потом нелинейность:

𝑦 = ℎ(𝑤⊤𝑥) = ℎ (∑𝑖

𝑤𝑖𝑥𝑖) .

21

Page 46: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Перцептрон

• Обучение градиентным спуском.• Для исходного перцептрона Розенблатта (ℎ = id):

𝐸𝑃 (𝑤) = − ∑𝑥∈𝑀

𝑦(𝑥) (𝑤⊤𝑥) ,

𝑤(𝜏+1) = 𝑤(𝜏) − 𝜂∇𝑤𝐸𝑃 (𝑤) = 𝑤(𝜏) + 𝜂𝑡𝑛𝑥𝑛.

• Или, к примеру, можно делать классификацию, подставляя вкачестве функции активации логистический сигмоидℎ(𝑥) = 𝜎(𝑥) = 1

1+𝑒−𝑥 :

𝐸(𝑤) = − 1𝑁

𝑁∑𝑖=1

(𝑦𝑖 log 𝜎(𝑤⊤𝑥𝑖) + (1 − 𝑦𝑖) log (1 − 𝜎(𝑤⊤𝑥𝑖))) .

• По сути это просто логистическая регрессия.

21

Page 47: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Перцептрон

• Есть много разных нелинейных функций, которые можноиспользовать в перцептроне.

• Обычно главное – чтобы градиент хорошо проходил.

21

Page 48: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Объединяем перцептроны в сеть

• Сеть перцептронов; выходы одних – входы других.• Hornik, 1990: двух уровней достаточно для приближениялюбой функции.

• Но глубокие сети эффективнее — distributed representations:

22

Page 49: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Объединяем перцептроны в сеть

• Обычно нейронные сети организованы в слои.• Это очень естественно и легко параллелизуется.

22

Page 50: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Объединяем перцептроны в сеть

• Но по сути мы приближаем очень сложную функциюбольшой композицией простых функций.

• Как теперь её обучить?• Ответ прост: градиентный спуск. Но есть и сложности.

22

Page 51: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Градиентный спуски графы вычислений

Page 52: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Градиентный спуск

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

• Формально: для функции ошибки 𝐸, целевых значений 𝑦 имодели 𝑓 с параметрами 𝜃:

𝐸(𝜃) = ∑(𝑥,𝑦)∈𝐷

𝐸(𝑓(𝑥, 𝜃), 𝑦),

𝜃𝑡 = 𝜃𝑡−1 − 𝜂∇𝐸(𝜃𝑡−1) = 𝜃𝑡−1 − 𝜂 ∑(𝑥,𝑦)∈𝐷

∇𝐸(𝑓(𝑥, 𝜃𝑡−1), 𝑦).

• То есть надо по всему датасету пройтись, чтобы хоть куда-тосдвинуться?..

24

Page 53: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Градиентный спуск

• Нет, конечно — стохастический градиентный спускобновляет после каждого примера:

𝜃𝑡 = 𝜃𝑡−1 − 𝜂∇𝐸(𝑓(𝑥𝑡, 𝜃𝑡−1), 𝑦𝑡),

• А на практике обычно используют мини-батчи, их легкопараллелизовать и они сглаживают излишнюю“стохастичность”.

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

24

Page 54: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Градиентный спуск

• Со скоростью обучения 𝜂 масса проблем:

• Мы вернёмся к ним позже, а пока поговорим о производных.

24

Page 55: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Представим функцию как композицию простых функций (т.е.таких, от которых можно производную взять).

• Пример: 𝑓(𝑥, 𝑦) = 𝑥2 + 𝑥𝑦 + (𝑥 + 𝑦)2:

25

Page 56: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Градиент теперь можно взять по правилудифференцирования сложной функции (chain rule):

(𝑓 ∘ 𝑔)′(𝑥) = (𝑓(𝑔(𝑥)))′ = 𝑓 ′(𝑔(𝑥))𝑔′(𝑥).

• По сути это значит, что небольшое изменение 𝛿𝑥 приводит к

𝛿𝑓 = 𝑓 ′(𝑔(𝑥))𝛿𝑔 = 𝑓 ′(𝑔(𝑥))𝑔′(𝑥)𝛿𝑥.

• Нам нужно только уметь брать градиенты, т.е. производныепо векторам:

∇𝑥𝑓 = (𝜕𝑓

𝜕𝑥1⋮𝜕𝑓

𝜕𝑥𝑛

) .

∇𝑥(𝑓 ∘ 𝑔) = (𝜕𝑓∘𝑔𝜕𝑥1⋮𝜕𝑓∘𝑔𝜕𝑥𝑛

) = (𝜕𝑓𝜕𝑔

𝜕𝑔𝜕𝑥1⋮

𝜕𝑓𝜕𝑔

𝜕𝑔𝜕𝑥𝑛

) = 𝜕𝑓𝜕𝑔 ∇𝑥𝑔.

25

Page 57: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• А если 𝑓 зависит от 𝑥 несколько раз,𝑓 = 𝑓(𝑔1(𝑥), 𝑔2(𝑥), … , 𝑔𝑘(𝑥)), 𝛿𝑥 тоже несколько разпоявляется:

𝜕𝑓𝜕𝑥 = 𝜕𝑓

𝜕𝑔1

𝜕𝑔1𝜕𝑥 + … + 𝜕𝑓

𝜕𝑔𝑘

𝜕𝑔𝑘𝜕𝑥 =

𝑘∑𝑖=1

𝜕𝑓𝜕𝑔𝑖

𝜕𝑔𝑖𝜕𝑥 .

∇𝑥𝑓 = 𝜕𝑓𝜕𝑔1

∇𝑥𝑔1 + … + 𝜕𝑓𝜕𝑔𝑘

∇𝑥𝑔𝑘 =𝑘

∑𝑖=1

𝜕𝑓𝜕𝑔𝑖

∇𝑥𝑔𝑖.

• Это матричное умножение на матрицу Якоби:

∇𝑥𝑓 = ∇𝑥𝑔∇𝑔𝑓, где ∇𝑥𝑔 = ⎛⎜⎜⎜⎝

𝜕𝑔1𝜕𝑥1

… 𝜕𝑔𝑘𝜕𝑥1

⋮ ⋮𝜕𝑔1𝜕𝑥𝑛

… 𝜕𝑔𝑘𝜕𝑥𝑛

⎞⎟⎟⎟⎠

.

25

Page 58: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Возвращаемся к примеру:

25

Page 59: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Прямое распространение (forward propagation, fprop):вычисляем 𝜕𝑓

𝜕𝑥 как сложную функцию.

25

Page 60: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Обратное распространение (backpropagation, backprop):начинаем от конца и идём как 𝜕𝑓

𝜕𝑔 = ∑𝑔′∈Children(𝑔)𝜕𝑓𝜕𝑔′

𝜕𝑔′

𝜕𝑔 .

25

Page 61: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Backprop гораздо лучше: получаем все производные за одинпроход по графу.

• Вот и всё! Теперь мы можем считать градиенты от любых,сколь угодно сложных функций; нужно только, чтобы онипредставлялись как композиции простых.

• А это всё, что нужно для градиентного спуска!!• Библиотеки theano и TensorFlow — это на самом делебиблиотеки для автоматического дифференцирования, этоих основная функция.

• И теперь мы можем реализовать массу “классических”моделей в TensorFlow и обучить их градиентным спуском.

• А у живых нейронов, кстати, не получается, потому что нужнодва разных “алгоритма” для вычисления самой функции иградиента.

25

Page 62: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Если сеть организована в слои, то fprop и backprop можновекторизовать, т.е. представить в виде матричных операций.

• Обозначим 𝑤(𝑙)𝑗𝑘 вес связи от 𝑘-го нейрона слоя (𝑙 − 1) к 𝑗-му

нейрону слоя 𝑙.

25

Page 63: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Обозначим 𝑤(𝑙)𝑗𝑘 вес связи от 𝑘-го нейрона слоя (𝑙 − 1) к 𝑗-му

нейрону слоя 𝑙.• Также 𝑏(𝑙)

𝑗 – bias 𝑗-го нейрона, 𝑎(𝑙)𝑗 – его активация, т.е.

𝑎(𝑙)𝑗 = ℎ (∑

𝑘𝑤(𝑙)

𝑗𝑘𝑎(𝑙−1)𝑘 + 𝑏(𝑙)

𝑗 ) .

• Это можно записать в векторной форме:

𝑎(𝑙) = ℎ ((𝑤(𝑙))⊤𝑎(𝑙−1) + 𝑏(𝑙)) = ℎ (𝑧(𝑙)) .

• А наша цель – посчитать производные функции ошибки повсем переменным: 𝜕𝐶

𝜕𝑤(𝑙)𝑗𝑘, 𝜕𝐶

𝜕𝑏(𝑙)𝑗.

25

Page 64: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Определяем ошибку 𝑗-го нейрона в слое 𝑙:

𝛿(𝑙)𝑗 = 𝜕𝐶

𝜕𝑧(𝑙)𝑗

.

• И backprop теперь можно делать от последнего уровня 𝐿 ковходу, сразу в векторном виде:

𝛿(𝐿)𝑗 = 𝜕𝐶

𝜕𝑎(𝐿) ℎ′ (𝑧(𝐿)𝑗 ) , т.е. 𝛿(𝐿) = ∇𝑎(𝐿)𝐶 ⊙ ℎ′ (𝑧(𝐿)) ,

𝛿(𝑙) = ((𝑊 (𝑙+1))⊤𝛿(𝑙+1)) ⊙ ℎ′ (𝑧(𝑙)) ,𝜕𝐶𝜕𝑏(𝑙)

𝑗= 𝛿(𝑙)

𝑗 ,

𝜕𝐶𝜕𝑤(𝑙)

𝑗𝑘= 𝑎(𝑙−1)

𝑘 𝛿(𝑙)𝑗 .

• Это всё операции, которые легко параллелизовать на GPU. 25

Page 65: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Граф вычислений, frop and bprop

• Backpropagation – идея со сложной судьбой.• Конечно, это просто расчёт градиентов для градиентногоспуска.

• Так что уже в 1960-х было понятно, как тащить производныединамическим программированием (и тем болееудивительно насчёт Minsky, Papert).

• В явном виде полностью BP для нейронных сетей – M.Sc.thesis (Linnainmaa, 1970).

• (Hinton, 1974) – переоткрыл backprop, популяризовал.• Rumelhart, Hinton, Williams, “Learning representations byback-propagating errors” (Nature, 1986).

25

Page 66: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

Page 67: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

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

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

27

Page 68: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

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

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

27

Page 69: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

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

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

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

27

Page 70: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

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

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

‖𝑤‖2 ≤ 𝑐.

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

27

Page 71: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

28

Page 72: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

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

28

Page 73: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

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

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

28

Page 74: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

28

Page 75: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

28

Page 76: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

28

Page 77: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

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

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

28

Page 78: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

28

Page 79: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

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

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

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

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

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

28

Page 80: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Дропаут

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

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

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

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

28

Page 81: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Вывод

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

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

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

29

Page 82: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация весов

Page 83: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• Революция глубокого обучения началась с предобучениембез учителя (unsupervised pretraining).

• Главная идея: добраться до хорошей области пространствавесов, затем уже сделать fine-tuning градиентным спуском.

• Ограниченные машины Больцмана (restricted Boltzmannmachines):

31

Page 84: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• Это ненаправленная графическая модель, задающаяраспределение

𝑝(𝑣) = ∑ℎ

𝑝(𝑣, ℎ) = 1𝑍 ∑

ℎ𝑒−𝐸(𝑣,ℎ), где

𝐸(𝑣, ℎ) = −𝑏⊤𝑣 − 𝑐⊤ℎ − ℎ⊤𝑊𝑣.

• Обучают алгоритмом Contrastive Divergence (приближение ксэмплированию по Гиббсу).

31

Page 85: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• Из RBM можно сделать глубокие сети, поставив одну надругую:

31

Page 86: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• И вывод можно вести последовательно, уровень за уровнем:

31

Page 87: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• А потом уже дообучать градиентным спуском (fine-tuning).

31

Page 88: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• Этот подход привёл к прорыву в распознавании речи.

31

Page 89: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Предобучение без учителя

• Но обучать глубокие сети из RBM довольно сложно, онихрупкие, и вычислительно тоже нелегко.

• И сейчас уже не очень-то и нужны сложные модели вродеRBM для того, чтобы попасть в хорошую начальную область.

• Инициализация весов — важная часть этого.

31

Page 90: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• Xavier initialization (Glorot, Bengio, 2010).• Рассмотрим простой линейный нейрон:

𝑦 = 𝑤⊤𝑥 + 𝑏 = ∑𝑖

𝑤𝑖𝑥𝑖 + 𝑏.

• Его дисперсия равна

Var [𝑦𝑖] = Var [𝑤𝑖𝑥𝑖] = 𝔼 [𝑤2𝑖 𝑥2

𝑖 ] − (𝔼 [𝑤𝑖𝑥𝑖])2 =

= 𝔼 [𝑥𝑖]2 Var [𝑤𝑖] + 𝔼 [𝑤𝑖]

2 Var [𝑥𝑖] + Var [𝑤𝑖] Var [𝑥𝑖] .

32

Page 91: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• Его дисперсия равна

Var [𝑦𝑖] = Var [𝑤𝑖𝑥𝑖] = 𝔼 [𝑤2𝑖 𝑥2

𝑖 ] − (𝔼 [𝑤𝑖𝑥𝑖])2 =

= 𝔼 [𝑥𝑖]2 Var [𝑤𝑖] + 𝔼 [𝑤𝑖]

2 Var [𝑥𝑖] + Var [𝑤𝑖] Var [𝑥𝑖] .

• Для нулевого среднего весов

Var [𝑦𝑖] = Var [𝑤𝑖] Var [𝑥𝑖] .

• И если 𝑤𝑖 и 𝑥𝑖 инициализированы независимо из одного итого же распределения,

Var [𝑦] = Var [𝑛out

∑𝑖=1

𝑦𝑖] =𝑛out

∑𝑖=1

Var [𝑤𝑖𝑥𝑖] = 𝑛outVar [𝑤𝑖] Var [𝑥𝑖] .

• Иначе говоря, дисперсия на выходе пропорциональнадисперсии на входе с коэффициентом 𝑛outVar [𝑤𝑖]. 32

Page 92: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• До (Glorot, Bengio, 2010) стандартным способоминициализации было

𝑤𝑖 ∼ 𝑈 [− 1√𝑛out, 1√𝑛out

] .

• См., например, Neural Networks: Tricks of the Trade.• Так что с дисперсиями получается

Var [𝑤𝑖] = 112 ( 1√𝑛out

+ 1√𝑛out)

2= 1

3𝑛out, и

𝑛outVar [𝑤𝑖] = 13 ,

и после нескольких уровней сигнал совсем умирает;аналогичный эффект происходит и в backprop.

32

Page 93: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• Инициализация Ксавье — давайте попробуем уменьшитьизменение дисперсии, т.е. взять

Var [𝑤𝑖] = 2𝑛in + 𝑛out

;

для равномерного распределения это

𝑤𝑖 ∼ 𝑈 [−√

6√𝑛in + 𝑛out,

√6√𝑛in + 𝑛out

] .

• Но это работает только для симметричных активаций, т.е. недля ReLU...

32

Page 94: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• ...до работы (He et al., 2015). Вернёмся к

Var [𝑤𝑖𝑥𝑖] = 𝔼 [𝑥𝑖]2 Var [𝑤𝑖] + 𝔼 [𝑤𝑖]

2 Var [𝑥𝑖] + Var [𝑤𝑖] Var [𝑥𝑖]

• Мы теперь можем обнулить только второе слагаемое:

Var [𝑤𝑖𝑥𝑖] = 𝔼 [𝑥𝑖]2 Var [𝑤𝑖] + Var [𝑤𝑖] Var [𝑥𝑖] = Var [𝑤𝑖] 𝔼 [𝑥2

𝑖 ] , и

Var [𝑦(𝑙)] = 𝑛(𝑙)in Var [𝑤(𝑙)] 𝔼 [(𝑥(𝑙))2] .

32

Page 95: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• Мы теперь можем обнулить только второе слагаемое:

Var [𝑦(𝑙)] = 𝑛(𝑙)in Var [𝑤(𝑙)] 𝔼 [(𝑥(𝑙))2] .

• Предположим, что 𝑥(𝑙) = max(0, 𝑦(𝑙−1)), и у 𝑦(𝑙−1)

симметричное распределение вокруг нуля. Тогда

𝔼 [(𝑥(𝑙))2] = 12Var [𝑦(𝑙−1)] , Var [𝑦(𝑙)] = 𝑛(𝑙)

in2 Var [𝑤(𝑙)] Var [𝑦(𝑙−1)] .

32

Page 96: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Инициализация Ксавье

• И это приводит к формуле для дисперсии активации ReLU;теперь нет никакого 𝑛out:

Var [𝑤𝑖] = 2/𝑛(𝑙)in .

• Кстати, равномерную инициализацию делать необязательно, можно и нормальное распределение:

𝑤𝑖 ∼ 𝑁 (0, √2/𝑛(𝑙)in ) .

32

Page 97: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

О сигмоидах

• Кстати, о (Glorot, Bengio, 2010) – ещё одна важная идея.• Эксперименты показали, что 𝜎(𝑥) = 1

1+𝑒−𝑥 работает вглубоких сетях довольно плохо.

33

Page 98: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

О сигмоидах

• Насыщение: если 𝜎(𝑥) уже «обучилась», т.е. даёт большие помодулю значения, то её производная близка к нулю и«поменять мнение» трудно.

• Но ведь другие тоже насыщаются? В чём разница?

33

Page 99: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

О сигмоидах

• Рассмотрим последний слой сети ℎ(𝑊𝑎 + 𝑏), где 𝑎 — выходыпредыдущего слоя, 𝑏 — свободные члены, ℎ — функцияактивации последнего уровня, обычно softmax.

• Когда мы начинаем оптимизировать сложную функциюпотерь, поначалу выходы ℎ не несут полезной информациио входах, ведь первые уровни ещё не обучены.

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

• Это значит, что ℎ(𝑊𝑎 + 𝑏) подберёт подходящие свободныечлены 𝑏 и постарается обнулить слагаемое 𝑊ℎ, котороепоначалу скорее шум, чем сигнал.

33

Page 100: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

О сигмоидах

• Иначе говоря, в процессе обучения мы постараемсяпривести выходы предыдущего слоя к нулю.

• Здесь и проявляется разница: у 𝜎(𝑥) = 11+𝑒−𝑥 область

значений (0, 1) при среднем 12 , и при 𝜎(𝑥) → 0 будет и

𝜎′(𝑥) → 0.• А у tanh наоборот: когда tanh(𝑥) → 0, tanh′(𝑥) максимальна.

33

Page 101: Deep Learning I: введениеsergey/teaching/mlhse19/10-dlintro.pdf · deeplearningi:введение СергейНиколенко НИУВШЭ− Санкт-Петербург

Спасибо!

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

34