Pull to refresh

Comments 104

Очень интересно!

Если не секрет, код на видеокарте — CUDA или OpenCL?

Чистый C++ или из под какого-то другого языка и/или GPGPU фреймворка?
CUDA C++, сейчас еще научился dll делать и вызывать в dotNET — уже почти удобно работать.
Этот момент, поподробнее можете описать, или посвятить коротенький пост
да, с утра развернуто опишу в эту ветку — не заслуживает поста ИМХО )
1) в VS создать проект CUDA, в его свойствах назначить собираться как dll
2) добавить .h файл, где описать функции нужные для внешнего использования:
#ifdef __cplusplus
extern «C» {
#endif
//sample function
int __declspec (dllimport) func(unsigned char* buf,int W,int H,int *output1);
}
не забыть включить этот хедр в cu файл и описать эти функции
еще удобно назначить сборку этой dll в папку сборки dotNET проекта
3) откыть вторую студию (и так и держать обе отрытых всегда), и в dotNET проекте в класс, где оперировать этими функциями планируете:
[DllImport(«cudaDll.dll», CallingConvention = CallingConvention.Cdecl)]
static extern int func(byte[] buf, int W, int H, ref int output1);

удобно достаточно сделано, указатель — это и массив передать можно из dotNET и ref-ом вернуть значение.

Ну а потом в студии, где CUDA проект, можно назначить для debug-а исполняемый файл, как для CUDA отладчика/профайлера, так и MVSC участков C++ кода. а dotNET проект просто вызывает нативные функции из dll.
UFO just landed and posted this here
Почему вы так агрессивны? Люди только начали, и видеокарта, судя по всему, у них макбучная. Работает ведь? Все будет хорошо.
UFO just landed and posted this here
извините, а что такое таймланы?
мне тоже яндекс ничего не подсказал
UFO just landed and posted this here
А какое отношение таймлайны из Macromedia Flash имеют к методам машинного обучения?
UFO just landed and posted this here
Я тщательно подумал до того, как вам писать. Вы могли бы привести более конкретный пример, каким образом таймлайны можно использовать в качестве моделей «циклов мозга»?
UFO just landed and posted this here
UFO just landed and posted this here
15 секунд — это на далеко не самой производительной видеокарте для ноутбуков. Да и я почти уверен, что автор статьи хотел рассказать идею, а не показать самую крутую реализацию в мире. Я полагаю, там еще оптимизировать и оптимизировать.

Если честно, то и на уровне идеи не совсем понятно, что там на вход идет, что внутри происходит и что на выход...

На вход картинка. Нашли 20ку самых лучших цифр/букв в первой зоне (варьируются позиция, масштаб, наклон, масштаб по X, масштаб по Y), передали на следующую — там все гипотезы по персп.преобразованиям, выбрали лучшую, спроецировали обратно на первую. И там уже в поле всех гипотез (миниколонок) с учетом обратного проецирования выбрали лучший резонанс с запомненными цифрами/буквами. на выход описание вида: 1 — буква 2 — цифра 3- цифра 4-… ну и так далее.

Все законы преобразований нам позволяет знать либо жизненный опыт, либо формула геом.преобразований 12 строках кода

Возникает несколько вопросов:


  • Гипотеза (судя по рисунку) — это некоторое ROI на изображении, имеющее заданные параметры положения, наклона и размера?
  • Как именно происходит распознавание конкретных цифр/букв? Внутри каждого окна запускается классификатор?
  • Что происходит в процессе обучения? Подстраиваются параметры для каждой из гипотез с целью, чтобы окна накидывались на картинку не рандомно а наиболее эффективным образом?

Пока оно мне видится как шаг назад относительно Deep Learning, больше смахивая на DPM.

это точно не продолжение идей deep learning. Их и без нас продолжат.

некоторое ROI для зоны номер 1 — да. для зоны 2 — перспективное преобразование, описывание 4х угольником (ну тоже ROI, просто исковерканное).

да, каждая миниколонка-гипотеза решает а не припомнила она какую-то ситуацию. Не, там не SVM, попроще, но можно и ее в конкретной реализации.

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

Тогда совсем не видно принципиальной разницы с DPM… просто AlexeyR тут как-то обещался похоронить Deep Learning, а на практике пока как-то на убийцу совсем не тянет этот подход...

Сверточные сети на практике не тянули ни на что лет 15 :). все как-то контурные методы, ну Haar-detector и прочее правили бал.

