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

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

Например, архитектурно GAN [1] состоит из генератора (GEN) и дискриминатора (DIS), Состязательный Автокодировщик (AAE) [2] состоит из Автокодировщика (AE) [3] и DIS,. Каждый компонент является отдельной вершиной в данном графе, поэтому для AAE у нас будет ребро с AE и DIS.

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

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

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

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

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

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

Я надеюсь, что этот проект будет кому-нибудь полезен, хотя бы потому что он, возможно, позволит кому-то получить ассоциации, которые могут навести на новую интересную идею. Я был удивлен когда услышал как на чем основывается идея генеративных состязательных сетей. На MIT machine Intelligence podcast[4], Yan Goodfellow рассказал что идея состязательных сетей ассоциирована с «позитивной» и «негативной» фазой обучения Boltzman Machine[5].

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

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

Некоторые технические подробности можно почитать по ссылке.

[1] Ian J.Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio. Generative Adversarial Nets.

[2] Alireza Makhzani, Jonathon Shlens, Navdeep Jaitly, Ian Goodfellow, Brendan Frey. Adversarial Autoencoders.

[3] Dana H. Ballard. Autoencoder.

[4] Ian J.Goodfellow: Artificial Intelligence podcast at MIT.

[5] Ruslan Salakhutdinov, Geoffrey Hinton. Deep Boltzmann Machines

Комментарии (15)


  1. Griboks
    10.08.2019 14:34

    А можно в статью про визуализацию вставить что-нибудь, кроме текста?


    1. postmachines Автор
      10.08.2019 23:44

      Добавлена ссылка на то что получилось. Спрашивайте, что интересует?


      1. Griboks
        11.08.2019 09:16

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


        1. postmachines Автор
          11.08.2019 13:54

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


          1. Balling
            11.08.2019 16:41

            Бред какой-то. Я с планшета захожу, все норм. Правда это tab s4, так что он мощный и использую я хром. Но вообще-то, вам надо доработать сайт, а то блокировщик рекламы почему определяет 28 разлиных блокированных элементов и сайт не грузится. На компьютере)) три раза ха-ха… кстати интересно, буквально вчера смотрел вот этот ролик на youtube с таким же облаком… youtu.be/wvsE8jm1GzE


            1. postmachines Автор
              11.08.2019 17:24

              Дорабатывать безусловно надо, work in progress)


  1. george3
    11.08.2019 07:10

    1. То что сразу вылезает окно о донейте — плохо. Нужно сначала понять хорошо там или нет.
    2. Визуализация графа бесполезная. не видно связей. они должны быть по меньшей мере 2 х видов — 1. наследования и 2. использования общих компонентов.
    3. когда выбирается вид сети граф показывает только ее и ее связи.
    4. опция — русская версия)
    Удачи!


    1. postmachines Автор
      11.08.2019 13:52

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


  1. iskateli
    11.08.2019 13:47

    Трёхмерность это конечно эффектно, но не так удобно как в 2D. Если переделаете в двумерный вариант, да ещё и с глоссарием, то цены не будет такой схеме!


    1. postmachines Автор
      11.08.2019 13:48

      Спасибо! да, планируется 2d сделать тоже


  1. nikolay_karelin
    12.08.2019 12:32

    Очень интересный проект!


    Несколько замечаний:


    • Очень странно, что граф отображается в маленьком фрейме. Я даже слегка обалдел, когда открыл на FullHD (даже не 4K) мониторе. И это при том, что страничка https://backronym.xyz/graph.html прекрасно смотрится.
    • 2D действительно будет лучше. Советую посмотреть на проекты Cytoscape и Sigma
    • Немного странно, что пропущенные данные отображаются, как NaN. Может лучше просто пробелы?
    • Ссылки — просто текст, не кликабельны...
    • Планируется ли где-то открыть код и данные проекта?


    1. postmachines Автор
      12.08.2019 17:21

      Приветствую, код доступен здесь: github.com/postmachines/INFORNOPOLITAN-BACKRONYM.


  1. serhit
    12.08.2019 22:54

    Классификация знаний по ML — это очень здорово! Хорошее начинание.


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


    К сожалению в данном формате и то, и другое — сложновато:


    • монолитный файл data.js — не самый удобный формат чтобы добавлять и редактировать данные. В особенности это касается раздела связей — при таком виде они оторваны от "контекста" узлов. Человеку, который захочет добавить информацию, будет сложно.
    • как уже упоминалось в других комментариях — представление информации может требоваться разное: 3-D, 2-D, список связей какой-нибудь...
    • информацию из такого "хранилища" хорошо-бы уметь искать в поисковиках — это добавило-бы популярности.

    Из всего этого вопрос. А не задумывались о том, чтобы представить информацию в виде Wiki, возможно с определенными формальными полями и/или гиперссылками? Или еще проще — в виде набора ссылающихся друг на друга .md файлов на том же GitHub.
    Это решило бы вопрос удобного редактирования, поиска и использования информации.


    А вопрос представления / визуализации связанных документов решить можно.


    1. postmachines Автор
      13.08.2019 13:46

      Благодарю за содержательный отзыв! Представление в виде Wiki, или .md выглядит очень интересно, однозначно над этим подумаю


    1. george3
      13.08.2019 14:02

      Я бы сказал взлетит если на нем(внутри) можно будет делать (AutoML) модели и скачивать их для коннекта с прогами. так сказать ML для чайников. причем для англоговорящей аудитории.