Pull to refresh

Comments 10

Данная серия постов очень впечатляет, большое спасибо автору!
Мне не до конца понятно с какой целью 90% статьи посвящать просто переводу оригинальной статьи + рисункам из статьи и презентации — всегда можно дать ссылку на оригинальный источник, а затем рассказать о своих результатах.

Конечно 3.2% процента ошибки на MNIST — это очень много. К тому же, насколько я понимаю, вы сами соотнесли центроиды кластеров с конкретными классами. Это не очень робастный подход — что если у Вас получились бы (и наверняка получатся на какой-нибудь другой базе типа ImageNet) смешанные кластеры?
Я не уверен (так как не проверял), но мне кажется, что хорошо реализованный метод наподобие kernal k-means даст результат не хуже.
Мне не до конца понятно с какой целью 90% статьи посвящать просто переводу оригинальной статьи + рисункам из статьи и презентации

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

Всегда можно дать ссылку на гугл или шпингер — там есть практически все публикуемые статьи, но цель поста именно в ознакомлении с алгоритмом, а не в том, чтобы отправить читателя в N разбросанных источников. По вашей логике и учебники люди пишут напрасно:)
Конечно 3.2% процента ошибки на MNIST — это очень много. К тому же, насколько я понимаю, вы сами соотнесли центроиды кластеров с конкретными классами. Это не очень робастный подход — что если у Вас получились бы (и наверняка получатся на какой-нибудь другой базе типа ImageNet) смешанные кластеры?

Вообще ESOINN в чистом виде не очень подходит для классификации, он больше для DataMining предназначен и для «предварительного» анализа данных поступающих в реальном времени. Но на основе полученного графа можно обучать, например, SVM и уже использовать как классификатор. В роботе Hero, например, вводили дополнительный ассоциативный слой, который отвечал за отображение внутренних классов во внешние.
Я не уверен (так как не проверял), но мне кажется, что хорошо реализованный метод наподобие kernal k-means даст результат не хуже.

А Deep Learning еще лучше будет работать на MNIST…
К счастью данный алгоритм описывается в одной статье (максимум 2-х), а не в «N разбросанных источников». И конечно под своими результатами я имел ввиду не код, а более глубокое исследование проблематики.

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

Я намеренно не сравнивал результат с алгоритмами, в которых есть хотя бы какие-то шаги обучения на размеченных данных (fine-tuning в deep learning), поэтому и привел в пример алгоритм чистой кластеризации.
Не совсем. Нейронный газ ведь по сути для представляемого ему множества стремится построить триангуляцию Делоне, а ESOINN наоборот пытается выделить топологические свойства этого множества(путем выделения областей высокой плотности и игнорирования шумов).
p.s. впринципе на «поиграться» может сгодиться и моя поделка на тему растущего нейронного газа, реализовано на C++ & Boost.
Расскажите, пожалуйста, подробнее про ваш эксперимент с MNIST.

В условиях на kagi предлагается классический эксперимент «обучение с учителем», к векторам данных в обучающем множестве даются номера классов.В такой постановке k-NN при k=1 дает ошибку на тесте MNST 3,09% на первых 1000 векторов теста и 3,8 % на всем тесте.
Пруфлинк: www.cs.ubc.ca/~murphyk/MLbook/pml-intro-22may12.pdf, стр. 25, Exercise 1.1.

Если у вас происходит кластеризация и обучение без учителя то тут, конечно, спрос другой.
Обучение шло без учителя, обучающая выборка была получена путем объединения обучающей(метки классов не учитывались)+тестовой выборок из задания конкурса(всего 70000 векторов). Алгоритм получил 14 кластеров, далее руками было построено соответствие между внутренними метками кластеров и реальными метками классов(как правильно заметили выше, не очень робастный подход и в реальных условиях так лучше если и делать, то очень осторожо) и посмотрел к каким классам отнеслись вектора из тестовой выборки и этот результат сабмитил в kaggle. Поэтому получилась такая не очень впечатляющая цифра.

По хорошему там стоило сначала выделить фичи во входных данных и понизить размерность + для классификации использовать дополнительный слой, отвечающий за построение отображения, но я намеренно не использовал никакого препроцессинга и постпроцессинга, чтобы получить относительно объективную оценку точности самого алгоритма, а не майнинга этой задачи.
Cпасибо, все понятно. Вполне может быть, что в такой постановке задачи это и правда неплохой результат.
Sign up to leave a comment.

Articles