deformable part models (тотже автор позже перешел на DL и накреативил семейство RCNN детекторов объектов).

UFO just landed and posted this here
UFO just landed and posted this here
Какой-то набор слов.

> Естественно надо стремиться к эвристикам.

А вот это вообще успех. Давайте выкинем все наши наработки по Machine Learning за последние полвека, ага.
UFO just landed and posted this here
такую двухзонную модель именно в визуальном представлении можно притянуть к DPM и даже к навороченной CNN, а можно сказать «а это полным перебором вы задачу решили — лишь немного эвристики добавили, мы так в 93ьем только работали, когда Deep learning не придумали, — детский сад!». Кстати, как раз механика работы мозга: есть несколько запомненных моделей и одна из них, поиграв контекстами (вот эту деталь там она там градиентами, а тут яркость, другая деталь, если вот так подкрутить, сойдет соответственно за ту часть модели), была узнана. И вот родилась мысль «это ж DPM! если тут подкрутить и там подкрутить», а кто-то узнает другую модель. Но вообще согласен, конечно, внешне похожа эта реализация. Будем работать над тем, чтобы и Вас удивить!

ну и правильный ответ: «конечно, модель настолько крута, что включает в себя и DPM!» ))
Ну, тем, кто в теме, в целом понятно, что происходит.
Происходит фильтрация, что-то типа beam search, фильтра калмана или решета эратосфена:
Вместо того, чтобы сначала применить один фильтр (картинка -> границы номера), а потом второй (картинка->цифры) к наилучшему результату первого фильтра, составляются два списка наилучших результатов каждого фильтра, и оставляются те из них, которые максимально удовлетворяют взаимным ограничениям.
Это может с точки зрения полноты оказаться лучше, чем брать результаты одного фильтра, и потом для каждого результата применять другой фильтр.
Возможно, взят неудачный пример, потому как мне кажется, в данном случае по скорости получится не лучше, чем beam search для beam size = 10 (т.е. оставляем 10 лучших результатов первого фильтра, потом для каждого из них прогоняем второй фильтр).
Но есть задачи, где данный подход творит чудеса, например, для unsupervised-построения списка слов по темам для английского языка (например: актёры, президенты, бизнесмены, бренды телефонов, виды фруктов) из зашумлённых источников MS Research получили среднюю точность около 92.8%, в то время, как конкуренты — 70-85%:
http://research.microsoft.com/en-us/projects/probase/default.aspx
Или, например, для обучения при распознавании речи с помощью нейросетей используется метод вычисления ошибки CTC (Connectionist Temporal Classification), который по сути дела, накладывает на нейросеть функцию ошибки, которая зависит от ответа нейросети — по сути, глядя на положение других букв, предсказанное нейросетью, и выделяя диапазоны, где данная буква или звук может находиться, и поддерживая пропорциональную положительную обратную связь для этих мест (и отрицательную обратную связь для остальных диапазонов): https://i.gyazo.com/56ef8b991da9f2eebdfe17aaf3eff3d0.png
Метод, рассмотренный в посте, предлагает способ объединения нескольких уже натренированных нейросетей для получения более точного результата — в этом его ценность. Предполагается, что так же действует и мозг человека — учёные утверждают, что разные зоны коры обладают разной функциональностью, и намного более точный и полезный результат для многих задач может образовываться при взаимодействии этих зон.
Конечно, чем-то, конечно, эта мысль кажется банальной для тех, кто занимался оптимизацией запросов к базам данных, но, тем не менее, все методы фильтрации в наше время являются эвристическими, и кроме beam search, использованного метода и метода ансамбля экспертов больше методов-то особо и нет.
Ещё хочу добавить, что я уверен, без потери точности данный метод может быть заменён маленькой нейросетью, вычисляющей по результатам двух нейросетей итоговый результат — качество объединения этих фильтров. Фактически, авторы настроили параметры этой третьей нейросети вручную по своему набору данных.
(Соответственно, можно всё это заменить на одну большую нейросеть, объединяющую эти три...)
Мозг безусловно имеет много черт традиционных баз данных, AlexeyR именно про это и писал, вы же сами на его статью сослались: https://habrahabr.ru/post/217055/
Так что перечитайте: «Волна, описывающая текущее состояние мозга, может выступать аналогом запроса к базе данных. Так же, как результат операции над отношениями есть отношение, так и ответ мозга может быть совокупностью ассоциативно связанных описаний, совмещенных в одной волновой картине.» — чем это отличается от описания механизма работы оператора JOIN в RDBMS? :)
Ещё одну ссылку хочу дать. Те же идеи, но в другой обёртке, позволяющей применить их для слежения за объектами на смартфонах. Алгоритм Predator: https://habrahabr.ru/post/116824/
да, Антон пробовал даже что-то подобное реализовать — работало ).
UFO just landed and posted this here
UFO just landed and posted this here

