Русский
Русский
English
Статистика
Реклама

Искусственный интеллект

Насколько неуязвим искусственный интеллект?

18.11.2020 14:04:51 | Автор: admin


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

Как вы знаете, мы в Smart Engines с трепетом относимся к каждому шагу процесса обучения нейросетевых моделей от подготовки данных (см. здесь, здесь и здесь) до разработки архитектуры сетей (см. здесь, здесь и здесь). На рынке решений с использованием искусственного интеллекта и систем распознавания мы являемся проводниками и пропагандистами идей ответственной разработки технологий. Месяц назад даже мы присоединились к глобальному договору ООН.

Так почему же так страшно спустя рукава учить нейронные сетки? Разве плохая сетка (которая будет просто плохо распознавать) реально может серьезно навредить? Оказывается, дело тут не столько в качестве распознавания полученного алгоритма, сколько в качестве полученной системы в целом.

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

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

Отравление данных (Data Poisoning)


Первая и самая опасная атака это отравление данных. При этой атаке ошибка закладывается на этапе обучения и злоумышленники заранее знают, как обмануть сеть. Если проводить аналогию с человеком, представьте себе, что вы учите иностранный язык и какие-то слова выучиваете неправильно, например, вы думаете, что horse (лошадь) это синоним house (дом). Тогда в большинстве случаев вы спокойно сможете говорить, но в редких случаях будете совершать грубые ошибки. Подобный фокус можно провернуть и с нейронными сетями. Например, в [1] так обманывают сеть для распознавания дорожных знаков. При обучении сети показывают знаки Стоп и говорят, что это и правда Стоп, знаки Ограничение скорости с также правильной меткой, а также знаки Стоп с наклеенным на него стикером и меткой Ограничение скорости. Готовая сеть с высокой точностью распознает знаки на тестовой выборке, но в ней, фактически, заложена бомба. Если такой сетью воспользоваться в реальной системе автопилота, то увидев знак Стоп со стикером она примет его за Ограничение скорости и продолжит движение автомобиля.



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

  1. Порча данных на краудсорсинг-платформах. Наверное, ни для кого не секрет (или это все еще секрет?...), что, отмечая машины на капче для входа на какой-нибудь сайт, мы создаем гигантскую обучающую выборку. Похожие задачи часто ставятся на платформах, где люди могут немного заработать, размечая данные. Очевидно, что такая дешевая разметка никогда не оказывается чистой. Иногда человеку лень отмечать все объекты, иногда он их просто не замечает. В большинстве случаев подобные ошибки вылавливаются статистическими методами (например, одну и ту же картинку показывают нескольким людям и выбирают самый популярный ответ). Однако, теоретически, возможен сговор, когда один и тот же объект всеми размечается неверно, как в примере со знаками Стоп со стикерами. Подобную атаку уже нельзя выловить статистическими методами и последствия у нее могут быть серьезными.
  2. Использование предобученных моделей. Второй крайне популярный способ, который может привести к порче данных использование предобученных моделей. В сети огромное количество практически обученных полуфабрикатов-архитектур нейронных сетей. Разработчики просто меняют последние слои сети под нужные им задачи, а основной массив весов остаются без изменений. Соответственно, если изначальная модель подверглась порче данных, итоговая модель частично унаследует неправильные срабатывания [1].
  3. Порча данных при обучении в облаке. Популярные тяжелые архитектуры нейронных сетей практически невозможно обучить на обычном компьютере. В погоне за результатами многие разработчики начинают учить свои модели в облачных сервисах. При таком обучении злоумышленники могут получить доступ к обучающим данным и незаметно для разработчика их испортить.

Атаки уклонения (Evasion Attack)


Следующий тип атак, который мы рассмотрим это атаки на уклонение. Такие атаки возникают на этапе применения нейронных сетей. При этом цель остается прежней: заставить сеть выдавать неверные ответы в определенных ситуациях.

Изначально, под ошибкой уклонения подразумевались ошибки II рода, но сейчас так называют любые обманы работающей сети [8]. Фактически, злоумышленник пытается создать у сети оптическую (слуховую, смысловую) иллюзию. Нужно понимать, что восприятие изображения (звука, смысла) сетью существенном образом отличается от его восприятия человеком, поэтому часто можно увидеть примеры, когда два очень похожих изображения неразличимых для человека, распознаются по-разному. Первые такие примеры были показаны в работе [4], а в работе [5] появился популярный пример с пандой (см. титульную иллюстрацию к данной статье).

Как правило, для атак уклонения используются состязательные примеры (adversarial examples). У этих примеров есть пара свойств, которые ставят под угрозу многие системы:

  1. Состязательные примеры зависят от данных, а не от архитектур, и их можно сгенерировать для большинства датасетов [4]. При этом показано существование универсальных помех, добавление которых к картинке практически всегда обманывает модель [7]. Универсальные помехи не только отлично работают в рамках одной обученной модели, но и переносятся между архитектурами. Это свойство особенно опасно, ведь многие модели учатся на открытых датасетах, для которых можно заранее просчитать необходимые искажения. На следующем рисунке, взятом из работы [14], в качестве универсальной помехи проиллюстрировано влияние незначительного поворота и смещения целевого объекта.


  2. Состязательные примеры отлично переносятся в физический мир. Во-первых, можно аккуратно подобрать примеры, которые неверное распознаются, исходя из известных человеку особенностей объекта. Например, в работе [6] авторы фотографируют стиральную машину с разных ракурсов и иногда получают ответ сейф или аудио-колонки. Во-вторых, состязательные примеры можно перетащить из цифры в физический мир. В работе [6] показали, как добившись обмана нейронной сетки путем модификации цифрового изображения (трюк, аналогичный выше показанной панде), можно перевести полученный цифровой образ в материальный вид простой распечаткой и продолжить обманывать сеть уже в физическом мире.

Атаки уклонением можно делить на разные группы: по желаемому ответу, по доступности модели и по способу подбора помех:



  1. По желаемому ответу. Очевидно, что при атаке уклонения мы хотим в результате получить ответ, отличный от настоящего. Однако иногда мы хотим получить просто неверный ответ, неважно какой. Например, если у нас есть классы кот, собака, ящерица, мы хотим распознать картинку с котом неверно, но, нам всё равно, какую из двух оставшихся меток выдаст модель. Такие методы называются нецелевыми. Обратный случай, когда мы хотим не просто не распознать кота, а сказать, что это именно собака, называются целевыми.
  2. По доступности модели. Для того, чтобы обмануть модель, нам нужно понимать, как подобрать данные, на которой сети станет плохо. Конечно, мы можем вслепую перебирать картинки и надеяться, что вот тут-то сеть ошибется или основываться только на общих соображениях схожести объектов для человека, однако так мы вряд ли найдем примеры аналогичные примеру с пандой. Гораздо логичнее использовать ответы сети, чтобы знать, в каком направлении менять картинку. При атаке на черный ящик, мы знаем только ответы сети, например, результирующий класс и его оценку вероятности. Именно такой случай часто встречается в реальной жизни. При атаке на белый ящик мы знаем все параметры модели, считая веса, скорости и метод обучения. Очевидно, что в такой ситуации можно очень эффективно подбирать состязательные примеры, высчитывая их по сети. Казалось бы, этот случай должен быть редким в реальной жизни, ведь при применении настолько полная информация про сеть недоступна. Однако стоит помнить, что состязательные примеры зависят в основном от данных и хорошо переносятся между архитектурами, а значит, если вы учили сеть на открытом наборе данных, такие примеры для нее найдут быстро.
  3. По подбору помех. Как видно из примера с пандой, для получения неверного ответа каждый пиксель изображения слегка изменяют. Как правило, такой шум нельзя просто взять и угадать, а значит, надо его высчитывать. Методы расчета помех делятся на две группы: однопроходные и итеративные. Как следует из названия, в однопроходных методах нужно за одну итерацию рассчитать помехи. В итеративных же методах можно аккуратно подбирать помехи. Ожидаемо, итеративные методы представляют большую угрозу для модели, чем однопроходные. Особенно же опасны итеративные методы атак на белый ящик.

Конечно, атакам уклонениям подвержены не только сети, классифицирующие животных и объекты. На следующем рисунке, взятом из работы 2020 года, представленной на IEEE/CVF Conference on Computer Vision and Pattern Recognition [12], показано, как хорошо можно обманывать рекуррентные сети для оптического распознавания текста:



Теперь о немного других атаках на сети


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

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

Итак, рассмотрим два вида атак: атаку на установление принадлежности и атаку путем инверсии модели.

Атака установления принадлежности


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

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

Во-вторых, возможно непосредственное раскрытие врачебной тайны. Например, если у вас есть модель, следящая за передвижениями людей с болезнью Альцгеймера и вы знаете, что данные о конкретном человека использовались при обучении, вы уже знаете, что этот человек болен [9].

Атака путем инверсии модели


Под инверсией модели понимают возможность получения обучающих данных из обученной модели. При обработке естественного языка, а в последнее время и при распознавании изображений, часто используются сети, обрабатывающие последовательности. Наверняка все сталкивались с автодополнение в Google или Яндекс при вводе поискового запроса. Продолжение фраз в подобных системах выстраивается исходя из имеющейся обучающей выборки. В результате, если в обучающей выборке были какие-то персональные данные, то они могут внезапно появиться в автодополнении [10, 11].

Вместо заключения


С каждым днем системы искусственного интеллекта разного масштаба все плотнее оседают в нашей повседневной жизни. Под красивые обещания об автоматизации рутинных процессов, повышении общей безопасности и другого светлого будущего, мы отдаем системам искусственного интеллекта различные области человеческой жизнедеятельности одна за другой: ввод текстовой информации в 90-х, системы помощи водителю в 2000-х, обработка биометрии в 2010-х и т. д. Пока что во всех этих областях системам искусственного интеллекта предоставлена только роль ассистента, но благодаря некоторым особенностям человеческой природы (в первую роль, лени и безответственности), компьютерный разум часто выступает в качестве командира, приводя порой к необратимым последствиям.

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

Пока это все цветочки, представленные единичными случаями.

Ягодки ждут впереди. Нас. В ближайшем будущем.

Список используемой литературы
[1] T. Gu, K. Liu, B. Dolan-Gavitt, and S. Garg, BadNets: Evaluating backdooring attacks on deep neural networks, 2019, IEEE Access.
[2] G. Xu, H. Li, H. Ren, K. Yang, and R.H. Deng, Data security issues in deep learning: attacks, countermeasures, and opportunities, 2019, IEEE Communications magazine.
[3] N. Akhtar, and A. Mian, Threat of adversarial attacks on deep learning in computer vision: a survey, 2018, IEEE Access.
[4] C. Szegedy, W. Zaremba, I. Sutskever, J. Bruna, D. Erhan, I. Goodfellow, and R. Fergus, Intriguing properties of neural networks, 2014.
[5] I.J. Goodfellow, J. Shlens, and C. Szegedy, Explaining and harnessing adversarial examples, 2015, ICLR.
[6] A. Kurakin, I.J. Goodfellow, and S. Bengio, Adversarial examples in real world, 2017, ICLR Workshop track
[7] S.-M. Moosavi-Dezfooli, A. Fawzi, O. Fawzi, and P. Frossard, Universal adversarial perturbations, 2017, CVPR.
[8] X. Yuan, P. He, Q. Zhu, and X. Li, Adversarial examples: attacks and defenses for deep learning, 2019, IEEE Transactions on neural networks and learning systems.
[9] A. Pyrgelis, C. Troncoso, and E. De Cristofaro, Knock, knock, who's there? Membership inference on aggregate location data, 2017, arXiv.
[10] N. Carlini, C. Liu, U. Erlingsson, J. Kos, and D. Song, The secret sharer: evaluating and testing unintended memorization in neural networks, 2019, arXiv.
[11] C. Song, and V. Shmatikov, Auditing data provenance in text-generation models, 2019, arXiv.
[12] X. Xu, J. Chen, J. Xiao, L. Gao, F. Shen, and H.T. Shen, What machines see is not what they get: fooling scene text recognition models with adversarial text images, 2020, CVPR.
[13] M. Fredrikson, S. Jha, and T. Ristenpart, Model Inversion Attacks that Exploit Confidence Information and Basic Countermeasures, 2015, ACM Conference on Computer and Communications Security.
[14] Engstrom, Logan, et al. Exploring the landscape of spatial robustness. International Conference on Machine Learning. 2019.
Подробнее..

Сверхэффективная нейронная сеть или гиперсеть

17.11.2020 06:15:37 | Автор: admin


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


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

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

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

Причём во главу угла стоит ставить скорость обучения сети, а качество или точность сейчас второстепенны.
Только супер эффективная нейронная сеть (СНС) может быть фундаментом и основой для создания искусственного интеллекта.
Имея технологию СНС можно двигаться различными путями, как создавая когнитивные архитектуры на основе графов, гиперграфов и т.д. плюс СНС, так и двигаясь биологическим путём повторяя архитектуру биологического мозга. Я сторонник биологического подхода, хотя и не считаю этот путь единственным в достижении цели.

Маршрутная карта на пути к ИИ
  1. Первый этап. Создание модели сенсорных анализаторов в первую очередь зрительных и слуховых. Вообще сенсорные анализаторы биологической нервной системы и должны стать прообразом сверхэффективных нейронных сетей (СНС).
  2. Второй этап. Получение знаний о механизмах мгновенной, временной и долговременной памяти в концепции СНС. Биологические сенсорные анализаторы легко работают с контекстом, только понимание концепции памяти в биологических нейронных сетях позволит перенять возможность работать с контекстом, что сильно расширит возможности СНС.
  3. Третий этап. Создание моделей моторных сетей. Не смотря на гомогенность коры головного мозга моторные сети в некотором смысле более сложно устроены, чем сенсорные анализаторы, хотя есть некоторое глубокое сходство. Поэтому этот этап не будет затянутым. В моторные сети будут входить модель мозжечка, как структура, запоминающая и воспроизводящая короткие временные интервалы для точности движений. А так же некий механизм поощрения, для обеспечения обучению правильных движений, аналогичный дофаминовыми механизмами поощрения в биологическом мозге.
  4. Четвертый этап. Одним из важных форм моторных действий является речь. Возможно, по этой причине этот и предыдущий этапы будут воплощены синхронно. На этом этапе речь не будет в полной мере осознанной. Подобно человеку должны быть пройдены этапы развития речи, такие как гуление, произношение отдельных звуков, затем слов. Максимальный уровень владения речью на этом этапе, это называние предъявленных предметов, описание сцен, ответы на простые вопросы, чтение или декларация текста. На этом этапе буде заложена основа для сети речевого круга (О речевом круге я подробно писал в статье Что такое сознание).
  5. Пятый этап. Создание модели базовых эмоций и потребностей. Этот этап не будет являться чётким этапом, многие его концепции будут проявляться и на более ранних этапах. Главной фундаментальной эмоцией, которую необходимо моделировать это эмоция новизны. Достаточно создать оценочный механизм новизны информации на различных уровнях абстрактности и производить на его основе модуляцию параметров сети. Любопытство необходимо для эффективного обучения.
    Также нужно обеспечивать модели чувствами необходимыми для контроля их потребностей. К примеру, низкий заряд батареи робота мог бы создавать некие чувство голода для робота, и робот бы стремился удовлетворить его, то есть стал бы искать зарядное устройство или источник питания. Или создание некого чувства боли или дискомфорта, чтобы робот избегал травмирующих его ситуаций.
    Еще одна полезная эмоция, которую легко можно подвергнуть моделированию это различного рода привязанности. В основе привязанностей лежит механизм импринтинга. Это будет полезно для различного рода роботов-помощников или роботов-питомцев, от которых требуется следовать за хозяином или некоторая преданность.
    Человек более охотно будет взаимодействовать с интеллектом похожим на него, поэтому возможно появление более широкого спектра эмоциональных механизмов. К примеру, тревожности и страха, симпатии, радости и разочарования.
    Что касается внедрения на уровень базовых эмоций законов робототехники Айзека Азимова, то они имеют высокий абстрактный характер, что сильно усложняет их моделирование. Сначала модель должна быть обучена на столько, чтобы можно было выявить репрезентацию образов Человек и причинение вреда, подобно тому, как у человека можно найти бабушкины нейроны. Затем можно связать эмоциональный механизм со стремлением избегать сочетания этих образов. Сложно сказать, насколько такой метод будет эффективным.
  6. Шестой этап. Можно сказать, что этот этап такой же сложный, как и первый, если не сложнее. Условно его можно его можно назвать этапом префронтальной коры. Префронтальной коре головного мозга присваивают высшую когнитивную деятельность, здесь можно сказать, расположено суждение и долгосрочное целеполагание. Префронтальная кора контролирует работу эмоциональных центров и центров потребностей, она регулирует то, насколько сильно они влияют на поведение.
    Работа на этом этапе требует глубоких знаний о поведении человека. Только на этом этапе можно рассуждать и говорить о сознании и сознательном поведении. К этому этапу я отношу не только создание префронтальной коры, но и несколько важных биологических нейронных сетей и механизмов. К примеру, сеть интерпретатор, которая стремиться дать обоснование любому нашему действию. Наличие таких сетей явно проявляется в экспериментах с участием людей с разделёнными полушариями мозга.
    Или сеть ответственная за иллюзию квалия, создающие ощущения централизованного восприятия мира. Также механизм восприятия границ своего тела и действий, нарушение этого механизма у людей может приводить к навязчивому стремлению избавиться от части своего тела или не способность различать свои действия от действий другого человека.
    Мы знаем, что нарушения в различных психических механизмах могут приводить к различным болезням аутистического спектра или различных форм шизофрении. На пути к искусственному интеллекту суждено встретится с примерами этих отклонений в искусственной психике, но у этого есть и полезное зерно. Работа над искусственным интеллектом позволит понять лучше природу психических болезней человека.


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

Далее я расскажу подробней, на каких принципах она основана и то, как я её реализую.

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



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



Индукция это возникновение областей торможения на коре вокруг участка возбуждения. Это может быть связанно с тем, что отростки нейронов одной колонки на некотором расстоянии колонки могут образовывать связи с ингибирующими клетками других колонок. Характер ингибирующего (тормозящего) воздействия на соседние колонки можно представить следующим образом:


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



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

Пример работы шейдера, размер изображения 28х28 пикселей, радиус действия колонки 5 пикселей, шейдер применяется несколько раз:


Радиус действия колонки 7 пикселей:


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



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

Узлы это вторая сигнальная система, это символьное представление образов в мозге, это коги.

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

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



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



Карта таламического ядра, на которую мы будем проецировать некоторые образы, в данном случае примеры рукописных цифр из стандартного набора MNIST. Изображения в наборе MNIST имеют формат 28x28 пикселей, поэтому эту карту мы также установим 28x28 пикселей.
Карта коры будет составлять в данном варианте 21x21 пиксель.
Карта восходящих синаптических связей будет хранить в себе значения всех весов синапсов связывающих карту таламического ядра и карту коры. Условно каждый пиксель-гиперколонка коры будет иметь синапсы с 16-ю (ядро 8x8) пикселями карты таламического ядра. Если перемещать ядро 8x8 пикселей по карте таламического ядра шагом в один пиксель, то таким образом можно составить карту восходящих синаптических связей. Соответственно отсюда и получится размер карты коры 28 8 + 1 = 21, в свою очередь размер карты восходящих синаптических контактов будет составлять 168x168 пикселей (21 x 8 = 168).



Вес синапса будет определяться числом от 0 до 1 это удобно для графического отображения на карте и позволяет хранить и обрабатывать эти параметры в форме изображений, что также удобно в работе с шейдерами, а также очень наглядно.
Еще один важный момент, в моделях, которые я буду описывать, присутствует всегда по две карты синаптических связей: одна карта побудительных синапсов, вторая карта тормозящих синапсов. Это всегда две одинаковые по размеру карты.
Известно, что тип синаптического контакта в биологической нервной системе в течение жизнедеятельности не меняется, то есть побудительный синапс не может стать тормозящим или наоборот. В компьютерных нейронных сетях знак веса синапса может легко изменяться в процессе обучения, что для модели претендующих на биологичность не является правильным.



В колонках коры помимо побудительных пирамидальных нейронов присутствуют множество тормозящих нейронов, и любой аксон от побудительной клетки направленный к колонке может создать синаптический контакт, как с побудительной, так и с тормозящей клеткой. Аналогично этому у нас имеется по две карты синаптических контактов, одна будет действовать со знаком плюс, другая со знаком минус. В обеих этих картах вес будет определяться числом от 0 до 1.
Значение весов восходящих синаптических контактов заполним случайными числами от 0 до 1.
Карта нисходящих синаптических связей будет иметь значительно больший размер. Как уже отмечалось нисходящих связей в биологическом мозге в несколько раз больше. В нашем случае мы выбираем такой размер карты, который позволит продемонстрировать концепцию хранения образов в узлах. Каждый пиксель-гиперколонка карты коры будет связан с каждым пикселем карты таламического ядра, то есть с каждым 784 пикселем (28 x 28 = 784), тогда размер карты составит 588x588 пикселей (21 x 28 = 588).
Изначально значение весов в карте нисходящих синаптических связей все будут равны 0, но данные веса мы изменим в процессе обучения.
Метод обучения, который мы в данном случае применим для нервной системы был экспериментально подтверждён. Он известен, как правило Хебба, самая простая его интерпретация: вместе срабатываем, значит укрепляем связь; а так же обратная сторона: не сработали вместе связь ослабеваем.
Для начала предъявим нашей модели пример, проецируя его на карту таламического ядра. Затем через восходящие связи оказываем суммирующее воздействие на карту коры. Для каждого пикселя карты коры складываются все соответствующие ему значение весов из карты восходящих синаптических связей умноженное на значение уровня активности соответствующих пикселей карты таламического ядра. Значение весов из тормозящей карты восходящих синаптических связей будет складываться со знаком минус. Полученная сумма умножается на подобранный коэффициент, именуемый коэффициент чувствительности. В данном случае она равен 0,5.
Если полученная сумма меньше или равна нулю, то активации пиксель-гиперколонки не происходит, его активность равна нулю. Если полученная сумма больше единицы, то значение пикселя карты коры будет равна единице, как максимальная степень активации гиперколонки. Если сумма имеет значение в интервале от 0 до 1, то пиксель-гиперколонка карты коры примет это значение.

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



Далее к карте коры мы применяем шейдер механизмов иррадиации и индукции. Этот шейдер мы можем применить несколько раз. Как результат получаем на карте коры несколько узлов.
Затем обращаемся к карте нисходящих синаптических связей и применяем к ней правило Хебба для обучения. Причём мы его применяем следующим образом: в случае совместного срабатывания мы в значительной степени усиливаем синаптическую связь. Если пресинапс срабатывает, а постсинапс нет, то ослабеваем синаптическую связь лишь на небольшое значение. В данном случае, при совместном срабатывании вес синапса увеличится на 0,8, при отсутствии совместного срабатывания вес уменьшится только на 0,1. Большее значение имеет именно совпадения, чем их отсутствие. Обратите внимание, что настраивается пресинас, а не постсинапс, хотя сейчас это не имеет критического значения, так как весь синапс у нас регулируется одним весом, но это имеет важное идеологическое значение. Дело в том, что в классических нейронных сетях акцент даётся на настройку постсинапсов, и полностью игнорируется изменения в пресинапсах, хотя в биологических нейронных сетях изменения происходят в обеих частях синапса, и в пресинапсе они зачастую более ярко выражены (Сравнение мозга с нейронной сетью).



Для тормозящей карты нисходящих синаптических связей логично применить правио Хебба наоборот, ингибирующая связь будет усиливаться, когда постсинапс не будет активироваться при активности пресинапса.
Так выглядят карты нисходящих синатических связей после обучения на ста примерах(по десять примеров на цифру).



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



