Пока все неистово подбирают параметры, Хинтон пытается разобраться, что там внутри происходит.
Есть такая проблема, мы знаем, что делать, чтобы обучать нейронные сети, но мы не знаем, как именно они обучаются. Да, есть функция, которая оптимизируется во время обучения, но как она связана с конечной моделью, не очень понятно.
Хинтон и команда, не оставляя идею схожести нейросетей со структурой мозга, черпают вдохновение у нейробиологии, которая использует анализ сходства между отделами мозга, между людьми, биологическими видами и типами поведений.
Они предлагают использовать для анализа сходства представлений на скрытых слоях сети новую меру - centered kernel alignment.
По результатам, эта мера находит похожие слои между сетями с одинаковой архитектурой и разными начальными весами с точностью больше 99%, в то время как другие меры даже близко не подобрались к такому показателю. Она также находит связь между слоями сетей с совершенно разной архитектурой или натренированных на разных датасетах.
Что это значит? Что теперь можно сравнивать сети, причём даже с разной архитектурой. Можно находить слишком похожие слои, которые вредят качеству сети. Можно смотреть, какие именно архитектурные решения позволяют улучшить результаты работы сети.
В целом, это приближает нас (точнее их) к теоретическому пониманию устройства сетей и позволяет хоть немного отойти от довольно эмпирического подхода к их тренировке.
https://arxiv.org/pdf/1905.00414.pdf
Есть такая проблема, мы знаем, что делать, чтобы обучать нейронные сети, но мы не знаем, как именно они обучаются. Да, есть функция, которая оптимизируется во время обучения, но как она связана с конечной моделью, не очень понятно.
Хинтон и команда, не оставляя идею схожести нейросетей со структурой мозга, черпают вдохновение у нейробиологии, которая использует анализ сходства между отделами мозга, между людьми, биологическими видами и типами поведений.
Они предлагают использовать для анализа сходства представлений на скрытых слоях сети новую меру - centered kernel alignment.
По результатам, эта мера находит похожие слои между сетями с одинаковой архитектурой и разными начальными весами с точностью больше 99%, в то время как другие меры даже близко не подобрались к такому показателю. Она также находит связь между слоями сетей с совершенно разной архитектурой или натренированных на разных датасетах.
Что это значит? Что теперь можно сравнивать сети, причём даже с разной архитектурой. Можно находить слишком похожие слои, которые вредят качеству сети. Можно смотреть, какие именно архитектурные решения позволяют улучшить результаты работы сети.
В целом, это приближает нас (точнее их) к теоретическому пониманию устройства сетей и позволяет хоть немного отойти от довольно эмпирического подхода к их тренировке.
https://arxiv.org/pdf/1905.00414.pdf
Почти все о методах оптимизации нейросетей
Серия статей о почти всех используемых в современных библиотеках для нейронных сетей методах оптимизации. Начиная от просто градиентного спуска и заканчивая модификациями Adam, такими как NAdam, AdamNC, AMSGrad.
7 статей, 33 минуты, если верить оценкам medium, но кто же им поверит (умножайте примерно на 4).
1. Gradient Descent and Stochastic Gradient Descent https://bit.ly/2wqdFqM
2. Momentum and Nesterov Accelerated https://bit.ly/2Xiz4Oy
3. Adagrad https://bit.ly/2JLMoHZ
4. Adadelta and RMSProp https://bit.ly/2EFMFIb
5. RMSProp+Momentum and Adam https://bit.ly/2QwwC4r
6. Nadam https://bit.ly/2HLnKVL
7. AMSGrad and AdamNC https://bit.ly/2JSBRuT
А вот почти то же, на русском и с классными гифками https://habr.com/ru/post/318970/.
Серия статей о почти всех используемых в современных библиотеках для нейронных сетей методах оптимизации. Начиная от просто градиентного спуска и заканчивая модификациями Adam, такими как NAdam, AdamNC, AMSGrad.
7 статей, 33 минуты, если верить оценкам medium, но кто же им поверит (умножайте примерно на 4).
1. Gradient Descent and Stochastic Gradient Descent https://bit.ly/2wqdFqM
2. Momentum and Nesterov Accelerated https://bit.ly/2Xiz4Oy
3. Adagrad https://bit.ly/2JLMoHZ
4. Adadelta and RMSProp https://bit.ly/2EFMFIb
5. RMSProp+Momentum and Adam https://bit.ly/2QwwC4r
6. Nadam https://bit.ly/2HLnKVL
7. AMSGrad and AdamNC https://bit.ly/2JSBRuT
А вот почти то же, на русском и с классными гифками https://habr.com/ru/post/318970/.
Medium
Gradient Descent and Stochastic Gradient Descent Algorithms for Neural Networks
Everyone who ever have trained Neural Networks, chances are, have been stumbled with Gradient Descent algorithm or its variations. These…
Говорящие головы из Сколково
Ура! Вот и наши соотечественники попали в СМИ со своими достижениями в области deep learning.
Они научились генерировать видео «говорящей головы» используя несколько или даже одно статическое изображение. Видео генерирует даже ракурсы, не представленные на фото. Это надо просто увидеть (ссылка на видео ниже).
А почитать можно, как они это сделали. До этого требовались видео длиной несколько минут или большой датасет фотографий и много часов обучения на GPU.
Ребята же придумали как сделать мета-обучение, чтобы потом всего на нескольких фото за несколько тренировочных шагов обучить модель под конкретного человека.
Их сеть показала отличные результаты при проверке на живых людях. Людям показывали 3 статических изображения одного человека, нужно угадать, где фейк.
Их лучшая модель показала результат 33%, то есть люди не догадались, где фейк и выбирали наугад.
Дальше немного о том, как.
Основа модели - генеративно-состязательная сеть(Generative adversarial network - GAN), которая состоит из 2х частей: генератора и дискриминатора. Они обучаются так: генератор создает изображения, а дискриминатор пытается отличить фейк от реального. Причем вывод дискриминатора используется для обновления весов генератора. Получается своего рода соревнование.
Их модель в итоге состоит из трех сетей: embedder, генератор и дискриминатор.
1. Embedder учится из исходного изображения и позы (landmark image, получен отдельным методом) получать вектор, который содержит информацию об индивидуальных чертах человека, независимо от позы и мимики.
2. Генератор, используя этот вектор и новую позу, генерирует фейковое изображение.
3. Дискриминатор, используя фейковое изображение и позу определяет насколько оно реалистично и соответствует позе.
Получается, большая часть уникальной информации о человеке содержится в сети embedder. Значит, чтобы генерировать изображения нового человека, нужно переобучить только эту сеть и немного дообучить (fine-tune) генератор и дискриминатор.
Саму идею иметь отдельный embedder позаимствовали из пары работ по генерации речи. Поменяли область использования, добавили состязательный (adversarial) компонент, поколдовали и вуаля.
https://arxiv.org/pdf/1905.08233.pdf
Ура! Вот и наши соотечественники попали в СМИ со своими достижениями в области deep learning.
Они научились генерировать видео «говорящей головы» используя несколько или даже одно статическое изображение. Видео генерирует даже ракурсы, не представленные на фото. Это надо просто увидеть (ссылка на видео ниже).
А почитать можно, как они это сделали. До этого требовались видео длиной несколько минут или большой датасет фотографий и много часов обучения на GPU.
Ребята же придумали как сделать мета-обучение, чтобы потом всего на нескольких фото за несколько тренировочных шагов обучить модель под конкретного человека.
Их сеть показала отличные результаты при проверке на живых людях. Людям показывали 3 статических изображения одного человека, нужно угадать, где фейк.
Их лучшая модель показала результат 33%, то есть люди не догадались, где фейк и выбирали наугад.
Дальше немного о том, как.
Основа модели - генеративно-состязательная сеть(Generative adversarial network - GAN), которая состоит из 2х частей: генератора и дискриминатора. Они обучаются так: генератор создает изображения, а дискриминатор пытается отличить фейк от реального. Причем вывод дискриминатора используется для обновления весов генератора. Получается своего рода соревнование.
Их модель в итоге состоит из трех сетей: embedder, генератор и дискриминатор.
1. Embedder учится из исходного изображения и позы (landmark image, получен отдельным методом) получать вектор, который содержит информацию об индивидуальных чертах человека, независимо от позы и мимики.
2. Генератор, используя этот вектор и новую позу, генерирует фейковое изображение.
3. Дискриминатор, используя фейковое изображение и позу определяет насколько оно реалистично и соответствует позе.
Получается, большая часть уникальной информации о человеке содержится в сети embedder. Значит, чтобы генерировать изображения нового человека, нужно переобучить только эту сеть и немного дообучить (fine-tune) генератор и дискриминатор.
Саму идею иметь отдельный embedder позаимствовали из пары работ по генерации речи. Поменяли область использования, добавили состязательный (adversarial) компонент, поколдовали и вуаля.
https://arxiv.org/pdf/1905.08233.pdf
