• Может ли разум подделать Вселенную?

    • Перевод

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


    Софи Хебден
    FQXi Awardees: Маркус Мюллер 1
    18 января 2019 г.


    Творение космоса.
    Credit: Юрий Акурс, iStock

    Читать дальше →
  • Оптимизация поиска в ширину: как обработать граф с 10 миллиардами состояний

    • Перевод
    image

    Пару месяцев назад мне наконец пришлось признать, что я недостаточно умён, чтобы пройти некоторые уровни головоломки Snakebird. Единственным способом вернуть себе часть самоуважения было написание солвера. Так я мог бы притвориться, что создать программу для решения головоломки — это почти то же самое, что и решить её самому. Код получившейся программы на C++ выложен на Github. Основная часть рассматриваемого в статье кода реализована в search.h и compress.h. В этом посте я в основном буду рассказывать об оптимизации поиска в ширину, который бы потребовал 50-100 ГБ памяти, чтобы он уместился в 4 ГБ.

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

    Приблизительные подсчёты показали, что в самой большой головоломке после устранения всех симметричных положений будет порядка 10 миллиардов состояний. Даже после упаковки описания состояний с максимальной плотностью размер состояния составлял 8-10 байт. При 100 ГБ памяти задача оказалась бы тривиальной, но не для моей домашней машины с 16 ГБ памяти. А поскольку Chrome нужно из них 12 ГБ, мой настоящий запас памяти ближе к 4 ГБ. Всё, что будет превышать этот объём, придётся сохранять на диск (старый и ржавый винчестер).
    Читать дальше →
  • Unity: бесконечный процедурно генерируемый город, получаемый при помощи алгоритма WFC (коллапс волновой функции)

    • Перевод
    Привет, Хабр!

    Как законодатели мод по теме Unity на российском рынке предлагаем вам почитать интересное исследование о практическом использовании алгоритма WFC (Wave Function Collapse), построенного по образу и подобию известного принципа квантовой механики и очень удобного при процедурной генерации уровней в играх. Ранее на Хабре уже публиковался подробный рассказ об этом алгоритме. Автор сегодняшней статьи Мариан Кляйнеберг рассматривает алгоритм в контексте трехмерной графики и генерации бесконечного города. Приятного чтения!

    Читать дальше →
  • ИИ Microsoft генерирует реалистичную речь с минимальным обучением



      В своем новом проекте компании Microsoft удалось значительно усовершенствовать технологии генерации речи. Разработанную нейросеть отличает естественное произношение, практически неотличимая от человеческой, и малый объем размеченной выборки, необходимой для обучения.
      Читать дальше →
      • +22
      • 4,2k
      • 5
    • Перенос стиля

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

      Для начала необходимо подключить необходимые библиотеки

      Код объявления библиотек
      import time
      import torch
      from torch.autograd import Variable
      import torch.nn as nn
      import torch.nn.functional as F
      from torch import optim
      import torchvision
      from torchvision import transforms
      from io import BytesIO
      from PIL import Image
      from collections import OrderedDict
      from google.colab import files
      
      Читать дальше →
    • Дизайн уровней и геймплея roguelike на примере Cogmind

      • Перевод
      image

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

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

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

      Учтите, что в отличие от большинства карт Cogmind, из-за своей природы эта конкретная карта имеет в основном статичную схему и контент, и в ней не так активно используются процедурные методы. Поэтому в процессе отсутствуют некоторые этапы, но их я рассмотрю в отдельной статье. С другой стороны, по большей части статичная карта сама по себе предоставляет уникальные возможности анализа.
      Читать дальше →
    • nanoFOX — простое RISC-V совместимое ядро

        Небольшое вступление:


        Идея написания собственного ядра появилась после прохождения школы-семинара по цифровой схемотехнике в городе Томске. На данном мероприятии проводилось знакомство с текущими языками описания аппаратуры (Verilog HDL и VHDL), а также с небольшим процессорным ядром schoolMIPS. Для понимания устройства ядер было принято решение изобрести собственный велосипед, следуя по пути развития schoolMIPS, но взяв за основу другую систему команд. Вследствие роста популярности RISC-V и открытости его системы команд (MIPS на момент начала написания ядра не имел открытую систему команд) для осуществления разработки будущего ядра был выбран набор инструкций RISC-V, а именно RV32I. RV32I имеет небольшой набор базовых инструкций (37 без учёта специальных) и при желании его можно расширить, например, добавив инструкции целочисленного умножения и деления (RV32M) или поддержку сокращённых инструкций (compressed instructions) (RV32C). Также данный проект задумывался как образовательный, поэтому было решено по максимуму увеличить наглядность работы ядра для эффективной демонстрации его работы.


        По аналогии с schoolMIPS были реализованы следующие версии ядра:


        1. Однотактная версия (00_simple_risc_v_cpu).
        2. Однотактная версия с поддержкой инструкций lw/sw (load word/store word) (01_simple_risc_v_cpu_lwsw).
        3. Конвейерная версия (5-ти стадийный конвейер) (02_pipe_risc_v_cpu).

        На текущий момент описывается следующая версия ядра (03_pipe_risc_v_cpu_fc) с полным набором команд RV32I (без учёта некоторых специальных).

        Читать дальше →
      • PsyGuide: Дефицит внимания. #0001/1001

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

          Выражение “дефицит внимания” в психиатрической практике обычно рассматривается в разрезе симптоматики СДВГ (синдром дефицита внимания и гиперактивности, F90 МКБ-10). Считается, что неустойчивость внимания таких пациентов является патологией, требующей коррекции. Остальные, жалующиеся на плохую концентрацию, — просто лентяи. И некоторые психиатрические основания под этой позицией имеются. Хотя незакрытым остается вопрос, куда отнести лентяев и разгильдяев, которые не хотят быть лентяями и разгильдяями, испытывающими явные страдания, но не преуспевающими в бесконечной борьбе за ”лучшего себя”. Впрочем, у меня есть ответ и на этот вопрос.
          Читать дальше →
        • Помощь и просьба о ней. Статья про информационную безопасность для рядовых пользователей

          Я предлагаю вам некоторые шаги по повышению безопасности и приватности в интернет сети (и не только) для рядовых пользователей. Обоснование почему это необходимо – в начале статьи. Для тех, кто всё знает и недоумевает, почему этот текст находится здесь — просьба прочитать пункт «Для тех, кто уже всё знает». Три месяца назад я написала этот текст, но в связи с моей необразованностью и нескончаемым потоком новостей о новых угрозах безопасности, мне надоело переделывать, так что пусть в этом тексте остаётся всё как было).
          Читать дальше →
        • Аскота 170 — механический компьютер и советский палеоэндемик

            В мире наступили восьмидесятые. IBM захватывал рынок профессиональных компьютеров своими PC и PC XT — родоначальниками всех современных настольных компьютеров. Джобс одну за другой выпускал новые модели Apple. Commodore 64 и ZX Spectrum гремели по миру. А в это время в советском блоке продолжали выпускаться Ascota 170 — механические компьютеры родом из начала пятидесятых. Почему-то, в рунете (да и в остальном интернете тоже) мало говорят об этих удивительных машинах, едва ли не единственных серийно (больше трёхсот тысяч с 1955 до 1983 годов) выпускавшихся Тьюринг-полных механических компьютерах. Я и сам о них узнал только тогда, когда Аскота случайно попала мне в руки.
            Надеюсь, моя статья сможет изменить это.


            Моя Аскота закончила считать квадратный корень из 2.
            Читать дальше →
          • Случайные числа и децентрализованные сети: имплементации

              Введение


              function getAbsolutelyRandomNumer() {
                      return 4; // returns absolutely random number!
              }

              Как и в случае с концепцией абсолютно стойкого шифра из криптографии, реальные протоколы “Publicly Verifiable Random Beacon” (далее PVRB) лишь пытаются максимально приблизиться к идеальной схеме, т.к. в реальных сетях в чистом виде она неприменима: договариваться надо строго об одном бите, раундов должно быть много, а все сообщения должны быть идеально быстрыми и всегда доставляться. Разумеется, в реальных сетях это не так. Поэтому, при проектировании PVRB под конкретные задачи в современных блокчейнах, помимо невозможности контроля получаемого рандома и криптографической стойкости, возникает еще много чисто архитектурных и технических проблем.

              Читать дальше →
            • Печатная плата заменяет два линейных двигателя

              • Перевод
              • Tutorial


              Предлагаемая конструкция показывает, насколько безграничны возможности двух довольно старых изобретений — печатной катушки и линейного двигателя. Одна плата заменяет сразу два таких двигателя. Положите на неё магнит, и он будет перемещаться в двумерном пространстве. Положите несколько — они будут перемещаться синхронно. Новую электронику разрабатывать не придётся, подойдут существующие драйвера шаговых двигателей.
              Читать дальше →
            • Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

              • Tutorial


              Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

              Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
              Читать дальше →
            • Огромный открытый датасет русской речи

                image

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

                Мы торопимся исправить это годами длящееся недоразумение.

                Итак, мы предлагаем вашему вниманию набор данных из 4000 часов аннотированной устной речи, собранный из различных интернет-источников.

                Подробности под катом.
                Читать дальше →
              • Ученые из MIT нашли маленькие и точные нейросети, которые быстрее и легче учатся. Осталось понять, как их создать

                  Исследователи Массачусетского Технологического Института (MIT) предположили, что современные нейросети можно уменьшить до десяти раз, не потеряв в точности предсказаний. Скорость и легкость обучения таких сетей также может быть значительно выше. При этом тренировать и обеспечивать данными их смогут даже программисты-одиночки, а не только технологические гиганты с GPU-серверами и огромными датасетами.
                  Читать дальше →
                • Создание надёжного и проверяемого ИИ: соответствие спецификациям, надёжное обучение и формальная верификация

                  • Перевод
                  Ошибки и ПО шли рука об руку с самого начала эпохи программирования компьютеров. Со временем разработчики выработали набор практик по тестированию и отладке программ до их развёртывания, однако эти практики уже не подходят к современным системам с глубоким обучением. Сегодня основной практикой в области машинного обучения можно назвать тренировку на определённом наборе данных с последующей проверкой на другом наборе. Таким способом можно подсчитать среднюю эффективность работы моделей, однако важно также гарантировать надёжность, то есть приемлемую эффективность в худшем случае. В данной статье мы опишем три подхода для точного определения и устранения ошибок в обученных прогнозирующих моделях: состязательное тестирование [adversarial testing], устойчивое обучение [robust learning] и формальную верификацию [formal verification].

                  Системы с МО по определению не устойчивы. Даже системы, выигрывающие у человека в определённой области, могут не справиться с решением простых задач при внесении малозаметных различий. К примеру, рассмотрим проблему внесения возмущений в изображения: нейросеть, способную классифицировать изображения лучше людей, легко заставить поверить в то, что ленивец – это гоночный автомобиль, добавив небольшую долю тщательно рассчитанного шума в изображение.
                  Читать дальше →
                  • +10
                  • 2,7k
                  • 1
                • Как новые технологии приближают мечту о бессмертии?



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

                    Значительные финансовые потоки вкладывают в развитие качества жизни человека. Основные источники ухудшения качества жизни в целом — это всевозможные заболевания и смертность. Работа над решением этих проблем идёт по семи главным направлениям:
                    Читать дальше →
                    • +11
                    • 4,1k
                    • 8
                  • О предвзятости искусственного интеллекта

                    • Перевод


                    tl;dr:


                    • Машинное обучение ищет закономерности в данных. Но искусственный интеллект может быть «предвзят» — то есть, находить неверные паттерны. К примеру, система обнаружения рака кожи по фотографии может обращать особое внимание на снимки, сделанные во врачебном кабинете. Машинное обучение не умеет понимать: его алгоритмы лишь выявляют закономерности в числах, и если данные не репрезентативны, таким будет и результат их обработки. А отлавливать такие баги может быть непросто из-за самой механики машинного обучения.
                    Читать дальше →
                  • Google News and Leo Tolstoy: visualizing Word2Vec word embeddings using t-SNE


                      Everyone uniquely perceives texts, regardless of whether this person reads news on the Internet or world-known classic novels. This also applies to a variety of algorithms and machine learning techniques, which understand texts in a more mathematical way, namely, using high-dimensional vector space.

                      This article is devoted to visualizing high-dimensional Word2Vec word embeddings using t-SNE. The visualization can be useful to understand how Word2Vec works and how to interpret relations between vectors captured from your texts before using them in neural networks or other machine learning algorithms. As training data, we will use articles from Google News and classical literary works by Leo Tolstoy, the Russian writer who is regarded as one of the greatest authors of all time.

                      We go through the brief overview of t-SNE algorithm, then move to word embeddings calculation using Word2Vec, and finally, proceed to word vectors visualization with t-SNE in 2D and 3D space. We will write our scripts in Python using Jupyter Notebook.

                      Read more →