Теперь после обучения карты нисходящих синаптических связей, можно запустить циклическую передачу возбуждения реверберации.
Мы можем увидеть примеры того как изначальная проекция какого-нибудь примера на карту таламического ядра, будет преобразовываться в процессе ревербераций в некий эталонный вариант этой же цифры, и с этим вариантом реверберации будут стабильны.
Этот процесс очень похож на работу сетей Хопфилда, из-за наличия рекуррентных связей этот тип нейронных сетей, на мой взгляд, наиболее близок к работе биологических нейронных сетей. В отличие от сетей Хопфилда в нашем варианте присутствует некая сепарация на узлы, которая даёт некоторые преимущества. Количество входов и выходов в сетях Хопфилда одинаковое, каждый нейрон связан рекуррентной связью с другими нейронами. Получается, что каждый образ как бы храниться в весах каждого нейрона, что сильно уменьшает ёмкость сети. В нашем случае для хранения отдельных образов избираются отдельные группы колонок. Наш вариант сети более интерпретируемый, мы можем точно сказать, за какой образ ответственен тот или иной элемент. Здесь прослеживается явная репрезентация информации, аналогично наличию в коре мозга нейронов бабушки мы видим пиксели-колонки карты коры ответственный за образ той или иной цифры.

Моделирование действие LSD на кору больших полушарий
Это небольшое отступление продемонстрирует некоторое сходство нашей модели и работы биологического мозга. Дело в том, что для нас действие LSD на кору очень просто смоделировать. LSD своим действием мешает работе нейротрансмиттера ГАМК, который является главным ингибирующим нейромедиатором коры, он работает в механизме индукции. Поэтому чтобы это смоделировать, достаточно в настройках нашего пиксельного шейдера уменьшить степень действия индукции.



Как мы видим при этом привычные границы, и размеры узлов размываются и расширяются. Если еще уменьшить действие индукции то очаги активности могул сливаться, формируя некоторые узоры. Аналогичные явления могут происходить и в коре больших полушарий под действием LSD, о чём косвенно свидетельствует снимки МРТ сделанные у людей принявших LSD, активность коры в данном случае значительно большее и масштабнее, чем при обычной работе мозга. Учитывая, что практически каждая колонка хранит в себе образы или их части, то становиться понятным, почему происходит путаница и смешивание образов, понятны причины нарушения восприятия. Такие нарушения работы мозга не могут быть полезны для него.

Наркотики вредны для здоровья и здоровья мозга.

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



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

В нашем варианте на карту таламического ядра размером 28x28 пикселей мы применим карту связей нерва размером 512x512. Эта карта нерва будет связывать карту таламического ядра с картой коры размером 64x64 пикселя, то есть разбить всю карту связей нерва на квадраты 8x8 пикселей, то каждый такой квадрат включит в себя все связи пикселем-гиперколонкой (512 / 8 = 64).

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



Соответственно карты восходящих синаптических связей будут иметь размер 512x512 пикселей.
Карта нисходящих синаптических связей будет иметь размер 1024x1024, по причине, что количество рекуррентных связей должно быть больше для стабильных ревербераций. Здесь каждому пикселю карты коры будет соответствовать 16x16 пикселей карты таламического ядра (64 x 16 = 1024).

Следующий уровень обработки информации представлен картой выхода, которая имеет размер 1x10, по одному пикселю на цифру, так как наша сеть нацелена на распознавание рукописных цифр из стандартного набора MNIST. Карта выхода связана с картой коры аналогично, как и карта таламического ядра с картой коры. Соответственно также имеются карты восходящих синаптических связей и карты, нисходящих синаптических связей, которые имею размерность 64x640 пикселей. Таким образом каждый пиксель карты коры имеет синаптический контакт с каждым пикселем карты выхода, для того чтобы пиксели карты выхода имели максимальное рецептивное поле. Нисходящие синаптические связи как уже отмечалось, обычно имеют большее количество, чем восходящие, но в данном случае они будут одинаковы в количестве потому, что это будет максимальный размер обратных синаптических связей. Так каждый пиксель карты выхода видит каждый пиксель карты коры.



Обучение или настройку карты восходящих синаптических связей второго уровня можно провести по правилу Хебба, которое мы уже применяли. При этом во время обучения мы будем считать активным или равным 1 пиксель карты выхода, который соответствует цифре, пример которой предъявлен сети. Тем самым мы как бы связываем некоторую активность на карте коры с требуемым выходом и укрепляем эту связь. Это похоже на формирование рефлекторной дуги условного рефлекса, как представительство цифры связывается связями с комбинацией активных пикселей в карте таламического ядра. Таким образом, фактически не связанные элементы прямыми контактами за счет рекуррентных связей могут связываться и укреплять свои связи между собой. И это может работать через множество уровней.

Но если обучать или настраивать по правилу Хебба карту восходящих синаптических связей первого уровня, это правило приводит к тому, что слабоактивные пиксель-гиперколонки за счёт усиления с ними связей будут усиливать свою активность до максимума, и это создаст большое количество активных пиксель-гиперколонок, что приводит к взаимному подавлению при применении индукции. И это приводит к сильному снижению качества сети.
Поэтому мы применим другой способ обучения. Он будет состоять из двух этапов. Первый этап это инициализация образов. На этом этапе мы сформируем некое базовое представление о каждом распознаваемом образе цифры, на малом количестве примеров. Для этого достаточно от 10 до 100 примеров, или от 1 до 10 примеров на одну цифру. На этом этапе будут настраиваться все карты синаптических связей кроме карт восходящих синаптических связей первого уровня, но они должны быть заполнены случайными значениями.

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

Затем настраиваем карты восходящих синаптических связей второго уровня по правилу Хебба, с учётом того что на карте выхода будет активным пиксель соответствующий предъявляемому примеру.

Так же по правилу Хебба настраиваем карты нисходящих синаптических связей второго и первого уровня.

Так выглядят синаптических связей после такого обучения на 100 примерах(a и b карты восходящих побудительный и тормозящих синаптических связей второго уровня; c и d карты нисходящих побудительных и тормозящих синаптических связей второго уровня; f и g карты нисходящих побудительных и тормозящих синаптических связей первого уровня):


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



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



На видео обучение сети на 100 случайных примерах и тест на 10 000 тестовых примерах. В зависимости от выбранных обучающих примеров, возможно, от случайно выбранных весов для карты восходящих синаптических связей сеть в таком тесте выдает результат в диапазоне от 40 до 60%, увеличение количества примеров не даёт улучшения качества. Это очень скромный результат, но для данной задачи требуется более сложная архитектура сети. Числа и знаки распознаются нашим мозгом на достаточно высоком абстрактном уровне. Соответственно в модели требуется больше уровней. А также в биологическом зрительном анализаторе применяется некоторый дополнительный механизм, специальный фильтр из сетей нейронов, которые реагируют на определённой ориентации раздражители. Этот фильтр упрощает обработку зрительной информации. Добавление подобного фильтра, так же должно улучшить качество нашей сети. Все эти модификации требуют дальнейших исследований, над которыми работа будет продолжаться. Цель статьи и это примера рассказать о некоторых теоритических аспектах модели и подхода в целом.

Обычно художник не рисует картины подобно плоттеру, начиная с верхнего угла нанося сразу все детали бедующего произведения. Художник для начала наносит на холст эскиз из тонких еле заметных линий обозначающий общий план художественного замысла. Постепенно картина обрастает деталями, все более и более мелкими, в конце наносятся лишь самые точные и едва заметные мазки кистью. Подобно этому нужно подходить к вопросу моделирования мозга. Безнадёжно пытаться подробно моделировать, последовательно создавая кортикальные модули с множеством синаптических связей с большим разнообразием типов нейронов и нейромедиаторов. Лучшее решение это создавать изначально простые симуляции отдельных механизмов постепенно добавляя в модели необходимые детали.

Попытка смоделировать взаимодействие двух простых механизмов в коре больших полушарий привела меня к идеи гиперсети описанной выше. Развитие идеи суперэффективных нейронных сетей в корне изменит положение вещей в сфере искусственного интеллекта. Для таких сетей не требуется большое количество обучающих данных, а значит, многие задачи которые сложно реализовать в машинном обучении из-за сложности сбора обучающих данных будут решены, да и скорость разработки в прикладных задачах значительно ускориться. Вычислительные ресурсы для обучения не будут требоваться столь высокими, а значит, не потребуется строить мощных компьютеров со специализированной архитектурой, что очень дорого и трудозатратно. Разработчики станут менее зависимы от технологий, данных и сервисов. Каждый сможет создавать крутое интеллектуальное программное обеспечение без существенных затрат. Что создаст лавину новых интересных технических решений в сфере ИИ.

P.S.
Моя работа продолжается, сейчас есть идеи развития и улучшения сети. До этого этапа я шёл более трёх лет, некоторые читатели, думаю, уже не рассчитывали на появление весомых этапов и статей в моей работе. Как только идея оглашена, она туту же воспринимается простой и очевидной, но за каждой важной идеей стоит большой труд и упорство. Предстоит еще много работы, поэтому подписывайтесь и распространяйте ссылки на статью. :-) Этим Вы мне поможете.

Download for Windows
Подробнее..

Архитектура мозга. Концепция матриц

22.11.2020 22:13:07 | Автор: admin


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


Данная статья не претендует на научность. Читатель может считать ее чистой спекуляцией. Критика приветствуется.


Введение


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


Для решения каждой специфической задачи используется отдельная матрица. Колоночная организация коры с каналами из прошлой статьи это матрица первого порядка. Колонки могут быть объединены в однородные кластеры и собраны в сеть кластеров матрицей второго порядка.


Репрезентация пространства


"Каждый мускул дает происхождение особому ощущению, способному делаться больше или меньше, так что совокупность наших мускульных ощущений будет зависеть от стольких переменных, сколько у нас мускулов. С этой точки зрения моторное пространство имело бы столько измерений, сколько мы имеем мускулов."Анри Пуанкаре "О науке"

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


Номер Название Каналы Формула Пояснение
1 Налево 0000 ? Сигнал о выполнении моторной команды
2 Направо 0000 ? Сигнал о выполнении моторной команды
3 Впереди 0000 (не 1 и не 2 и 3) или (1 и 5) или (2 и 4) Позиция цели
4 Справа 0000 (не 1 и не 2 и 4) или (1 и 3) или (2 и 6) Позиция цели
5 Слева 0000 (не 1 и не 2 и 5) или (1 и 6) или (2 и 3) Позиция цели
6 Сзади 0000 (не 1 и не 2 и 6) или (1 и 4) или (2 и 5) Позиция цели

С помощью такой карты существо может отслеживать положение вплоть до четырех неподвижных целей относительно себя. Узлы с 3 по 6 это специфическая матрица первого порядка (вариант колоночной организации). Связи в такой матрице строятся генетическим кодом. Узлы 1 и 2 это другая матрица первого порядка (сенсорная), и она может быть даже одноканальной. Как видно из формул, между матрицами разного типа могут существовать связи.


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


Анимация:


Синяя точка это позиция самого существа. Красная это цель. Построение программы локомоции это поиск кратчайшего пути в графе из кластеров карты. Так как система параллельная, в ней естественным путем выполняется поиск в ширину. Из кластера цели одновременно отправляются сигналы всем связанным кластерам. Процесс лавинообразный. Каждый кластер запоминает, по какой линии связи сигнал пришел первым. Когда сигнал достигает позиции существа, карта переключается в режим локомоции. Сигнал последовательно движется к цели и тем самым может запускать моторные программы, связанные с кластерами. Виртуальное перемещение в модели реализуется как локомоция в окружающей среде. Исполнение контролируется обратной связью от сенсоров. Каждый кластер может помнить, как ощущается пространство из точки, которую он представляет, и прерывать процесс, если что-то идет не так.


Исходный код:
class Machine:    def __init__(self, cells):        self.cells = cells        self.state = {}        self._state = {}        for key in cells.keys():            self.state[key] = 0b0000    def step(self):        for key, f in self.cells.items():            if f is None:                self._state[key] = self.state[key]            else:                self._state[key] = f(self.state)        self.state, self._state = self._state, self.statecells = {}# матрица:# n1    n2    n3#    g1 g2 g3# n8 g8 n0 g4 n4#    g7 g6 g5# n7    n6    n5# размеры картыh, w = 50, 50# сигнал, указывающий что возбудился хотя бы один узел с меткой# цикл эмулирует множество однотипных связейdef stop(s):    res = 0b0000    for x in range(1, w-1):        for y in range(1, h-1):            res = res | s[x, y, 'node', 'mark'] & s[x, y, 'node']    return res & s['mode1']cells['stop'] = stop# режим поиска путиcells['mode1'] = lambda s: s['mode1'] & ~s['stop']# режим движения по построенному путиcells['mode2'] = lambda s: s['mode2'] | s['stop']# предварительное создание узлов, меток и воротfor x in range(0, w):    for y in range(0, h):        cells[x, y, 'node'] = None            cells[x, y, 'node', 'mark'] = None            for i in range(1, 9):            cells[x, y, 'gate', i] = None                cells[x, y, 'gate', i, 'mark'] = None   def apply_matrix(x, y):    # режимы    m1 = 'mode1' # прямой ход    m2 = 'mode2' # обратный ход    m3 = 'stop'  # сигнал остановки поиска    # ворота    g1 = x, y, 'gate', 1     g2 = x, y, 'gate', 2    g3 = x, y, 'gate', 3    g4 = x, y, 'gate', 4    g5 = x, y, 'gate', 5    g6 = x, y, 'gate', 6    g7 = x, y, 'gate', 7    g8 = x, y, 'gate', 8    # метки на воротах    gm1 = x, y, 'gate', 1, 'mark'     gm2 = x, y, 'gate', 2, 'mark'    gm3 = x, y, 'gate', 3, 'mark'    gm4 = x, y, 'gate', 4, 'mark'    gm5 = x, y, 'gate', 5, 'mark'    gm6 = x, y, 'gate', 6, 'mark'    gm7 = x, y, 'gate', 7, 'mark'    gm8 = x, y, 'gate', 8, 'mark'    # метки на воротах соседей    _gm1 = x-1, y-1, 'gate', 5, 'mark'    _gm2 = x+0, y-1, 'gate', 6, 'mark'     _gm3 = x+1, y-1, 'gate', 7, 'mark'     _gm4 = x+1, y+0, 'gate', 8, 'mark'     _gm5 = x+1, y+1, 'gate', 1, 'mark'     _gm6 = x+0, y+1, 'gate', 2, 'mark'     _gm7 = x-1, y+1, 'gate', 3, 'mark'     _gm8 = x-1, y+0, 'gate', 4, 'mark'    # узел    n0 = x, y, 'node'    # пометка на узле    nm0 = x, y, 'node', 'mark'    # соседи    n1 = x-1, y-1, 'node'    n2 = x+0, y-1, 'node'     n3 = x+1, y-1, 'node'     n4 = x+1, y+0, 'node'     n5 = x+1, y+1, 'node'     n6 = x+0, y+1, 'node'     n7 = x-1, y+1, 'node'     n8 = x-1, y+0, 'node'     # узел будет активизирован если активны хотя бы одни ворота    cells[n0] = lambda s: s[m3] & s[nm0] | ~s[m3] & (s[g1] | s[g2] | s[g3] | s[g4] | s[g5] | s[g6] | s[g7] | s[g8])    # пометка ставится извне    cells[nm0] = None    # режим1: ворота активизируются если активен соответствующий этим воротам соседний узел    # режим2: ворота активизируются если активен соответствующий этим воротам соседний узел и активна метка на соответствующих воротах соседа    cells[g1] = lambda s: (s[m1] & s[n1]) | (s[m2] & s[n1] & s[_gm1])    cells[g2] = lambda s: (s[m1] & s[n2]) | (s[m2] & s[n2] & s[_gm2])    cells[g3] = lambda s: (s[m1] & s[n3]) | (s[m2] & s[n3] & s[_gm3])    cells[g4] = lambda s: (s[m1] & s[n4]) | (s[m2] & s[n4] & s[_gm4])    cells[g5] = lambda s: (s[m1] & s[n5]) | (s[m2] & s[n5] & s[_gm5])    cells[g6] = lambda s: (s[m1] & s[n6]) | (s[m2] & s[n6] & s[_gm6])    cells[g7] = lambda s: (s[m1] & s[n7]) | (s[m2] & s[n7] & s[_gm7])    cells[g8] = lambda s: (s[m1] & s[n8]) | (s[m2] & s[n8] & s[_gm8])    gm_ = lambda s: s[gm1] | s[gm2] | s[gm3] | s[gm4] | s[gm5] | s[gm6] | s[gm7] | s[gm8]    # режим1: метка активизируется если активны соответствующие ворота и нет сигнала стоп;    # выполняется упорядоченный выбор только одной метки (хвосты формул) если активны сразу несколько ворот;    # метка остается активной после первой активации    # режим2: метка остается активной, если была активна на момент включения режима    cells[gm1] = lambda s: (s[m2] & s[gm1]) | (s[m1] & (s[gm1] | s[g1] & ~gm_(s) & ~s[m3] & ~s[g2] & ~s[g4] & ~s[g6] & ~s[g8] & ~s[g3] & ~s[g5] & ~s[g7]))    cells[gm2] = lambda s: (s[m2] & s[gm2]) | (s[m1] & (s[gm2] | s[g2] & ~gm_(s) & ~s[m3] & ~s[g4] & ~s[g6] & ~s[g8]))    cells[gm3] = lambda s: (s[m2] & s[gm3]) | (s[m1] & (s[gm3] | s[g3] & ~gm_(s) & ~s[m3] & ~s[g2] & ~s[g4] & ~s[g6] & ~s[g8] & ~s[g5] & ~s[g7]))    cells[gm4] = lambda s: (s[m2] & s[gm4]) | (s[m1] & (s[gm4] | s[g4] & ~gm_(s) & ~s[m3] & ~s[g6] & ~s[g8]))    cells[gm5] = lambda s: (s[m2] & s[gm5]) | (s[m1] & (s[gm5] | s[g5] & ~gm_(s) & ~s[m3] & ~s[g2] & ~s[g4] & ~s[g6] & ~s[g8] & ~s[g7]))    cells[gm6] = lambda s: (s[m2] & s[gm6]) | (s[m1] & (s[gm6] | s[g6] & ~gm_(s) & ~s[m3] & ~s[g8]))    cells[gm7] = lambda s: (s[m2] & s[gm7]) | (s[m1] & (s[gm7] | s[g7] & ~gm_(s) & ~s[m3] & ~s[g2] & ~s[g4] & ~s[g6] & ~s[g8]))    cells[gm8] = lambda s: (s[m2] & s[gm8]) | (s[m1] & (s[gm8] | s[g8] & ~gm_(s) & ~s[m3]))# построение картыfor x in range(1, w-1):    for y in range(1, h-1):        apply_matrix(x, y)# ограничение на количество итераций для формирования gifcount = 81# # дырка в сети# hole_x, hole_y = (5, 45), (20, 40)# for x in range(hole_x[0], hole_x[1]+1):#     for y in range(hole_y[0], hole_y[1]+1):#         cells[x, y, 'node'] = None# count = 120# создание машиныm = Machine(cells)          # позиция существа на картеself_x, self_y = 38, 5# позиция цели на картеtarget_x, target_y = 10, 45# сигналы извне карты (режим поиска, метка позиции существа, позиция цели)m.state['mode1'] = 0b0001m.state['mode2'] = 0b0000m.state[self_x, self_y, 'node', 'mark'] = 0b0001m.state[target_x, target_y, 'node'] = 0b0001from PIL import Image, ImageDrawimages = []def draw_cell(draw, x, y, c):    draw.rectangle([x*10, y*10, x*10+10, y*10+10], c)def draw():    im = Image.new("P", ((w-2)*10, (h-2)*10), 1)    im.putpalette([        0, 0, 0,        255, 255, 255,        255, 0, 0,        0, 0, 255,        100, 100, 100,    ])    images.append(im)    draw = ImageDraw.Draw(im)    # отрисовка активации одного канала карточек типа "узел"    for x in range(1, w-1):        for y in range(1, h-1):            if m.state[x, y, 'node'] == 0b0001:                draw_cell(draw, x-1, y-1, 0)    # отрисовка позиции цели    draw_cell(draw, target_x-1, target_y-1, 2)    # отрисовка позиции существа    draw_cell(draw, self_x-1, self_y-1, 3)    # # отрисовка дырки (мертвых нейронов)    # draw.rectangle([(hole_x[0]-1)*10, (hole_y[0]-1)*10, (hole_x[1]-1)*10+10, (hole_y[1]-1)*10+10], 4)# итерации машины и выборочная отрисовка состояния одного канала в giffor i in range(count):    m.step()    m.step()    draw()images[0].save("map.gif", save_all=True, append_images=images[1:], duration=100, loop=0)

Подобная механика кажется довольно правдоподобной. Поиск пути может выполняться очень быстро, потому что любые два кластера карты могут быть связаны напрямую в том случае, если есть подходящая моторная программа для перехода между ними или если существует путь через другие кластеры. Расстояние между кластерами фиксируется либо с помощью искусственной задержки при передаче сигнала, либо с помощью приоритетов (как в примере). Важно отметить, что нейроны в процессе поиска активизируются только один раз. Это значит, что скорость поиска пути не ограничена маленькой частотой работы нейронов. Фактически это похоже на разряд молнии, который ограничен только скоростью передачи сигнала между нейронами.


Физическое расположение кластеров в коре никак не связано с геометрией пространства. Отношения между кластерами косвенно определяются связанными моторными командами. Связи между кластерами формируются под влиянием моторного опыта, а затем используются для воспроизведения этого опыта. Карта не двухмерная и даже не трехмерная. Она вообще ничего не "знает" о координатах и измерениях. Например, команда поворота туловища налево это перемещение в другой кластер, хотя в физическом пространстве вы находитесь в той же точке. В модели приведен двухмерный вариант с моторными командами по восьми направлениям только из-за простоты восприятия. На самом деле карта допускает перемещение между кластерами даже с помощью взмаха волшебной палочкой. Это позволяет мозгу без проблем воспринимать невозможные пространства, в которых, например, есть порталы.


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


Анимация:


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


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


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


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


Граф квартиры:


На данной картинке очень грубо показана структура графа квартиры из трех одинаковых комнат. Узлы 1, 2 и 3 это положение комнат на самом верхнем уровне. Узел 4 и соседние с ним это общая геометрия комнаты на втором уровне. Узел 5 и соседние с ним это геометрия угла, воспринимаемая из разных точек локального пространства на третьем уровне. Серым цветом отмечено текущее положение в пространстве на трех уровнях (это реальные метки в одном канале в кластерах карты).


Реальное физическое положение в пространстве и направление взора могут быть, например, такими:


Физическое положение:


Из данного описания должно быть понятно, что карты могут создать очень насыщенные субъективные переживания. Кластеры, связанные с текущими, дают вам предсказание, как будет выглядеть мир после выполнения определенных моторных команд. Вы будто способны видеть мир сразу из нескольких точек, дополняя сенсорные ощущения прошлым опытом.


Построение движений


