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

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

Ну. Все не так плохо же. Если есть пару лет опыта в похожих делах, то в большинстве случаев более-менее интуитивно понятно почему сетка не работает. И в продакшне часто есть рабочий сети. Не так долго развернуть.
Самый жёсткий момент: очень мало кто из руководителей проектов понимает, что их проект может не взлететь. При этом не по вине программиста. И не из за раздолбайства спорта. И не из-за рынка. А из за того что по их данным может просто не заработать: низкое качество, много шумов, и. Т. Д. Никто не признает возможность существования неконтролируемого риска.
Очень верно подмечено!
И в продакшне часто есть рабочий сети


Рабочего жаль.

низкое качество, много шумов, и. Т. Д.


Все это и есть входные данные для разработки, а не для продуктизации
Да там не только рабочий, там ещё и суппорт в спорт превратился. Мобильник не верил в такие слова. А проверить при выходе из вагона не успевал.
Все это и есть входные данные для разработки, а не для продуктизации

Сейчас, зачастую, это две общих вещи. Вы не можете набрать одну базу данных на одном устройстве для опытов, а потом вторую — для внедрения. Зачастую сбор данных — на порядки сложнее и дороже, чем их анализ и создание сетки которая их анализирует. Когда вы вложились и получили хреновую базу — тут уже мало что можно сделать. Можно по ней обучиться, тогда даже как-то работать будет. А можно полностью пересобрать базу изменив условия. Тогда есть шанс, что она будте нормальной.
Но часто нельзя понять нормлаьная база или нет, пока не прогнать по ней несколько алгоритмов обучения.
Это да, мало того реальные данные не дают под соусом секретности/приватности.
Слов много, по существу — мало.
Не, ну можно матанчиком было поругаться, матрички помножить, но зачем людей пугать? Хочется чтобы начали делать, пошли вперед, был драйв, желание, энергия! А там и матанчик подоспеет и сигмоиды и гиперболические тангенсы уже не будут так пугать.
Кого вы тут собрались испугать «матричками» и матаном? На эту статью обратят внимания восновном те у кого образование включало отнюдь не только матан и «матрички». Видно что автор сам в этой теме делает первые шаги.
Да, я инженер-электромеханик. Но приходится интенсивно учиться последние 15 лет :-)
Теперь понятно.
Приятно умничать, да? Вот поэтому и пост написан, много кто умничает, а когда до продакшена доходит, начинается :-)
Основная проблема при использовании глубоких сеток — это не качество их работы, а потребность изменять под них саму парадигму работы.

Например, мы сделали сетку, которая правильно работает в 90% случаев. Это круто. Мы не можем без боли воткнуть её в существующие бизнес процессы, потому что для существующих процессов — 90% — слишком мало. Надо 100%. Соответственно, обучатор сетей заслуженно гордится своими результатами, а потребители — плюются от низкого качества. И решения в той парадигме — нет. Меняйте парадигму.

Допустим, у нас классическая задача классификации чего-то там на несколько классов. Сейчас эту задачу решают люди вручную, и сортируют картинки/звуки/ватэвер. Заменить людей сеткой — нельзя. 10% ошибок — слишком много. Но можно перестроить алгоритм работы людей так, что-бы они подтверждали классификацию сети вместо того, что-бы классифицировать самим. Это — смена парадигмы. Сеть оптимизирует работу ассесоров, сокращает их количество, и мы всё равно оставляем окончательное решение за человеком.
Смотри, но есть же задачи, где глубокие сетки уже работают быстрее и точнее человека? Распознавание образов когда требуется очень быстрое. Т.е. заменить иногда людей можно. Но чтобы обучить такую сеть, требуется миллионы примеров, а это уже проблема нередко, как их разметить эффективно?
хорошо, что к дип лернингу не имеет никакого отношения
Размечать людями и то не усё…
… но это уже детали, ИМХО основная проблема глубоких, в отношении к ним как к чёрным ящикам исполненной магией ботанов, лет двадцать-тридцать тому, такое-же отношение было к сетям обычным, и так-же практики набивали шишки, а теоретики популярно объясняли почему, но их никто не слушал.
Соблазн глубоких в том, что можно не вникая в тему получить «не слишком стрёмные» результаты, и наивно надеяться дуриком проскочить, а дальше одно из трёх, либо повезёт, либо «повезёт», либо задача принципиально не решаема :-)

