ailev.ru

Обсуждение

В архиве: 10 комментариев.

Читать и комментировать в ЖЖ ↗

Имя не сохранено · 21 октября 2015

Комментарий

Я слушала две лекции Бенжио этим летом на Lisbon Machine Learning School. Он очень хорошо объясняет, и там большая часть была занята именно мотивацией. Про взрыв размерности и почему нам никогда не будет хватать данных, если только мы не измельчим их и не перемешаем при помощи многих уровней. Но в конце, когда он рассказывал про конкретные приложения - картинки там всякие и т.п., много было впечатляющего - он все время говорил, что надо очень много данных, чтобы это работало. И у меня какой-то когнитивный диссонанс случился, как будто начало концу противоречило. И прямо до сих пор жалею, что не спросила его об этом.

Анатолий Левенчук · 21 октября 2015

Комментарий

Ха-ха, а когда я говорю, что нужно много данных, говорят я привираю -- см., например, дискуссию к http://lex-kravetski.livejournal.com/528115.html (получается, что Бенжио тоже привирает! ;) ). Там две разные линии рассуждений: 1. Объяснение того, почему нейронная сетка действительно выразительная штука и почему при обучении есть шанс её обучить. Собственно, это значительная часть дела. 2. Объяснение того, почему данных нужно ну очень много (показателен тут пост http://habrahabr.ru/company/meanotek/blog/266961/ -- там объясняется, что таки "много"). Это объяснение в других местах. Обычно оно сводится к тому, что ввиду чрезвычайной выразительности нейронной сетки, она на малых данных просто overfit -- и дальше либо нужно реально много данных, либо нужно сознательно привносить в данные шум (dithering), что по факту означает увеличение количества данных. Есть довольно много групп, которые пытаются заниматься уменьшением количества данных (например, Вапник пытается выйти на "умного учителя"), поэтому теоретические обоснования нужно искать там. Я встречал эти обоснования, но быстро ссылку сейчас не вспомню.

Ответ на комментарий

Имя не сохранено · 21 октября 2015

Комментарий

Нужно не много данных, а очень много данных. :) И все равно мне тут видится какой цикл - overfit как раз потому и происходит, что есть dimensionality curse. А если его научились обходить, то откуда опять overfit?

Ответ на комментарий

Анатолий Левенчук · 21 октября 2015

Комментарий

Его не научились обходить! Как я понимаю, его научились игнорировать (говорить, что там ничего страшного нет и это вовсе не проклятие, а так жизнь устроена). Overfit никуда не девается, все практические работы рассказывают, как с ним борются. А вообще очень забавно наблюдать, как каждые пару недель делается какая-то атака на основание (например, Бенжио долбит в backpropagation, плюс предлагает заменить умножение битовым сдвигом что приведёт к удешевлению и убыстрению железа в разы и разы). Лента http://vk.com/deeplearning просто поражает плотностью событий в ведущих лабораториях. Но мы ведь понимаем, что огромное число событий сейчас происходит в закрытых от посторонних глаз стартапах! Финансирование-то уже пошло, дальше ждём пару-тройку лет до выхода продуктов.

Ответ на комментарий

Имя не сохранено · 21 октября 2015

Комментарий

С учебниками для детей этого возраста - беда...

Имя не сохранено · 22 октября 2015

Комментарий

Оказывается я уже давно "разговариваю прозой" :) Мульти-клустер... подумать только Корал! :)

Имя не сохранено · 25 октября 2015

Комментарий

Обычно оно сводится к тому, что ввиду чрезвычайной выразительности нейронной сетки, она на малых данных просто overfit -- и дальше либо нужно реально много данных, либо нужно сознательно привносить в данные шум (dithering), что по факту означает увеличение количества данных. Оно кагбэ несколько не так обстоит дело. Выразительность нейросетки регулируется регуляризацией (конструкцией сетки конечно тоже). Например, можно начать треню с малых весов, потом по мере трени они будут расти, сетка будет выучивать больше знаний (в том числе шума) и как только ее перформанс на валидации начнет падать, то треню можно прекратить (ну и взять веса с той эпохи где результат на валидации лучше всего. Это называется early stopping. Фактически бесплатный метод регуляризации. Есть и другие методы, например, L1/L2 ограничения на веса, всякие способы сделать сетку sparse, dropout/dropconnect, вроде batch normalization подозревают в регуляризации, unsupervised pre-training (инциализация тоже есть способ повлиять на регуляризацию). Наверное, еще есть способы, но я не в курсах. Добавлять шум - тоже может быть способом регуляризации (dropout/dropconnect, denoising autoencoders). И это может быть способом увеличить кол-во данных. Но тут тонкий момент. Например, стоит задача улучшить распознавание зашумленных изображений - тут добавление шума хороший способ многократно увеличить кол-во данных. Но я бы сказал, что это не всегда так. Грубо говоря, нужно быть уверенным, что зашумленные данные не меняют принципиально целевого вероятностного распределения. Т.е. с картинками это часто так. Плюс вообще картинки можно в небольших пределах искажать/трансформировать. А например, есть финансовые ряды. Небольшой шум роли не сыграет и вряд ли поможет в плане трени. А большой шум уже может существенно нарушить распределение. Так что стремно. Конечно, добавить вариацию все равно можно, но надо действовать хитрее.

Ответ на комментарий

Имя не сохранено · 25 октября 2015

Комментарий

с проклятием размерности борются выбором prior'а - Бенджио должен был об этом говорить грубо говоря, раньше был smooth prior а сейчас допустим "deep" prior или к примеру sparse вообще тут ведь важную роль играет выбор алго - за ними стоят разные априорные предположения можно сказать что борьба с проклятием идет подбором лёрнинговой архитектуры, которая удачно ляжет на ту или иную задачу ну тут и полезно иметь много разных гибких алго, в том числе конструируемых из отдельных кусочков

Ответ на комментарий

Анатолий Левенчук · 25 октября 2015

Комментарий

Шум и всякая стохастика -- это вообще для меня почти синонимы. А тренд явно на использование стохастики вместо каких-то точных методов (всё движение за biologically plausible deep learning про это).

Ответ на комментарий

Имя не сохранено · 25 октября 2015

Комментарий

мне кстати именно по этому и думается что deep learning нужно изучать "глубоко" :) - чтобы чуть более осознанно бороться с проклятьем путем тонкого и гибкого конструирования лёрнингового процесса на разных уровнях

Ответ на комментарий