Для начала рассмотрим, как могут быть организованы генераторы автоматических движений. Допустим, нам надо построить нервную систему примитивного насекомого. Как это сделать проще всего? У насекомых шесть лапок. Движение каждой лапки в процессе ходьбы выглядит как зацикленная анимация. Это значит, что управляющим устройством для каждой лапки может быть самостоятельный конечный автомат. Каждое состояние автомата это конкретное напряжение мышц и соответствующее положение лапки. Автомат просто переходит из одного состояния в другое по кругу. Итак, мы можем поместить в тело нашего насекомого шесть конечных автоматов. Причем автоматов одинаковых по структуре. Эти автоматы надо периодически включать и выключать, значит нам нужен еще один управляющий автомат, который логично поместить в голове насекомого, поближе к самым важным сенсорам. Его устройство нас сейчас не интересует. От этого автомата к остальным нужно протянуть шину из двух проводов, которая нужна для передачи сигналов "старт" и "стоп". Нервная система приобретает примерно такой вид:


Нервная система (вариант 1):


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


Нервная система (вариант 2):


Уже лучше, но скорость анимации было бы неплохо регулировать. Если искать пищу еще можно неторопливо, то спасаться от опасности уже лучше бегством. Для этого нужно немного модифицировать автоматы, чтобы они меняли состояние только по специальному сигналу. Источником такого тактового сигнала пусть будет еще один автомат, размещенный в голове. Назовем его генератором ритма. Чем быстрее ритм, тем быстрее "проворачивается" анимация. При отсутствии ритма движения нет, а значит больше не нужны сигналы "старт" и "стоп". Можно использовать свободную шину для передачи других сигналов. Например, "вперед" и "назад". Но автоматы в этом случае должны уметь выполнять две разные анимации. В этом нет никакой трудности, просто переходы между состояниями начинают зависеть еще и от режима. Репертуар автомата может быть настолько большим, насколько позволяют ресурсы.


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


Из данного описания должно быть понятно, что в организации стереотипных движений нет никакой загадки. Движения реализует самостоятельный автомат, который просто воспроизводит запись анимации. Эта анимация может иметь несколько режимов, она может быть параметризована, но это все равно анимация. Представить себе такой автомат из нейронов не трудно. Плавность движений может достигаться двумя путями. Во-первых, мышцы не могут реагировать на сигналы мгновенно и немного сглаживают дискретные переходы между состояниями. Во-вторых, природа может использовать что-то вроде нечеткой логики, когда сигнал может иметь значение в диапазоне 0..1. Состояние автомата в этом случае может быть размазано на несколько соседних нейронов в цепи анимации.


Нечеткое состояние:


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


В настоящем организме, конечно, происходят более сложные и тонкие процессы, но не думаю, что они сильно отличаются от данного описания.


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


Положение локтя:


Синяя точка это текущее положение плеча. Красная это целевое положение кулака. Сигнал начинает распространяться из синей точки.
Каждый кластер в такой карте "знает" длину каждого звена конечности. Это знание выражается в том, что сигнал нужно передавать только определенным кластерам. Круги на карте должны помочь представить расположение этих кластеров. Поиск нужного положения выполняется тут в два шага. Сначала активизируется "круг" кластеров вокруг синей точки, потом эти кластеры активизируют уже свое "окружение". Кому повезло первым активизировать красную точку, тот и локоть. Если конечность имеет 10 звеньев, то будет 10 шагов. Результат работы карты это конечное положение всех сочленений. Остается запустить стереотипные программы для каждого звена, чтобы перевести конечность в новое состояние. Вероятно, такая система будет не очень точной, но ей еще помогает мозжечок, в котором нейронов гораздо больше, чем в коре. Кроме того, граф по аналогии с пространством может быть многоуровневым.


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


Локализация в пространстве


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


Возьмем простенькое модельное пространство в форме буквы "Г". Допустим наше существо может чувствовать стенки с 4 сторон, и физически находится в следующем положении:


Рисунок:


В ответ на сенсорные ощущения будут активизированы два кластера на карте:


Граф:


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


Граф:


А вот третий шаг сразу сокращает количество активных кластеров до одного. Угол в графе представлен двумя разными кластерами и соответствующими ощущениями, в зависимости от того, с какой стороны в него попало существо. Выбор одного из кластеров происходит сам собой на основании моторных сигналов и ощущений после совершения действия. Грубо говоря, карта сшита из элементарных тестов следующей структуры:


  1. Предусловие (текущие ощущения)
  2. Действие (моторная команда)
  3. Постусловие (ощущения после выполнения моторной команды)

Двигаться в пространстве значит непрерывно тестировать его. Сенсорика и моторика это единый неразрывный процесс. Решение о том, какое действие нужно совершить на каждом шаге, может принимать сама карта. Ведь она владеет всеми данными (потенциальные действия и ожидаемые ощущения). Я не знаю, как происходит эта классификация, но примерно понятно, в чем она заключается. На каждом шаге должно активироваться как можно меньше кластеров.


Давайте возьмем существо и перенесем его на другую территорию:


Рисунок:


После исследования территории карта будет достроена следующим образом:


Граф:


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


Углубляться дальше смысла нет. Думаю, механика понятна читателю. Пространства в форме букв "Г" и "П" выбраны не случайно. Зрение может работать точно так же. Движения глазного яблока это работа карты образов в действии.


Весь процесс зрения можно поделить на два этапа:


  1. Распознавание элементарных признаков массивом из одинаковых детекторов.
  2. Распознавание образов путем "прогулки" по карте.

Рассмотрим небольшой массив детекторов элементарных признаков:


Рисунок:


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


  1. Виртуальные движения глаза, при которых центр зрения смещается в массиве детекторов. Детекторы как бы передают друг другу эстафетную палочку в этом процессе.
  2. Так как система многоканальная, в каждом канале может быть свой центр зрения.

С учетом многоканальности получается, что зрительная сцена в каждый момент времени состоит из нескольких центров, которые распознаются независимо. Допустим, система семиканальная. Это значит, что вы способны отслеживать с помощью зрения на одной визуальной сцене максимум 7 объектов одновременно. Если в поле зрения появляется какой-то сложный образ, то все 7 каналов могут быть задействованы для ускорения распознавания этого объекта.


Золотой молоток (вместо заключения)


Все вышеизложенное может не иметь никакого отношения к реальности. Это просто дерзкая попытка реверс-инжиниринга черного ящика под названием "мозг". Кроме того, я далеко не самый внимательный человек и вполне мог допустить глупую ошибку уже где-то в начале своих мысленных построений. Использование механики карт для решения всех проблем в известном смысле является золотым молотком. Было бы странно, если бы все было так просто. Надеюсь, эти мысленные упражнения не пропадут даром и принесут хоть какую-то пользу читателю.

Подробнее..

Анонс вебинара по зонтичной системе мониторинга Broadcom DX Operations Intelligence

25.11.2020 22:06:19 | Автор: admin
image

Приглашаем вас в эту пятницу (27 ноября) принять участие в вебинаре, на котором представители Broadcom в России презентуют новую зонтичную систему мониторинга Digital Operational Intelligence (DX OI). Во время сессии мы поговорим об основных функциях системы и рассмотрим основные разделы пользовательского интерфейса. Мы покажем как, опираясь на функциональные возможности DX OI, вы сможете обеспечить значительную операционную эффективность IT-подразделений, что позволит им принимать более быстрые и правильные решения для повышения качества ИТ-услуг и бизнес-сервисов за счет междоменного контекстного анализа.

Основа DX OI это современная распределенная облачная архитектура. В решении реализованы механизмы Machine Learning над всеми поступающими данными как из доменных решений Broadcom, так и от сторонних систем через REST API, таких как Zabbix, SCOM и других популярных систем. Основная функция DX OI создание полноценной ресурсно-сервисной модели (РСМ) на базе конфигурационных единиц (КЕ), наполняющих инвентарную базу при интеграции со сторонними системами. Важная особенность DX OI возможность спрогнозировать отказ КЕ в будущем и оценить степень его вляиние на доступность сервиса.

Для владельцев приложений и бизнес-подразделений DX OI раскрывает показатель доступности и качества сервисов в контексте не только технологических IT-показателей, но и бизнес KPI, извлекаемых из транзакционной статистики конечных пользователей.

Вебинар состоится 27 ноября в 11 часов утра по московскому времени на платформе Zoom.

Регистрация на вебинар

Узнать подробнее о системе (статья на Хабре)
Подробнее..

Проще найти руку, чем девушку новое изобретение японских ученых

16.11.2020 20:18:08 | Автор: admin
Иногда возникает желание просто почувствовать тепло чей-то руки, но её нет рядом. По крайней мере, человеческой. Учёные из японского университета Gifu сконструировали специальную моторизированную руку, которую мужчины могут сжимать, когда они чувствуют себя одинокими. Рука-робот покрыта специальным мягким податливым гелем для наиболее реалистичной имитации человеческой кожи. Когда вы сжимаете её, она сжимается в ответ.

image

Моя девушка робот


Четыре инженера из Университета Gifu создали моторизованное устройство, делающее его владельцев чуть менее одинокими. Ведь, как заявляют разработчики, легче держать девушку за руку, чем найти девушку.

В нынешнем виде Osampo Kanojo (в переводе: моя подруга на прогулке) представляет собой портативное устройство с проводами и дорожкой, которые могут создать ощущение и даже запах присутствия партнёрши. Хотя бестелесная рука (предплечье) не может заменить настоящей возлюбленной, ее создатели придумали, как повысить реалистичность.

image

Из чего состоит устройство




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

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


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

Миссия портативной руки


Идея инженеров Osampo Kanojo состоит в том, чтобы обеспечить некоторый комфорт и дружеское общение для одиноких людей, особенно во время самоизоляции из-за пандемии COVID-19. Что бы вы ни говорили о прогулке с бледными механизированными пальцами, всё больше исследователей находят связь между одиночеством и проблемами со здоровьем. Возможно, такая рука действительно сделает мир чуть счастливее.

Однако пока неизвестно, поступит ли рука-робот в массовое производство или вам придётся искать свидание с ней через Tinder, как с настоящей девушкой.

Кроме того, инженеры позаботились обо всех предпочтениях и уже планируют создание мужской версии такой руки. В целом механизм по своему строению будет схож с женской" предшественницей. Разница лишь в наборе ароматов. Мужская рука будет источать мужской парфюм, древесный уголь и, возможно, запах моторного масла.

Сходили бы на свидание с такой девушкой? Делитесь своими мыслями в комментариях!

Список литературы:

  1. Scientists in Japan build robot to hold hands with lonely people [Электронный ресурс]
  2. This pale, sweaty robot hand wants to take romantic walks with you [Электронный ресурс]
  3. Официальный доклад разработчиков из университета Gifu [Электронный ресурс]
Подробнее..

Трансформеры в Поиске как Яндекс применил тяжёлые нейросети для поиска по смыслу

25.11.2020 12:06:49 | Автор: admin

Привет, Хабр. Меня зовут Саша Готманов, я руковожу группой нейросетевых технологий в поиске Яндекса. На YaC 2020 мы впервые рассказали о внедрении трансформера новой нейросетевой архитектуры для ранжирования веб-страниц. Это наиболее значимое событие в нашем поиске за последние 10 лет.

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

Задача поиска

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

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

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

По такому принципу и работал поиск Яндекса до 2016 года. За годы разработки для повышения качества было придумано множество остроумных эвристических алгоритмов. Одних только способов посчитать общие слова запроса и документа было предложено и внедрено несколько десятков. Вот так, к примеру, выглядит один из сравнительно простых:

Здесь каждому хиту t (то есть вхождению слова из запроса в документ, от англ. hit, попадание) присваивается вес с учётом частотности слова в корпусе (IDF, Inverse Document Frequency) и расстояний до ближайших вхождений других слов запроса в документ слева и справа по тексту (LeftDist и RightDist). Затем полученные значения суммируются по всем найденным хитам. Каждая такая эвристика при внедрении позволяла получить небольшой, но статистически значимый прирост качества модели, то есть чуть лучше приблизить ту самую смысловую связь. Суммарный эффект от простых факторов постепенно накапливался, и внедрения за длительный период (полгода-год) уже заметно влияли на ранжирование.

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

[можно ли купаться в баренцевом море летом]
[путешествие по северному ледовитому океану]
[города и поселки на побережье северного ледовитого океана]

(Это реальные примеры расширений запроса, взятые из поиска Яндекса.)

Как найти похожие слова и запросы тема отдельного рассказа. Для этого в нашем поиске тоже есть разные алгоритмы, а решению задачи очень помогают логи запросов, которые нам задают пользователи. Сейчас важно отметить, что если похожий запрос найден, то его можно использовать во всех эвристических расчётах сразу; достаточно взять уже готовый алгоритм и заменить в нём один текст запроса на другой. Таким методом можно получить сразу много полезной информации для ранжирования. Что может быть чуть менее очевидно аналогично запросу можно расширять и документ, собирая для него альтернативные тексты, которые в Яндексе называют словом стримы (от англ. stream). Например, стрим для документа может состоять из всех текстов входящих ссылок или из всех текстов запросов в поиск, по которым пользователи часто выбирают этот документ на выдаче. Точно так же стрим можно использовать в любом готовом эвристическом алгоритме, заменив на него исходный текст документа.

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

В результате многих лет работы над качеством поиска у нас накопились тысячи самых разных факторов. При решении задачи ранжирования все они подаются на вход одной итоговой модели. Для её обучения мы используем нашу открытую реализацию алгоритма GBDT (Gradient Boosting Decision Trees) CatBoost.

Нейросети в ранжировании

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

Первые нейронные сети в поиске обладали простой feed-forward-архитектурой. На вход сети подаётся исходный текст в виде мешка слов (bag of words). Каждое слово превращается в вектор, вектора затем суммируются в один, который и используется как представление всего текста. Взаимный порядок слов при этом теряется или учитывается лишь частично с помощью специальных технических трюков. Кроме того, размер словаря у такой сети ограничен; неизвестное слово в лучшем случае удаётся разбить на частотные сочетания букв (например, на триграммы) в надежде сохранить хотя бы часть его смысла. Вектор мешка слов затем пропускается через несколько плотных слоёв нейронов, на выходе которых образуется семантический вектор (иначе эмбеддинг, от англ. embedding, вложение; имеется в виду, что исходный объект-текст вкладывается в n-мерное пространство семантических векторов).

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

В этом свойстве семантических векторов нет ничего удивительного, ведь нейронная сеть обучается решать именно такую задачу, то есть приближать смысловую связь между запросом и документом на миллиардах обучающих примеров. В качестве таргета (то есть целевого, истинного значения релевантности) при этом используются предпочтения наших пользователей, которые можно определить по логам поиска. Точнее, можно предположить, что определённый шаблон поведения пользователя хорошо коррелирует с наличием (или, что не менее важно, с отсутствием) смысловой связи между запросом и показанным по нему документом, и собрать на его основе вариант таргета для обучения. Задача сложнее, чем может показаться на первый взгляд, и допускает различные решения. Если в качестве положительного примера обычно подходит документ с кликом по запросу, то найти хороший отрицательный пример гораздо труднее. Например, оказывается, что почти бесполезно брать в качестве отрицательных документы, для которых был показ, но не было клика по запросу. Здесь снова открывается простор для эвристических алгоритмов, а их правильное использование позволяет на порядок улучшить качество получающейся нейронной сети в задаче ранжирования. Алгоритм, который лучше всего показал себя на практике, называется в Яндексе алгоритмом переформулировок и существенно опирается на то, что пользователям свойственно при решении поисковой задачи задавать несколько запросов подряд, постепенно уточняя формулировку, то есть переформулировать исходный запрос до тех пор, пока не будет найден нужный документ.

Пример архитектуры сети в подходе с семантическими эмбеддингами. Более подробное описание этого подхода тут.

Важное ограничивающее свойство такой сети: весь входной текст с самого начала представляется одним вектором ограниченного размера, который должен полностью описывать его смысл. Однако реальный текст (в основном это касается документа) обладает сложной структурой его размер может сильно меняться, а смысловое содержание может быть очень разнородным; каждое слово и предложение обладают своим особым контекстом и добавляют свою часть содержания, при этом разные части текста документа могут быть в разной степени связаны с запросом пользователя. Поэтому простая нейронная сеть может дать лишь очень грубое приближение реальной семантики, которое в основном работает для коротких текстов.

Тем не менее, использование плотных feed-forward-сетей в своё время позволило существенно улучшить качество поиска Яндекса, что легло в основу двух крупных релизов: Палех и Королёв. В значительной степени этого удалось добиться за счёт длительных экспериментов с обучающими выборками и подбором правильных контентных признаков на входе моделей. То есть ключевыми вопросами для нас были: На какой (кликовый) таргет учить? и Какие данные и в каком виде подавать на вход?

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

Нейронная сеть, сначала обученная на миллиардах переформулировок, а затем дообученная на сильно меньшем количестве экспертных оценок, заметно улучшает качество ранжирования. Это характерный пример применения подхода transfer learning: модель сначала обучается решать более простую или более общую задачу на большой выборке (этот этап также называют предварительным обучением или предобучением, англ. pre-tain), а затем быстро адаптируется под конкретную задачу уже на сильно меньшем числе примеров (этот этап называют дообучением или настройкой, англ. fine-tune). В случае простых feed-forward-сетей transfer learning уже приносит пользу, но наибольшего эффекта этот метод достигает с появлением архитектур следующего поколения.

Нейросети-трансформеры

Долгое время самой активно развивающейся областью применения для сложных алгоритмов анализа текста была задача машинного перевода. Результат работы переводчика это полностью сгенерированный текст, и даже небольшие смысловые ошибки сразу заметны пользователю. Поэтому для решения задач перевода всегда использовались самые сложные модели, которые могли учесть порядок слов в тексте и их взаимное влияние друг на друга. Сначала это были рекуррентные нейронные сети (Recurrent Neural Networks, RNN), а затем трансформеры. Далее речь пойдёт только о трансформерах, которые по сути являются более технологически совершенным развитием идеи рекуррентных сетей.

В сетях с архитектурой трансформеров каждый элемент текста обрабатывается по отдельности и представляется отдельным вектором, сохраняя при этом своё положение. Элементом может быть отдельное слово, знак пунктуации или частотная последовательность символов, например BPE-токен. Сеть также включает механизм внимания (англ. attention), который позволяет ей при вычислениях концентрироваться на разных фрагментах входного текста.

Применительно к задаче ранжирования, по запросу [купить кофеварку] такая нейронная сеть может выделить часть документа (e.g. страницы интернет-магазина), в которой речь идёт именно о нужном пользователю товаре. Остальные части тоже могут быть учтены, но их влияние на результат будет меньше. Трансформеры могут хорошо выучивать сложные зависимости между словами и активно используются для генерации естественных текстов в таких задачах, как перевод и ответы на вопросы (англ. question answering). Поэтому в Яндексе они применяются уже достаточно давно. В первую очередь, конечно, в Яндекс.Переводчике.

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

Transformers + transfer learning

Глубокие нейронные сети достаточно требовательны к объёму примеров для обучения. Если данных мало, то никакого выигрыша от применения тяжёлой архитектуры не получится. При этом практических задач всегда много, и они несколько отличаются друг от друга. Собрать миллиарды примеров для каждый задачи просто невозможно: не хватит ни времени, ни бюджета. На помощь снова приходит подход transfer learning. Как мы уже разобрались на примере feed-forward-сетей, суть в том, чтобы переиспользовать информацию, накопленную в рамках одной задачи, для других задач. В Яндексе этот подход применяется повсеместно, особенно он хорош в компьютерном зрении, где обученная на поиске изображений базовая модель легко дообучается почти на любые задачи. В трансформерах transfer learning тоже ожидаемо заработал.

В 2018-м команда OpenAI показала, что если обучить трансформер на сыром корпусе текстов большого размера в режиме языковой модели, а затем дообучать модель на малых данных для конкретных задач, то результат оказывается существенно лучше, чем раньше. Так родился проект GPT (Generative Pre-trained Transformer). Похожая идея чуть позже легла в основу проекта BERT (Bidirectional Encoder Representations from Transformers) от Google.

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

Трансформеры в поиске Яндекса

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

Для иллюстрации приведу несколько результатов из наших экспериментов. Давайте возьмём открытую модель BERT-Base Multilingual и обучим на наши экспертные оценки. Можно измерить полезность такого трансформера как дополнительного фактора в задаче ранжирования; получим статистически значимое уменьшение ошибки предсказания релевантности на 3-4%. Это хороший фактор для ранжирования, который мы бы немедленно внедрили, если бы он не требовал применения 12-слойного трансформера в рантайме. Теперь возьмём вариант модели BERT-Base, который мы обучили с нуля, и получим уменьшение ошибки предсказания почти на 10%, то есть более чем двукратный рост качества по сравнению с ванильной версией, и это далеко не предел. Это не значит, что модель Multilingual от Google низкого качества. С помощью открытых моделей BERT уже было получено много интересных результатов в разных задачах NLP (Natural Language Processing, то есть в задачах обработки текстов на естественном языке). Но это значит, что она плохо подходит для ранжирования веб-страниц на русском языке.

Первая трудность, которая возникает на пути к обучению своего трансформера, это вычислительная сложность задачи. Новые модели хорошо масштабируются по качеству, но при этом в миллионы раз сложнее, чем те, которые применялись в поиске Яндекса раньше. Если раньше нейронную сеть удавалось обучить за один час, то трансформер на таком же графическом ускорителе Tesla v100 будет учиться 10 лет. То есть без одновременного использования хотя бы 100 ускорителей (с возможностью быстрой передачи данных между ними) задача не решается в принципе. Необходим запуск специализированного вычислительного кластера и распределённое обучение на нём.

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

Несколько слов про само обучение. Нам важно, чтобы получившаяся модель решала с оптимальным качеством именно задачу ранжирования. Для этого мы разработали свой стек обучения. Как и BERT, модель сначала учится свойствам языка, решая задачу MLM (Masked Language Model), но делает это сразу на текстах, характерных для задачи ранжирования. Уже на этом этапе вход модели состоит из запроса и документа, и мы с самого начала обучаем модель предсказывать ещё и вероятность клика на документ по запросу. Удивительно, но тот же самый таргет переформулировок, который был разработан ещё для feed-forward-сетей, отлично показывает себя и здесь. Обучение на клик существенно увеличивает качество при последующем решении семантических задач ранжирования.

В дообучении мы используем не одну задачу, а последовательность задач возрастающей сложности. Сначала модель учится на более простых и дешёвых толокерских оценках релевантности, которыми мы располагаем в большом количестве. Затем на более сложных и дорогих оценках асессоров. И наконец, обучается на итоговую метрику, которая объединяет в себе сразу несколько аспектов и по которой мы оцениваем качество ранжирования. Такой метод последовательного дообучения позволяет добиться наилучшего результата. По сути весь процесс обучения выстраивается от больших выборок к малым и от простых задач к более сложным и семантическим.

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

Итак, мы научились обучать модели в офлайне, но вот работать им уже нужно в онлайне, то есть в реальном времени в ответ на тысячи пользовательских запросов в секунду. Тут заключается вторая принципиальная трудность. Применение трансформера это тяжелая для рантайма задача; модели такой сложности можно применять только на GPU-картах, иначе время их работы окажется чрезмерным и легко может превысить время работы всего поиска. Потребовалось разработать с нуля и развернуть несколько сервисов для быстрого применения (инференса, англ. inference) трансформеров на GPU. Это новый тип инфраструктуры, который до этого не использовался в поиске.

Непосредственно для применения мы доработали внутреннюю библиотеку для инференса трансформеров, которая разработана нашими коллегами из Яндекс.Переводчика и, по нашим замерам, как минимум не уступает другим доступным аналогам. Ну и конечно, всё считается в FP16 (16-битное представление чисел с плавающей точкой).

Однако, даже с учетом использования GPU и оптимизированного кода для инференса, модель с максимальным уровнем качества слишком большая для внедрения в рантайм поиска. Для решения этой проблемы есть классический приём knowledge distillation (или dark knowledge). В Яндексе мы используем менее пафосный термин пародирование. Это обучение более простой модели, которая пародирует поведение более сложной, обучаясь на её предсказания в офлайне.