Хайкин "Нейронные сети. Полный курс".
Бенджио "Глубокое обучение".
А дальше вэлкам на arxiv.org, там тонны статей по теме.

Мне курс из Стенфорда нравится:
http://cs231n.github.io/
Когда впервые наткнулся на цикл статей Алексея о его гипотезе работы мозга, читал запоем до глубокой ночи, пока не прочитал все. И было очень интересно, как эти принципы получится применить на практике.
С большим интересом прочитал вашу статью, несмотря на то, что специалистом в этой теме не являюсь.
Насколько я понял, данный метод позволяет обойтись без обучения нейросети на тысячах изображений, и достаточно совсем небольшой выборки? При этом, в отличие от классических нейронных сетей, эта позволяет искать нужную информацию на изображении вне зависимости от ее перспективного искажения, поворота и прочего? Какая при этом достигается точность? Выше, чем при использовании «классических» сетей?
конкретно для этих двух зон да. так, первичная аудио-кора может быть расчерчена по основному тону(частоте) и темпу произношения, может интонационным оттенкам. Это достаточно принципиально научиться обучаться этим закономерностям, какая зона бы ни была для разных типов информации.
немного непонятно, 700 000 гипотез для картинки порядка 270х130 пикселей?
ага, параметров для гипотез много. Позиция, поворот, масштаб
Можно больше подробностей для специалистов? Какие входные для обучения (показали 22 автомобильных номера — это все цифры и буквы? Как насчет пространственных искажений?) Что такое гипотеза? Какие фичи использовались? В чем эффект обучения: если вы говорите о тысячах гипотез, то возможно речь идет о совместной оптимизации, но причем тут волновое распространение возбуждения? Пока статья выглядит как одно большое Вау.

Я два года назад познакомился с «Логикой мышления» Алексея, очень понравилось, но к сожалению, на практике не удалось поиграться.
Мне вот тоже совсем непонятно как именно была использованная сеть для обучения. А так тут по-сути «мы залили данные, получили такой результат». Я читал цикл статей Редозубова, но, к сожалению, не до конца. Описание обучения на реальных данных где-то там?
обучение надо отдельно рассказывать. Тут оно было довольно слабым. Показал в одном контексте и запомнил. Гипотезы — это различные контексты, а если словами, то: а вот если бы это изображение было смещено по X,Y, повернуто так и вот так изменены масштабы, то… точно! точно цифра 2 была (или буква «В»), как мне ее однажды показали. Так и передадим на следующую зону: это цифра 2, смещена X,Y, повернута так и вот такой машстаб. И тоже самое для след.зоны: показал один ровный автомобильный номер, запомнил. теперь гипотеза — а какое перспективное преобразование приводит к тому одному автомобильному номеру.

пространственные искажения тут не обучались, а прямо запрограммированы. Что не отменяет того, что нужно уметь обучаться им. Только это можно делать с помощью любого визуального мусора, например, мотая головой.
а где в этой логике механизмы Редозубова, если не секрет?
Через пару недель начну выкладывать подробное описание того, как работает мозг. Там будет детальное описание, в том числе, и этого алгоритма.
Поправьте пожалуйста опечатку vental на ventral, а то были некоторые сложности с переводом). В ссылке на источник также пишется ventral.
Talk is cheap, give me the code!
Серьезно, никакой информации в статье нет, только красивые картинки и оперирование эзотерическими (особенно для неспециалиста) терминами.
Область очень интересная, и если все честно, то результаты супер крутые, но пока есть ощущение, что это какая-то псевдонаука.
Напишите, пожалуйста, статью с подробным описанием технологии, с формулами и по возможности кодом.
да тут сразу весь расчет был написать мутненько, чтобы «журналиста изнасиловал ученый»! ))) И еще как код, как подробное описание, так сразу вся магия пропадет с формулировкой «а ну да… конечно это будет работать, очевидно же… скууукаа, какой же это ИИ!» Да, до ИИ еще как ложками грести через Атлантический океан.

