Как стать автором
Обновить

Комментарии 52

О чем ваша статья? я вижу 4 абзаца сумбурного потока сознания, c непорядочными сумбурными ссылками.
Где искать решение проблем, какой подход верный? Может вы предлагаете ссылку на свой git с С++ реализацией медленных Python вставок в готовых реализациях?

Особенно порадовал вывод в секции «Что же делать?» в стиле лабораторной работы, и совет завязывать с танками, пост написан танкистом в завязке?
О чем статья? О бардаке и перетягивании одеяла :-) Хочется надеяться, что ситуация выровняется в лучшую сторону.

Как человеку только начинающему изучать практическую сторону реализации ML алгоритмов, статья несёт очень много информации которую не так легко получить где-то ещё.


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


Без таких статей как ваша различать все эти случаи в незнакомой области — не так-то просто или быстро. С подобной точки зрения не так-то часто и пишут. И куча времени может уйти на знакомство со ВСЕМИ инструментами, и потом собственное выстраивание выводов (с каким же работать блин???) которые здесь можно прочитать за 5 минут.


Я к чему, спасибо за статью, полезной информации в ней не то что есть, её МНОГО! И даже ваш стиль с многими точечными упоминаниями даже отдельных алгоритмов, или примеров применения, или даже просто парыми слов о вашей отдельной эмоциональной реакции к конкретным решениям — это очень круто и сюда подходит. Это не структурированная информация или мануал. Это набор маленьких частичек информации, но их очень много. Если не реагировать на то что формат не очень стандартный а просто воспринимать информацию, то тут очень круто. )

Спасибо! Пишите вопросы, постараюсь подсказать.
Это статья — крик души. Печаль… У других работает, а самому тяжело вникнуть. Прям по классике — «Лисица и Виноград»
Обижаете. У нас тоже работает и нет проблем с пониманием темы. Проблематика в другом немного, жаль что не удалось ее донести.
постоянно учиться и приобретать смежные знания

Кстати про "учиться":
Часто вижу очень интересные вещи, которые нынче делают с нейронными сетями. Распознавание, сверточные сети, Deep Learning.


Что почитать человеку, знания которого в области ИНС заканчиваются на персептроне? Видел множество статей, уроков, которые обещали объяснить относительно понятно все эти вещи, но они каждый раз оканчивались на описании искусственного нейрона.

Начните с курса Machine-learning на coursera. Думаю будет интересно и полезно.

Спасибо.

Не думаю, что там то, о чём спрашивалось, потому что в этом курсе как раз на обычном персептроне все и заканчивается, а свёрточных цепей там нет.
А рекуррентных? :-)
Этот курс требует от слушателя определенного начального уровня вхождения, причем не маленького. Инженер вряд ли врубится с ходу.
Так посоветуйте что-нибудь для инженеров.
http://colah.github.io/ — самое имхо лучшее
Возможно, заинтересует книжка «Построение систем машинного обучения на языке Python» 2016 года, авторы Луис Педро Коэльо и Вилли Ричарт

Нужно научить нейронок писать хороший код.

Сомневаюсь что это возможно, хотя… :-)
А я такую штуку поднимал и код Битрикс на ней генерил, а также «Войну и мир» и «Преступление и наказание» :-) Проблема пока в том, что какой бы тип ячейки рекуррентной сети вы бы не выбрали (LTSM, GRU, plain RNN), сколько бы слоев не ставили — такие модели хреново пока генерят последовательности на основе созданной языковой модели. Об этой проблемке пишет сотрудник Google Brain Team.
все верно, с языком сети не будут хорошо работать. Ибо нужно сравнивать не «образы слов» (лексики и ее всевозможных грамматических атрибутов), а семантических образов. А для этого пока есть только одно решение — онтологии. Но и оно пока неподъемно в общем случае. Поэтому если и пытаться запихивать язык в нейросети, то не лоб, а каким-то особым извращенным способом (типа через LDA/LSA и подобное).
А можно же так:
1) Из слов сделать эмбеддинги низкой размерости — т.е. соединить близкие слова по контексту
2) Пропустить набор эмбеддингов через рекуррентную сетку для получения семантического образа фразы
3) Затем сравнить семант. образ фразы (вектор), после линейной трансформации (размерность остается той же), с аналогично пропущенной через рекуррентную нейронку фразой из параллельного корпуса
4) Найти близкие фразы через банальный vector dot
Это понятно. Но тут как бы и нейросети и не нужны. Простые векторные модели это неплохо делают. А графические еще лучше. Т.е. получив «близкие слова», дальше уже масса вариантов их использования. Но вот получить их получается только «под задачу» — зависит от корпуса. А хочется «как в жизни»…
А как простые векторные модели могут сохранить контекст текста до? Рекуррентные сети — могут.
ну не совсем простые, на каждое слово вектор, т.е. матрицы сравниваются, типа термы-документы, но уже не разряженые.
А, после SVD которые? Ну там синонимы или близкие слова становятся одной колоночкой. Но контекст именно предложения они хранят как бы статически — т.е. набором слов. Ну можно еще завернуть на них сверточную сеть (фильтры) — но эта будет статика как не крути. А рекуррентные нейронки могут строить внутри себя смысловое представление последовательности предложений, прикольная возможность.
Можно и без SVD, можно и pLSA. А последовательность можно хранить, применив n-gramm, или что-то типа PMI. С предложениями тяжело, конечно, будет. Но их и не нужно. Важны только ключевые термы. То есть, нейросети в чистом виде не очень интересны для языка. Другое дело гибридные, когда какую-нить Байесовскую сеть можно запихнуть для оптимизации результатов CRF. Или CNN для уменьшения размерности параметрического пространства. Мне кажется это перспективнее.
Спасибо, интересно!
Но то, что эта штука поражает — это факт.
Пользуясь случаем хочу попросить посоветовать онлайн курсы по математике, где-то институтского уровня но «для чяйников». Желательно такие где можно материалы проходить не по календарю а по наличию времени. Заранее спасибо.
мне одно время назад хорошо помогли справочники по математике Выгодского
mathprofi
Немного может не подходить под Ваше описание, но в свое время мне эти материалы помогали, весьма доступно написано.