В результате пародирования сложность модели удаётся уменьшить в разы, а потери качества остаются в пределах ~10%.

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

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

Внедрение split-модели опять приводит нас к новым и интересным инженерным задачам, но рассказать обо всём в одном посте, увы, невозможно. Хотя архитектура нейросетей-трансформеров известна уже достаточно давно, а их использование для задач NLP приобрело огромную популярность после появления BERT в 2018 году, внедрение трансформера в современную поисковую систему невозможно без инженерной изобретательности и большого числа оригинальных технологических улучшений в обучении и рантайме. Поэтому мы назвали нашу технологию YATI Yet Another Transformer (with Improvements), что, как нам кажется, хорошо отражает её суть. Это действительно ещё один трансформер, архитектурно похожий на другие модели (а их в последние годы появилось великое множество), но уникальный тем, что благодаря совокупности улучшений он способен работать и приносить пользу в поиске самом сложном сервисе Яндекса.

Итоги

Что в итоге? У нас появилась своя инфраструктура обучения и дистилляции тяжёлых моделей, адаптированная под наш стек задач ранжирования. С её помощью мы сначала обучили большие модели-трансформеры высокого качества, а затем дистиллировали их в многозадачную split-модель, которая внедрена в рантайм на GPU в виде нескольких частей, независимо применяемых к запросу и документу.

Это внедрение принесло нам рекордные улучшения в ранжировании за последние 10 лет (со времён внедрения Матрикснета). Просто для сравнения: Палех и Королёв вместе повлияли на поиск меньше, чем новая модель на трансформерах. Более того, в поиске рассчитываются тысячи факторов, но если выключить их все и оставить только новую модель, то качество ранжирования по основной офлайн-метрике упадёт лишь на 4-5%!

В таблице ниже сравнивается качество нескольких нейросетевых алгоритмов в задаче ранжирования. % NDCG это нормированное значение обычной метрики качества DCG по отношению к идеальному ранжированию на нашем датасете. 100% означает, что модель располагает документы в порядке убывания их истинных офлайн-оценок. Худший результат ожидаемо даёт подход предыдущего поколения, то есть просто обучение feed-forward-сети на кликовый таргет. Дообучение готовых моделей BERT существенно проигрывает по качеству специализированной версии, которая показывает рекордный результат в 95,4% сравнимо с качеством дистилляции YATI в feed-forward-сеть. Все модели, кроме первой, дообучались на одном и том же множестве экспертных оценок.

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

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

Спасибо за внимание.

Подробнее..

Пополнение в семье три истории про Яндекс.Станцию Макс

25.11.2020 16:04:07 | Автор: admin

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

Сегодня на YaC 2020 мы показали нашу новую колонку Яндекс.Станцию Макс. Это не замена Станции или Станции Мини, а новая, старшая модель в семействе умных колонок Яндекса. В ней мы не просто поддержали более требовательные к железу возможности, но и сознательно отказались от некоторых компромиссов. В результате устройство, которое на этапе идеи должно было отличаться от Станции лишь в нескольких элементах, оказалось не похоже на неё примерно во всём, кроме внешнего вида.

Зачем и как мы этого добились рассказываю в трёх историях. В качестве бонуса вы узнаете о непростой работе с производством в условиях пандемии.

История про звук

В посте про создание Яндекс.Станции мы рассказывали о том, как искали компромисс между воспроизведением звука и распознаванием голоса. У производителей обычной акустики такой задачи нет. Для нас же важно не только хорошо звучать, но и понимать речь человека. Поэтому в Яндекс.Станции мы пошли на достаточно необычное решение. Мы перенаправили воспроизведение средних частот на вуфер, который, в свою очередь, был направлен в противоположную от микрофонов сторону.

Акустика в Яндекс.СтанцииАкустика в Яндекс.Станции

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

В более старшей Яндекс.Станции Макс у нас появилась возможность переосмыслить это решение. И на то было как минимум две причины.

Причина первая. Мы отказались от предыдущих, аналоговых микрофонов и заменили их цифровыми Knowles Everest. Важно сразу сказать, что противопоставление качества аналоговых и цифровых микрофонов само по себе лишено смысла, если, конечно, у вас нет цели погрузиться в многостраничный холивар между сторонниками противоположных точек зрения. Тем не менее наши новые микрофоны относятся к более дорогому сегменту, и, по нашему скромному мнению, это одни из лучших цифровых микрофонов для умных устройств. Они отличаются хорошей сбалансированностью: достаточно высокий уровень чувствительности одновременно с хорошим соотношением сигнал/шум и уровнем AOP (Acoustic Overload Point это такой аналог максимального звукового давления для цифровых микрофонов). Можно найти микрофоны и с большей чувствительностью, но с низким AOP, из-за чего при высокой громкости услышать команды будет сложнее (понятно, что слышать команду это комплексный процесс, на который влияет много факторов, но на уровне микрофонов мы постарались выбрать лучший вариант).

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

Причина вторая. Технологии Яндекса в области распознавания речи и голосовой активации всё это время тоже не стояли на месте. Пожалуй, самое важное: мы отказались от моделей на базе DNN-HMM и перешли на архитектуру e2e-распознавания с использованием тяжёлых нейросетей-трансформеров. Это значит, что теперь мы не дробим речь на последовательность звуков, чтобы распознавать их по отдельности, а обучаем модель работать со всей фразой целиком. На это требуется значительно больше как вычислительных ресурсов, так и примеров для обучения, но и результат оказывается существенно лучше.

Итак, новые микрофоны, прогресс в голосовых технологиях и более смелый ценовой сегмент позволили нам пересмотреть архитектуру акустики в Станции Макс.

Мы добавили два новых динамика для средних частот. Рядом с ними фазоинверторы. Это такие акустические порты в корпусе, которые инвертируют звук с тыльной стороны динамика и выводят его на фронтальную часть, усиливая звуковое давление. Как правило, в умных колонках не используют фазоинверторы из-за экономии и стремления упростить конструкцию.

Новые динамики разнесли в разные стороны корпуса, тем самым добились более объёмного звука и честного стерео для средних частот. Кроме того, это нововведение позволило нам обновить и вуфер.

В Станции вуфер был сконструирован так, чтобы справляться и с басами, и с вокалом. Компромиссное решение. В Станции Макс мы добавили отдельные среднечастотные динамики, а значит, вуфер теперь можно было переориентировать исключительно на низкие частоты. Новый вуфер Станции Макс в связке с новым пассивным излучателем способен воспроизводить частоты от 45 Гц (по паспорту; по факту начинаем играть от 40 Гц).

Акустика в Яндекс.Станции МаксАкустика в Яндекс.Станции Макс

При этом мощность всей акустики выросла до 65 Вт. На самом деле сумма мощностей всех элементов приближается к 90 Вт, но мы сознательно ограничили потолок на уровне источника питания. Потому что лучше использовать более мощные динамики в комфортных условиях, чем вгонять в предельные режимы работы более дешёвые варианты. К тому же 65 Вт это уже очень громко.

Чтобы раскачать новые динамики, мы решили обновить и без того неплохие усилители, применяющиеся в Станции. В обоих случаях они от Texas Instruments, но в Станции Макс используется более свежая и мощная модель TAS5825M. В неё встроен более производительный DSP (Digital Signal Processor), который необходим для многоуровневой предобработки звука, например для функции с говорящим названием Smart Bass. Причём мы используем два таких усилителя. Первый работает по классической стереосхеме: к каждому каналу подключена пара из среднечастотного динамика и твитера. Второй по параллельно-мостовой схеме (PBTL), то есть два канала соединены параллельно и отвечают за вуфер (запас мощности особенно важен для низких частот).

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

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

Эту проблему мы решили просто: выбрали более плотную ткань, которая существенно снизила качество воспроизводимого звука из-за более низкой проницаемости. Шутка! Для нас было важно сохранить то звучание, которого мы так долго добивались с помощью новой акустики. Пришлось немного попотеть, но подходящее решение нашлось. Мы добавили под ткань тонкую сеть с крупной ячейкой, которая практически не влияет на акустические характеристики, но удерживает ткань от провисаний и визуально маскирует начинку корпуса от любопытных глаз. Кроме того, возможность сохранить менее плотную акустическую ткань позволила нам реализовать нашу давнюю мечту подарить Алисе визуальный язык. Но об этом чуть позже.

Ещё одна важная деталь про звук, которая относится ко всем трём моделям Станции. Мы достаточно часто встречаем пользователей, которые используют дома сразу несколько колонок. К примеру, Станция стоит у телевизора, а Станция Мини на кухне. Теперь достаточно будет сказать: Алиса, включи музыку везде, чтобы трек заиграл синхронно на всех ваших Станциях. Это изменение постепенно станет доступно на всех умных колонках Яндекса.

История про видео

Раньше на КиноПоиске 4K-контента было немного, но теперь его становится больше. Поэтому мы хотели дать возможность владельцам 4K-телевизоров смотреть фильмы и сериалы в соответствующем качестве через колонку с Алисой. Но одним лишь бэкендом эту задачу не решить.

Видео в 4К-разрешении существенно более тяжёлое, чем народное Full HD (спасибо, кэп). Чтобы оно не тормозило при загрузке, применяется более совершенный стандарт сжатия H.265, также известный как HEVC. Как вы уже догадались, в нём используются более сложные алгоритмы. Поэтому в Станции Макс мы перешли на платформу SoC Amogic S905X2 вместо Allwinner R18. В её основе те же четыре ядра ARM Cortex-A53, но теперь они работают на большей частоте 1,8 GHz, к ним добавилась более мощная графическая подсистема Mali-G31 MP2. И, что самое важно: появилась встроенная поддержка новых кодеков, в частности HEVC 4K@60fps. Благодаря этому колонка уверенно справляется с воспроизведением 4К-контента. Оперативной памяти, кстати, тоже стало больше: 2 GB вместо 1 GB.

Уметь воспроизводить контент хорошо, но его ведь надо ещё скачать из сети. Чтобы смотреть видео в разрешении 1080p, нужна скорость в 810 Мбит/c. Для 4K может потребоваться существенно большая пропускная способность до 30 Мбит/с. Поэтому в Станции Макс мы поставили Wi-Fi-модуль 7265D2W от Intel. Он уже доказал свою надёжность при работе с 4К-контентом. Но так как домашняя беспроводная сеть далеко не у всех идеальна, добавили ещё и гигабитный Ethernet.

Электроника колонки полностью обновилась: если посмотреть на список ключевых компонентов, то пересечений со Станцией практически нет. Это отразилось и на внутренней конструкции устройства: мы не просто заменили один SoC на другой, но и разделили электронику на самостоятельные платы их стало 6. Например, процессор и память теперь не соседствуют с электроникой усилителя и источника питания, а живут на отдельной плате. Разделение полезно, потому что ускоряет разработку, отладку и обслуживание, что особенно важно для такой сложной конструкции. Но при сборке устройства нас поджидал сюрприз.

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

В результате двух недель мозгового штурма оно было найдено: мы изменили метод соединения плат между собой, заменив гибкий шлейф на жёсткий разъём. Собирать колонку стало гораздо легче. Звучит просто, но для этого пришлось серьёзно изменить трассировку двух плат, затем заново их изготовить и тщательно проверить. И вот тут-то кроется главная мораль этой маленькой истории: любая, даже малозначительная на первый взгляд проблема, может существенно (на месяцы!) растянуть сроки разработки устройства, если выявить её слишком поздно. А выявить её на раннем этапе можно только тогда, когда разработчики устройства находятся в тесном контакте с фабрикой-производителем. На этапе отладки производства нужно буквально сидеть на соседнем стуле и смотреть, как твой прототип собирают в боевых условиях. Как вы понимаете, эпидемия коронавируса поломала все подобные процессы. Нам пришлось учиться налаживать производство по зуму, расширять прототипирование в Москве, а затем терять время на пересылку прототипов. Это сложно, долго и дорого, но без этого нельзя выпустить хорошее устройство.

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

Приведу наглядный пример. Если в цепь питания памяти поставить конденсатор не на 22 мкФ, а на 10 мкФ, то даже достаточно дорогое, но стандартное тестирование не заметит никакого подвоха. Колонка даже будет прекрасно работать. До тех пор, пока при сильной нагрузке (на том же 4K-контенте) пульсация питания памяти не выйдет за границы допустимого коридора. Это, кстати, реальный пример с отладки производства, а не теория.

Поэтому мы сами разработали дополнительные тестовые стенды для конвейера. Для каждой нашей платы своя разновидность стенда. Самое интересное в том, что мы не просто разработали их, но и производим в Москве, после чего отправляем на фабрику для использования на конвейере (про особенности пересылки и сборки в условиях коронавируса хотя бы здесь промолчу). Получается, что сама колонка производится в Китае по нашей конструкторской документации, но инструменты для точного контроля качества конвейера производятся в России. Согласитесь, необычная ситуация. Расскажем об этом подробнее в самостоятельной публикации, если сообществу будет интересна эта тема.

Наш стенд для тестирования процессорных плат (SoM)Наш стенд для тестирования процессорных плат (SoM)Другой наш стенд для тестирования backplane-плат на боевом дежурстве в КитаеДругой наш стенд для тестирования backplane-плат на боевом дежурстве в Китае

История про экран

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

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

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

С другой стороны, если сделать маленький ЖК-экранчик, уместить его на корпусе Станции и выводить на него то же, что и в приложениях с Алисой, то никто на нём ничего не увидит. Это же колонка, а не смартфон, который держат в руках.

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

Принципиальная идея родилась быстро: а давайте поместим экран под ткань! Проблемы с идеей начались буквально с первого же шага. ЖК-экран мы не используем: его никто под тканью не увидит. Поэтому решили делать светодиодный экран. Да, мы не первые, кто додумался до этого. Но кажется, мы первые, кто заморочился этим НАСТОЛЬКО глубоко. Сейчас всё расскажу.

Казалось бы, светодиоды штука простая, экраны из них делают регулярно. Но нам пришлось обеспечивать высокие характеристики при необходимости минимизации цены, и поэтому ряд решений был отметён сразу. Например, адресные светодиоды WS2812 (первое, что пришло в голову) оказались слишком дорогими, и их решили не применять. Есть специализированные микросхемы для экранов но ни одна нас не устроила: или частота кадров была недостаточная, или количество градаций невелико, или цена слишком высокая. Решили делать на микроконтроллере и буферах с регистрами.

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

Попытки применить рассеиватели тоже не привели к успеху: не удалось достичь хорошей картинки при ограниченной толщине конструкции. А ещё ткань бывает разных цветов В общем, от цветных диодов мы отказались. Так и нагляднее (отлично просвечивает через ткань любого цвета), и конструкция проще (в три раза меньше кристаллов на пиксель).

Заодно решили увеличить разрешение: 13 13 это маловато. Пробовали 15 15, 16 17, в итоге пришли к финальному решению к разрешению 25 16. А это, на минуточку, 400 диодов!

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

Первым делом построили классическую схему динамической индикации: картинка отрисовывается построчно, то есть в каждый момент времени горит только одна строка. При этом за счёт инерции зрения мы видим картинку целиком. Столбцы управлялись двумя микросхемами ICN2595: это 16-битный сдвиговый регистр со стабилизатором тока на каждом канале. А строки двумя ICN2012: это 8-битный дешифратор с мощными транзисторами на каждом канале.

Но давайте поговорим о времени. 50 кадров в секунду это 20 миллисекунд на кадр, а значит, 1,25 мс на строку. Поскольку количество градаций 256, за время отображения строки её нужно 256 раз по-разному перерисовать. Меньше 5 микросекунд на прорисовку каждого варианта! Это потребовало быстрого микроконтроллера с немалым объёмом памяти. Выбрали STM32F411.

Вот только всего строк 16, а значит, яркость картинки в итоге лишь 1/16 от максимальной. Слишком тусклая получилась картинка! Попробовали поднять ток светодиодов со штатных 5 до 30 мА. Не помогло.

В конце концов мы решили отказаться от динамической индикации и перейти на управление каждым диодом. Убрали дешифраторы и установили 25 регистров. Включили их последовательно и получили 400-битный сдвиговый регистр со светодиодом на каждом бите. Это позволило обеспечить работу светодиода на штатном токе, а яркость по сравнению с динамическим вариантом возросла в 16 раз. Заодно снизились и требования к быстродействию микроконтроллера: теперь каждые 20 мс нужно перерисовать экран 256 раз, а не 16 256 раз.

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

Когда-то это выглядело примерно такКогда-то это выглядело примерно так

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

Расстояние между пикселями возникает не потому, что этого кто-то хочет. Это следствие конструкции любого диодного экрана. Между диодами должна быть физическая перегородка, чтобы они не засвечивали друг друга. Поэтому поверх платы с диодами накладывается пластина с отверстиями-световодами.

Казалось бы, сократите толщину стенок между отверстиями на пластине и дело в шляпе. Но в реальном мире приходится плясать от технологического процесса производства пластины. И отлить из пластика пластину так, чтобы толщина стенки была меньше, чем 0,4 мм, просто не получится. А любые альтернативные варианты будут неприлично много стоить.

Мы пошли другим путём. Наше решение заключается в том, чтобы форма световодов напоминала усечённую пирамиду. Их ширина на выходе больше, чем у основания. В результате световое пятно увеличивается, а расстояние между пикселями визуально уменьшается.

Вид световодов в разрезеВид световодов в разрезе

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

Вот такой вот бутерброд. И всё ради того, чтобы изображения, текст и числа выглядели более естественно.

Но визуальный язык это не только железо. Когда мы начинали, то думали примерно так: 25 16 это размер, который ближе к фавиконке, он в три раза меньше, чем разрешение экрана у Nokia 3310. Нужен был новый визуальный язык для сверхмалых разрешений, чтобы ответы Алисы выглядели естественно. Этого мы добились с помощью нескольких хитростей. По максимуму отказались от статичных фреймов. По краям добавили полупрозрачные пиксели для смягчения резкости изображения. Комбинация простая и логичная: невысокое разрешение компенсируем высоким fps, глаз просто не успевает зацепиться за пиксели. При этом для системных уведомлений и цифр выбрали обычный пиксель-арт, чтобы сохранить их наглядность в статике.

Теперь, когда пользователь будет уточнять погоду, менять уровень громкости или решать множество других задач, Алиса сможет не только проговорить ответ голосом, но и показать.

ПогодаПогода

И ещё кое-что. Алису отличает её эмоциональность. В режиме болталки, когда она стремится поддерживать диалог, ответы могут нести явный эмоциональный оттенок. Теперь эти эмоции мы сможем передать и визуально. Можно сказать, что это наш самый смелый шаг во всём проекте: раньше Алиса передавала эмоции исключительно голосом.

ЭмоцииЭмоции

Заключение

Одним постом весь проект даже близко раскрыть не получится (если интересно узнать о чём-то подробнее, то пишите вопросы, а мы попробуем посвятить им отдельные посты). Но надеюсь, удалось подчеркнуть основное. Станция Макс это не апгрейд Станции, а новая, старшая модель, которая прошла самостоятельный (и крайне непростой в условиях пандемии) цикл разработки, получила новый, трёхполосный стереозвук, поддержку 4K, LED-экран и даже пульт.

Если у вас уже есть колонка с Алисой, то рекомендую заглянуть в уютный чат и новостной канал сообщества пользователей Яндекс.Станции. Для пользователей это хороший способ обмениваться опытом, а для нас видеть и чувствовать то, что волнует сообщество. К примеру, мем с пожеланием дать возможность подключать свою акустику мы заметили и добавили порт AUX OUT в Станцию Макс.

Подробнее..

Open Source синтез речи SOVA

18.11.2020 00:09:51 | Автор: admin

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



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


Введение в задачу синтеза


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


Терминология

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


Аллофон вариация фонемы в зависимости от окружения. В отличие от фонемы, является не абстрактным понятием, а конкретным речевым звуком. Например, фонема <а> имеет следующие аллофоны: (а) в слове пат, (а) в слове мать, (а) в слове пятый и т.д.


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


Полуфон сегемент речи, у которого одна из границ совпадает с границей аллофона, а другая с границей дифона.


  1. Конкатенативный синтез (unit selection) заранее готовится база дифонов и полуфонов, которые потом склеиваются между собой. Недавнно на хабре как раз вышла статья о самом известном подобном синтезаторе на русском языке;
  2. Параметрический вычисление на основе текста набора акустических признаков, по которым генерируется аудио сигнал. Естественно, что самым популярным представителем параметрического метода являются нейронные сети.

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


  1. Популярная архитектура, хорошо справляющаяся со своей задачей. Её рекомендацией являлись, как минимум, её использование банком Тинькофф для своего чат-бота Олега (см. статью выше), а также неявные намёки на её использование у Яндекса.
  2. Конечно же ещё одной немаловажной причиной стало то, что NVIDIA любезно предоставила свою реализацию Tacotron 2 (репозиторий) с её же вокодером Waveglow (статья, репозиторий), и всё это на pytorch (мы симпатизируем ему больше, чем tensorflow и keras).

Начало экспериментов


Так как сперва нашей задачей было обучение синтеза для русского языка, и собственным набором данных мы ещё не обзавелись, естественно, что для начала работы мы взяли единственный (на тот момент) приемлемый датасет для обучения синтеза на русском языке RUSLAN (прим. автора: есть подозрение, что это не имя диктора, а акроним от RUSsian LANguage).


Какие проблемы сразу же бросаются в глаза (в уши) при синтезе после обучения на оригинальном датасете с помощью кода NVIDIA:


  • Проскакивает случайная простановка ударений даже в тех словах, где ударение единственно возможное


Текст

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


Также попадается озвучка графем, а не фонем (синтез вместо синтэз)



Текст

Синтез речи это увлекательно


  • Нестабильность механизма внимания (который занимается, грубо говоря, выявлением соответствия символов входного текста и фреймов мел-спектрограммы), особенно на длинных входных текстах. Такая нестабильность, а другими словами, разрыв линии внимания, как на картинке:


приводит к появлению различных артефактов в речи



Текст

В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!


  • Нестабильность срабатывания гейт слоя, генерирующего сигнал об окончании генерации


Текст

В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!


  • Все предыдущие моменты касались движка синтеза (так мы называем Tacotron 2 у себя), а что касается самого датасета, то там можно отметить плохие условия записи диктора слышите это эхо?


Разберём, как мы боролись с каждым из этих пунктов.


Работы по улучшению


Случайная простановка ударений и озвучка графем


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


Данные


Вот тут-то нам и пригодился наш отдел разметчиков: чтобы проставить ударения, над текстом трудились 5 разметчиков в течение двух недель. Результат полностью размеченный ударениями датасет Руслан (ссылку см. ниже), который мы предоставляем сообществу для экспериментов. Но это касается только обучения, а что с инференсом? Тут всё просто: мы нашли словарь ударений (сначала аналог CMU dict для русского языка, а потом полную акцентуированную парадигму по А.А. Зализняку). Дальше нужно было подготовить код для использования этого словаря, и вуаля получаем контроль ударений для нашей системы синтеза.


Что касается более естественного озвучивания с помощью фонем, то мы рассматривали два репозитория для решения этой задачи: RusPhonetizer и russian_g2p. В итоге, первый не завёлся, второй оказался слишком медленным (0.24 секунды на предложение из 100 символов), а тут ещё и CMU словарь содержит не только ударения, но и фонетические записи слов, так что решили использовать его. Честно сказать, из-за отсутствия чёткого понимания, какие же всё-таки фонемы нужны, работа с этим словарём вылилась в обычную транслитерацию текста с периодически встречающейся редуцированной "о". Сейчас мы экспериментируем с фонетизатором на основе фонем из russian_g2p.