Пишите в ЛС, если какие-то места кажутся совсем туманным именно Вам, — я поясню те моменты, с кусками кода, если потребуется. Можете сразу писать AlexeyR, он автор концепции.
Вот за такие посты я и люблю Хабр! Как приятно видеть, что не только ученые мирового уровня пытаются что-то изобрести в сфере ИИ. Даешь науку в массы!
> И не покидает общее впечатление, что те, кто занимается Deep learning, пользуются представлениями ученых 40х-60х годов, не спеша особенно разбираться в огромном массиве исследований нейробиологов.

Единственное общее, что современные нейронные сети имеют с мозгом — это изначальная мотивация и название. В остальном это набор перемножений матриц + крайне удачный алгоритм подбора элементов этих матриц. К тому же, все наработки нейрофизиологов скорее заключаются в том, как соединены нейроны внутри мозга (вот тут я могу быть неправ, поправьте, если не так). Гораздо более важная вещь — это как эти соединения формируются, о чем толком ничего неизвестно.

> Лично для меня важная проверка адекватности идеи — ее конструктивность. Можно ли вооружиться этой идеей и соорудить что-нибудь реально работающее?

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

По делу — очень хочется увидеть количественное сравнение с теми же нейронными сетями. Несколько примеров показывают только качественный результат, вы могли их выбрать среди кучи неудачных срабатываний, и так далее. Если бы было — нейросети точность X%, ваше X+1%, тогда не было бы вопросов. Ну и да, 15 секунд на картинку это очень-очень долго.
Эксперимент тоже не был бы чистым. Ну научу я сетку так, как научу (например, плохо). Посоревноваться с кем-то — уже интереснее. Но мы года 2 назад выкладывали огромную базу номеров и предлагали попробовать распознать и мы напишем результат. Конечно, это утопия тратить чье-то время на «а давайте посоревнуемся».

«Очень сложно сделать алгоритм, который работает лучше, чем все остальное в мире.» А с другой стороны не так уж и сложно, если только мне надо решить эту задачу.

тут вопрос ресурсов: когда на другой стороне этот же алгоритм пишут несколько корпораций и в каждой сотни специалистов (каждый круче меня, например)… я лучше сделаю прототип, который мне подскажет куда двигаться дальше и двинусь дальше. И шанс дойти до серьезной модели, которую уже действительно можно в чем-то сделать лучше, повысится. Может окажется тупик, но мне кажется не рационально залипать на автомобильных номерах )).
Для того, чтобы нормально друг с другом соревноваться, специально делаются открытые датасеты с фиксированными train-validation-test partitions. Вы могли бы взять вот этот — http://ufldl.stanford.edu/housenumbers/ — использовать препроцессинг, который описан тут — http://arxiv.org/abs/1312.6082 — и сразу получить результат против 11-слойной CNN. Задача очень похожа на автономера (номера домов с google street view), так что особой сложности не должно возникнуть. Конечно, это кому-то надо делать, что ресурсы, но тут уже ничего не поделать. Но если вы это сделаете, то сразу будет видно, что к чему.
«специально делаются открытые датасеты с фиксированными train-validation-test partitions» ну еще мы заинтересованная сторона, так что не помогло бы :))).

«сразу будет видно, что к чему» — не уверен. Ну например, мы использовали «автомобильный номер выглядит так» (а это 8-9 знаков очень строго геометрически расположенные, если правильную перспективу подобрать). CNN такую штуку не соберет и всегда кто-то кто капнет скажет «аааа, а вы вот тут так мощно подсказали!», или «да и база у вас маленькая!». И вообще, совершенно не хочется в таких простых задачах бодаться с CNN, тем более что в этом случае можно чуть ли не математически показать эквивалентность в последствии полученных решений и по выч.результатам и по выделенным моделям в итоге внутри нейронной сетки. Что и разумно.
И да! очень хотелось бы независимой экспертизы, довести работу до идеального состояния, и чтобы узкий круг специалистов согласился с ней (или не согласились). Но ресурсы. Могу только предложить помочь! С вероятностью процентов несколько, что-то у нас с этой «сильно моделью» в итоге получится и усилия будут потрачены не зря :).
Это не корректное сравнение. Приведённый тут алгоритм служит для поиска известных шаблонов, которые можно заложить в качестве обучающего контекста. Для тех же номеров домов это невозможно. Слишком много вариантов.
Что касается «обучить сеть с 6-тью софтмаксами на выходе более-менее стандартной архитектуры, непредобученную, по датасету в 1000 неповёрнутых номеров», то такой подход даёт точность уровня 60%. Я это пробовал.

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