Просто это сейчас тренд со всеми вытекающими. Отмотайте время на 20 лет назад, и увидите как люди сочинают оды изяществу и эффективности ООП (выражение "design pattern" из нарицательного стало чуть ли не собственным), а про e-commerce говорят, что перевернёт мир, магазины закроются, всё будут покупать только в интернете, тысячи уволенных продавцов выйдут на улицу с факелами и вилами. Возникает over 9000 стартапов, которые пытаются вывести всё и вся в онлайн. Мы все знаем, что потом произошло с теми ребятами в марте 2000. Теперь возращайтесь в наше время, выполняйте подстановку ООП -> ФП и e-commerce -> machine learning — ничего не изменилось. Как только машинное обучение перестанет быть на слуху (а для этого обязательно нужно найти замену), всё встанет на свои места. Но скорее всего третьей волны уже не будет.

Да, была AI winter, помним, но с 2006 года прорыв же в качестве моделей случился, машинное зрение стало быстрее и лучше работать и заменять людей и не только в этой области

Если хотите красиво и быстро, есть (была?..) ещё такая штука на Rust: http://autumnai.com/

НЛО прилетело и опубликовало эту надпись здесь
Да смотрел я haskel, как и Scala — глубоко, серьезно, по-совести. И отложил. На python, да, императивном, извращенном, но тем не менее куча библиотек и графики легко рисовать быстро.
Замечу, DeepLearning4j — это не совсем Java. Все что касается интерфейсов — Java 1.7 и Scala. А все что касается тензоров — C++, с OpenMP и CUDA. И не исключено, что в ближайшем будущем OpenCL может появиться.
P.s. Я — один из разработчиков DL4j/ND4j. Буду рад ответить на вопросы, если таковые у кого появятся.
Добрый день! Хотел спросить как можно просто в DL4j в обучаемом с автоматическим диффиренцированием графе после нейронки и получения на выходе нейронки вектора, выполнить его линейную трансформацию с помощью квадратной матрицы — но так, чтобы веса матрицы обучались.
Начать можно с того, что AD не реализован на данный момент :(

P.s. В планах — есть. Но не приоритетная задача.
Видимо тогда можно попробовать решить через сукблассирование слоя обычной однослойной сети без сигмоида на выходе.
Да, согласен, вы правы. Но java как платформа со строгой типизацией, отличным jit и великолепной стандартной библиотекой выглядит привлекательно. А вот Scala, как замена python — вот где она мать ее? :-) Spark просиял, Akka — а дальше что? Где фреймворк машинного обучения на ней?
DL4j совместим с Scala, и прямо сейчас переписываются ND4s (Scala версия ND4j) и аналогичные работы по DL4j Scala ведутся :)
Так что возможно DL4j и станет таким фреймворком. По крайней мере людей использующих Scala я вижу в саппорт чате постоянно.
Народ, может кто кинуть ссылку на какой-нить туториал по свёрточным нейронным сетям для распознавания картинок (MNIST хотя бы), или поиска объекта на изображении, но обязательно на С++, python ради этого не хочется учить. Прям не могу найти, хоть тема и должна бы быть уже избита.
http://caffe.berkeleyvision.org/
Есть опыт работы с ANN в production системах. Текущий подход, где используется обучение с gradient descent, подходит для определенного типа задач. Идея в том, чтобы прогнать множество итераций с обучающим набором, чтобы получить достаточный уровень ошибки. В итоге получим распознавание паттернов, для определенного типа задач. Но проблема в добавлении новых знаний в существующую сеть. Неэффективно прогонять многие итерации обучения, чтобы добавить крупицу нового знания. Пока пытаются решить проблему one shot learning костылями типа Neural Turing Machine, но имхо это забивание гвоздей микроскопом. Более интересно совместить вероятностные подходы с ANN, например с Gaussian Processes и Deep Reinforcement Learning. Это уже применяется в робототехнике, но есть нюансы работы с широкими слоями ANN. Вообще, если следить за темой, то основные идеи меняются не быстро. С другой стороны, на хайпе нейросетей сейчас каждый ученый и его тетя пишут научные статьи, создавая илюзию стремительно меняющейся области. Особенно преуспели в том деле китайские товарищи, выдавая тонны г*вно статей на гора.
Спасибо, интересно!
Очень забавный тайминг у статьи :) Как раз пытаюсь подружить как-нибудь Caffe с JVM, причем нужно только «feed forward» — классификация без обучения. И очень желательно дергать её не напрямую а её питоновскую обвязку. Кто-нибудь извращался? :\
Нет, не пробовали. Удачи Вам! :-)
Нет, не пробовали. Удачи Вам! :-)

Работает не трогай. Вы код ядра линукс видели? А mysql? Индустрия слишком молодая. Технический долг отдадут когда закрепятся на рынке

Зарегистрируйтесь на Хабре, чтобы оставить комментарий