NLP-препроцессор


Для работы со словарями и конвертацией текста в фонемный вид пакет text из оригинального репозитория такотрона уже не подходил, так что был заведён отдельный репозиторий для преподготовки текста. Опуская все подробности его разработки, резюмируем, каким функционалом он обладает на сегодняшний день:


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

Документация к репозиторию пока что находится в разработке.


Примеры


Контроль ударений:



Текст

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



Текст

Тв+орог или твор+ог, к+озлы или козл+ы, з+амок или зам+ок.


Фонемы вместо графем:


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




Заодно приведём ещё пару синтезированных на open source модели примеров:



Текст

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



Текст

Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.



Текст

В чащах юга жил бы цитрус? Да, но фальш+ивый экземпляр!


Нестабильность механизма внимания


Решение этой проблемы потребовало изучения статей по теме и имплементацию методик, представленных в них. Вот что мы нашли:


  1. Diagonal guided attention (DGA) здесь идея простая: так как в синтезе, в отличие от машинного перевода, соответствие выходов энкодера и декодера последовательное, то есть система воспроизводит звуки по мере их появления в тексте, то давайте штрафовать матрицу внимания тем больше, чем больше она отступает от диагонального вида. Можно, конечно, возразить, а что если звук тянется и на линии внимания появляется полка, но мы решили не рассматривать подобные экстремальные случаи. В качестве бонуса получаем ускорение процесса схождения матрицы внимания;
  2. Pre-alignment guided attention в этой статье изложен более сложный подход: требуется с помощью стороннего инструмента (например, Montreal-Forced-Aligner) получить временные метки каждой фонемы на аудиозаписи и составить из них матрицу внимания, которая будет являться для системы целевой;
  3. Maximizing Mutual Information for Tacotron авторы статьи утверждают, что подобные артефакты в матрице внимания возникают из-за недостаточной связи декодера с текстом. Для укрепления этой связи вводится модуль примитивного предсказания текста из итоговой мел-спектрограммы (эдакая asr в миниатюре) и расчёт ошибки с помощью CTC. Также ускоряет сходимость матрицы внимания.

После проведённых экспериментов можем сказать, что первый вариант определённо выигрывает по соотношению (положительный эффект/затраченные усилия). В качестве доказательства приведём запись, синтезированную моделью, обученной с DGA, из текста длиной 560 символов (без учёта токенов ударения) без его разбиения:



Текст

Все смешалось в доме Облонских. Жена узнала, что муж был в связи с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что не может жить с ним в одном доме. Положение это продолжалось уже третий день и мучительно чувствовалось и самими супругами, и всеми членами семь+и, и домочадцами. Все члены семь+и и домочадцы чувствовали, что нет смысла в их сожительстве и что на каждом постоялом дворе случайно сошедшиеся люди более связаны между собой, чем они, члены семь+и и домочадцы Облонских. Жена не выходила из своих комнат, мужа третий день не было дома.


Как видите, на протяжении всей записи движок уверенно держал своё внимание: фраза не "разваливается", не возникает артефактов и мычания.


Нестабильность срабатывания гейт слоя


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


Эта проблема решается несколькими небольшими уловками:


  • Символ EOS вводится для каждого предложения, даже если у него в конце уже проставлен знак препинания из набора [., !, ?];
  • В конце каждой аудиозаписи добавляется небольшой участок тишины;
  • При расчёте функции потерь для гейт слоя нужно увеличить вес его положительных выходов, чтобы они играли бОльшую роль.

Все вышеперечисленные ухищрения присутствуют в нашем репозитории движка, который мы выложили в открытый доступ (об этом ниже).


Некачественный датасет


Нам повезло, что в команде есть человек, увлекающийся музыкой, так что для облагораживания датасетов, в частности Руслана, мы вручную подбирали параметры различных фильтров и обрабатывали ими аудиодорожки в Logic Pro X. Ниже можете прослушать примеры оригинального и прошедшего обработку Руслана:




Также стоит отметить, что в датасете немного почищена пунктуация, так как движок реагирует на неё весьма чувствительно.


Дополнительные эксперименты


После решения всех насущных вопросов встала задача улучшить и разнообразить звучание, придать ему изюминки. Любой знакомый с темой скажет Ок, посмотрите в сторону GST и VAE [ссылка раз, ссылка два], и мы посмотрели.


Введение в пайплайн GST, на субъективный слух автора, не давало каких-то особых запоминающихся изменений, пока мы не попробовали подход, описанный в Text predicted GST предлагается модели самой подбирать комбинацию стилистических токенов, чтобы добиться лучшего звучания для текущего текста. Для демонстрации работы этого модуля приведём аудио, полученные моделью, которая обучалась на датасете реплик персонажей из популярных зарубежных сериалов (актриса озвучки Екатерина). Уточним, что датасет изначально не предназначался для синтеза.




В общем, как и в жизни: главное найти подход к человеку.


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


Сложности VAE

Проблема posterior collapse (KL loss vanishing), характерная для вариационных моделей в сочетании с авторегрессионным декодером.


В начале обучения, декодер может отставать от вариацинного энкодера и научиться игнорировать неосмысленные латентные переменные, что приводит к почти нулевой ошибке KL для VAE (расстояние КульбакаЛейблера). Апостериорная оценка латентной переменной p(z|x) ослабевает и становится неотличимой от априорного Гауссовского шума p(z) ~ N(0, 1). Как следствие, вариационный энкодер не моделирует значимые свойства аудио и модель не предоставляет контроль над стилем и эмоцями речи.


Для борьбы с posterior collapse были опробованы уменьшение веса ошибки KL с его монотонным увеличение в процессе обучения, а также не учёт ошибки в начале обучения, равносильный игнорированию вариационных свойств модели и обучению стандартного автоэнкодера. Оба способа, в теории, позволяют декодеру сначала научиться синтезу речи и замедляют обучение вариационного автоэнкодера, повышая общую стабильность модели.


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


SOVA


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


  • sova-tts-engine движок на базе Tacotron 2 от NVIDIA. Всё вышеперечисленное, за исключением text predicted GST и VAE, было опубликовано в этом репозитории, плюс проведён избирательный рефакторинг кода;
  • sova-tts-tps тот самый nlp-препроцессор;
  • sova-tts-vocoder практически не изменённый вокодер от NVIDIA, но всё-таки с отличиями;
  • sova-tts-binding пакет для связывания nlp-препроцессора, движка и вокодера в единый инференс-пайплайн. Реализован с прицелом на добавление новых движков и вокодеров;
  • sova-tts упакованный в докер стенд синтеза с простеньким GUI интерфейсом;
  • Почищенный датасет и веса Руслана (This work, "SOVA Dataset (TTS RUSLAN)", is a derivative of "RUSLAN: Russian Spoken Language Corpus For Speech Synthesis" by Lenar Gabdrakhmanov, Rustem Garaev, Evgenii Razinkov, used under CC BY-NC-SA 4.0. "SOVA Dataset (TTS RUSLAN)" is licensed under CC BY-NC-SA 4.0 by Virtual Assistant, LLC)
  • Датасет и веса Наталии ("SOVA Dataset (TTS Natasha)" is licensed under CC BY 4.0 by Virtual Assistant, LLC)

Наш SOVA TTS (весь код + модель и датасет Наталии) вы можете свободно использовать для коммерческих задач бесплатно.


Планы


Планы у нас грандиозные, а именно:


  1. Полноценный нормализатор текста для раскрытия чисел, аббревиатур и сокращений;
  2. Модуль для решения неоднозначностей в ударениях и словах с буквой ё;
  3. Добавление поддержки ssml;
  4. Дальнейшие эксперименты с VAE, получение контроля над отдельными словами и фонемами;
  5. Подготовка эмоционального синтеза, по возможности с контролем уровня эмоции;
  6. Мультидикторный синтез на одной модели;
  7. Новые голоса;
  8. Клонирование голоса;
  9. Возможный переход на более современные архитектуры типа Flowtron или FastSpeech2;
  10. Эксперименты с вокодерами: дообучение Waveglow, обучение LPCNet, тестирование MelGAN;
  11. Оптимизация архитектуры для работы в реальном времени на CPU.

На текущий момент мы продолжаем двигаться в сторону улучшения качества синтеза речи. Если то, что мы делаем, вам интересно пишите, можем посотрудничать. Как на коммерческих проектах, так и в Open Source.


Все наши наработки доступны тут: наш GitHub
Распознавание речи: SOVA ASR
Синтез речи: SOVA TTS


Спасибо за внимание, впереди еще много интересного!

Подробнее..

Задачи и инструментыMLи их практическое применение

26.11.2020 12:17:06 | Автор: admin

Машинное обучение распространившийся термин, но не все понимают его верно. В этом материале эксперты направления аналитических решений ГК КОРУС Консалтинг Алена Гайбатова и Екатерина Степанова расскажут, что же на самом деле такоеmachinelearning(ML), в каких случаях эту технологию стоит использовать в проектах, а также где машинное обучение активно применяется на практике.

Как работают с данными

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

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

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

Второй так называемыеdata-drivenсистемы, которые извлекают логику работы из каких-то исторических данных. У этого типа есть много терминов-синонимов, которые возникали с течением времени:

  • модные в 90-е и нулевые data mining и knowledge discovery from database (KDD),

  • datascience, вошедший в обиход ближе к 2010-м,

  • bigdataпопулярная ныне. Единственное исключение, точнее дополнение, которое привносит именно этот термин наличие огромного количества сложноструктурированных данных.

Для разных задач разные алгоритмы

В соответствии с двумя типами слабого ИИ выводы из данных мы можем сделать вручную (при экспертных системах) и с помощью машинного обучения. Оно же в свою очередь подразделяется на два типа: классическийMLиdeeplearning(с использованием глубоких нейронных сетей с большим количеством слоев).

В проектах на базеMLиспользуются модели. Прежде всего, прогнозные, которые отвечают на базовые вопросы: к какой группе относится объект, какое числовое значение у него будет и так далее. В зависимости от того, на какой вопрос мы отвечаем, это могут быть модель классификатора или регресcии.

Классификаторы

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

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

Рыжая ли у кота шерсть? Да: мы относим его сразу к классу персидских котов, все персидские коты оказываются в одной ветке. Нет: у нас возникает следующее условие весит ли кот меньше 3 кг. Дерево условий создается в момент обучения алгоритма, а все новые элементы проходят по нему и оказываться в той или иной группе.

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

Регрессоры

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

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

Кластеризация

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

Самый популярный алгоритм кластеризации метод ближайших соседей.Cнова к кошкам. Мы хотим разбить наших зверей на 4 группы. Наши объекты снова точки на плоскости.Мы выбираем случайным образом центры наших групп, затем смотрим расстояние от центра группы до точек, ближайших к этому центру группы. После мы смещаем центры таким образом, чтобы расстояние до точек своей группы оказывалось меньше, чем до точек другой группы. Через нескольких итераций у нас получатся хорошо разделенные группы.

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

Нейронные сети

Первая нейронная сеть появилась еще в 1950-х гг. Сейчас при помощи нейронных сетей можно ответить на любой вопрос, но лишь с одной оговоркой: ответ не всегда можно интерпретировать.

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

Дополнительно в проектахMLиспользуются оптимизационные методы для минимизации ошибок. В условиях ограничений они стараются найти лучшее решение задачи с помощью нахождения экстремумов функции и применения статистических методов.

Обучение с подкреплением

Это и есть тот самый сильный искусственный интеллект, о котором мы уже говорили выше. К примеру, по этому принципу работают беспилотные автомобили.

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

Мы также пользуемся алгоритмамиUplift, нейролингвистического программирования и рекомендательными моделями.Upliftпозволяет понять, нужно ли коммуницировать с объектом, НЛП использует алгоритмы для анализа текста (к примеру, на этом принципе работает функция подсказки слов в смартфоне), а рекмодели могут быть персонализированными и не персонализированными.

Теория на практике

Посмотрим, как эти модели используются на для решения реальных задач. Мы сформулировали предпосылки для использованияMLв проектах. Безусловно, они не гарантируют стопроцентного успеха, но на старте могут значительно снизить риски.

  • Экономический эффект, который может принести оптимизация бизнес-процесса в несколько процентов;

  • Регулярный технический или бизнесовый процесс, при оптимизации которого регулярное принятие решений на среднем уровне и/или действия по заданному алгоритму могут значительно улучшиться;

  • Наличие данных, при которых может быть осуществлена оптимизация, за счет их анализа и обработки.

Одна из самых успешных отраслей в плане применения машинного обучения это розничная торговля.Cвязано это с тем, что в ней много регулярных процессов

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

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

Ритейл не испытывает недостатка как в наличия разных данных, так и в их глубине истории. У ритейлеров есть история продаж, статистика поведения клиентов, история промоакций, исторический ассортимент, параметры товаров и магазинов, изображения ценников и товаров, история доставок и поступления товаров и многое другое. Оцифровка всего этого, чаще всего, не требуется.

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

Еще две отрасли, в которых распространены проекты на базе искусственного интеллекта, это банки и телекоммуникации. Это и управление клиентскими рисками (кредитный скоринг), и оптимизация регулярных рассылок клиентам. Задачи, стоящие в этих проектах, разношерстны от предсказания оттока клиентов до маркировки клиентов, от кросс-сейл кредитов и депозитов до предсказания крупных транзакций.

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

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

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

Подробнее..

Hey, Google умные устройства будут активироваться без команд

12.11.2020 20:10:42 | Автор: admin

Photo by Cristian Cristian on Unsplash

В ближайшем будущем активировать голосовую колонку Amazon Echo или Nest Audio, поиск в Google или Siri на устройствах от Apple можно будет без приветствия вроде Hello, Google! При помощи ИИ ученые из США разработали алгоритм, благодаря которому умные голосовые помощники понимают, что человек обращается к ним.

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

Ученые из Университета Карнеги Меллона отмечают, что разработанный алгоритм определяет направление речи (direction of voice, DoV) с помощью микрофона.



DoV отличается от выявления направления, откуда исходит голос (direction of arrival, DoA).



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

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

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

Алгоритм также анализирует распространение звука в первые 10 миллисекунд. Здесь возможны два сценария:

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

Алгоритм замеряет форму сигнала, вычисляет пик его интенсивности, сравнивает со средним значением и определяет, был направлен голос к микрофону или нет.

Измеряя распространение голоса, ученые смогли с точностью до 93,1% определить, находится ли спикер перед конкретным микрофоном или нет. Они отметили, что на сегодня это лучший подобный результат и важный шаг на пути к внедрению решения в существующие устройства. При попытке определения одного из восьми углов, под которым человек смотрит на девайс, достигнута точность в 65,4%. Этого пока недостаточно для приложения, суть которого в активном взаимодействии с пользователями.

Для сбора информации инженеры использовали Python, сигналы обрабатывались на основе алгоритма-классификатора Extra-Trees.

Собранные во время разработки данные и алгоритм открыты в GitHub. Их можно применить при создании собственного голосового помощника.

Подробнее..

Перевод Почему именно Tesla победит в гонке за автономностью

17.11.2020 12:21:43 | Автор: admin
Анализ факторов, которые могут помочь Tesla превзойти Waymo и других игроков на рынке беспилотных систем 5 уровня и никакого хайпа.

image


Автопилот Tesla основан на 8 камерах и 12 ультразвуковых датчиках

Прежде чем начать, я должен сложить с себя ответственность. Я не прорицатель. Я не знаю наверняка станет ли Tesla первой компанией, которая создаст беспилотную систему пятого уровня. В этом уравнении слишком много переменных, и они не позволяют сделать однозначный вывод. Впрочем, исходя из текущей траектории развития Tesla, я предполагаю, что именно эта компания первой создаст полноценный автопилот. Позвольте мне все объяснить.

Существует шесть уровней автономности автомобилей от нулевого до шестого. Нулевой уровень полное отсутствие автономности, самый обычный автомобиль. Пятый полноценная система беспилотной езды, которой не нужен водитель. В настоящее время автопилот от Tesla относят ко второму уровню далековато от пятого уровня, требуемого для полной автономности. Звучит безрадостно особенно если учесть, что Waymo (главный конкурент Tesla) уже создали систему четвертого уровня.

image

Компания Waymo (принадлежит холдингу Google Alphabet) создала систему беспилотной езды четвертого уровня

В самом деле, человеку со стороны может показаться, что компания Waymo, принадлежащая холдингу Google Alphabet может выиграть гонку за автономностью. Согласно данным, опубликованным калифорнийским автотранспортным управлением в 2018 году, сейчас у Waymo лучшие технологии беспилотной езды на рынке их машины способны проезжать почти 18 тысяч километров без вмешательства водителя-человека. Безусловно, это впечатляет, хотя немногие эксперты действительно верят в эти цифры.

Также Waymo запустила Waymo One сервис по продаже поездок в пределах восточной долины Финикса. Беспилотные автомобили в этом сервисе осуществляют перевозки реальных клиентов. В водительском кресле нет сотрудника Waymo. Если что-то пойдет не так машина сама по себе.

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

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

image

Автопилот от Tesla становится лучше с каждым километром пробега

Waymo принадлежит Alphabet, холдинговой компании Google. Как известно, Google занимается большими данными, а значит ими занимается и Waymo. 7 января 2020 года Waymo объявила, что их беспилотные системы суммарно проехали более 32 миллионов километров в реальном мире. Большинство людей столько не проезжают за всю жизнь, и это без учета пробега, накопленного системами от Waymo в симуляторах (согласно отчетам TechCrunch, пробег в симуляторах превышает 16 миллиардов километров по состоянию на 2019 год).

Впрочем, генеральный директор Tesla Илон Маск считает, что пробег в симуляторах и близко не так полезен, как пробег в реальном мире. Все дело в том, что искусственный пробег не отражает фактор случайности, с которым водители регулярно сталкиваются на дорогах. Итак, у Waymo есть данные о более чем 32 миллионах километров пробега в реальном мире. Каковы позиции Tesla, если сравнить компании по этому показателю? Хорошие. Очень хорошие.

В то время как в автопарке Waymo имеется 600 автомобилей, Tesla недавно продала более миллиона автомобилей. Это значит, что их искусственный интеллект проехал намного больше. Ранее в этом году суммарный пробег автопилота Tesla превысил 4.8 миллиардов километров. Это значит, что у инженеров Tesla для обработки имеется в 150 раз больше данных, чем у инженеров Waymo. И это без учета данных о пробеге без использования автопилота (так называемый теневой режим).

image

Я не смог найти данных о том, насколько часто люди пользуются автопилотом от Tesla. Но если представить, что на каждые 16 километров пробега 1.6 км проезжаются с включенным автопилотом (мне кажется, это значительная оценка), то это будет значить, что инженеры Tesla смогут изучать данные о почти 50 миллиардах километров пробега. Если автопилот будет использоваться каждые 1.6 км из 32, то мы получим 96.5 миллиардов километров. Как я говорил ранее, я не знаю какая доля пробега Tesla приходится на автопилот, но мне кажется, что у Tesla данных о реальном мире будет больше, чем у Waymo в симуляторах (не говоря уже о реальном пробеге).

Такое лидерство в данных иронично похоже на то лидерство, которое есть у Google на рынке поисковых систем. У самого Маска также есть объяснения важности данных:

Этот аспект трудно оценить в полной мере. Я просто хочу сказать, что очень трудно создать поисковую систему, которая сможет соперничать с Google, ведь все постоянно обучают их алгоритм, кликая по ссылкам в его выдаче. Когда вы что-то ищете и нажимаете на ссылку в выдаче, в обучаете алгоритмы поиска Google. Новым поисковым системам очень тяжело оставаться конкурентоспособными на рынке в таких условиях.


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

Мне трудно себе представить ситуацию, в которой появится какая-либо компания, которая сможет собирать столь же большие массивы данных и конкурировать с Tesla. Ранее Маск утверждал, что для создания полностью беспилотной системы им потребуются данные о 9.6 миллиардах километров. Если исходить из нынешней траектории развития компании, скоро Tesla придет к этой вехе (хотя, вероятно, прогноз Маска на 2020 год не сбудется). Ранее Маск сказал, что их автопилот выйдет из беты как только станет водить в 10 раз более безопасно, чем человек. По оценкам Inverse, для этого необходимо достигнуть показателей в 1 смерть на 1.4 миллиарда километров пробега. Tesla опубликовала отчеты, согласно которым их автопилот водит в 9 раз безопаснее человека. Впрочем, эти цифры искажены, поскольку система беспилотной езды от Tesla преимущественно используется на шоссе, а не на городских улицах.

image

В конечном итоге, для создания беспилотных систем 5 уровня человечеству еще предстоит немало потрудиться. Всегда могут возникнуть непредвиденные переменные, которые могут склонить чашу весов в сторону одного из конкурентов Tesla. Впрочем, если с имеющимися технологиями уже можно работать, данные это преимущество, которое нельзя упускать из виду. Google доминирует над компаниями вроде Yahoo именно благодаря данным. Хоть кому-то и может показаться, что сейчас Waymo лидирует на этом рынке, будьте готовы к тому, что положение дел изменится. Tesla закладывает фундамент для своего господства на рынке систем беспилотной езды.




image

Вакансии
НПП ИТЭЛМА всегда рада молодым специалистам, выпускникам автомобильных, технических вузов, а также физико-математических факультетов любых других высших учебных заведений.

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

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

Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.



О компании ИТЭЛМА
Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.

Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.

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

Подробнее..

Глубокие нейросети в компьютерном зрении genesis for geeks

20.11.2020 14:23:38 | Автор: admin

Если вы в общих чертах представляете себе, как работает компьютерное зрение, но жаждете деталей, то эта статья для вас.

Распознавание объектов нейросетью на системах NvidiaРаспознавание объектов нейросетью на системах Nvidia

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

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

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

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

Привет! Я занимаюсь deep learningом глубоким обучением нейросетей для компьютерного зрения и предиктивной аналитики. Наша научная группа включает 30 исследователей. Мы активно публикуемся в передовых журналах и много сотрудничаем с индустрией Huawei, Airbus, Bosch, Louis Vuitton, Sahara Force India Formula 1 team.

При упоминании словосочетания искусственный интеллект все начинают вспоминать страшилки вроде Терминатора.

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

Ассоциация математического подхода с нейросетями возникла еще в 40-х годах прошлого века, когда Питтс и Мак-Каллок предложили простейшую математическую модель нейрона. Одновременно появился простой алгоритм обучения. В результате люди нафантазировали чуть ли не человекоподобных роботов. В реальности ни одну из этих фантазий так и не внедрили не существовало технических возможностей. Так наступила, как это теперь называют, первая зима искусственного интеллекта: финансирование сократили, а интерес к вопросу снизился.

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

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

Но начнем с того, как это работает.

Компьютерное зрение

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

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

Учитывая комбинацию распознаваемых элементов на фото, человек может сказать очень многое. Он видит, что небо голубое, флаги не трепещут на ветру, а значит, ветра нет и погода солнечная. Хотелось бы, чтобы системы компьютерного зрения это повторили.

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

Пример обнаружения объектов на фотоПример обнаружения объектов на фотои идентификациии идентификации

Первые алгоритмы компьютерного зрения появились давно. Типичный пример один из самых простых детекторов лиц Виолы Джонса, который отмечает положение людей в кадре.

Работа алгоритма обнаружения лиц в фотокамерах

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

Как устроены системы компьютерного зрения

Цифровое изображение это матрица, где каждый пиксель это некоторый элемент, содержащий число. В случае черно-белого изображения это число от 0 до 255, отражающее интенсивность серого.

Пиксели растрового изображения и их яркость в однобайтной кодировкеПиксели растрового изображения и их яркость в однобайтной кодировке

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

