2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Упаковка данных автокодировщиком
Сообщение23.02.2017, 21:01 


23/12/07
1757
Сперва думал, что понял идею autoencoder-ра - типа, вариант качественного сжатия с потерями информации (за счет того, что сжатие осуществляется в пространстве признаков, то отбрасываться будет только несущественная), а потом перестал понимать, ведь нейронка может просто научиться тупо "паковать" N входных значений в M промежуточных, а потом обратно распаковывать. В чем тогда смысл?

Кстати, этот вопрос перекликается с тем, почему на выходе распознавалки цифр выгоднее ставить по одному нейрону на каждую цифру вместо 4 нейронов, которые, в принципе, способны, закодировать любую цифру. Где-то читал объяснение, наподобие "ну так нейронке проще обучиться" и т.п., но меня такое объяснение что-то не очень устраивает. Есть на сегодняшний день какие-нибудь более обоснованные? Интуитивно кажется, тут идет игра на непрерывности отображения, которое реализует нейронка.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение23.02.2017, 21:27 
Заслуженный участник


27/04/09
28128
(Далее дилетанские размышления.) (Про цифры.) Ну да, вот если бы распознавались не арабские цифры, а набор значков на фиксированных местах, то по одному нейрону на цифру было бы уже не настолько полезно, потому что можно было бы заставить каждый нейрон распознавать значок на своей позиции. Скажем, распознавать цифры семисегментного индикатора или «почтовые» наверняка такую сеть обучить можно было бы.

(И совсем оффтоп.)

А почему три нейрона — учитываются отрицательный, положительный и нулевой сигналы? Насколько это распространено по сравнению с «отрицательный/положительный» или «есть/нет»?

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение23.02.2017, 21:37 


23/12/07
1757
arseniiv в сообщении #1194856 писал(а):
(Далее дилетанские размышления.) (Про цифры.) Ну да, вот если бы распознавались не арабские цифры, а набор значков на фиксированных местах, то по одному нейрону на цифру было бы уже не настолько полезно, потому что можно было бы заставить каждый нейрон распознавать значок на своей позиции. Скажем, распознавать цифры семисегментного индикатора или «почтовые» наверняка такую сеть обучить можно было бы.

ну так вопрос - почему?

(arseniiv)

arseniiv в сообщении #1194856 писал(а):
А почему три нейрона — учитываются отрицательный, положительный и нулевой сигналы? Насколько это распространено по сравнению с «отрицательный/положительный» или «есть/нет»?

исправил на 4, чтоб не вызывать подобных уточнений :)

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение23.02.2017, 22:11 
Заслуженный участник


27/04/09
28128
_hum_ в сообщении #1194857 писал(а):
ну так вопрос - почему?
Потому что форма обычных цифр, возможно, «более сложная», чем форма семисегментных или, скажем, набора из четырёх лампочек, представляющих двоичную запись. Если взять сеть с кучей нелинейностей, то, наверно, ей всё будет нипочём, но мне кажется, что такую сеть будет и обучить труднее, потому что в ней будет больше степеней свободы.

(Это всё продолжение моего совершенно поверхностного представления о НС, так что вы не надейтесь, что я что-то путное говорю. Если я даже угадаю верно, это действительно плохо сойдёт за объяснение, тем более что верное утверждение может иметь некорректное доказательство. Я просто решил заполнить пустоту, пока она есть, и чтобы тема ненароком не утонула раньше того, пока в неё кто-нибудь знающий не заглянет. :-))

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение23.02.2017, 23:21 
Заслуженный участник
Аватара пользователя


16/07/14
8339
Цюрих
1) как раз и научится паковать; но т.к. запаковать/распаковать всю обучающую выборку без потерь она неспособна (надо подбирать параметры, чтобы была неспособна, иначе ничего работать не будет) - то ей приходится выделять самые важные признаки для минимизации погрешности
2) one-horse encoding на выходе делает выходы более "независимыми" - например, если у вас есть два сложно отличиях класса, он позволяет хотя бы отличить их от остальных. Если вы будете кодировать выход в двоичной записи - то вы вообще можете получить что-то третье.
Плюс он задает понятный вероятностей смысл, что позволяет разумным образом ставить задачу глобальной оптимизации. Что у вас будет функцией потерь для двоичной кодировки? L2 расстояние до правильного кода? Тогда очень точно угаданные 3 разряда и неправильный 4й по качеству будет как все 4 немного неточно. Хотя первый вариант дает максимально вероятным неправильный ответ, а второй - правильный.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 07:23 