Да, я не то что хорошо в подходе Редозубова разбираюсь, но Вася мне регулярно какие-то забавные идеи оттуда рассказывает.
Хорошо, тогда можно использовать CNN+Spatial Transformer (http://arxiv.org/abs/1506.02025) Лично пользовался сетью, похожей на ST-based, оно очень хорошо работает, даже если обучающих данных немного. На тех же номерах домов ST на ура обходят ту 11-слойную CNN.

> Нужно понимать, что у подхода, который тут представлен имеется кардинальное отличие от современных нейронных сетей.

В статье подход то толком не описан, слишком мало деталей. Можете объяснить, в чем заключается кардинальное отличие?
да, Spatial Transformer — вот похоже очень на то, что сделано в этй реализации. И результаты может даже получше будут, т.к. данных тренировочных попихать побольше можно. А может похуже.

Кардинальное отличие в том, что Spartial Transformer не дает идей, как речь распознавать, как смысл текста и прочее-прочее. А тут нет ограничений. Обучить как идентификаторы (понятия) меняются в разных контекстах, выделить портреты часто встречающихся (с учетом контекста), передать на след. зоны и так дальше до удобно-интерпретируюемых понятий. Т.е. кажется, что значительно универсальнее + есть идеи про сверхбыстрое обучение (если за эталон брать deeplearning).
Что-то я все еще не понял. Что мешает нам использовать фиксированное число ST+инициализировать их так, чтобы они примерно были в том месте, в котором должны быть символы+дать им перемещатся на не сильно большие расстояния и не сильно большие углы? Если так сделать, то мы успешно встраиваем prior о данных.

Deep Learning в сверхбыстрое обучение тоже умеет, но нужна предварительная фаза предобучения (я сейчас не про обучить на imagenet+дообучить там где надо, хотя это тоже чем-то похоже). В то, о чем вы писали про обучится с одного примера, Deep Learning толком не умеет, да. Но это дело времени, я уверен.

В общем реквестирую более детальную статью с алгоритмом обучения, иначе это будет бесконечный диалог :)
Можно. Можно вообще RCNN по каждой букве запилить. А можно ещё десятком других сетей. И это я пробовал. И находил варианты которые работают. Я лишь показал некорректность упомянутого.
Но я повторяю: сравнение некорректно. Как минимум потому что нужны большие датасеты для обучения сетей, а тут они не нужны.Тут — каждый пример значимый и референсный. Мне сложно объяснить концепцию, могу лишь предложить перечитать статьи Редозубова (вроде он даже продолжение обещает), а непонятные вопросы вытрясать из него и из Васи напрямую.
Отличная статья, спасибо, все очень хорошо и точно изложено.
Кстати, напишите, пожалуйста, сколько данных вы брали для обучения модели, каким образом происходило обучение, и предложите какую-нибудь воспроизводимую меру качества вашей модели.
Преимущество модели — безусловно, взаимное обучение нейросетевых фильтров: когда из нескольких кандидатур, предложенных одним фильтром, можно выбрать наилучший результат с оглядкой на другой фильтр, и произвести дообучение фильтра. А потом наоборот.
P.S. А насчёт нейросети вы не совсем правы. Однослойная нейросеть обучается на полном MNIST с качеством 92%, а двухслойная на 1000 случайных изображений из MNIST должна показать результат около 90% по точности, если не ошибаюсь. Шестислойной сети (если я вас правильно понял) 1000 изображений конечно же не хватит, она существенно недообучится.
Поэтому мне бы хотелось попробовать повторить с помощью нейросетей ваш подход и посмотреть, получится ли результат лучше вашего.
Ваши базы номеров и машин у меня скачаны, может, пора их наконец-то использовать? :)
м… я не обучал в привычном для нейросетей смысле. показал 22 картинки цифр (по одной на каждую, с чистых номеров взятых). И после отправки результата с первой коры (в первую зону отправил чистый номер) во второй зоне запомнил как образец. просто концепция другая совсем. Сейчас такое чистое незамутненное обучение без подсказок делаем, но там прилично сложностей еще.
Ок, а второй фильтр?
вторая «зона» приняла список «s, x y alpha sx sy» s — символ, x,y,alpha,sx,sy. символ намеренно похерила и запомнила список из 9 позиций: x,y,alpha,sx,sy. все. теперь, когда придет новый номер, каждая миниколонка за свою перспективу проверит, а не совпало ли с этим воспоминанием. такой второй фильтр. Потом спроецировала обратно какие x,y,alpha,sx,sy ожидала от первой зоны в рамках такой перспективы
ок, а «700 тыс кандидатов» — все равноценные? как избавляетесь от накопления ошибок со временем? тщательно подкрученными весами?
(я ведь весь этот путь прошёл в 2011 году с HTM — у меня были и проекции тоже! правда, там свои заморочки были)
что за накопления ошибок со временем?
Вы не могли бы представить верхнеуровневую модель происходящего, или лучше подождать поста Алексея?
Что меняется в модели со временем? Из чего состоит модель?
Без деталей, мне нужно только потоки данных, понять, что с чем и когда сравнивается и какие изменения с моделью данных происходят.
Если я правильно понял, модель цифр и знака загружается один раз и не изменяется. Но тогда каким образом она сравнивается с другими данными?
Вы перебираете все возможные позиции каждой цифры и смотрите коэффициент соответствия? Или что происходит?
«очно! точно цифра 2 была (или буква «В»), как мне ее однажды показали. Так и передадим на следующую зону: это цифра 2, смещена X,Y, повернута так и вот такой машстаб» — значит что, это бинаризация с вручную выбранным уровнем отсечки?
посты Алексея будут про другое. Для цифр да, там бинаризация по среднему из xor (или что-то очень похожее). Лучше было бы что посложней, но не заморачивался — и так почти всегда норм работало. на следующий уровень (втором) приходят дискретные описания где какая цифра расположена, как оринетирована и масштаб. Соответственно на втором уровне выбриается такое перспективное преобразовнаие, где модель лучшим образом соответсвует наблюдаемому в одном из контекстов (т.е. в одной из перспектив). Вот это как раз то место, где уже было интересно как реализовалось (лично мне), т.к. это не xor и не растровые картинки. Похоже на работу с «мешком признаком», по-моему так называется. Вот это будет у Алексея. Но и я сейчас передалал и первую зону на такое же дисректное описание — вообще поинтереснее работает.