Построение цветного изображения на заре фотографииПостроение цветного изображения на заре фотографииПостроение цветного изображения из пикселей красного, синего и зеленого цветовПостроение цветного изображения из пикселей красного, синего и зеленого цветов

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

Задача категоризации

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

Как выглядит базовая задача категоризации изображенияКак выглядит базовая задача категоризации изображения

Эта задача бывает двух типов: бинарная (например, изображен ли на этой картинке человек) и более сложная (к каким типам относится планктон на картинке). Бывает, что одновременно с классификацией объекта мы должны отметить, где он находится.

Виды задачи классификацииВиды задачи классификации

Имитируем распознавание

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

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

Условная схема решения задачи классификацииУсловная схема решения задачи классификации

Типичный пример классификатора то, что называется деревом решений. Самые простые деревья мы строим в обычной жизни:

Пример простейшего дерева решенийПример простейшего дерева решений

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

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

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

Примеры признаков, которые можно использовать для категоризации фотоПримеры признаков, которые можно использовать для категоризации фото

Признаки и их расчет

Какого типа признаки здесь можно было бы использовать?

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

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

Другой пример фильтр, увеличивающий высокие частоты (резкость):

А если я возьму такую матрицу чисел, изображение, наоборот, будет размытым:

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

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

Решение задачи классификации при помощи нейросетиРешение задачи классификации при помощи нейросети

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

Большая выборка

Прорыв в этой области произошел в 2010 году, когда появился датасет ImageNet, который содержал 10 млн картинок. Чтобы его получить, проделали огромную работу: каждой из картинок вручную присвоили класс объекта, который там изображен.

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

Примеры баз размеченных изображенийПримеры баз размеченных изображений

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

Многослойность

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

Пример последовательного применения фильтров к изображениюПример последовательного применения фильтров к изображению

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

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

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

Изменение точности и сложности нейросетей с 2010-го по 2015 год (справа налево)Изменение точности и сложности нейросетей с 2010-го по 2015 год (справа налево)

Ошибка классификации 33,5%, и это лучше, чем у человека. Человек распознает с ошибкой 45%.

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

Качество систем распознавания зависит не только от того, как построена нейросеть, но и от того, как она обучена. Если создатель модели выполнил свою работу некачественно, точность распознавания будет существенно ниже. Правда, это легко проверить. К примеру, можно использовать кросс-валидацию, когда часть обучающей выборки отделяют для проверки работы модели. Этот подход имитирует ситуацию с получением новых данных.

Аппаратное обеспечение

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

Несколько лет назад Nvidia заказала у создателей MythBusters забавный пиарный ролик для демонстрации параллельных вычислений

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

Какие задачи мы можем решить?

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

Можем ответить на вопрос, какая у человека позиция относительно других тел, и даже спрогнозировать по двумерной фотографии положение частей тела человека в 3D.

Можем отыскать лицо человека.

Обнаружение лица, идентификация, оценка позы, распознавание эмоцийОбнаружение лица, идентификация, оценка позы, распознавание эмоций

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

Сопровождение объектов, распознавание действий, оптический потокСопровождение объектов, распознавание действий, оптический поток

Где сейчас используют нейросети

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

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

Поиск по картинкам

Все мы пользуемся стандартной функцией поиска объектов на фото в поисковиках вроде Яндекса и Google. На вход мы подаем фотографию. С помощью фильтров нейросеть считывает признаки, характеризующие семантический смысл фотографии (я говорил о них ранее). Далее они сравниваются с признаками фотографий, которые уже есть в интернете (те заранее были подсчитаны и сохранены в виде векторов чисел). Изображения со сходными признаками оказываются семантически близки.

Примеры поисковой выдачи по заданным фотоПримеры поисковой выдачи по заданным фото

Распознавание лиц

По такому же принципу устроено детектирование и идентификация лиц. Это приложение важно для обеспечения безопасности тех же банков.

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

Определите, в каком из шести случаев изображен один и тот же человекОпределите, в каком из шести случаев изображен один и тот же человек

Правильно обученные системы компьютерного зрения не ошибутся даже в сложных ситуациях и в условиях плохого освещения. Точность распознавания у них достигает 99%.

Правильный ответПравильный ответ

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

Социальный протест

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

Заголовок одного из изданий: Судя по сканирующим мозг каскам, Китай не заинтересован в тайне частной жизни рабочихЗаголовок одного из изданий: Судя по сканирующим мозг каскам, Китай не заинтересован в тайне частной жизни рабочих

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

Более реалистичное применение камеры в учебном классе, которые оценивают, насколько студенты вовлечены в процесс. Так можно косвенно определить эффективность процесса обучения.

Система оценки вовлеченности обучающихсяСистема оценки вовлеченности обучающихся

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

Фантазии на тему китайского соцрейтингаФантазии на тему китайского соцрейтинга

Насчет китайского опыта существуют разные мнения. Лично я в Китае не жил и не могу описать ситуацию. Но на Западе внедрение подобных систем вызывает социальный протест. Например, некоторое время назад рабочие Amazon жаловались на жесткие рамки учета рабочего времени, прописанные в новой системе мониторинга.

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

Модификация фотографий

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

Нейросеть добавляет налет абстракционизмаНейросеть добавляет налет абстракционизма

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

Повторение мимики и жестов при помощи нейросетиПовторение мимики и жестов при помощи нейросети

А эту анимацию делали коллеги из дружественной нам группы Сколтеха.

Анимирование картины при помощи нейросетиАнимирование картины при помощи нейросети

Подобные методы используют при создании фильмов и рекламы.

Физическая безопасность и обучение

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

Система отмечает, что на объекте находятся люди без каски или перчатокСистема отмечает, что на объекте находятся люди без каски или перчаток

Контроль соблюдения скоростного режима на дорогах также может осуществляться с помощью нейросетевых моделей.

Для распознавания госномеров нейросеть не нужна. Но определить тип и модель транспортного средства без нее уже сложноДля распознавания госномеров нейросеть не нужна. Но определить тип и модель транспортного средства без нее уже сложно

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

Строительство и городское планирование

На гигантских объектах трудно понять, действительно ли строительство идет по плану, поскольку даже нескольким людям сразу тяжело все обойти и оценить объем работ за неделю или месяц. Вместо ручной сверки можно снять видео с дрона, взять данные с лидара (лазерного дальномера, оценивающего расстояние от сканера до точек на поверхности объекта) и по ним уже автоматически оценить, что и где построили.

Контроль строительства с помощью нейросетиКонтроль строительства с помощью нейросети

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

Пример обработки данных дистанционного зондирования, в результате которой выделены новые объекты (в данном случае постройки)Пример обработки данных дистанционного зондирования, в результате которой выделены новые объекты (в данном случае постройки)

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

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

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

Пример анализа жилых объектов при помощи нейросетиПример анализа жилых объектов при помощи нейросети

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

3D-модель промышленного объекта, созданная по результатам сканирования при помощи нейросети. Объем модели нереально огромен: 12 млрд точек. С помощью модели намного проще проектировать ремонт и реконструкцию3D-модель промышленного объекта, созданная по результатам сканирования при помощи нейросети. Объем модели нереально огромен: 12 млрд точек. С помощью модели намного проще проектировать ремонт и реконструкцию

Геология

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

Восстановление цифровой модели породы при помощи нейросетейВосстановление цифровой модели породы при помощи нейросетей

От того, насколько эта порода пористая и как через нее распространяется вязкая жидкость, зависит, насколько трудно будет извлечь нефть.

Анализ прохождения вязкой жидкости через породуАнализ прохождения вязкой жидкости через породу

Медицина

В медицине существует большое количество задач, связанных с обработкой снимков, на которые врач тратит довольно много времени. Например, по снимкам сердца и предсердия надо вычислить их объем. Или по данным сканирования глазного дна понять, есть ли там какие-то изменения, связанные с диабетом.

Пример расчета объема сердца по снимку при помощи нейросетиПример расчета объема сердца по снимку при помощи нейросети

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

Подготовка к удалению опухоли мозга локализация речевого и зрительного центров помогает улучшить планирование операции и сократить время на локализацию этих центров во время процедурыПодготовка к удалению опухоли мозга локализация речевого и зрительного центров помогает улучшить планирование операции и сократить время на локализацию этих центров во время процедуры

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

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

Ритейл

Я думаю, многие слышали о магазине Amazon Go. Продавцов там нет. Человек заходит, берет товар. За счет автоматического распознавания товара можно рассчитать стоимость покупки. По выходе из магазина с человека списывают деньги.

Самый первый магазин Amazon Go в Сиэтле (фото: SounderBruce, CC BY-SA 4.0)Самый первый магазин Amazon Go в Сиэтле (фото: SounderBruce, CC BY-SA 4.0)

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

Распознавание выкладки товаров по фотоРаспознавание выкладки товаров по фото

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

Автономный транспорт

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

Позиционирование в 3D при помощи нейросети, помогающее автономному автомобилю перемещаться в пространствеПозиционирование в 3D при помощи нейросети, помогающее автономному автомобилю перемещаться в пространстве

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

Визуальная навигация при помощи нейросетей, позволяющая автономному автомобилю точно определить расстояние до окружающих предметовВизуальная навигация при помощи нейросетей, позволяющая автономному автомобилю точно определить расстояние до окружающих предметов

Расширение задачи

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

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

Ошибки и обман систем распознавания

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

Во-первых, их относительно легко можно обмануть. Как пример, ниже приведены фотографии человека с гримом на лице. В определенных ситуациях этот грим может запутать систему распознавания лиц.

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

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

Во-вторых, нейросети такого типа подвержены взлому. Вот один известный пример: к изображению добавляют шум с маленькой амплитудой. Для человека картинка почти не меняется, а нейросеть перестает его распознавать.

Взлом нейросети. Пример смешивания изображений, в результате которого сверточная нейросеть выдает ошибочный результат (источник: spectrum.ieee.org)

Аналогичные вещи можно делать и с физическими объектами, например, добавить посторонние элементы к знакам дорожного движения.

Даже небольшие помехи сбивают с толку алгоритм распознавания (подробности: spectrum.ieee.org)

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

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

Для обмана используют напечатанную на 3D-принтере основу, которую оклеивают фотографиямиДля обмана используют напечатанную на 3D-принтере основу, которую оклеивают фотографиями

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

Мысли про сохранность рабочих мест

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

Подробнее..

KUKA с маслом можно ли доверять роботам и что об этом говорят исследования

24.11.2020 20:17:07 | Автор: admin
Лабораторный робот KUKA youBot. Фото: Маргарита Ерукова, ITMO.NEWS
Вместо или вместе? В случае взаимодействия человека с роботами пока, к счастью, лидирует второе, о вытеснении людей роботами из разных профессий речь пока не идет. По крайней мере, об этом говорят современные исследования в области human-robot collaboration, а также зарубежные и отечественные эксперты. Этические вопросы работы с роботами и искусственным интеллектом озадачивают и ученых, и даже Папский престол. Попробуем разобраться вместе с деканом факультета инфокоммуникационных технологий ИТМО Александром Капитоновым и кандидатом технических наук Владиславом Громовым.

Робот помогающий


В городе Аугсбург (Германия) компания KUKA Robotics проводит исследование совместно с Университетом прикладных наук для спорта. В рамках проекта RoSylerNT они изучают взаимодействие человека с роботом-помощником при переноске грузов. Фокус на психосоциальные аспекты, такие как восприятие технологий людьми, которые работают с роботом, страх перед ними и формирование доверительных отношений.

Роботизированная система, созданная KUKA, представляет собой подвижную автономную платформу и двух роботов LBR iiwa. Участники эксперимента 15 тестировщиков в возрасте от 18 до 49 лет. Основная их задача: взаимодействовать с роботом и описывать свой опыт.

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

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

Источник
Ориентироваться на местности роботизированной системе помогают подгруженные карты окружающего пространства и фотобаза. Робот способен распознавать позу, движения, анализировать нагрузку человека и подстраиваться под него в конкретной ситуации. Это необходимо не только для эффективного взаимодействия, но и для защиты от случайных травм при работе с роботом.

Исследовательский проект продолжится до конца 2021 года. Разработчики планируют получить самообучающуюся роботизированную систему, которая стала бы полноценным интерактивным помощником человека. Несмотря на внимание к психосоциальному аспекту исследования, кураторы проекта также заинтересованы в разработке инноваций, которые легли бы в основу других роботов KUKA.

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

Александр Капитонов, декан факультета инфокоммуникационных технологий ИТМО, прогрессор проекта Airalab

Инициатив в области так называемого human-robot collaboration сейчас немало. Особенно они развиваются в европейских странах. Бизнес здесь анализирует роботизацию с разных аспектов: социальных, экономических, психологических. Исследование KUKA Roboter один из примеров. Хорошо себя тут проявила и компания BMW. Немецкий производитель автомобилей в свое время обязался перед сотрудниками предоставить им другую работу, если в результате автоматизации их заменят на роботов.

Human-robot collaboration про двустороннее сотрудничество. Мы конструируем и обучаем роботов так, чтобы они работали с нами, не принося вреда. Роботы, в свою очередь, также влияют на трансформацию пространства вокруг нас. Самый яркий пример то, как люди начали переосмыслять дизайн интерьера квартир, чтобы робот-пылесос мог автономно и без сбоев выполнять свою работу.

Источник

Имеет право


Германия одна из первых стран, которая начала разрабатывать широкую программу роботизации и автоматизации промышленности, с 2006 года. Вскоре этим вопросом заинтересовались в Евросоюзе. В 2013 году был запущен проект SPARC, посвященный развитию и финансированию робототехники.

Проект не заканчивается, и в эти дни, с 23 по 25 ноября, в Боснии и Герцеговине под эгидой SPARC проходит ежегодная European Robotics Week 2020. Главная тема Робототехника для человечества. Неделя посвящена влиянию робототехники и технологий на повседневную жизнь, экономику и здоровье в разрезе пандемии COVID-19.

В целом, крупных мероприятий, посвященных роботизации и взаимодействию человека с роботами, немало. Так, конференция ACE (International conference on future applications of AI, sensors, and robotics in society) в 2021 году пройдет в 15-ый раз. По ее итогам выпускается Journal of Future Robot Life, затрагивающий целый спектр тем от эмоций и этики роботов до взаимодействий с секс-роботами.

Этические принципы работы искусственного интеллекта волнуют даже Папу Римского. Последний громкий документ, регламентирующий отношения с AI, был представлен 28 февраля 2020 года в рамках научного форума по ИИ, организованного Папской академией защиты жизни. Согласно документам, искусственный интеллект должен уважать неприкосновенность частной жизни, работать надежно, непредвзято, прозрачно и учитывать потребности всех людей. Свод этических принципов поддержали Microsoft и IBM.

Что в России


В России также есть некоторые подвижки к созданию безопасной цифровой среды и системе ее правового урегулирования. Как минимум важность этой задачи была отмечена президентом в сентябре этого года на 75-ой сессии Генеральной Ассамблеи ООН.

В целом, в роботизации страна пока уступает другим: промышленных роботов используют мало. По последним данным (совместное исследование Минкомсвязи РФ с Национальной ассоциацией участников рынка робототехники), плотность роботизации в России в 2018 году составила 5 роботов на 10 000 рабочих. Для сравнения, средний показатель по миру за тот же период составил 99 роботов. В Китае плотность роботизации находилась на отметке в 140 роботов, в США 217, в Японии 327, в Германии 338. Мировые лидеры Южная Корея (774 робота на 10 тыс. рабочих) и Сингапур (831 на 10 тыс. рабочих).


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

Первой ласточкой стала концепция закона о роботах, разработанная сооснователем Mail.Ru Group Дмитрием Гришиным в 2016 году. Законопроект не приняли, однако в результате появилась Автономная некоммерческая организация по содействию развитию робототехники и инновационных технологий ПравоРоботов. Именно на нее возложена роль ключевой отечественной площадки подготовки законодательных инициатив в области цифровой экономики.

Вопрос о месте роботов в правовом поле время от времени всплывает в новостной повестке. Так, в 2019 году в постановление Правительства РФ были внесены изменения в ПДД О беспилотном транспорте. А недавно Институт прогрессивного образования обратился в Минфин с предложением ввести налог на роботов, а собранные средства направлять в специальный Фонд переподготовки уязвимых профессий. Предполагается, что налоговые отчисления будут сопоставимы с 13% НДФЛ со средней зарплаты в определенной профессии. По прогнозам, в течение 1015 лет в стране без работы могут остаться 20 млн человек.

Робофобия


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

С помощью такого робота Владислав Громов обучает студентов и занимается исследованиями. Фото: Маргарита Ерукова, ITMO.NEWS

Владислав Громов, кандидат технических наук, доцент ИТМО, взаимодействует с роботом KUKA в исследованиях и при обучении студентов

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

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

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

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

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


Александр Капитонов, декан факультета инфокоммуникационных технологий ИТМО, прогрессор проекта Airalab

Эксперты сходятся во мнении: как бы быстро ни развивались технологии автоматизации, они скорее будут помогать человеку, усиливать его компетенции, облегчать работу, но не исключат его из процессов полностью.

Практически в любой стране есть отрасли, автоматизировать которые слишком дорого или нерационально. Дешевле и эффективнее работают люди. Кстати, если вы волнуетесь из-за конкуренции с роботами, можно проверить свою профессию на сайте Will robots take my job. Здесь рассчитывается вероятность, с которой вас на работе заменят роботы и/или искусственный интеллект. Все прогнозы основаны на данных. Учителя и юристы могут не волноваться вероятность замены роботами минимальна. А вот таксистам и дальнобойщикам стоит подумать о будущем риск потерять работу из-за технологического прогресса составляет 89%, хоть и не в ближайшее время. Точные сроки сейчас назвать сложно, но это произойдет, как только человечество будет готово менять устоявшиеся форматы жизни.

Подробнее..

Из песочницы AI, который не просит хлеба

17.11.2020 14:16:28 | Автор: admin
Статья о том, как мы шаг за шагом строили наш AI. Время чтения 10+ минут.



Введение. Стартап в области компьютерного зрения, используемый low-cost разработку в качестве базовой концепции. Команда вполне соответствует духу: 3 5 студентов разработчиков разного уровня и направления, в зависимости от дня недели и времени суток (от 0.25 до 1.25 ставки). Мой опыт игры в пятнашки здесь очень пригодился.

Коротко о продукте (пк + софт) интеллектуальная система видео наблюдения, подключаемая к локальной сети и производящая обработку видео своими силами. Два обязательных условия: наличие интерфейса пользователя с различными правами и максимальная автономность алгоритмов.

С технической стороны ограничений на железо не было, главное чтоб работало хорошо; а вот с финансовой были. На все про все ~500$. Разумеется только новые и современные комплектующие. Выбор их не велик, но есть!

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

Разработка фичей шла от простых и необходимых (работа с потоками и видео файлами) к сложным, с периодическим review. Собрали MVP, несколько спринтов оптимизации заметно приблизили нас к заветной цели выполнять все 4 пункта одновременно, а не по отдельности:

  1. 16+ ip-камер (FHD/25fps) трансляция, воспроизведение по событию или времени и запись
  2. Параллельная работа всех имеющихся CV алгоритмов
  3. Пользователь интенсивно пользуется интерфейсом без задержек смотрит стримы
  4. Загрузка ЦП менее 90% и все работает (!)

Немного о стеке, выбор пал на: С/С+, Python + TensorFlow, PHP, NodeJS, TypeScript, VueJS, PostgreSQL + Socket.io и прочие мелочи.

Реализованные фичи были сознательно скрыты, чтоб подробнее остановится, пожалуй, на самой интересной и восхитительной фичи из области CV и в некоторой степени ML.

Уникальные User


Пример использования собирать историю визитов каждого конкретного посетителя, причем сотрудников учитывать отдельно, даже если мы не знаем что это сотрудник (Пример ТРЦ).
И казалось бы, вроде как эта задача решена 100500+ раз и телефоны и все что угодно уже умеет распознавать лица и запоминать их, отправлять куда то, сохранять. Но 95% решений используются в СКУД, где сам пользователь стараясь быть распознанным, стоит перед камерой 5Мп на расстоянии 30-50см в течении нескольких секунд, пока его лицо не сверится с одним или несколькими лицами из БД.

В нашем случае такие условия были роскошью. Пользователи двигались хаотично, смотря в свой смартфон на достаточном расстоянии от камеры, установленной на потолке. Дополнительно, сложности вносили сами камеры, чаще всего это бюджетные камеры с 1.3-2Мп и какой то непонятной цветопередачей, всегда разной.

Частично, эта проблема решилась формированием ТЗ на условия установки камер, но в целом система должна была уметь распознавать и в таких условиях (естественно хуже).

Подход к решению: задача была декомпозированна на 2 задачи + структура БД.

Краткосрочная память


Отдельный сервис, где в основном протекает real-time процесс, на входе кадр с камеры (на самом деле другого сервиса), на выходе http запрос с нормированным 512-и мерным Х-вектором (face-id) и некоторыми мета-данными, например time stamp.
Внутри нее множество интересных решений в области логики и оптимизации, но на этом всё; пока что всё

Долгосрочная память


Отдельный сервис, где требования к real-time не стоит остро, но в некоторых случая это важно (например человек из стоп листа). В целом ограничились 3 секундами на обработку.
На входе в сервис http от краткосрочной памяти с 512-и мерным вектором внутри; на выходе Id посетителя.

Первые мысли очевидны, решение задачи достаточно просто: получил http сходил в БД, взял, что есть сравнил с начинкой http, если есть такой, то он и есть; если нет, то новый.
Плюсов такого решения не счесть, а минус только один оно не работает.

Задачу решили, хоть и пошли путем самурая, пробуя различные подходы, периодически посматривая просторы интернета. В общем решение оказалось в меру лаконичным. Концепция достаточно проста и основывается на кластеризации:

  1. Каждый вектор (а-вектор) будет принадлежать какому либо User; каждый кластер (не более М векторов, из коробки M =30) принадлежит какому либо User. Принадлежит ли а-вектор кластеру А не факт. Вектора в кластере определяют взаимодействие кластера, вектора в User определяют только историю User.
  2. Каждый кластер будет иметь центроид (по сути А-вектор) и собственный радиус (далее range) взаимодействия с другими векторами или кластерами.
  3. Центроид и range будут функцией кластера, а не статикой.
  4. Близость векторов определяется квадратом евклидова расстояния (в особых случаях иначе). Хотя здесь есть еще несколько других достойных методов, но мы просто остановились на этом.

Примечание: т.к. мы использовали нормированные вектора, то расстояние между ними было гарантированно от 0 до 2. Далее о алгоритме реализации концепции.

#1 Круг подозреваемых. Центроид, как хэш-функция


Х-вектор, полученный от краткосрочной памяти сравнивается с имеющимися в БД центроидами кластеров (А-вектор) на предмет близости, далекие, где range[X,A] > 1 отбрасывались. Если никого не оставалось создается новый кластер.

Далее ищется минимум между Х-вектором и всеми оставшимися а-векторами (min_range[X,a])

#2 Уникальные свойства кластера. Саморегулируемая сущность


Вычисляется собственный range_A кластера, чей вектор самый близкий к Х-вектору. Здесь используется обратная линейная функция от количества векторов (N), уже находящихся в этом кластере (const*(1 N/2M)); из коробки const =0,67).

#3 Валидация и непонимание. Если ни кто то кто !?


Если range_А > min_range[X,a], то Х-вектор помечается как принадлежащий к А-кластеру. Если нет то Ох Это чем то похоже на описание математической модели недопонимания.
Определились с тем, что в этом случае будем создавать новый кластер, тем самым сознательно шли на ошибку 1-го рода Пропуск цели.

#4 Дообучение. Как циферки формируют признаки