Я сам из инженеров, но темой увлёкся давно и имел возможность «баловаться», те решать синтетические задачи ради науки, изобретать велосипеды, а во взрослой жизни так увы не бывает, от инженера хотят результат, а не опыты…
Увы, даже при наличии огромного датасета, в большинстве задач superhuman performance или даже human performance не наблюдается (кроме самых мелких, конечно).
Поэтому надо разбираться подробнее:
Быстрее и точнее среднего человека? (И неподготовленного к задаче?) Или лучшего и натренированного?
Из «точнее лучшего человека» — наверное только распознавание дорожных знаков в низком качестве в лабораторных условиях и другие подобные задачи, а также не-нейросетевые методы (в т.ч. Jeopardy — IBM Watson for Jeopardy, которая не нейросеть).
Паритет в распознавании цифр, в шахматах и в го.
Из «быстрее среднего человека, но не точнее» — да, много чего можно придумать, особенно когда удаётся уменьшить сложность задачи.
Но большинство практических задач типа «распознавание картинок», «распознавание речи», «классификация текста», «понимание смысла текста», «распознавание эмоциональной окраски», «вождение машины без использования лидара» — всё ещё лишь на уровне среднего тренированного человека или ниже.

Ссылки:
Wiki: Progress_in_artificial_intelligence,
https://xkcd.com/1002/ (games),
http://rodrigob.github.io/are_we_there_yet/build/ (images),
https://github.com/syhw/wer_are_we (speech)
Спасибо! Познавательно очень.
обычно выделяют какой-то массив, который автоматизируется на 99,99% (т.е. сильно точнее человека может работать), а остальное оставляют на рост и ручную обработку. Сокращение объема человеческой работы в 2-10 раз все же существенно.
Согласен, что нейросетки достигли определенного прогресса в распознавание образов и речи (те же образы, только спектральные). Но в лингвистике увы и ах (за исключением простых задач, типа классификации текста). Ибо главная задача нейросети — минимизировать ошибку распознавания образа. Но в лингвистике образ семантический, который можно передать тысячами способами словесных цепочек. Технологии, позволяющие вынимать смысловой образ из текста, пока в зачаточной стадии развития (я не беру в рассмотрение тяжелые и туманные LSA или LDA). Поэтому я не спешу быть в тренде и переводить целиком систему на нейросети. Скорее использовать локально, для оптимизации промежуточных результатов.
Текущий прогресс речи и образов во многом обусловлен наличием больших датасетов. Чем больше датасет и сетка — тем выше качество. Нужны именно оба, а детали устройства сетки иногда даже не так важны (на многих подзадачах может быть разница всего в 5% между RNN, LSTM и CNN, например).
Так что, может, с технологиями NLP всё и норм, но мы это проверить не можем — с датасетами огромная проблема!
Например, вполне возможно что качество синтаксически-семантического парсинга можно до человееского уровня довести увеличением датасета (частично SyntaxNet Parsey McParseFace именно это и подтвердил!). На прагматических конструкциях и эмфатическом общении тоже неплохой прогресс (и рескоринг результатов БД, и seq2seq применяется).
Даже может быть, что мы бы и мышление и человеческое решение задач более-менее повторили, если бы умели у человека эффективно снимать информацию с мозга.
Тогда какой смысл в неросетках, если я те же результаты получаю стандартными стат. методами, обучаясь на небольших датасетах?
Не уверен, что человеческое мышление можно повторить, поскольку оно не логично, а скорее мифо-логично. Да и зависит от состояния паралимбической области мозга в данный момент времени, т.е. определяется эмоциональным состоянием, а логикой обучения.

