• Нейросетевой синтез речи с помощью архитектуры Tacotron 2, или «Get alignment or die tryin'»



      Нашей команде поставили задачу: повторить результаты работы искусственной нейронной сети синтеза речи Tacotron2 авторства DeepMind. Это рассказ о тернистом пути, пройденном нами в ходе реализации проекта.
      Читать дальше →
    • Математические модели хаоса

      • Tutorial

      Введение


      На Habr уже обсуждалась теория хаоса в статьях [1,2,3]. В этих статьях рассмотрены следующие аспекты теории хаоса: обобщённая схема генератора Чуа; моделирование динамики системы Лоренца; программируемые логическими интегральными схемами аттракторы Лоренца, Ресслера, Рикитаке и Нозе-Гувера.

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

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

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

      Статья написана с целью обучения, но позволит, даже не имеющему опыта программирования читателю, используя приведенные программы, самостоятельно решить большинство новых учебных задач по теме моделирования явлений хаоса.
      Читать дальше →
      • +22
      • 3,8k
      • 8
    • Генератор подземелий на основе узлов графа

      • Перевод
      image

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

      Введение


      Алгоритм был написан как часть работы на получение степени бакалавра и основан на статье Ma et al (2014). Целью работы было ускорение алгоритма и дополнение его новыми функциями. Я вполне доволен результатом, потому что мы сделали алгоритм достаточно быстрым, чтобы использовать его во время выполнения игры. После завершения бакалаврской работы мы решили превратить её в статью и отправить на конференцию Game-ON 2018.

      Алгоритм


      Для создания уровня игры алгоритм получает в качестве входных данных набор полигональных строительных блоков и граф связности уровня (топологию уровня). Узлы графа обозначают комнаты, а рёбра определяют связи между ними. Цель алгоритма — назначить каждому узлу графа форму и расположение комнаты таким образом, чтобы никакие две формы комнат не пересекались, и каждая пара соседних комнат могла соединяться дверьми.
      Читать дальше →
      • +45
      • 7,9k
      • 6
    • PERDIX: алгоритм автоматического проектирования ДНК-оригами разной геометрии



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

        Шутки в сторону. Сегодня мы с вами познакомимся с алгоритмом, позволяющим автоматически создавать ДНК-оригами достаточно разнообразной формы. Ранее изменение формы нитей ДНК до необходимой выполнялось вручную, что сильно ограничивало возможности подобной процедуры. Данный же алгоритм позволяет создавать детали ДНК конструктора автоматически, что позволяет в дальнейшем использовать их для формирования двумерных и трехмерных наноструктур. Плюс этот алгоритм доступен всем желающим. Доклад исследовательской группы поможет нам разобраться что и как работает. Поехали.
        Читать дальше →
        • +22
        • 2,8k
        • 7
      • Как устроен скоринг в индустрии каршеринга. Часть 2. Определить агрессивного водителя за 5 секунд

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


          Читать дальше →
        • Оптимизация графики. Интересный Concave Hull

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

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



          На средней игровой карте, при максимальном отдалении и при большом скоплении пальм — 15 824 756 треугольников! Почти 16 миллионов! Огромная цифра.
          Читать дальше →
        • Внутри Quake: определение видимых поверхностей

          • Перевод
          image

          Ветеран программирования трёхмерной графики Майкл Абраш на примере разработки первого Quake рассказывает о необходимости творческого мышления в программировании.

          Много лет назад я работал в теперь уже не существующей компании-производителе видеоадаптеров Video Seven. Там я помогал в разработке клона VGA. Мой коллега Том Уилсон, долгие месяцы круглосуточно работавший над разработкой VGA-чипа Video Seven, стремился сделать VGA как можно более быстрым, и был уверен, что его производительность оптимизирована почти по максимуму. Однако когда Том уже вносил в конструкцию чипа последние штрихи, до нас донеслись слухи, что наш конкурент Paradise достиг ещё большей производительности в своём разрабатываемом клоне, добавив в него FIFO.

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

          У Тома не было ни логических элементов, ни достаточно времени на реализацию полного FIFO, но ему удалось реализовать FIFO глубиной в одну операцию, что позволяло процессору обгонять VGA-чип на одну операцию записи. Том не был уверен, что это даст хорошие результаты, но это было единственное, что он смог сделать, поэтому он реализовал эту систему и передал чип в производство.
          Читать дальше →
          • +86
          • 22,5k
          • 6
        • Нейросети и философия языка

          • Перевод
          Почему теории Витгенштейна остаются основой всего современного NLP

          Векторное представление слов — пожалуй, одна из самых красивых и романтичных идей в истории искусственного интеллекта. Философия языка — это раздел философии, исследующий связь между языком и реальностью и как сделать сделать речь осмысленной и понятной. А векторное представление слов — очень специфический метод в современной обработке естественного языка (Natural Language Processing, NLP). В некотором смысле он представляет собой эмпирическое доказательство теорий Людвига Витгенштейна, одного из самых актуальных философов прошлого века. Для Витгенштейна использование слов — это ход в социальной языковой игре, в которую играют члены сообщества, понимающие друг друга. Значение слова зависит только от его полезности в контексте, оно не соотносится один к одному с объектом из реального мира.

          Для большого класса случаев, в которых мы используем слово «значение», его можно определить как значение слова есть его использование в языке.
          Читать дальше →
          • +14
          • 3,8k
          • 7
        • One Billion Queens Problem Solution или, «Исследование закономерностей в списке решений задачи распределения n-Ферзей»

          Резюме


          Приводится описание закономерностей, которые были установлены в последовательном списке всех решений задачи о распределении n-Ферзей. Установлено, что:


          • Доля полных решений в общем списке всех решений уменьшается, с ростом значения n.
          • Полные решения распределены в последовательном списке всех решений таким образом, что с наибольшей вероятностью встречаются полные решения, расположенные в списке близко друг от друга.
          • Существует симметрия в порядке расположения полных решений в общем списке всех решений. Если в i-ой позиции от начала списка решение является полным, то и симметричное решение от конца списка, находящееся в позиции n-i+1 также является полным (правило симметричности решений).
          • Любые пары решений, как коротких так и полных, расположенных симметрично в списке всех решений, являются комплементарными – сумма индексов позиций соответствующих строк является постоянной величиной и равна n+1 (правило комплементарности решений). Это говорит о том, что только первая половина списка всех полных решений является «уникальной», любое полное решение из второй половины списка можно получить на основе правила комплементарности. Следствием этого правила является тот факт, что для любого значения n, количество полных решений, всегда будет четным числом.
          Читать дальше →
          • +16
          • 1,4k
          • 9

        Самое читаемое