Субъективный опыт это когда данные становятся инструментом. Ранее мы распознали, но возможно с ошибкой. Стоит ли доверять Х-вектору, чтоб использовать его в следующем матчинге !? Проверяем! Х-вектор должен:

  • быть достаточно близок к центроиду А (range_А > range[X, А])
  • быть полезным и разнообразным, ведь с одной стороны мы минимизируем риск ошибки, с другой копии нам тоже не нужны (Config_Max[0,35] > range[X,a] > Config_Max[0,125]). Тем самым, конфиги определяют скорость и правильность обучения.

Выполняя эти условия, Х-вектор попадает в состав кластера А ( до этого он просто принадлежал User). Если векторов в кластере становится больше допустимого, то убираем самый центральный (min_range[А,a]) он вносит меньше всего разнообразия и является лишь функцией остальных; к тому же центроид и так участвует в матчинге.

#5 Работа над ошибками. Превращаем недостатки в достоинства


В каждом сложном выборе мы делали шаг в сторону ошибки Пропуск цели создавали новый кластер и User. Пришло время пересмотреть их все. После #4 мы имеем модифицированный кластер А. Далее мы пересчитываем его центроид (А-вектор) и ищем минимальное расстояние ко всем имеющимися центроидам в нашем 512-ти мерном пространстве. В этом случае расстояние считается более сложно, но это сейчас не так важно. Когда расстояние min_range[A,B] будет меньше, чем некоторая величина (из коробки range_unity=0,25) мы объединяем два множества, считаем новый центроид и избавляемся от менее полезных векторов, если их слишком много.
Другими словами: если существует 2+ кластера, в действительности, принадлежащих одному User, то они, спустя некоторую серию детекций, станут близки и объединяться в один вместе со своими историями.

#6 Комбинаторика признаков. Когда машина думает !?


Здесь стоит определить новый термин в этой статье. Фантомный вектор вектор, который был получен не в результате деятельности краткосрочной памяти, а в результате функции над N-шт векторов кластера (a1,a2,a3,a4). Разумеется, полученные таким образом вектора хранятся и учитываются отдельно и не представляют из себя ни какой ценности до тех пор, пока в результате матчинга не будут определены, как ближайшие (см #3). Основная польза фантомных векторов ускорение обучения кластера на его ранних этапах.

Система уже запущена в продакшен. Результат был получен на реальных данные вне тестовой среды на 5000+ User; так же там была замечена пачка слабых мест, которые были усилены и учтены в этом тексте.

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

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

Результат


Величина близости при распознании, основанном на долгосрочной памяти ~0,12-0,25 у умеренно обученного кластера (содержит 6-15 а-векторов). Далее обучение замедляется по причине повышения вероятности копий векторов, но в долгосрочной перспективе близость стремится к величинам ~0,04-0,12, когда кластер содержит уже 20+ а-векторов. Замечу, что внутри краткосрочной памяти, от кадра к кадру, этот же параметр имеет значение ~0,5-1,2, что звучит примерно как: Человек больше похож* на себя в очках 2 года назад, чем 100мс назад. Такие возможности открывает использование кластеризации в долгосрочной памяти.

Загадка


В результате одного из тестов получилось интересное наблюдение.

Начальные условия:

  • На двух абсолютно одинаковых ПК развернута абсолютно одинаковая система видео наблюдения с абсолютно одинаковыми настройками. Они подключены к одной единственной ip-камере, расположенной грамотно, согласно ТЗ.

Действие:

  • Системы запускают в одно и то же время и оставляют на неделю в покое со всеми работающими алгоритмами. Трафик соответствует нормальному трафику без изменений.

Результат:

  • Количество созданных User, кластеров и а-векторов одинаково, а центроиды разные, не значительно но разные. Вопрос почему? Кто знает пишите в комментариях или сюда)

Жаль, что о многом я не могу написать здесь, но возможно, кое-что я смогу описать так же подробно в другой статье. Возможно, все это уже описано в какой-то замечательной методичке, но к моему сожалению, я такую так и не нашел.

В заключении скажу, что наблюдать изнутри, как автономная AI система классифицирует окружающее себя пространство, реализуя по пути различные заложенные в нее фичи очень интересно. Люди много чего не замечают в силу наличия накопленного опыта восприятия (шаг #4).


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

Перевод HyperBand и BOHB. Понимание современных алгоритмов оптимизации гиперпараметров

25.11.2020 18:12:55 | Автор: admin
Специально к старту курса Машинное обучение в этом материале представляем сравнение BOHB и HyperBand двух передовых алгоритмов оптимизации гиперпараметров нейронной сети и простого случайного поиска оптимальных гиперпараметров. Сравнение выполняется с помощью платформы neptune.ai инструмента для управления экспериментами в области ИИ. Рисунки, графики, таблицы результатов сравнения всё это вы найдете под катом.






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

Оглавление


  1. Немного о подходах HPO
  2. Что такое байесовская оптимизация и почему этот метод эффективен?
  3. Как работают современные алгоритмы оптимизации гиперпараметров?
  4. HyperBand против BOHB

Немного о подходах HPO


HPO это метод, помогающий решить задачу настройки гиперпараметров алгоритмов машинного обучения. Выдающиеся алгоритмы ML имеют множество разных и сложных гиперпараметров, порождающих огромное пространство поиска. Многие стартапы предпочитают применять глубокое обучение в ядре своих конвейеров, а пространство поиска в методах глубокого обучения даже больше, чем у традиционных алгоритмов ML. Тонкая настройка в огромном пространстве поиска сложная задача. Чтобы решить задачи HPO, мы должны применять основанные на данных методы. Ручные методы неэффективны. В этом смысле предлагалось множество подходов:


Изображение из статьи Automated Machine Learning: State-of-The-Art and Open Challenges

Мы обсудим четыре основных наиболее эффективных метода.

Байесовская оптимизация


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

Предположим, что пространство поиска состоит только из двух гиперпараметров, один из которых значим, а другой нет. Мы хотим настроить их так, чтобы повысить точность модели. Если каждый из них имеет 3 разных значения, то всё пространство поиска имеет 9 возможных вариантов. Можно попробовать каждый из них, чтобы найти оптимальное значение для обоих гиперпараметров.


Изображение из статьи Random Search for Hyper-Parameter Optimization

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



Изображение из статьи Random Search for Hyper-Parameter Optimization

Почему байесовская оптимизация эффективна?


Случайный поиск в конечном счёте приводит к оптимальному ответу, но это просто случайный поиск. Есть ли способ поиска разумнее? Да, есть, это байесовская оптимизация, предложенная J. Mockus. Вы найдёте более подробную информацию о байесовской оптимизации в Bayesian Optimization Primer и в Practical Bayesian Optimization of Machine Learning Algorithms.

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


Изображение из главы Hyperparameter Optimization книги об AutoML, авторы Матиас Фойер, Фрэнк Хаттер

На рисунке выше видно хорошее объяснение байесовской оптимизации, основанное на главе об оптимизации гиперпараметров из книги Automated Machine Learning. На этом рисунке мы хотим найти истинную целевую функцию, показанную в виде пунктирной линии. Представьте себе, что у нас есть один непрерывный гиперпараметр, и на второй итерации мы наблюдали две чёрные точки, а затем установили суррогатную (регрессионную) модель, которая показана чёрной линией. Синяя область вокруг чёрной линии это неопределённость.

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

Байесовская оптимизация: за и против


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


Кадр из лекции Мариуса Линдауэра на открытой конференции по Data Science

Реализации байесовской оптимизации


Пришло время посмотреть некоторые реализации Байесовской оптимизации. Я перечислил самые популярные из них:

Название реализации Суррогатная модель Ссылки
SMAC Случайный лес Статья, GitHub
HYPEROPT Tree Parzen estimator Статья, GitHub
MOE Гауссовский процесс Статья, GitHub
scikit-optimize Гауссовский процесс, случайный лес и т.д. GitHub

Оптимизация Multi Fidelity


В байесовском методе оценка целевой функции стоит очень дорого. Есть ли более дешёвый способ оценить целевую функцию? Ответ на этот вопрос методы оптимизации Multi Fidelity. Я расскажу вам о:

  1. Последовательное деление пополам
  2. HyperBand
  3. BOHB

В качестве дополнительного ресурса: в следующем видео Андреас Мюллер прекрасно объяснил методы оптимизации Multi Fidelity.


Андреас Мюллер: Applied Machine Learning 2019

Последовательное деление на два


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

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


Рисунок из поста в блоге automl.org

Последовательное деление пополам впервые предложено в статье Кевина Джеймисона и Амита Талвалкара Non-stochastic Best Arm Identification and Hyperparameter Optimization.

В чем проблема последовательного деления пополам?


В последовательном делении пополам существует компромисс между тем, сколько конфигураций нужно выбрать в начале, и тем, сколько разрезов нужно. В следующем разделе вы увидите, как эту проблему решает Hyperband.

HyperBand


Этот метод расширение последовательных алгоритмов деления пополам, предложенное в статье Novel Bandit-Based Approach to Hyperparameter Optimization от Лиши Ли и других авторов.

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


Рисунок из блога automl.org

Простую реализацию HyperBand можно найти в репозитории HpBandSter от automl.org. Если вам интересно, как применять этот инструмент на Python, ознакомьтесь с документацией.

BOHB


BOHB передовой алгоритм оптимизации гиперпараметров, предложенный в работе BOHB: Robust and Efficient Hyperparameter Optimization at Scale, написанной Стефаном Фолкнером, Аароном Кляйном и Фрэнком Хаттером. Идея BOHB основана на одном простом вопросе: почему мы постоянно выполняем последовательное деление пополам?

Вместо слепого повторения последовательного деления пополам BOHB использует алгоритм байесовской оптимизации. На самом деле BOHB сочетает в себе HyperBand и байесовскую оптимизацию, чтобы эффективно использовать оба этих алгоритма. Дэн Райан прекрасно объясняет метод BOHB в своей презентации.


Отличная презентация Дэна Райана об эффективной и гибкой оптимизации гиперпараметров на PyData Miami 2019

BOHB это метод оптимизации Multi Fidelity, такие методы зависят от бюджета, поэтому важно найти его косвенные издержки. С другой стороны, BOHB надёжен, гибок и масштабируем. Если вам нужна более подробная информация, взгляните на официальный пост в блоге о BOHB от Андре Биденкаппа и Фрэнка Хаттера.

Кроме того, HpBandSter это хорошая реализация BOHB и HyperBand. Документация по BOHB находится здесь.

Случайный поиск, HyperBand и BOHB результаты сравнения в Neptune


Теперь, когда мы знакомы со всеми этими методами, воспользуемся Neptune и проведём некоторые эксперименты и сравнения. Если вы хотите провести эксперименты вместе со мной, то:


Поскольку я решил провести эксперименты в равных условиях, я использовал HpBandSter, который имеет реализацию BOHB, с Hyperband и RandomSearch в качестве оптимизатора. Официальный пример можно найти здесь. Основываясь на этом примере, мы имеем небольшую свёрточную нейронную сеть на Pytorch, которая настроена для набора данных MNIST. Я запустил этот пример с тремя оптимизаторами:

  1. BOHB.
  2. HyperBand.
  3. RandomSearch.

Для каждого оптимизатора я использовал следующие бюджеты:

Конфигурации Значение диапазона
Минимальный бюджет [1]
Максимальный бюджет [1,2,3,4,5]
Число итераций [1,2,3,4,8,10]

Это означает, что для изучения возможностей оптимизаторов мы запустили различные комбинации по крайней мере 26 экспериментов. Кроме того, в этом примере мы хотим найти наилучшую конфигурацию для CNN на основе следующих гиперпараметров.

Название параметра Диапазон
Скорость обучения [1e-6, 1e-2]
Количество слоев свертки [1,3]
Количество фильтров в первом слое конфигурации [4, 64]
Процент отсева [0, 0.9]
Количество скрытых нейронов в полносвязном слое [8,256]

Конфигурация взята из документации hpbandster

Проведя эти эксперименты с различными конфигурациями в Neptune, я получил содержательные результаты.


Все эксперименты в Neptune

Здесь мы видим неплохой контраст между оптимизаторами при n_iteration=3 и max_budget=3. Я считаю, что, если увеличу количество итераций, все оптимизаторы в конечном счёте станут производительнее, но при значительном бюджете лучше работает BOHB.


Сравнение BOHB, HyperBand и случайного поиска для n_iteration=3 и max_budget=3

В конечном счете при max_budget=5 и n_iteration=4 каждый оптимизатор находит одну лучшую конфигурацию, которую вы можете проверить в следующей таблице.

Гиперпараметр Диапазон перед настройкой После настройки случайный поиск После настройки HyperBand После настройки BOHB
Скорость обучения [1e-6, 1e-2] 0.010 0.00031 0.0078
Количество слоев свертки [1,3] 2 1 1
Количество фильтров в первом слое конфигурации [4, 64] 13 9 28
Процент отсева [0, 0.9] 0.77 0.06 0.31
Количество скрытых нейронов в полносвязном слое [8,256] 177 248 15

image



Рекомендуемые статьи


Подробнее..

Recovery mode Нейросеть анализирует сексуальность игроков, пример машинной обработки и классификаци текста

19.11.2020 14:19:12 | Автор: admin
Когда пришло приглашение поучаствовать в хакатоне с заданием, для реализации которого необходима оригинальная/ смешная/ креативная гипотеза, мы сразу согласились.

Для участия в хакатоне мы использовали данные шуточного психологического теста.
Суть которого сводится к выявлению сексуальности игрока на подсознательном уровне.
Степень сексуальности выявлялась по описанному игроком образу воды.

Для тех кто не любит читать многА БУКВ, мы сделали минутный ролик, о том что и как было сделано без технических подробностей. Можете посмотреть его:

Остальным изложим детально и пошагово.
Машинное обучение было реализовано для:
определения степени сексуальности игрока, методом классификации описанных игроками образов воды.
классификации оценок игроков, продиктованных голосом в произвольном формате.


Данные были взяты из телеграм каналов, которые наполняет игровое приложение.
image

В Dataset вошло 2 файла в формате JSON объёмом 61 133 и 41 118 строк соответственно.
Основная гипотеза состояла в том, что негативные отзывы об игре оставляют так называемый брёвна в постели.
Блок схема проделанной работы указана на рисунке:
image
Для начала были импортированы данные в Pyton, используя библиотеки codecs, json и pandas, затем отфильтрованы средствами Pandas, добавлены поля для анализа и выгружен полученный результат:
import codecsimport jsonimport pandas as answerdataset = []data = answer.read_json("result.json")answer = answer.DataFrame(data)total = int(answer.index.stop)number = 1position = 6while number < total:        datatipe = answer["messages"][number]["type"]    datalen = len(answer["messages"][number]["text"])    if datatipe == "message" and datalen == 9:        dataposition = answer["messages"][number]["text"][position]        datatime = answer["messages"][number]["date"]        dataset.append([dataposition])        data[datatime] = data[datatime].astype(float)        ##print(number,"|",datatime,"|", dataposition)                    number += 1    #Оставляем два поля и добавяем поля секси    dataset += [{'time' :datatime,                 'text' :dataposition,                 'sex' :"3",                }]# записываем в файл что получилосьwith open('total_result.json','w', encoding='utf-8',) as f:    json.dump(dataset, f,indent=2, ensure_ascii=False, sort_keys=True) 


Была создана выборка для машинного обучения.


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

Было выбрано более 1 000 вариантов примеров для каждой базы.

Выбор оптимальных параметров.


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

машинное обучение


Используя библиотеку глубокого машинного обучения Keras сделали следующее:
image
потом
image
Фактически было произведено следующее: Создана база всех слов, затем каждому слову присвоен свой номер, определён вес каждого слова, создан массив высказываний одинаковой длинны, где недостающие слова были заполнены значением 0.
Затем создана модель нейронной сети, запущено обучение и проверка, как она обучилась. Получен результат, показанный на рисунке 4.

На обучении достигли 99,5% на проверочной выборке 61.9%.
image
Для улучшения показателей необходимо было расширить тестовую выборку, но по правилам хакатона точность не имеет ключевого значения, поэтому остановились на этом результате.

Анализ данных и визуализация.


Были сопоставлены оценки приложения с сексуальностью игроков, в итоге мы получили следующую картину:
image
В результате наша гипотеза не подтвердилась. Отсутствует какая-либо зависимость вида отзыва от степени сексуальности игрока.

Для финальной визуализации мы объединили количество отзывов от секси и обычных и представили их в процентном выражении. Формат визулизации видео с инфографикой в формате 3:4 (требования организаторов)

К сожалению организаторы не смогли прикрутить видео на сайте голосования, но надеюсь что скоро это исправят.
Просьба проголосовать за наш проект:
https://hackathon.digitalleader.org/contest-photo/10/
Подробнее..

Водитель, вы слабое звено новая разработка Honda

18.11.2020 18:12:16 | Автор: admin
image

Пока современные мировые автогиганты инвестируют миллиарды долларов в то, чтобы первыми приблизиться к созданию автономных самоуправляемых автомобилей, Honda Motor Co. вышла вперёд в этой ожесточенной технической гонке, заявив, что разработала первую в мире модель беспилотного автомобиля 3-го уровня eyesoff.

image

Презентация Honda Legend Traffic Jam Pilot.

В апреле 2020-го министерство земли, инфраструктуры, транспорта и туризма (MLIT) Японии внесло частичные поправки в закон о дорожных транспортных средствах, благодаря чему автомобили 3-го уровня автономии с системой Traffic Jam Pilot (новая модель Honda Legend как раз об этом) получили возможность выйти на рынок и в скором времени будут украшать скоростные трассы и многополосовые магистрали страны восходящего солнца.


На самом деле разработка компании Honda вряд ли стала большим инфоповодом для автоспециалистов, т.к. об аналогичных разработках уже сообщали другие крупные автопроизводители в прошлом. Например, модель Audi A8 2017-го года позволила бы передвигаться в беспилотном режиме как раз благодаря системе Traffic Jam Pilot (здесь с громкими заявлениями о своем первом в мире продукте Honda погорячилась). Однако, есть одна загвоздка. Дело в том, что государства накладывают на эксплуатацию автомобилей 3-го уровня автономии законодательные ограничения, в результате чего систему не внедряют во флагманские модели и не допускают до массового производства. И тот факт, что власти Японии узаконили данную технологию беспилотного вождения, является значимой новостью как для компании Honda, так и для будущего беспилотных автомобилей в целом.

Да что такое этот ваш беспилотник?


image

Чтобы понять, какие возможности вождения подарит своему владельцу новая модель Honda, стоит разобраться, по какому принципу определяется уровень автономности и что вообще понимается под словом автономность в контексте возможностей автомобиля.
Беспилотный автомобиль оснащён программным обеспечением, руководящим работой всех систем автомобиля, и сенсорами, собирающими информацию о пространстве. Этот симбиоз позволяет передвигаться без участия человека.

Система сенсоров (датчиков) включает в себя:
  • несколько камер, в т.ч. инфракрасные для ночного видения
  • лидар (сканирование местности с помощью лазерных лучей)
  • радар (определяет расположение объектов через радиоволны)
  • GPS
  • датчики одометрии (прибор для измерения оборотов колес)


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

Как стать автономным автомобилем: пошаговая инструкция


image

Классификация беспилотных транспортных средств разработана всемирной ассоциацией SAE International, в которую входят более 128000 инженеров и технических экспертов. SAE выделяет шесть уровней автоматизации.
Уровень 0 здесь водитель полностью принимает на себя рулевое управление, регулирование скорости, определение момента смены полосы, поворота и т.д. Водитель сам контролирует свой автомобиль и мониторит проезжую часть, реагирует на различные нестандартные ситуации, например, при слиянии дорог.
Автомобили 1-го уровня могут самостоятельно регулировать скорость в зависимости от того, как движутся соседние автомобили и осуществлять торможение. SAE не относит авто данного уровня в разряду беспилотных, т.к. основные задачи вождения все равно лежат на плечах водителя.

image

Может показаться, что уровень 2 это и есть полноценный автопилот, однако согласно SAE это все же частичная автоматизация. Рассмотрим возможности 2-го уровня на примере Autopilot в Tesla и Super Cruise в General Motors. Автомобили могут самостоятельно менять скорость, тормозить, управлять рулем. Однако, системы несовершенны, есть ряд обстоятельств, при которых система не способна правильно считывать внешние условия и самостоятельно управлять транспортом. В обеих моделях водитель должен быть начеку и в любую секунду перенять управления на себя в случае необходимости.
Для того, чтобы сохранять внимание водителя на дороге, даже тогда, когда кажется, что автомобиль полностью самостоятелен, разработчики идут на различные ухищрения. Например, Tesla просит, чтобы руки водителя всегда находились на руле автомобиля и контролирует это через специальные датчики. Если водитель уберет руки более чем на 30 минут, последуют визуальные и звуковые предупреждение, если водитель никак не отреагирует, система остановится. Система в General Motors не требует от водителя держать руки всегда на руле. Вместо этого система определяет расположение головы водителя. Если его взгляд направлен не на дорогу, система активирует предупреждения: мигание лампочки на руле, акустические сигналы и вибрация кресла.

image

Теперь предлагаем рассмотреть возможности 3-го уровня автономии, который представляется наиболее актуальным в контексте современной новостной повестки. Корректно ли причислять такую систему к разряду беспилотного транспорта? Как бы не так Во 2-ом уровне требуется постоянное внимание водителя, по-настоящему автоматизированными SAE называет системы 4-го уровня, а 3-й знаменует собой как бы переход: система может взять на себя управление при движении в дорожной пробке или медленном потоке транспортных средств на скорости до 60 км/ч, в то время как водитель будет находится в резерве и может спокойно убрать ногу с педали, а руки с рулевого колеса и отвлечь свое внимание, например, на бортовое телевиденье автомобиля или свой смартфон.
Подобные модели сталкиваются с ограничениями не только со стороны законодательства разных стран. Юристы многих автокомпаний опасаются, что если авто с 3-м уровнем автопилота окажется в ДТП, бремя ответственности в любом случае ляжет на производителя (именно по этой причине Volvo отказалась от подобных разработок).

Система Traffic Jam Pilot, которая интегрирована как в Audi A8, так и в новую модель Honda Legend заключает в себе серию проверок безопасности:
  • наблюдение за водителем, система считывает количество поворотов головы и морганий; если у мозга машины возникнут подозрения, что водитель спит, она разбудит его с помощью различный акустических сигналов, в противном случае автомобиль остановится.
  • оперативная обработка особенностей трассы, таких как маркировка дороги, обочин и боковых барьеров (избыточное количество датчиков и камер сканируют на все 360).

Система 4-го уровня автономии mind off позволяет водителю и вовсе покинуть свое место и лечь спать, например. Если система предвидит, что окажется в районах, где не способна управлять автомобилем, она заранее оповестит об этом водителя. Как ни удивительно, подобные разработки уже есть (от Google, Uber или отечественного Yandex). Однако, прототипы 4-го уровня автономии столкнулись с рядом проблем. Один из главных: передвижение подобных автомобилей строго ограничено заданным маршрутом система может передвигаться только по местности, где она этому обучена, с которой она хорошо знакома.

image
Беспилотник от Yandex.

5-й уровень полностью автоматическая система управления. Предполагается, что единственная задача, которая будет стоять перед водителем: ввести данные адреса в навигационную систему, а умный автомобиль, не смотря на погодные условия, обстановку на дороге и т.д., доставит пассажиров до пункта назначения. Рули, педали и прочее в данном транспорте будет отсутствовать по причине отсутствия утилитарной пользы.
Небезызвестный Илон Маск выступил с заявлением, что базовая функциональность к подобному беспилотному транспорту будет готова уже к этому году. Многие аналитики крайне пессимистично отнеслись к этому заявлению и считают, что на пути к полному беспилоту стоят еще годы исследований.

image

Страны не готовы к такому повороту


Новый автомобиль Honda Legend будет доступен к продажам 31 марта 2021 года. Его цена составит 10 млн йен это $95 000, что на 40% выше, чем аналогичная модель без возможностей автопилота. На данный момент сообщается, что его можно будет приобрести только в Японии.
Одним из главных препятствий к широкому распространению беспилотников 3-го уровня, является отсутствие четко регламентированных правил безопасности, которые эти автомобили должны соблюдать. Более 50 стран, включая Германию, Канаду, страны Европейского союза, Южную Корею и Японию подписали соглашения, которые будут регулировать, где и на каких условиях разрешены автономные транспортные средства. Но на данный момент только Япония готова начать применять составленные правила на практике.

Как вы думаете, к каким проблемам на дороге могут привести беспилотные автомобили? Хотели бы вы приобрести беспилотную Honda?

Список литературы:
  1. Rosevear J. Self-Driving Cars: Understanding the 6 Autonomous Levels [Электронный ресурс]. URL: www.fool.com/investing/2018/09/06/self-driving-cars-understanding-6-autonomous-level.aspx
  2. Автопилот для пробок как работает Audi AI traffic jam pilot [Электронный ресурс]. URL: www.computerra.ru/228867/avtopilot-dlya-probok-kak-rabotaet-audi-ai-traffic-jam-pilot
  3. Автопилот от 0 до 5. Гид по уровням беспилотных автомобилей [Электронный ресурс]. URL: truesharing.ru/tp/22173
  4. Audi отказалась от продвинутого автопилота в A8 [Электронный ресурс]. URL: motor.ru/news/audi-autopilot-28-04-2020.htm
  5. Honda cleared to begin selling first Level 3 autonomous cars [Электронный ресурс]. URL: futurism.com/the-byte/honda-cleared-begin-selling-first-level-3-autonomous-cars
Подробнее..

Тестируем ruGPT-3 на новых задачах

20.11.2020 14:23:38 | Автор: admin

Рекомендательные системы с нуля, чат-боты и многое другое


Погрузившись в пучину текстовых данных, в октябре этого года мы обучили модели ruGPT-3 модели для русского языка на основе архитектуры от OpenAI. Но на что же способны эти модели? В этой статье мы соберем первые примеры применения модели и попробуем новые.

Мы представляем первые результаты самой большой из обученных моделей ruGPT-3 Large, разработанной совместно с командами SberDevices, Sber.AI и SberCloud. Изучим границы ее применения вместе с вами.

image

В этом году на AI Journey мы подготовили соревнование применений ruGPT-3 в трек можно сдать любое решение с использованием модели, оцениваемое по трем шкалам инновационность, эмоциональное вовлечение и бизнес-применимость.
Спойлер:
1 млн рублей за первое место



Как дообучить модель на новой задаче?


Модели и код к ним находятся в репозитории sberbank-ai: можно использовать библиотку transformers или Megatron-LM.

В этой статье я привожу примеры с использованием huggingface/transformers код для кейсов приведены здесь:

Карточки моделей в библиотеке transformers: Large Medium Small

При запуске скрипта генерации проще сделать Run all и затем немного подождать, пока модель загрузится.
image
Скрипт в последней ячейке попросит ввести начало текста моя любимая затравка: Бразильские ученые открыли редкий вид карликовых единорогов, обитающих на западе Ютландии. Получаем:
ruGPT-3 Small: Бразильские ученые открыли редкий вид карликовых единорогов, обитающих на западе Ютландии. Об этом сообщает Agence France-Presse. Единорог, получивший название Pygmaliona (лат. Pygmaliona pygmalioni), был обнаружен исследователями в ходе работ в области биологии. Его длина составляет менее 30 сантиметров, а масса около 1 килограмма. Животное относится к семейству единороговых. В его рационе преобладают растения, в том числе и карликовые деревья.


В Colab-ноутбук помещается только ruGPT-3 Small, поэтому лучше используйте карточки с памятью больше 14Gb.

Кстати, на время соревнования мы даем участникам дорожки доступ к мощностям Christofari!
Для участников трека ruGPT-3 мы выделили 100 аккаунтов в каждом аккаунте 1 GPU Tesla V100-SXM3 32 Gb бесплатно на время соревнования.
Как получить аккаунт?
1) Зарегистрируйтесь на трек ruGPT-3 (AI 4 Humanities) ods.ai/tracks/aij2020
2) Напишите короткое письмо с названием вашей команды и задачей на AIJ_ruGPT-3@sberbank.ru

