понедельник, 8 июня 2020 г.

Prometey. Обучение ИИ расстановке колонн в здании. Часть 1

             В прошлой статье я упомянул , что мозг человека это не творения некого сверх разума, это всего навсего механизм выполняющий сложные математические операции. Но скорость обработки этих операций и их число настолько велико, что их невозможно визуализировать каким либо понятным графическим способом. Так как я решаю проблему расстановки пилонов в здании, то и примеры будут касаться конструирования. Когда конструктор получает задание от архитектора на расположение вертикальных конструкций, по сути он начинает на подсознательном уровне подгружать весь тот полученный с годами опыт и применять его на практике. И под опытом я подразумеваю практические навыки на аналогично проделанной работе.
             Каждый конструктор на подсознательном уровне для себя выявляет ряд правил расположения пилонов при тех или иных исходных данных. Как только его нейронная сеть сознания получит необходимые данные, то происходит мгновенное решение этой задачи. В течении 2-3 месяцев я занимался поиском правил расположения пилонов или другими словами характерными закономерностями. Мне удалось выявить около 30 закономерностей, при этом это не окончательная цифра и на данный момент их уже более 40. И при всем этом, существует 2 так называемых аномалии, эти две аномальные закономерности входят в противоречие с иными закономерностями и приводят нейросеть к ошибке, т.е. нейросеть не может определить верное решение. Иными словами, стечение конкретных значений параметров нейросети (то что видит живой конструктор) приводит к неоднозначному решению. И если говорить еще более понятными словами, то в 2 случаях из 40 теоретически возможных , с долей в 20% конструктор может ошибиться не взирая на его профессионализм.
             На данный момент эти 2 аномалии я не рассматриваю и не обучаю нейросеть с ними бороться, оставляю это на будущее.
             Сложность обучения нейросети состоит в том , что для ее обучения я сначала разработал отдельную программу на PC, в которой с помощью джойстика я просто расставляю колонны на плане здания:
             По сути выполняю ровно то , что выполняет и конструктор, но уже в виде, предназначенного для нейросети. Специальные сложные алгоритмы переводят движения человека во входящие параметры нейросети, а уже на сервере происходит их обработка:
              После того как было сформировано 2000 данных для обучения нейросети, я нашел первую аномалию и мне пришлось сформировать заново модель обучения нейросети и все обучение начать заново. Со стороны модель обучения напоминает матрицу - бесконечное число непонятных цифр:
             После того как на сервер поступило очередные 5000 данных, запускается вычислительный граф нейросети. Точнее сразу 6 разных, с разными моделями вычислительного графа. И одновременно с этим, сети скармливаются данные для проверки ее верной работоспособности:
             В данном случае сети скормили 5 данных изначально с верным ответом и ответы совпали, а 6-ые по порядку данные были с предполагаемым ответом и сеть ошиблась. Шестой ответ она могла бы дать верным, в случае, если бы ее тренировали на таких примерах. Поэтому следующие 5000 данных будут учитывать "слепые зоны" из проверки нейросети предыдущего поколения. Таким образом поколение за поколением создается ИИ.
             Общее количество данных будет представлять собой невероятно большое количество информации, первую рабочую выборку я опубликую в открытом доступе, но в своеобразном виде. Модель выборки данных будет превышать выборку данных на которой обучали google speech synthesis
             Сейчас нейросеть очень трудоемкая для мобильного телефона, около 270 нейронов сети слишком перегружают ЦП мобильного телефона и погрешность составляет до 70%. Но я уверен что смогу найти способ увеличить производительность в несколько раз как и уменьшение погрешности до адекватных 1-5%, для этого мне приходится много тратить времени на математику, но это того стоит.

2 комментария:

  1. Если не секрет, как готовили обучающую выборку?
    Это какой-то plugin к AllPlan, экспортирующий данные в матричной форме?

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

      Удалить

Поиск по этому блогу