Хм… результаты из поста получены при тренировке на 22 картинках?

тренировки не было. Просто показали «цифры, буквы выглядят так — 22 картинки», автомобилный номер — так — еще одна картинка. За счет богатого набора контекстов этого хватило. По нескольким картинкам получать можно классы и без явных подсказок как сейчас — об этом тоже скоро напишем. вот это точно магия в сравнении с нейросетями (deeplearning) современными ИМХО будет )
с учителем и афинное преобразование задано ручками — не обучал. Но в перспективе для других зон нужно будет зависимость от контекста обучить. это тоже реально.

Что значит "показали"? в смысле у вас было 22 размеченных картинки?


з.ы. было бы любопытно таки взглянуть на код...

Вася как-то путанно сказал. У него на вход подаётся:
  1. 22 картинки буков и цифр
  2. 1 картинка того как номер выглядит
  3. Явно прописанная модель как можно преобразовывать символы, по сути границы допустимости того, как можно описать номер

И это всё. Остальное обирается/строиться и додумывается самим алгоритмом.
Двачну товарищей скептиков выше: это все очень мило, и я приятно удивлен, что из цикла довольно философских, как мне показалось, статей о том, как устроен мозг, получилось что-то практическое и ML-ное. Но действительно хотелось бы посмотреть вживую (и погонять у себя) эту штуку на чем-нибудь типа MNIST.

Более того, как бы это сказать… меня слегка удивляет, что авторы сами первым делом не занялись такой, казалось бы, довольно напрашивающейся и первоочередной проверкой своих идей на практике. А то «вы все застряли в сороковых годах, а у нас тут кардинально новая концепция мышления» — это звучит замечательно (хоть и несколько эзотерично), но наверное, надо первым делом хотя бы проверить, что она работает и обгоняет всех этих немодных Лекунов, Хинтонов и прочую публику?
Вот хотелось бы, чтбы было так. Но если взять конкретную задачу, то она в конце концов будет решена наилучшим образом при существующей на сегодня выч.мощности доступных средств. как правило, не хуже и не лучше. Применять эту мощную концепцию и потратить года два на разработку, отладку, сборк базы, внедрение. Или же не знать никакой концепции и сделать тоже самое за теже года два. В каком смысле да — философия. Но это лишь до той поры, пока не будет больше экспериментальных данных, или не станет ясна задача, где можно за счет каких-то крутых свойств этой модели можно быстрее выстрелить и вау показать.

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