image

Few-Shot vs Fine Tuning


В случае с такими большими генеративными моделями, как GPT-like архитектуры, есть несколько способов управиться с ними.
  • Первый способ: назовем его традиционный дообучить модель на доступном количестве примеров выполнять конкретное задание. В таком случае генеративная модель выучит формат ввода и вывода (GPT-3 очень редко ошибается в формате), и будет генерировать данные согласно вашей задаче. Это может быть разметка данных (в формате исходный текст текст в разметке) или просто генерация по заданному началу.
  • Второй способ: новый, называемый обычно затравочное программирование (англ. prompt engineering с легкой руки [Гверна Бренуэна] (http://personeltest.ru/aways/www.gwern.net/GPT-3#prompts-as-programming) мы даже ничего не дообучаем, а сразу пытаемся получить из модели то, что хотим.

Как работает затравочное программирование?


Дообучать большие модели бывает очень дорого, поэтому такой способ общения с ними позволяет избежать даже этого. Суть затравочного программирования в том, чтобы подобрать такие заготовленные примеры и начала для генерации, чтобы дальше модель выдавала ровно то, что надо.
Подбирая затравки и гиперпараметры генератора (температура, top_n, top_k), можно добиться вполне сносных ответов за счет только предварительного обучения модели.
image
Пример затравки с 1 примером и описание задачи.

Протестируем оба способа на практике попробуем решить популярные задачи с нуля, а специфичные решить с дообучением.

Рекомендательные системы


Сделаем рекомендательную систему без обучения: будем подавать ruGPT-3 Large информацию о предпочтениях пользователя в виде текста, и будем смотреть, как модель продолжит его. Можем сгенерировать сразу много вариантов, чтобы получить побольше рекомендаций.

Рекомендации фильмов:
Затравка: Мои любимые фильмы Матрица, Олдбой,
ruGPT-3 Large: Мои любимые фильмы Матрица, Олдбой, Крёстный отец, Игра в имитацию, Остин Пауэрс.
ruGPT-3 Large: Мои любимые фильмы Матрица, Олдбой, Спасение рядового Райана, Нечто, Затура (последняя, кстати, стоит того, чтобы ее посмотреть).
ruGPT-3 Large: Мои любимые фильмы Матрица, Олдбой, Эквилибриум и др.


Затравка: Я люблю советские комедии: Приключения Шурика,
ruGPT-3 Large: Я люблю советские комедии: Приключения Шурика, Собака на сене и Веселые ребята.
ruGPT-3 Large: Я люблю советские комедии: Приключения Шурика, Любовь и голуби.
ruGPT-3 Large: Я люблю советские комедии: Приключения Шурика, Три плюс два, Служебный роман и другие.


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

Рекомендации музыки:
Затравка: Тем людям, кому нравится Гражданская оборона, также понравятся группы #(как обычно, специально оставляем незакрытую кавычку)
ruGPT-3 Large: Тем людям, кому нравится Гражданская оборона, также понравятся группы Ленинград и Пикник.
ruGPT-3 Large: Тем людям, кому нравится Гражданская оборона, также понравятся группы ДДТ и Король и Шут.
ruGPT-3 Large: Тем людям, кому нравится Гражданская оборона, также понравятся группы Алиса, Доктор Пеппер, Машина времени, ДДТ и Крематорий.

Результаты получаются все время разные потенциально можно нагенерировать N вариантов, извлечь все названия групп и собрать Counter самых популярных вуаля рекомендательная система с нуля.

Генерация отзывов



Возьмем более сложную задачу заставим модель мимикрировать под человека в обсуждениях или магазинах:
Затравка: Напиши комментарий под видео.
Опять какой-то челлендж
ruGPT-3 Large: Напиши комментарий под видео.
Опять какой-то челлендж решили провести. Это даже не флешмоб, это уже идиотизм.


Затравка: Напиши отзыв о стиральной машине.
Данная модель стиральной машины
ruGPT-3 Large: Напиши отзыв о стиральной машине.
Данная модель стиральной машины оснащена встроенной функцией самоочистки.
В конструктивном решении стиральной машины предусмотрено устройство автоматического затирания воды, которая способна удалять накипь и прочие загрязнения даже в труднодоступных местах.
Стоит отметить, что после процедуры чистки, во время отжима появляется специфический запах. У некоторых моделей, в результате эксплуатации, он сохраняется в течение всего срока службы стиральной машины.


Завтравка: Напиши отзыв о фильме.
Фильм "1+1"
ruGPT-3 Large: Напиши отзыв о фильме.
Фильм "1+1" очень нравится, хотя и смотреть его стоит не каждому. Актёрский состав в нём великолепен. Смотрится без особого напряжения и с интересом. В фильме очень много смешных моментов. Так же советую посмотреть фильм "Зелёная книга", также фильм с Дженнифер Лопес и Крисом де Бургом.


Как видим, для тематик, широко распространенных в интернете, модель может генерировать связные тексты и без обучения. Но где же без дообучения все же никак?
Таких случая можно выделить 3:
сложный формат данных если при генерации без обучения вы теряете качество за счет генерации в неправильном формате задача NER, генерация кода, символьные вычисления и т.д.;
явная необходимость отвечать согласно заданному набору знаний, правил вы делаете QA по документации вашей компании, по учебникам, вики, без примеси социальных сетей и личного мнения;
ваша задача, скорее всего, не представлена в текстах рунета достаточно, чтобы модель могла хорошо генерировать в ее рамках например, генерация изображений по текстам.

StackOverflow


Поднимем планку сложности: скачаем русский [stack overflow](http://personeltest.ru/aways/ru.stackoverflow.com/) и попробуем сделать вопросно-ответную систему. Сможем ли мы сразу выучить и стиль ответов, и знания, и несколько языков программирования? Сразу получить хороший результат в таокй задаче нелегко, но мы можем развлечься за 5 эпох модель научилась воспроизводить стилистику, сильно путаясь в содержании. Зато хорошо выучила ссылки на документацию вполне неплохой итог для 5 эпох обучения.

Формат обучения: подаем тексты вопросов и лучших ответов в формате Q:blabla A:blabla.

Q: Как мне вывести список в обратном порядке в python? Я новичок
A: Простейший способ получить необходимый список: push.log("Shalom").
Установка значения означает угрозу попыткой нажатий на какую-нибудь цифру справа, поэтому я действую наоборот. Изменение размера и числа означает перегрузку времени активации
set.log()**)
rGet = puts.random(extents) log.findIndex(puts.current) void join($window, command='unsetMainServer onManager') }
Нет ничего хуже, чем полный дебаггинг


Q: Как мне вывести список в обратном порядке в python? Я новичок
A: import pycode as pyc;
// в этой статье я рассказал о месте показа списка в моей программе (подробно в статье href=https://docs.python.org/3/library/pycode.html )

(такой библиотеки на самом деле нет, модель сгенерировала ссылку на документацию)

Для таких задач можно вводить дополнительные аргументы например, название раздела/тематики/языка программирования, про который нужно ответить, и обучать модель на данных вида {параметр: значение, вопрос: текст_вопроса, ответ: текст_ответа}.

По части и кода, и текста сразу у нас пока фейл может, кто-то сделает лучше в рамках трека? На англоязычной модели с кодом уже есть вполне удачные реализации: написание html-кода элементов веб-страниц, генерация шаблонов Figma.

Пробуем другие языки! Twitter и не только


Основной язык обучения модели русский, но можно ли применять модель в мультиязычных задачах? Чуть-чуть других языков всегда попадает в обучающую выборку из веба, поэтому надежда есть. Прямолинейный подход с затравками показывает, что про английский модель немного знает:
ruGPT-3 Large:
кошка > cat
собака > dog
груша > pear
программист > coder

Ну, почти:
кошка > cat
собака > dog
груша > pear
питонист > Python

Иногда и совсем не получается:
кошка > cat
собака > dog
груша > pear
яблоко > bunch # пошел продолжать дальше
Кошка > dog
Хомяк > cat
Зверёк > dog

image

Почему бы не потренироваться на чисто англоязычных данных: я взяла датасет twitter-text-classification из Kaggle-соревнования.

После 5 эпох на 5 тысячах первых комментариев (20 минут в Colab) получаем вполне сносную генерацию очень даже токсичных комментариев на английском:

Context >>> Is it
ruGPT-3 Small: Is it's the case that #Microsoft is using #SAP to manage #Microsofts business?

Context >>> It is
ruGPT-3 Small: It is the only one that I've been trying to do. Siri is on the verge of death, and I'm not aware of why she has to be on the verge.

Context >>> Why
ruGPT-3 Small: Why do I go here? I'm wondering if I can use the #Microsoft Windows 8 Pro for the #WindowsPhone phone? Thanks!

Диалоговые системы


Уже сейчас, без предобучения, довольно хорошо работает применения модели к диалоговым системам: модель может выполнять функцию chit-chat (разговор ни о чем), свободно болтая на различные темы. С дообучением на конкретных сценариях и доменах можно реализовать и бизнес-приложения.
Пример ниже пример диалога без обучения, на узконаправленную тему саппорт интернет-провайдера.
Затравка: первые 2 строчки дальше генерация.
User1: Привет, я Маша! Чем могу помочь?
User2: У меня не работает интернет.
User1: Какой у вас тариф?
User2: У меня тариф 500мбит
User1: Что случилось?
User2: Проблемы с интернетом. Т.е. с телефоном. Я сейчас отключу сеть и подключу телефон
User1: Почему Вы звоните сейчас?
User2: Потому что я зашел на оф. сайт, а там скорость какая-то маленькая...
User1: Вы говорите, что скорость маленькая, но, может быть, она и должна быть маленькой?
User2: Но я до этой скорости не дотерпел
User1: Извините, мы тут не при чем. Мы позвонили в службу поддержки и сказали, что Вы звоните на этот номер.
User2: Мы звонили, но никто не отвечал. Я попробовал еще раз.
User1: У меня не получается подключиться к интернету. У меня кабель, значит, пропадает.
User2: Прошу Вас, скажите, что у вас происходит?
User1: Почему такая скорость?
User2: Мы приносим свои извинения. Но Вы в любом случае должны внести плату за интернет и все подключить.
User1: Все оплатить?
User2: Да
User1: У меня нет сейчас такой возможности. Я предлагаю Вам прийти на нашу бесплатную горячую линию и проверить оборудование.
User1: Извините, но я сейчас не могу. Надо кое-что оплатить.
User2: Пожалуйста, я свяжусь с вами в течение дня.
User1: Да
User2: Спасибо

Конечно, без предобучения у модели нет явного представления о сценариях и скриптах специалистов поддержки, однако, даже такой холодный старт уже показывает стандартный путь выяснить, что произошло отболтаться перенаправить звонок. Можно вспомнить классику:
User1: Техническая поддержка Стрима, инженер 656, Дмитрий, здравствуйте.
User2: Договор оформлен на Уральского, телефон 7661669, у меня к вам следующий вопрос: а вот скажите мне пожалуйста, что, когда теперь заканчивается сессия, что, теперь, это теперь будут разрывы при моём тарифе, да?
User1: Данная тарификация установлена с 1 сентября. Как только будут разрывы в телефонной связи, оператор будет сразу обращаться к вашему оператору, чтобы узнать с вами ли вы.
User2: Я так понимаю, что, да, то есть я что-то потерял в связи с этим?
User1: Да, поскольку с 1 сентября меняется тарифная сетка. То есть, до этого были какие-то перебои с доступом в интернет, на некоторых серверах было около месяца, что это было связано с перебоями в телекоме, вот это всё. Но не более того.
User2: Я специально проверял, там было просто кратковременные задержки, были, я бы сказал, какие-то незначительные.
User1: Да.
User2: То есть, ничего не потеряли?
User1: Ну как, надо немножко потерпеть, потерпеть.
User2: Спасибо, Дмитрий, до встречи.

В общем, надо потерпеть. Модель даже запомнила, что User1 зовут Дмитрий, и User2 соответствующе с ним попрощался.

Вместо заключения


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

Сейчас с каждым выходом подобных архитектур Reformer, Longformer, BigBird и т.д. мы смотрим на большие предобученные модели немного по-новому, ставя перед ними новые задачи.

Помимо вышеупомянутых кейсов, ruGPT-3 точно может применяться и приносить пользу в таких практиках, как:
  • аугментация текстовых данных для задач ML
  • диалоговые модели для автоматизации
  • задачи генеративной суммаризации
  • рерайтинг, генерация новостей, спортивных заметок по структурированной информации.


Надеемся, что демо и модели принесут сообществу пользу и фан!

И, конечно, ждем ваших решений на треке ruGPT-3 до конца 22 ноября!
Подробнее..

Перевод Участие в тестировани Incentivized Testnet глобальной децентрализованной мультиагентной системы

24.11.2020 18:14:36 | Автор: admin
Специально к старту курса Машинное обучение в этом материале знакомим читателей Хабра с Fetch.ai децентрализованной платформой для оптимизации существующих технологий с помощью искусственного интеллекта, машинного обучения и интеллектуального обмена данными. Платформу можно использовать, чтобы создать агента, например, программу, которая с учётом реальных обстоятельств рекомендует, когда сесть на поезд. Ещё один пример агент, контролирующий потребление электроэнергии. Подробности о самой Fetch.ai, датах тестирования сети агентов, список партнёров стартапа (который включает Кембриджский Университет) и ссылки на ресурсы, включая репозиторий GitHub, под катом.





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

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

Прогресс в области партнёрства где мы находимся сегодня?


Наша долгосрочная цель разработать и реализовать полезные варианты применения нашей технологии. Чтобы достичь этой цели цели, нам необходимо было сотрудничать с разделяющими наши взгляды организациями. Буквально на прошлой неделе мы объявили о партнёрстве с Datarella, в сотрудничестве с которой планируем построить децентрализованную сеть машинного обучения с открытым доступом для интеллектуальной инфраструктуры. В частности, цель этого партнёрства сосредоточена на расширяющейся сейчас интеллектуальной парковке, интеллектуальной мобильности и инфраструктуре умного города, построенной с использованием искусственного интеллекта, блокчейна и интернета вещей. Ключевые преимущества этого сотрудничества включают снижение выбросов CO2, заторов на дорогах и борьбу с изменением климата. Но наше партнерство с Datarella не единственное, о чём мы объявили в прошлом, направлено на изменение взгляда на технологии в повседневной жизни. Посмотрите полный список всех наших партнёрских отношений, которые мы уже подтвердили:

Cambridge University, T-Labs, Batu Metallurgy, Warwick Business School, Wi-Q technologies, Hegic, Conflux Network, Waves, Ankr, Grey Swan Digital, Mobility Open Blockchain Initiative (MOBI), Sovrin Steward, Smart Dubai with Outlier Ventures, Trusted IoT Alliance, Blockchain 4 Europe.

Зачем это разработчику?



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

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

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

Но мы хотим пойти дальше. Наша цель запустить сеть Mainnet v2.0 в начале следующего года, и, чтобы не отклоняться от намеченных целей, мы разделили график разработки, разбив его на разные фазы. Сейчас мы находимся на первой фазе программы Incentivized Testnet, в которой запущен и работает Agent World 2. Если вы еще не присоединились к программе Incentivized Testnet, вы можете сделать это здесь.

В любом случае, где мы были? Мы тестируем Agent World 2 Testnet, в которой создаем агентов, помогающих решать проблемы серьёзнее, чем заказ пиццы. После начала партнёрских отношений с Datarella мы хотим использовать наших агентов для решения текущих проблем в области мобильности и изменения климата.

Имейте в виду, что агенты должны соответствовать правилам FIPA (Фонда интеллектуальных физических агентов) для ведения переговоров и заключения сделок, и мы создадим агентов-покупателей для отслеживания доставляемой информации. После завершения Agent World 2 у вас будет реальный агент, продающий реальные данные, ищущий и обнаруживающий их с помощью Simple Open Economic Framework (SOEF) в цифровом мире Fetch.ai. Если вам интересно, что означает SOEF:

OEF это протокол поиска, обнаружения и транзакций для сети Fetch. Представьте три уровня:

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

Я залогинился. Что дальше?




20 ноября мы запустили создание большой сети взаимодействующих агентов или, как мы любим ее называть, Agent World 3. Заключительный этап первой фазы программы Incentivized Testnet Agent World 3 (AW-3) планируется начать в эту пятницу, он продлится до 4 декабря. Если вы хотите стать частью команды разработчиков Fetch.ai и помочь нам создать нечто важное в экосистеме блокчейна с передовыми решениями в области искусственного интеллекта и интернета вещей, отправьте нам электронное письмо по адресу developer@fetch.ai и присоединяйтесь к нам в Discord. Не забудьте посмотреть наш репозиторий для разработчиков на docs.fetch.ai.

image



Рекомендуемые статьи


Подробнее..

AI Journey путешествие в мир AI

25.11.2020 10:14:05 | Автор: admin


Конец года оказался богат на интересные и зрелищные мероприятия, пусть и проводящиеся в он-лайн формате. Intel принимает в них активное участие, ну а мы активно о них рассказываем и из самых лучших намерений рекламируем. Ведь новые знания и свежие впечатления это лучшее лекарство от ковидной хандры.
На этот раз мы приглашаем вас на AI Journey трехдневную он-лайн конференцию по искусственному интеллекту и анализу данных, проводимую ведущими российскими и международными компаниями 3-5 декабря. Intel является титульным партнером конференции, а эксперты компании выступят на ее виртуальной трибуне.

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

  • 03.12 Научный день. Научные аспекты развития и применения искусственного интеллекта.
  • 04.12 Бизнес день. Вопросы применения технологий AI в обществе, бизнесе и на уровне государства.
  • 05.12 Региональный день. Выступления ведущих экспертов в области AI от Владивостока до Калининграда

Дополнительно в третий день пройдет AI Journey Junior онлайн-конференция по искусственному интеллекту для учащихся средних и старших классов. В рамках этой сессии мастер-тренеры программы Intel AI For Youth проведут квест Открой мир AI, где юные исследователи искусственного интеллекта смогут узнать, как использовать возможности AI в таких областях, как машинное обучение, компьютерное зрение и обработка естественных языков.

Мы рады представить вам докладчиков Intel на конференции.
  • Первый день
    • Майк Дэвис Нейроморфные вычисления: путь из лаборатории в реальную жизнь.
    • Алексей Мяков Демократизация AI (с фокусом на Computer Vision)
    • Михаил Цветков Intel xPU: архитектурное разнообразие для задач AI
    • Иван Кузьмин Intel oneAPI: ни один транзистор не останется без дела
    • Анна Белова Intel OpenVINO: ускоритель нейронных сетей
    • Дмитрий Сивков Обзор программных инструментов Intel для задач AI
  • Второй день
    • Прадип Дубей AI и эволюция вычислительных методов: процесс с позитивной обратной связью
    • Аншул Сонак, Сергей Жуков Программа Intel AI For Youth Технологии искусственного интеллекта для каждого
  • Третий день. AI Journey Junior
    • Ким Паллистер AI в компьютерных играх: сегодня и завтра

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

Узнайте о завтрашнем дне уже сегодня! До встречи на конференции.

Подробнее..

Категории

Последние комментарии

© 2006-2020, personeltest.ru