23/12/07
1757
mihaild в сообщении #1194873 писал(а):
(надо подбирать параметры, чтобы была неспособна, иначе ничего работать не будет)

а можно поподробнее, ибо я нигде не встречал упоминания о "специальном подборе параметров"?
mihaild в сообщении #1194873 писал(а):
Если вы будете кодировать выход в двоичной записи - то вы вообще можете получить что-то третье.

третье как раз можно отнести к "не знаю/не уверена". но если причина только в этом, то ладно, давайте сузим задачу до распознавания 8 цифр и 3-х нейронов.

mihaild в сообщении #1194873 писал(а):
Что у вас будет функцией потерь для двоичной кодировки? L2 расстояние до правильного кода? Тогда очень точно угаданные 3 разряда и неправильный 4й по качеству будет как все 4 немного неточно. Хотя первый вариант дает максимально вероятным неправильный ответ, а второй - правильный.

можно взять дискретную метрику (0 при совпадении, 1 - в противном случае).

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 08:26 
Заслуженный участник
Аватара пользователя


16/07/14
8339
Цюрих
_hum_ в сообщении #1194934 писал(а):
а можно поподробнее
Самый простой пример: если $M=N$, то сеть ничего полезного не выучит.

_hum_ в сообщении #1194934 писал(а):
можно взять дискретную метрику
И как это учить? Стандартный градиентный спуск требует дифференцируемости функции потерь.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 12:51 


23/12/07
1757
mihaild в сообщении #1194937 писал(а):
Самый простой пример: если $M=N$, то сеть ничего полезного не выучит.

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

mihaild в сообщении #1194937 писал(а):
И как это учить? Стандартный градиентный спуск требует дифференцируемости функции потерь.

то есть, причина только в том, что обычный градиентный спуск будет неприменим?

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 22:38 
Заслуженный участник
Аватара пользователя


16/07/14
8339
Цюрих
_hum_ в сообщении #1194972 писал(а):
ведь любое n-мерное пространство можно биективно отобразить на одномерное
Можно. Но соответствующая функция невыразима через нейроны.

_hum_ в сообщении #1194972 писал(а):
причина только в том, что обычный градиентный спуск будет неприменим?

Причина чего именно? Использования one hot encoding? Его понятно как учить, и это в итоге работает. Все идеи, как учить бинарные кодирование, работают хуже.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 23:11 


23/12/07
1757
mihaild в сообщении #1195183 писал(а):
Можно. Но соответствующая функция невыразима через нейроны.

это как? любая измеримая функция выразима (с любой наперед заданной точностью) с помощью нейронной сети.

mihaild в сообщении #1195183 писал(а):
Причина чего именно? Использования one hot encoding? Его понятно как учить, и это в итоге работает. Все идеи, как учить бинарные кодирование, работают хуже.

это ответ наподобие - это используют, потому что это работает. а вопрос был, почему именно это работает, а другое - нет.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 23:36 
Заслуженный участник
Аватара пользователя


16/07/14
8339
Цюрих
_hum_ в сообщении #1195188 писал(а):
любая измеримая функция выразима (с любой наперед заданной точностью) с помощью нейронной сети.
Именно что "с любой заданной точностью". При типичных размерах сети и данных, можно выделяя существенные признаки получить куда лучшую точность, чем произвольным вложением $\mathbb{R}^n$ в $\mathbb{R}$.

_hum_ в сообщении #1195188 писал(а):
почему именно это работает, а другое - нет.
Что "другое"? Дискретная функция ошибок? Потому что учат градиентный спуском, а он требует дифференцируемости.
Вообще, чтобы формально доказать, что одно тут работает лучше другого, нужно сначала формально поставить задачу - т.е. задать функцию, которую мы хотим приблизить. Но если мы можем это сделать, то методы машинного обучения нам уже не нужны.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение24.02.2017, 23:49 


23/12/07
1757
mihaild в сообщении #1195194 писал(а):
Именно что "с любой заданной точностью". При типичных размерах сети и данных, можно выделяя существенные признаки получить куда лучшую точность, чем произвольным вложением $\mathbb{R}^n$ в $\mathbb{R}$.