А ждать вау-эффекта и делиться идеями с относительно небольшой аудиторией ИМХО значительно замедляет прогресс.


Другое дело, если практических результатов уровня других решений получить не получается ни на какой задаче. Тогда правда возникает вопрос, реально ли получить такие результаты вообще.

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

Нынче модно выкладывать свои ML проекты на arxiv/gitxiv… там стоящую идею заметят и без конференций.

Не знал об этом. Но стоящую идею и на конференцию наверное возьмут? Хотя наверняка и не знаю, сам до публикаций еще не добрался.


Но идея одна и та же: стоит дать возможность другим людям, работающим в области, оценить, опробовать и развивать идею.

В ML сейчас такая движуха, что новые проекты и статьи появляются на основе еще не опубликованных статей, поэтому для получения проще выложить в паблик препринты + код, чем ждать какого-нибудь CVPR/ICML. Ну и да, сейчас хорошим тоном считается выложить коды к статье на github.

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

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

Ну то есть публикация препринтов имеет смысл если уже есть имя. А так вполне возможно, что статью не заметят. С таким объемом информации читать препринты от любого ноунейма вряд ли кто-то будет мне кажется.

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

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

mnist, кстати, надеюсь скоро покажем
Это хорошо, спасибо. Сразу просьба — сделайте еще cifar10/cifar100. Прошу, потому что хватает алгоритмов, которые достаточно хорошо работают на mnist-е, но при этом имеют проблемы с cifar-ами.
cifar10/cifar100 кажись не пригодные датасеты, потому что по одной картинки сложно отделить объект от фона. Нужно минимум от 3 до 5 последовательных кадров со смещением. Конечно можно получить результат и из 2 кадров от камер разнесенных на небольшое растояние, но «шум» еще будет довольно высоким.
cifar10/cifar100 точно не близко — заведомо шаг не туда был. Такие изображения требуют очень много опыта и очень развитой структуры зон, обученных и грамотно взаимодействующих друг другом. Иначе получается диван-леопард и много других смешных эффектов
Более того, удивлён столь мягким тоном комментариев.

И можно было бы детально описать, что нужно исправлять, но мне кажется, что такой список уже когда-то составлялся. Поэтому просто оставлю здесь ссылку.
брать энергию из ниоткуда не предлагали, да и даже 1млн р не просим :). По-этому и комментарии, думаю, настолько мягкие.
Хабр — не место для повышения некой «научной репутации». Когда будет обоснованная возможность обернуть все, что получается, в форму убедительную для большинства рационально мыслящих специалистов/экспертов — обязательно сделаем. Но в статье нет утверждения, что все сказанное — истина в последней инстанции. А чье-то внимание привлечет — супер!
MNIST никогда не проверялся на людях (покрайне мере мне это не известно). У меня получался процент корректного узнавания цифры менее 90%. Значил ли что «мои алгоритмы» далеки от ИИ?
Там есть и другие цифры, например 82% и 100% («5 Evaluation of Human level performance») и разговор идет о house numbers, а не о MNIST
Интересно всё же выходит, выдвигаются идеи, потом «научным» способом проверяются, и выдают результат, это похоже на ранние, первичные теории по теме физики, астрономии, химии, you name it, где есть предположения как оно устроено, потом они обрастают новыми предположениями, где-то опровергаются, и потом на их основе вырабатывается новый пласт, изменяющий первичные понятия.

Извините за такие сумбурные слова, но это действительно круто)

Такой момент. Вы проводили только обучение или еще и валидацию на картинках, которые модель раньше не видела?
Вот те картинки выше — это на тренировочных или на валидационных?

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

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

Как он это делает конкретно и как обучается? «В итоге вышло 700000 гипотез» — как они формируются, как тренируются, и какие из них идут на следующий уровень во время собственно распознавания?

Далее есть второй уровень, куда приходит видимо картинка и некоторые гипотезы из прошлого уровня.
Она проверяет все возможные проективные преобразования и запоминает что в зависиости от чего?
Sign up to leave a comment.