• Как очистить текст от шума по смыслу? Или разбить текст на смысловые блоки?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Сам недавно в этой теме рылся. Можно, например, вот это почитать https://arxiv.org/abs/1503.05543
    Но мне кажется, что проще будет составить словари фраз\песен, и тупо повырезать их из текста.
    Ответ написан
    Комментировать
  • Нейронная сеть. Как предсказать победу одной из трех команд?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Самый простой вариант с нейронными сетями -просто сконкатенировать вектора характеристик этих трех команд, и дальше - как обычно, fully connected слои, в конце softmax и 3 выхода 0/1 для каждой команды.

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

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Гуглить "sota" (state-of-the-art)
    Можно найти, например, такое: https://github.com/RedditSota/state-of-the-art-res...
    Ответ написан
    Комментировать
  • Как получить вектор из слова на кириллице?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Конкретно для именованных сущностей типа городов или фио, лучше использовать словарь этих сущностей, при нахождении в тексте - заменить на какой-нибудь токен (%город%, %имя%, %фамилия%), и дальше работать с этим токеном. Потому что для логики работы модели почти наверняка не важно, какой именно город был назван; важно, был ли он назван вообще или нет.

    Самый простой способ получить векторное представление слова - просто сначала составить словарь используемых слов в датасете, и потом заменить слово на его id в этом словаре или на one-hot представление.
    Более умные варианты - это word embeddings, когда id слова соответствует какой-то вектор, полученный заранее или обучаемый в ходе работы модели. Есть еще варианты с кодированием пар\триплетов букв в слове.
    Ответ написан
  • Обучение нейронной сети - как интерпретировать результат?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Раз есть оверфиттинг - попробуйте дропаут на побольше выкрутить. Между стандартными Dense-слоями 0.5 - традиционное значение. Видел статьи, где дропаут делали аж 0.8-0.9 как раз потому что данных мало было.
    Еще попробуйте в качестве оптимизатора Adam.

    Сети, которые обучают неделями, - это всякие монструозные конструкции, где штук 20 слоев по 500 нейронов в каждом. И десятки миллионов примеров для обучения.
    Ответ написан
    2 комментария
  • Как выявлять индивидуальные особенности текстов одного автора?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Тут, кажется, дофига исследовательской работы. Я бы пробовал в сторону conditional gan копать.
    Ответ написан
    Комментировать
  • Как правильно спроектировать нейронную сеть?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    1. Классификация и регрессия - это разные задачи. В принципе, можно организовать так, как вы описали, но в этом случае результаты регрессии будут эдаким бутылочным горлышком для классификации. Зачем ограничивать объем доступной информации для классификатора?
    2. Топология сети обычно сильно сложнее, чем один скрытый слой, как изображено у вас на картинке и зависит от характера входных данных. Являются ли данные последовательностью или разовым "снимком" состояния среды? Однородны ли они или приходят из разных источников? И так далее. Проще просто по постановке задачи подсказать.
    3. Python проще использовать для машинного обучения. CatBoost - это библиотека для градиентного бустинга (совсем другой алгоритм и другая архитектура, нежели нейронные сети). На Python одна из самых удобных и простых библиотек для обучения нейронных сетей - это keras. Есть еще sklearn, где реализовано несколько других, более "простых" алгоритмов.
    Ответ написан
    2 комментария
  • Как тренировать нейросети с LSTM в keras?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    https://keras.io/layers/recurrent/

    Input shape
    3D tensor with shape (batch_size, timesteps, input_dim).

    <количество примеров в одном батче, длина последовательности, размерность одного элемента>

    LSTM предполагает, что каждый элемент последовательности - это вектор. В случае, когда в базовом варианте они - какие-то числа (например, id слова в словаре), то его перегоняют в one-hot encoding или через embedding слой.
    Если длина последовательности разная от примера к примеру, то её обычно добивают нулями так, чтобы для всех в батче была одинаковая.
    Ответ написан
  • Как reinforcement learning сохраняет найденную оптимальную стратегию?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Похоже, что массив из 9 символов 'X', 'O', ' ' - это текущее состояние игры; целое число после него - это номер клетки, куда делаем ход; вещественное число - полезность хода.
    Да, при прогоне для каждой текущей позиции получаем пары <возможный ход>-<его полезность>, и берем максимальный
    Ответ написан
  • Возможно ли по снимку определить расстояние до объекта?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Восстановление 3D данных из 2D снимка\видео - это открытый вопрос сейчас. Например вот https://www.youtube.com/watch?v=x7xNBs_aIgQ или вот https://www.youtube.com/watch?v=keIirXrRb1k
    Кто-то концентрируется на отдельных типах объектов - например, оценка положения ладони https://www.youtube.com/watch?v=aE7kW4b6CjA (опять же, 3D координаты из 2D видео)
    Ответ написан
    Комментировать
  • Существуют книги с примерами, которые рассказывают, как правильно проектировать ПО?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    "Совершенный код" МакКоннела
    "Чистый код" Мартина
    "Приемы объектно-ориентированного проектирования" Эрих Гамма и т.д. - т.н. "банда четырех"
    "Scrum и XP: заметки с передовой"

    За эскизы архитектуры и UML-диаграммы никто не заморачивается. Слишком часто архитектура меняется, и диаграммы быстро теряют актуальность. Задачу разработчику никто никогда не формулирует на уровне архитектуры классов. А когда ты сам начинаешь реализовывать какой-то функционал, твоя первоначальная задумка может раз 5 измениться, потому что какой-то момент в постановке забыл.
    UML бывает полезен, когда один разработчик другому хочет свой код объяснить. Но в таком случае лучше бы он еще раз вышеупомянутые книжки перечитал.
    Ответ написан
    1 комментарий
  • Кому-нибудь пригодились сертификаты с курсов?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Сертификаты с курсов - нет.
    Сертификаты с экзаменов от вендора - да. Их количеством у сотрудников в компании даже порой интересуются на тендерах\при продажах.
    Ответ написан
    Комментировать
  • Есть ли БД на видеокартах?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Есть "БД на видеокартах", которые используют GPU, чтобы ускорить вычисление каких-нибудь аналитических данных. Например, Blazegraph или MapD.
    Ответ написан
    Комментировать
  • Нейросети. Почему Python?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Потому что нейронные сети - это, как правило, программы не очень большие по объему, но которые приходится часто изменять, чтобы подобрать оптимальную архитектуру, предобработку данных и прочее. Поэтому проблем с легаси кодом почти нет, а есть требования к быстрой разработке. Python этому удовлетворяет лучше, чем C++ или Java.

    Фреймворки для машинного обучения - это часто фронтенд на Python или Torch и бэкендом на C++.
    Ответ написан
  • Выбор архитектуры и средств реализации сверточной нейронной сети?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    https://github.com/RedditSota/state-of-the-art-res...
    Вот тут есть ссылки на SOTA (state-of-the-art) архитектуры для различных задач + их реализации на различных языках. Можно взять какое-нибудь решение с результатами на более-менее нормальном датасете (не на MNIST), разобраться как засунуть туда данные и прокрутить.
    Ответ написан
    Комментировать
  • В какой компании лучше начинать работать программисту — крупной или маленькой?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Однозначно в крупной. Обычно в таких уже выстроен нормально процесс разработки, инструменты и всё вокруг. Это очень важный опыт. Начав с маленькой, вы всё будете собирать на коленке из говна и палок и считать, что так и должно быть.

    Про продвигать свои идеи и общаться с руководством - на самом деле, даже большие айтишные компании весьма демократизированы, и там это не проблема.
    Ответ написан
    Комментировать
  • Кто поможет разобраться с терминологией TensorFlow?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    1. Именно архитектуру. Когда вы писали нейронки руками, то последовательность выполнения операций определялась лично вами и тем порядком команд, который вы написали. Но при этом очень вероятно, что расходование ресурсов было далеко от оптимального. Тем более это может быть важно в случае обучения на GPU, когда программе надо еще управлять памятью GPU - какие данные там держать, а какие уже можно удалить и вернуть в обычную память. Для решения этой проблемы порядок выполнения вычислений в Tensorflow определяется компилятором - программист сначала описывает граф, по которому будут происходить вычисления (та самая модель, у которой может быть несколько входов, несколько выходов, несколько путей прохожения вычислений); потом компилирует его; потом создает сессию Tensorflow и запускает прогон этого графа с какими-то входными данными. Реальные веса нейронной сети существуют лишь в рамках сессии Tensorflow.

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

    3. Исходный язык для Tensorflow - это Python, примеры надо на нем смотреть: https://www.tensorflow.org/tutorials/keras/basic_c...

    Tensorflow - это вообще пример того, что в последнее время стали называть "differentiable programming" - еще одна новая парадигма программирования. Так что после императивного подхода надо чутка мозгами поскрипеть.
    Ответ написан
    Комментировать
  • Почему в TensorFlow иногда не нормализуют данные на единицу?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Нормализация данных - это же лишь один из способов ускорить обучение. Чтобы оно быстрее спускалось вместо того, чтобы влево-вправо колебаться, условно говоря. Это оптимизация, а не часть алгоритма.
    Ответ написан
    2 комментария
  • Как найти информацию в тексте по шаблону на основе нейронных сетей?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Составить словари=газеттиры значений определенных типов (место, время и т.д.), токенизировать текст с их использованием, потом регулярками. Цифры удобно заменять на какой-нибудь один символ, например 0. Чтобы 12:34 и 15:56 выглядели одинаково как 00:00.

    Если варианты написания довольно разнообразные или расплывчатые, то можно не регулярками, а при помощи нейронных сетей для задач NER (стандарт - это BiLSTM + CRF)
    Ответ написан
    Комментировать
  • Какие ВУЗ-ы готовят лучших ИТ специалистов?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Живу и работаю в Екб, много раз собеседовал студентов на стажировку. С ИМКН УрФУ вполне неплохие ребята.
    Ответ написан