можете обосновать?

mihaild в сообщении #1195194 писал(а):
Что "другое"? Дискретная функция ошибок? Потому что учат градиентный спуском, а он требует дифференцируемости.

я же и спрашивал - это единственная загвоздка? то есть, если завтра научатся использовать другие методы оптимизации, то при всех прочих равных условиях такая сеть будет обучаться и работать так же хорошо, как и с "one hot encoding"?

mihaild в сообщении #1195194 писал(а):
Вообще, чтобы формально доказать, что одно тут работает лучше другого, нужно сначала формально поставить задачу - т.е. задать функцию, которую мы хотим приблизить. Но если мы можем это сделать, то методы машинного обучения нам уже не нужны.

мне бы хотя бы хоть какое обоснование пока (без строгих выкладок)

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение25.02.2017, 00:16 
Заслуженный участник
Аватара пользователя


16/07/14
8339
Цюрих
_hum_ в сообщении #1195196 писал(а):
можете обосновать?
Могу. Автоэнкодеры работают:)
_hum_ в сообщении #1195196 писал(а):
если завтра научатся использовать другие методы оптимизации, то при всех прочих равных условиях такая сеть будет обучаться и работать так же хорошо, как и с "one hot encoding"?
Смотря какие "другие методы". Если "дающие то же качество" - то по определению будет. Если нет - то смотря что за методы.
Если вопрос "можно ли нейронкой того же размера получить ту же точность на MNIST" - то не знаю. Скорее нет, чем да, но тут интуиция может врать.

Обоснования "на пальцах": one hot encoding всегда можно сделать из двоичной кодирования заменой последнего слоя, обратное, вообще говоря, требует добавления нового слоя.
И если мы верим, что каждый нейрон учит какой-то "признак", то добавляя по выходному нейроны на класс, мы позволяем нейронке учить, например, признак, отличающий 1 и 7 от всего остального, а в бинарном кодировании так не получится - какие нужны признаки на предпоследнем слое, определяется кодировкой.

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение27.02.2017, 08:13 


23/12/07
1757
mihaild в сообщении #1195200 писал(а):
_hum_ в сообщении #1195196 писал(а):
можете обосновать?
Могу. Автоэнкодеры работают:)

это не обоснование.

mihaild в сообщении #1195200 писал(а):
Обоснования "на пальцах": one hot encoding всегда можно сделать из двоичной кодирования заменой последнего слоя, обратное, вообще говоря, требует добавления нового слоя.
И если мы верим, что каждый нейрон учит какой-то "признак", то добавляя по выходному нейроны на класс, мы позволяем нейронке учить, например, признак, отличающий 1 и 7 от всего остального, а в бинарном кодировании так не получится - какие нужны признаки на предпоследнем слое, определяется кодировкой.

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

 Профиль  
                  
 
 Re: Упаковка данных автокодировщиком
Сообщение27.02.2017, 10:53 
Заслуженный участник
Аватара пользователя


16/07/14
8339
Цюрих
_hum_ в сообщении #1195717 писал(а):
это не обоснование
Обоснование. Если бы произвольное вложение $\mathbb{R^n} \to \mathbb{R}$, приближенное нейросетью, давало то же качество - то было бы странно, что находится не оно, а какое-то "полезное".
_hum_ в сообщении #1195717 писал(а):
с заменой слоев рассуждения не понял
А что именно?
Либо я где-то что-то очень плохо сформулировал, либо вы не понимаете чего-то совсем простого. В любом случае надо с этим разобраться, а не идти дальше.

И я не очень понимаю, что вы хотите. Какой-то хорошей теории "почему нейросети работают" нет (утверждение, что задаваыемые ими функции плотны в пространстве непрерывных, бесполезно). Ее нет в том числе потому, что непонятно, как хотя бы сформулировать утверждение "нейросети работают".

Есть какие-то "интуитивные соображения", которые могут служить разве что "затычкой для любопытства", и их распаковывать бесконечно невозможно. Так что нет, давайте скажем, что я не могу "обосновать" утверждение "нейрон учит признак" - я его даже сформулировать не могу. Могу в ответ спросить вас, что значит "нейрон реагирует на несколько признаков", и чем вообще несколько признаков отличается от одного признака "их конъюнкции".

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group