По поводу больших датасетов: ИМХО внедрение новейших технологий гуглом ухудшило поиск — теперь сложно получить ответ на специфический запрос, выходящий за пределы парадигмы. Поэтому дело не только в данных, но и «гибкости» решения.
>Тогда какой смысл в неросетках, если я те же результаты получаю стандартными стат. методами, обучаясь на небольших датасетах?
На простых задачах — никакого. А в более сложных задачах нейросети дают автоматический feature engineering и при этом позволяют получить более хорошие результаты, чем у других методов.
>Не уверен, что человеческое мышление можно повторить, поскольку оно не логично, а скорее мифо-логично.
У мышления есть разные компоненты. Какие-то было бы неплохо повотрить. Вы смотрели на Dynamic Memory Networks и датасет bAbI?
https://research.facebook.com/research/babi/
>Да и зависит от состояния паралимбической области мозга в данный момент времени, т.е. определяется эмоциональным состоянием, а логикой обучения.
Сделать байесову связь на эмоциональное состояние — никакой проблемы, а само эмоциональное состояние можно легко эмулировать. Но зачем? Вы хотите, чтобы микроволновка могла на вас обидеться и отказаться работать?
>По поводу больших датасетов: ИМХО внедрение новейших технологий гуглом ухудшило поиск — теперь сложно получить ответ на специфический запрос, выходящий за пределы парадигмы. Поэтому дело не только в данных, но и «гибкости» решения.
Безусловно.
Вы хотите, чтобы микроволновка могла на вас обидеться и отказаться работать?

Если мы говорим о полноценном ИИ, то да. А если как о частичной замене человека — то зачем эмитировать мышление? Большинство машинных задач, причем даже и семантических, не имеют к мышлению никакого отношения.
P.S. Я говорил не о эмуляции эмоций, а порождении языка «на эмоциях» (в ключе генеративной грамматики и пр., только еще глубже :). Это немножко сложнее, чем Байес.
>Если мы говорим о полноценном ИИ, то да. А если как о частичной замене человека — то зачем имитировать мышление?
Чтобы решать ИИ-полные задачи, типа компьютера-программиста, вдумчивого собеседника, или для задачи хорошего понимания текста? Но вообще, я говорил не об имитации, а о повторении мышления. Компьютер должен уметь думать, значит, это мышление. Компьютер умеет решать человеческие задачи не хуже человека — значит, умеет повторять мышление человека.
>Большинство машинных задач, причем даже и семантических, не имеют к мышлению никакого отношения.
Считаете, что мышление возникает начиная с какой-то сложности задач? Но разве задача 17*16= не требует от человека мышления? Как и задача вида: «Жевачка, 5 букв, вторая у»?
>P.S. Я говорил не о эмуляции эмоций, а порождении языка «на эмоциях» (в ключе генеративной грамматики и пр., только еще глубже :). Это немножко сложнее, чем Байес.
Я бы с вами поспорил, но боюсь, это долгий и отдельный разговор. Если кратко, то моделирование языка — это ещё и моделирование описываемой сцены и рассказчика. А в модель рассказчика входит его эмоциональная модель. Если вы про это, то да, оно сложнее, чем байес — но только потому, что моделирование сцены сложнее, чем байес. Эмоциональную модель же вполне можно сделать достаточно простую, никто разницы и не заметит.
Отличный комментарий. Полностью согласен и присоеденяюсь.
Есть проблема валидации и устойчивости. Беда сеток в том, что на определённом классе образов они дают стабильно некорректные результаты. Соответственно, надо доказать, что таких образов в работе будет ниже определённого порога, или утверждать что-то об общем качестве сети — нельзя. Это — проблема валидации.

А проблема устойчивости — драматическая просадка результатов при отличии характеристик обучающей выборки от боевой.

Вот и получается, что:

1. Сейчас сетка работает, но не факт, что будет работать завтра.
2. В среднем сетка работает неплохо, но на на некоторых (заранее неизвестных) классах образов валится.

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

Да да, а в динамических языках мы конечно же ничего из этого не встретим, потому что каждый уважающий себя человек переходит сразу же на промышленные языки как научится кодить хоть немного!
А все почему?
Использование машинного обучения вообще и нейросетей в частности это в первую очередь научная задача и только во вторую инженерная.
И никакими средствами научность из проблемы убрать нельзя.
Соответственно получаем другие подходы и причитающиеся к этому риски.
Согласен полностью!
Зарегистрируйтесь на Хабре , чтобы оставить комментарий